xref: /linux/net/mctp/test/utils.h (revision 6dfafbd0299a60bfb5d5e277fdf100037c7ded07)
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 	struct sk_buff_head pkts;
23 };
24 
25 struct mctp_test_dev;
26 
27 struct mctp_test_route {
28 	struct mctp_route	rt;
29 };
30 
31 struct mctp_test_bind_setup {
32 	mctp_eid_t bind_addr;
33 	int bind_net;
34 	u8 bind_type;
35 
36 	bool have_peer;
37 	mctp_eid_t peer_addr;
38 	int peer_net;
39 
40 	/* optional name. Used for comparison in "lookup" tests */
41 	const char *name;
42 };
43 
44 struct mctp_test_dev *mctp_test_create_dev(void);
45 struct mctp_test_dev *mctp_test_create_dev_lladdr(unsigned short lladdr_len,
46 						  const unsigned char *lladdr);
47 void mctp_test_destroy_dev(struct mctp_test_dev *dev);
48 
49 struct mctp_test_route *mctp_test_create_route_direct(struct net *net,
50 						      struct mctp_dev *dev,
51 						      mctp_eid_t eid,
52 						      unsigned int mtu);
53 struct mctp_test_route *mctp_test_create_route_gw(struct net *net,
54 						  unsigned int netid,
55 						  mctp_eid_t eid,
56 						  mctp_eid_t gw,
57 						  unsigned int mtu);
58 void mctp_test_dst_setup(struct kunit *test, struct mctp_dst *dst,
59 			 struct mctp_test_dev *dev, unsigned int mtu);
60 void mctp_test_route_destroy(struct kunit *test, struct mctp_test_route *rt);
61 void mctp_test_skb_set_dev(struct sk_buff *skb, struct mctp_test_dev *dev);
62 struct sk_buff *mctp_test_create_skb(const struct mctp_hdr *hdr,
63 				     unsigned int data_len);
64 struct sk_buff *__mctp_test_create_skb_data(const struct mctp_hdr *hdr,
65 					    const void *data, size_t data_len);
66 
67 #define mctp_test_create_skb_data(h, d) \
68 	__mctp_test_create_skb_data(h, d, sizeof(*d))
69 
70 void mctp_test_bind_run(struct kunit *test,
71 			const struct mctp_test_bind_setup *setup,
72 			int *ret_bind_errno, struct socket **sock);
73 
74 #endif /* __NET_MCTP_TEST_UTILS_H */
75