diff --git a/net/core/skbuff.c b/net/core/skbuff.c index 3a12ff1..9c6ef32 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c @@ -1948,6 +1948,31 @@ struct sk_buff *skb_segment(struct sk_bu nskb->dev = skb->dev; nskb->priority = skb->priority; +#ifdef CONFIG_NETFILTER + nskb->nfmark = skb->nfmark; + nskb->nfct = skb->nfct; + nf_conntrack_get(skb->nfct); + nskb->nfctinfo = skb->nfctinfo; +#if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE) + nskb->nfct_reasm = skb->nfct_reasm; + nf_conntrack_get_reasm(skb->nfct_reasm); +#endif +#ifdef CONFIG_BRIDGE_NETFILTER + nskb->nf_bridge = skb->nf_bridge; + nf_bridge_get(skb->nf_bridge); +#endif +#endif +#ifdef CONFIG_NET_SCHED +#ifdef CONFIG_NET_CLS_ACT + nskb->input_dev = skb->input_dev; + nskb->tc_verd = skb->tc_verd; +#endif + nskb->tc_index = skb->tc_index; +#endif + skb_copy_secmark(nskb, skb); nskb->protocol = skb->protocol; nskb->dst = dst_clone(skb->dst); memcpy(nskb->cb, skb->cb, sizeof(skb->cb));