netfilter: rt: account for tcp header size too
authorFlorian Westphal <fw@strlen.de>
Mon, 28 Aug 2017 15:00:12 +0000 (17:00 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Mon, 28 Aug 2017 16:14:30 +0000 (18:14 +0200)
This needs to accout for the ipv4/ipv6 header size and the tcp
header without options.

Fixes: 6b5dc98e8fac0 ("netfilter: rt: add support to fetch path mss")
Reported-by: Matteo Croce <technoboy85@gmail.com>
Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
net/netfilter/nft_rt.c

index 61fd3acaa3c9f7f5cd90a3d60931d23b2c0f27a7..a6b7d05aeacf475b69d85c4256251111612f2ffc 100644 (file)
@@ -35,10 +35,11 @@ static u16 get_tcpmss(const struct nft_pktinfo *pkt, const struct dst_entry *skb
        switch (nft_pf(pkt)) {
        case NFPROTO_IPV4:
                fl.u.ip4.daddr = ip_hdr(skb)->saddr;
-               minlen = sizeof(struct iphdr);
+               minlen = sizeof(struct iphdr) + sizeof(struct tcphdr);
                break;
        case NFPROTO_IPV6:
                fl.u.ip6.daddr = ipv6_hdr(skb)->saddr;
+               minlen = sizeof(struct ipv6hdr) + sizeof(struct tcphdr);
                break;
        }