]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/blobdiff - net/ipv6/netfilter/nf_defrag_ipv6_hooks.c
netfilter: nf_conntrack: push zone object into functions
[mirror_ubuntu-hirsute-kernel.git] / net / ipv6 / netfilter / nf_defrag_ipv6_hooks.c
index a45db0b4785c1e89f523ce28cb8e4231fbbc85b9..9d3de9b748560c3f231637ca3b4d815dbc0a96d3 100644 (file)
 static enum ip6_defrag_users nf_ct6_defrag_user(unsigned int hooknum,
                                                struct sk_buff *skb)
 {
-       u16 zone = NF_CT_DEFAULT_ZONE;
-
+       u16 zone_id = NF_CT_DEFAULT_ZONE_ID;
 #if IS_ENABLED(CONFIG_NF_CONNTRACK)
        if (skb->nfct)
-               zone = nf_ct_zone((struct nf_conn *)skb->nfct);
+               zone_id = nf_ct_zone((struct nf_conn *)skb->nfct)->id;
 #endif
+       if (nf_bridge_in_prerouting(skb))
+               return IP6_DEFRAG_CONNTRACK_BRIDGE_IN + zone_id;
 
-#if IS_ENABLED(CONFIG_BRIDGE_NETFILTER)
-       if (skb->nf_bridge &&
-           skb->nf_bridge->mask & BRNF_NF_BRIDGE_PREROUTING)
-               return IP6_DEFRAG_CONNTRACK_BRIDGE_IN + zone;
-#endif
        if (hooknum == NF_INET_PRE_ROUTING)
-               return IP6_DEFRAG_CONNTRACK_IN + zone;
+               return IP6_DEFRAG_CONNTRACK_IN + zone_id;
        else
-               return IP6_DEFRAG_CONNTRACK_OUT + zone;
-
+               return IP6_DEFRAG_CONNTRACK_OUT + zone_id;
 }
 
 static unsigned int ipv6_defrag(const struct nf_hook_ops *ops,