skb_net returns network namespace from the associated device or socket. This will be used in the next commit.
Signed-off-by: Stanislav Fomichev <s...@google.com> --- include/linux/skbuff.h | 2 ++ net/core/skbuff.c | 10 ++++++++++ 2 files changed, 12 insertions(+) diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index ad883ab2762c..28723a86efdf 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h @@ -4343,5 +4343,7 @@ static inline __wsum lco_csum(struct sk_buff *skb) return csum_partial(l4_hdr, csum_start - l4_hdr, partial); } +struct net *skb_net(const struct sk_buff *skb); + #endif /* __KERNEL__ */ #endif /* _LINUX_SKBUFF_H */ diff --git a/net/core/skbuff.c b/net/core/skbuff.c index 23c9cf100bd4..016db13fa2b6 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c @@ -5585,6 +5585,16 @@ void skb_condense(struct sk_buff *skb) skb->truesize = SKB_TRUESIZE(skb_end_offset(skb)); } +struct net *skb_net(const struct sk_buff *skb) +{ + if (skb->dev) + return dev_net(skb->dev); + else if (skb->sk) + return sock_net(skb->sk); + return NULL; +} +EXPORT_SYMBOL(skb_net); + #ifdef CONFIG_SKB_EXTENSIONS static void *skb_ext_get_ptr(struct skb_ext *ext, enum skb_ext_id id) { -- 2.20.1.611.gfbb209baf1-goog