mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-15 02:05:33 +00:00
flow_dissector: Check for IP fragmentation even if not using IPv4 address
This patch corrects the logic for the IPv4 parsing so that it is consistent with how we handle IPv6. Specifically if we do not have the flow key indicating we want the addresses we still may need to take a look at the IP fragmentation bits and to see if we should stop after we have recognized the L3 header. Fixes: 807e165dc44f ("flow_dissector: Add control/reporting of fragmentation") Signed-off-by: Alexander Duyck <aduyck@mirantis.com> Acked-by: Tom Herbert <tom@herbertland.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
f993604dc6
commit
918c023f29
@ -178,15 +178,16 @@ ip:
|
||||
|
||||
ip_proto = iph->protocol;
|
||||
|
||||
if (!dissector_uses_key(flow_dissector,
|
||||
FLOW_DISSECTOR_KEY_IPV4_ADDRS))
|
||||
break;
|
||||
if (dissector_uses_key(flow_dissector,
|
||||
FLOW_DISSECTOR_KEY_IPV4_ADDRS)) {
|
||||
key_addrs = skb_flow_dissector_target(flow_dissector,
|
||||
FLOW_DISSECTOR_KEY_IPV4_ADDRS,
|
||||
target_container);
|
||||
|
||||
key_addrs = skb_flow_dissector_target(flow_dissector,
|
||||
FLOW_DISSECTOR_KEY_IPV4_ADDRS, target_container);
|
||||
memcpy(&key_addrs->v4addrs, &iph->saddr,
|
||||
sizeof(key_addrs->v4addrs));
|
||||
key_control->addr_type = FLOW_DISSECTOR_KEY_IPV4_ADDRS;
|
||||
memcpy(&key_addrs->v4addrs, &iph->saddr,
|
||||
sizeof(key_addrs->v4addrs));
|
||||
key_control->addr_type = FLOW_DISSECTOR_KEY_IPV4_ADDRS;
|
||||
}
|
||||
|
||||
if (ip_is_fragment(iph)) {
|
||||
key_control->flags |= FLOW_DIS_IS_FRAGMENT;
|
||||
|
Loading…
x
Reference in New Issue
Block a user