blob: fca1910dae35a3aea90196cfd21edbe12ed80ffe [file] [log] [blame]
Jeremy Kerr3d36ee22019-05-30 11:15:37 +08001/* SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later */
Jeremy Kerr18925112019-03-13 15:43:08 +08002
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
11struct mctp_binding_test {
Andrew Jeffery69eda312022-09-30 14:22:32 +093012 struct mctp_binding binding;
Jeremy Kerr18925112019-03-13 15:43:08 +080013};
14
15static int mctp_binding_test_tx(struct mctp_binding *b __attribute__((unused)),
Andrew Jeffery69eda312022-09-30 14:22:32 +093016 struct mctp_pktbuf *pkt __attribute__((unused)))
Jeremy Kerr18925112019-03-13 15:43:08 +080017{
18 /* we are not expecting TX packets */
19 assert(0);
Andrew Jefferya501a582020-03-10 22:25:16 +103020 return 0;
Jeremy Kerr18925112019-03-13 15:43:08 +080021}
22
23struct mctp_binding_test *mctp_binding_test_init(void)
24{
25 struct mctp_binding_test *test;
26
27 test = __mctp_alloc(sizeof(*test));
Andrew Jeffery225c46d2020-03-10 23:20:01 +103028 memset(test, '\0', sizeof(*test));
Jeremy Kerr18925112019-03-13 15:43:08 +080029 test->binding.name = "test";
30 test->binding.version = 1;
31 test->binding.tx = mctp_binding_test_tx;
Andrew Jeffery73c268e2020-01-30 10:16:09 +103032 test->binding.pkt_size = MCTP_PACKET_SIZE(MCTP_BTU);
Andrew Jeffery39da3d02021-03-12 16:51:26 +103033 test->binding.pkt_header = 0;
34 test->binding.pkt_trailer = 0;
Jeremy Kerr18925112019-03-13 15:43:08 +080035 return test;
36}
37
Andrew Jeffery5c5673b2020-03-10 23:23:58 +103038void mctp_binding_test_destroy(struct mctp_binding_test *test)
39{
40 __mctp_free(test);
41}
42
Andrew Jeffery69eda312022-09-30 14:22:32 +093043void mctp_binding_test_rx_raw(struct mctp_binding_test *test, void *buf,
44 size_t len)
Jeremy Kerr18925112019-03-13 15:43:08 +080045{
46 struct mctp_pktbuf *pkt;
47
Jeremy Kerrdf15f7e2019-08-05 15:41:19 +080048 pkt = mctp_pktbuf_alloc(&test->binding, len);
Jeremy Kerr18925112019-03-13 15:43:08 +080049 assert(pkt);
50 memcpy(mctp_pktbuf_hdr(pkt), buf, len);
51 mctp_bus_rx(&test->binding, pkt);
Jeremy Kerr18925112019-03-13 15:43:08 +080052}
53
54void mctp_binding_test_register_bus(struct mctp_binding_test *binding,
Andrew Jeffery69eda312022-09-30 14:22:32 +093055 struct mctp *mctp, mctp_eid_t eid)
Jeremy Kerr18925112019-03-13 15:43:08 +080056{
57 mctp_register_bus(mctp, &binding->binding, eid);
58}
59
60void mctp_test_stack_init(struct mctp **mctp,
Andrew Jeffery69eda312022-09-30 14:22:32 +093061 struct mctp_binding_test **binding, mctp_eid_t eid)
Jeremy Kerr18925112019-03-13 15:43:08 +080062{
63 *mctp = mctp_init();
64 assert(*mctp);
65
66 *binding = mctp_binding_test_init();
67 assert(*binding);
68
69 mctp_binding_test_register_bus(*binding, *mctp, eid);
70}