• Davide Caratti's avatar
    flow_dissector: fix TTL and TOS dissection on IPv4 fragments · d2126838
    Davide Caratti authored
    the following command:
    
     # tc filter add dev $h2 ingress protocol ip pref 1 handle 101 flower \
       $tcflags dst_ip 192.0.2.2 ip_ttl 63 action drop
    
    doesn't drop all IPv4 packets that match the configured TTL / destination
    address. In particular, if "fragment offset" or "more fragments" have non
    zero value in the IPv4 header, setting of FLOW_DISSECTOR_KEY_IP is simply
    ignored. Fix this dissecting IPv4 TTL and TOS before fragment info; while
    at it, add a selftest for tc flower's match on 'ip_ttl' that verifies the
    correct behavior.
    
    Fixes: 518d8a2e ("net/flow_dissector: add support for dissection of misc ip header fields")
    Reported-by: default avatarShuang Li <shuali@redhat.com>
    Signed-off-by: default avatarDavide Caratti <dcaratti@redhat.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    d2126838
tc_flower.sh 11.2 KB