text: /* SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later */
  
  #include <string.h>
  #include <assert.h>
  
  #include <libmctp.h>
  #include <libmctp-alloc.h>
  
  #include "test-utils.h"
  
  struct mctp_binding_test {
  	struct mctp_binding	binding;
  };
  
  static int mctp_binding_test_tx(struct mctp_binding *b __attribute__((unused)),
  		struct mctp_pktbuf *pkt __attribute__((unused)))
  {
  	/* we are not expecting TX packets */
  	assert(0);
  	return 0;
  }
  
  struct mctp_binding_test *mctp_binding_test_init(void)
  {
  	struct mctp_binding_test *test;
  
  	test = __mctp_alloc(sizeof(*test));
  	memset(test, '\0', sizeof(*test));
  	test->binding.name = "test";
  	test->binding.version = 1;
  	test->binding.tx = mctp_binding_test_tx;
  	test->binding.pkt_size = MCTP_PACKET_SIZE(MCTP_BTU);
  	test->binding.pkt_header = 0;
  	test->binding.pkt_trailer = 0;
  	return test;
  }
  
  void mctp_binding_test_destroy(struct mctp_binding_test *test)
  {
  	__mctp_free(test);
  }
  
  void mctp_binding_test_rx_raw(struct mctp_binding_test *test,
  		void *buf, size_t len)
  {
  	struct mctp_pktbuf *pkt;
  
  	pkt = mctp_pktbuf_alloc(&test->binding, len);
  	assert(pkt);
  	memcpy(mctp_pktbuf_hdr(pkt), buf, len);
  	mctp_bus_rx(&test->binding, pkt);
  }
  
  void mctp_binding_test_register_bus(struct mctp_binding_test *binding,
  		struct mctp *mctp, mctp_eid_t eid)
  {
  	mctp_register_bus(mctp, &binding->binding, eid);
  }
  
  void mctp_test_stack_init(struct mctp **mctp,
  		struct mctp_binding_test **binding,
  		mctp_eid_t eid)
  {
  	*mctp = mctp_init();
  	assert(*mctp);
  
  	*binding = mctp_binding_test_init();
  	assert(*binding);
  
  	mctp_binding_test_register_bus(*binding, *mctp, eid);
  }
  