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 | |