1 /* SPDX-License-Identifier: GPL-2.0 */ 2 3 #ifndef __NET_MCTP_TEST_UTILS_H 4 #define __NET_MCTP_TEST_UTILS_H 5 6 #include <uapi/linux/netdevice.h> 7 8 #include <net/mctp.h> 9 #include <net/mctpdevice.h> 10 11 #include <kunit/test.h> 12 13 #define MCTP_DEV_TEST_MTU 68 14 15 struct mctp_test_dev { 16 struct net_device *ndev; 17 struct mctp_dev *mdev; 18 19 unsigned short lladdr_len; 20 unsigned char lladdr[MAX_ADDR_LEN]; 21 }; 22 23 struct mctp_test_dev; 24 25 struct mctp_test_route { 26 struct mctp_route rt; 27 }; 28 29 struct mctp_test_pktqueue { 30 unsigned int magic; 31 struct sk_buff_head pkts; 32 }; 33 34 struct mctp_test_bind_setup { 35 mctp_eid_t bind_addr; 36 int bind_net; 37 u8 bind_type; 38 39 bool have_peer; 40 mctp_eid_t peer_addr; 41 int peer_net; 42 43 /* optional name. Used for comparison in "lookup" tests */ 44 const char *name; 45 }; 46 47 struct mctp_test_dev *mctp_test_create_dev(void); 48 struct mctp_test_dev *mctp_test_create_dev_lladdr(unsigned short lladdr_len, 49 const unsigned char *lladdr); 50 void mctp_test_destroy_dev(struct mctp_test_dev *dev); 51 52 struct mctp_test_route *mctp_test_create_route_direct(struct net *net, 53 struct mctp_dev *dev, 54 mctp_eid_t eid, 55 unsigned int mtu); 56 struct mctp_test_route *mctp_test_create_route_gw(struct net *net, 57 unsigned int netid, 58 mctp_eid_t eid, 59 mctp_eid_t gw, 60 unsigned int mtu); 61 void mctp_test_dst_setup(struct kunit *test, struct mctp_dst *dst, 62 struct mctp_test_dev *dev, 63 struct mctp_test_pktqueue *tpq, unsigned int mtu); 64 void mctp_test_dst_release(struct mctp_dst *dst, 65 struct mctp_test_pktqueue *tpq); 66 void mctp_test_pktqueue_init(struct mctp_test_pktqueue *tpq); 67 void mctp_test_route_destroy(struct kunit *test, struct mctp_test_route *rt); 68 void mctp_test_skb_set_dev(struct sk_buff *skb, struct mctp_test_dev *dev); 69 struct sk_buff *mctp_test_create_skb(const struct mctp_hdr *hdr, 70 unsigned int data_len); 71 struct sk_buff *__mctp_test_create_skb_data(const struct mctp_hdr *hdr, 72 const void *data, size_t data_len); 73 74 #define mctp_test_create_skb_data(h, d) \ 75 __mctp_test_create_skb_data(h, d, sizeof(*d)) 76 77 void mctp_test_bind_run(struct kunit *test, 78 const struct mctp_test_bind_setup *setup, 79 int *ret_bind_errno, struct socket **sock); 80 81 #endif /* __NET_MCTP_TEST_UTILS_H */ 82