Re: [PATCH bpf-next v2 1/4] net: add SO_NETNS_COOKIE socket option
From: Eric Dumazet <hidden>
Date: 2021-02-19 11:50:19
Also in:
bpf
On 2/19/21 10:51 AM, Lorenz Bauer wrote:
We need to distinguish which network namespace a socket belongs to. BPF has the useful bpf_get_netns_cookie helper for this, but accessing it from user space isn't possible. Add a read-only socket option that returns the netns cookie, similar to SO_COOKIE. If network namespaces are disabled, SO_NETNS_COOKIE returns the cookie of init_net. Signed-off-by: Lorenz Bauer <redacted> ---
quoted hunk ↗ jump to hunk
diff --git a/net/core/sock.c b/net/core/sock.c index 0ed98f20448a..de4644aeb58d 100644 --- a/net/core/sock.c +++ b/net/core/sock.c@@ -1614,6 +1614,17 @@ int sock_getsockopt(struct socket *sock, int level, int optname, v.val = sk->sk_bound_dev_if; break; + case SO_NETNS_COOKIE: + lv = sizeof(u64); + if (len < lv) + return -EINVAL;
if (len != lv) return -EINVAL; (There is no reason to support bigger value before at least hundred years)
+#ifdef CONFIG_NET_NS + v.val64 = sock_net(sk)->net_cookie; +#else + v.val64 = init_net.net_cookie; +#endif + break; +
Why using this ugly #ifdef ? The following should work just fine, even if CONFIG_NET_NS is not set. v.val64 = sock_net(sk)->net_cookie;
default: /* We implement the SO_SNDLOWAT etc to not be settable * (1003.1g 7).