diff options
author | Nicolas Dichtel <nicolas.dichtel@6wind.com> | 2013-06-26 16:11:27 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2013-06-27 22:29:05 -0700 |
commit | 621e84d6f373dcb273ebfd772638b8e7dc3c2c48 (patch) | |
tree | 55135ee5450006f25cca4f14c8206524f976149b /net/core/skbuff.c | |
parent | 38ae92dc215e939897f17861d658f882d0eaab0f (diff) | |
download | op-kernel-dev-621e84d6f373dcb273ebfd772638b8e7dc3c2c48.zip op-kernel-dev-621e84d6f373dcb273ebfd772638b8e7dc3c2c48.tar.gz |
dev: introduce skb_scrub_packet()
The goal of this new function is to perform all needed cleanup before sending
an skb into another netns.
Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/core/skbuff.c')
-rw-r--r-- | net/core/skbuff.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/net/core/skbuff.c b/net/core/skbuff.c index 9f73eca..b1fcb87 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c @@ -3492,3 +3492,26 @@ bool skb_try_coalesce(struct sk_buff *to, struct sk_buff *from, return true; } EXPORT_SYMBOL(skb_try_coalesce); + +/** + * skb_scrub_packet - scrub an skb before sending it to another netns + * + * @skb: buffer to clean + * + * skb_scrub_packet can be used to clean an skb before injecting it in + * another namespace. We have to clear all information in the skb that + * could impact namespace isolation. + */ +void skb_scrub_packet(struct sk_buff *skb) +{ + skb_orphan(skb); + skb->tstamp.tv64 = 0; + skb->pkt_type = PACKET_HOST; + skb->skb_iif = 0; + skb_dst_drop(skb); + skb->mark = 0; + secpath_reset(skb); + nf_reset(skb); + nf_reset_trace(skb); +} +EXPORT_SYMBOL_GPL(skb_scrub_packet); |