aboutsummaryrefslogtreecommitdiff
path: root/include/net/netns
diff options
context:
space:
mode:
authorJeremy Kerr2021-07-29 10:20:49 +0800
committerDavid S. Miller2021-07-29 15:06:50 +0100
commit833ef3b91de692ef33b800bca6b1569c39dece74 (patch)
treeff450c69b1a4b9c9d8ff83d832e870461c546f69 /include/net/netns
parent831119f8878173adbf31f1151adf0f4627c05e01 (diff)
mctp: Populate socket implementation
Start filling-out the socket syscalls: bind, sendmsg & recvmsg. This requires an input route implementation, so we add to mctp_route_input, allowing lookups on binds & message tags. This just handles single-packet messages at present, we will add fragmentation in a future change. Signed-off-by: Jeremy Kerr <jk@codeconstruct.com.au> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net/netns')
-rw-r--r--include/net/netns/mctp.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/include/net/netns/mctp.h b/include/net/netns/mctp.h
index 2f5ebeeb320e..14ae6d37e52a 100644
--- a/include/net/netns/mctp.h
+++ b/include/net/netns/mctp.h
@@ -12,6 +12,19 @@ struct netns_mctp {
/* Only updated under RTNL, entries freed via RCU */
struct list_head routes;
+ /* Bound sockets: list of sockets bound by type.
+ * This list is updated from non-atomic contexts (under bind_lock),
+ * and read (under rcu) in packet rx
+ */
+ struct mutex bind_lock;
+ struct hlist_head binds;
+
+ /* tag allocations. This list is read and updated from atomic contexts,
+ * but elements are free()ed after a RCU grace-period
+ */
+ spinlock_t keys_lock;
+ struct hlist_head keys;
+
/* neighbour table */
struct mutex neigh_lock;
struct list_head neighbours;