• Ido Schimmel's avatar
    net/sched: flower: Ensure both minimum and maximum ports are specified · d3f87278
    Ido Schimmel authored
    The kernel does not currently validate that both the minimum and maximum
    ports of a port range are specified. This can lead user space to think
    that a filter matching on a port range was successfully added, when in
    fact it was not. For example, with a patched (buggy) iproute2 that only
    sends the minimum port, the following commands do not return an error:
    
     # tc filter add dev swp1 ingress pref 1 proto ip flower ip_proto udp src_port 100-200 action pass
    
     # tc filter add dev swp1 ingress pref 1 proto ip flower ip_proto udp dst_port 100-200 action pass
    
     # tc filter show dev swp1 ingress
     filter protocol ip pref 1 flower chain 0
     filter protocol ip pref 1 flower chain 0 handle 0x1
       eth_type ipv4
       ip_proto udp
       not_in_hw
             action order 1: gact action pass
              random type none pass val 0
              index 1 ref 1 bind 1
    
     filter protocol ip pref 1 flower chain 0 handle 0x2
       eth_type ipv4
       ip_proto udp
       not_in_hw
             action order 1: gact action pass
              random type none pass val 0
              index 2 ref 1 bind 1
    
    Fix by returning an error unless both ports are specified:
    
     # tc filter add dev swp1 ingress pref 1 proto ip flower ip_proto udp src_port 100-200 action pass
     Error: Both min and max source ports must be specified.
     We have an error talking to the kernel
    
     # tc filter add dev swp1 ingress pref 1 proto ip flower ip_proto udp dst_port 100-200 action pass
     Error: Both min and max destination ports must be specified.
     We have an error talking to the kernel
    
    Fixes: 5c72299f
    
     ("net: sched: cls_flower: Classify packets using port ranges")
    Signed-off-by: default avatarIdo Schimmel <idosch@nvidia.com>
    Reviewed-by: default avatarPetr Machata <petrm@nvidia.com>
    Acked-by: default avatarJamal Hadi Salim <jhs@mojatatu.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    d3f87278
cls_flower.c 103 KB