]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - net/netfilter/nf_queue.c
netfilter: fix netns dependencies with conntrack templates
[karo-tx-linux.git] / net / netfilter / nf_queue.c
index 2e88032cd5ad22fb1e910966167340a1ba8761f6..8a8b2abc35ffdeacb5a61e1a801c92f91998bc3d 100644 (file)
@@ -105,6 +105,23 @@ bool nf_queue_entry_get_refs(struct nf_queue_entry *entry)
 }
 EXPORT_SYMBOL_GPL(nf_queue_entry_get_refs);
 
+void nf_queue_nf_hook_drop(struct nf_hook_ops *ops)
+{
+       const struct nf_queue_handler *qh;
+       struct net *net;
+
+       rtnl_lock();
+       rcu_read_lock();
+       qh = rcu_dereference(queue_handler);
+       if (qh) {
+               for_each_net(net) {
+                       qh->nf_hook_drop(net, ops);
+               }
+       }
+       rcu_read_unlock();
+       rtnl_unlock();
+}
+
 /*
  * Any packet that leaves via this function must come back
  * through nf_reinject().
@@ -196,7 +213,7 @@ void nf_reinject(struct nf_queue_entry *entry, unsigned int verdict)
 
        if (verdict == NF_ACCEPT) {
        next_hook:
-               verdict = nf_iterate(&nf_hooks[entry->state.pf][entry->state.hook],
+               verdict = nf_iterate(entry->state.hook_list,
                                     skb, &entry->state, &elem);
        }