summaryrefslogtreecommitdiffstats
path: root/net/netfilter/nf_conntrack_core.c
diff options
context:
space:
mode:
authorFlorian Westphal2019-01-15 22:03:33 +0100
committerPablo Neira Ayuso2019-01-18 15:02:33 +0100
commite2e48b471634faa6958718c27208d366b13fe878 (patch)
treea4f6d1ced3b29a5546115f19b99cf12e56edd6e9 /net/netfilter/nf_conntrack_core.c
parentnetfilter: conntrack: handle builtin l4proto packet functions via direct calls (diff)
downloadkernel-qcow2-linux-e2e48b471634faa6958718c27208d366b13fe878.tar.gz
kernel-qcow2-linux-e2e48b471634faa6958718c27208d366b13fe878.tar.xz
kernel-qcow2-linux-e2e48b471634faa6958718c27208d366b13fe878.zip
netfilter: conntrack: handle icmp pkt_to_tuple helper via direct calls
rather than handling them via indirect call, use a direct one instead. This leaves GRE as the last user of this indirect call facility. Signed-off-by: Florian Westphal <fw@strlen.de> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'net/netfilter/nf_conntrack_core.c')
-rw-r--r--net/netfilter/nf_conntrack_core.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/net/netfilter/nf_conntrack_core.c b/net/netfilter/nf_conntrack_core.c
index 5dfd95ae510d..b3840d36c3a6 100644
--- a/net/netfilter/nf_conntrack_core.c
+++ b/net/netfilter/nf_conntrack_core.c
@@ -274,6 +274,12 @@ nf_ct_get_tuple(const struct sk_buff *skb,
tuple->dst.protonum = protonum;
tuple->dst.dir = IP_CT_DIR_ORIGINAL;
+ switch (protonum) {
+ case IPPROTO_ICMPV6:
+ return icmpv6_pkt_to_tuple(skb, dataoff, net, tuple);
+ case IPPROTO_ICMP:
+ return icmp_pkt_to_tuple(skb, dataoff, net, tuple);
+ }
if (unlikely(l4proto->pkt_to_tuple))
return l4proto->pkt_to_tuple(skb, dataoff, net, tuple);