xref: /openbmc/libmctp/tests/test-utils.c (revision 3d36ee2e)
1 /* SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later */
2 
3 #include <string.h>
4 #include <assert.h>
5 
6 #include <libmctp.h>
7 #include <libmctp-alloc.h>
8 
9 #include "test-utils.h"
10 
11 struct mctp_binding_test {
12 	struct mctp_binding	binding;
13 };
14 
15 static int mctp_binding_test_tx(struct mctp_binding *b __attribute__((unused)),
16 		struct mctp_pktbuf *pkt __attribute__((unused)))
17 {
18 	/* we are not expecting TX packets */
19 	assert(0);
20 }
21 
22 struct mctp_binding_test *mctp_binding_test_init(void)
23 {
24 	struct mctp_binding_test *test;
25 
26 	test = __mctp_alloc(sizeof(*test));
27 	test->binding.name = "test";
28 	test->binding.version = 1;
29 	test->binding.tx = mctp_binding_test_tx;
30 	return test;
31 }
32 
33 void mctp_binding_test_rx_raw(struct mctp_binding_test *test,
34 		void *buf, size_t len)
35 {
36 	struct mctp_pktbuf *pkt;
37 
38 	pkt = mctp_pktbuf_alloc(len);
39 	assert(pkt);
40 	memcpy(mctp_pktbuf_hdr(pkt), buf, len);
41 	mctp_bus_rx(&test->binding, pkt);
42 	mctp_pktbuf_free(pkt);
43 }
44 
45 void mctp_binding_test_register_bus(struct mctp_binding_test *binding,
46 		struct mctp *mctp, mctp_eid_t eid)
47 {
48 	mctp_register_bus(mctp, &binding->binding, eid);
49 }
50 
51 void mctp_test_stack_init(struct mctp **mctp,
52 		struct mctp_binding_test **binding,
53 		mctp_eid_t eid)
54 {
55 	*mctp = mctp_init();
56 	assert(*mctp);
57 
58 	*binding = mctp_binding_test_init();
59 	assert(*binding);
60 
61 	mctp_binding_test_register_bus(*binding, *mctp, eid);
62 }
63