xref: /linux/include/net/netns/mctp.h (revision 1634b7adcc5bef645b3666fdd564e5952a9e24e0)
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * MCTP per-net structures
4  */
5 
6 #ifndef __NETNS_MCTP_H__
7 #define __NETNS_MCTP_H__
8 
9 #include <linux/mutex.h>
10 #include <linux/types.h>
11 
12 struct netns_mctp {
13 	/* Only updated under RTNL, entries freed via RCU */
14 	struct list_head routes;
15 
16 	/* Bound sockets: list of sockets bound by type.
17 	 * This list is updated from non-atomic contexts (under bind_lock),
18 	 * and read (under rcu) in packet rx
19 	 */
20 	struct mutex bind_lock;
21 	struct hlist_head binds;
22 
23 	/* tag allocations. This list is read and updated from atomic contexts,
24 	 * but elements are free()ed after a RCU grace-period
25 	 */
26 	spinlock_t keys_lock;
27 	struct hlist_head keys;
28 
29 	/* MCTP network */
30 	unsigned int default_net;
31 
32 	/* neighbour table */
33 	struct mutex neigh_lock;
34 	struct list_head neighbours;
35 };
36 
37 #endif /* __NETNS_MCTP_H__ */
38