• Ido Schimmel's avatar
    net/sched: flower: Allow matching on layer 2 miss · 1a432018
    Ido Schimmel authored
    Add the 'TCA_FLOWER_L2_MISS' netlink attribute that allows user space to
    match on packets that encountered a layer 2 miss. The miss indication is
    set as metadata in the tc skb extension by the bridge driver upon FDB or
    MDB lookup miss and dissected by the flow dissector to the
    'FLOW_DISSECTOR_KEY_META' key.
    
    The use of this skb extension is guarded by the 'tc_skb_ext_tc' static
    key. As such, enable / disable this key when filters that match on layer
    2 miss are added / deleted.
    
    Tested:
    
     # cat tc_skb_ext_tc.py
     #!/usr/bin/env -S drgn -s vmlinux
    
     refcount = prog["tc_skb_ext_tc"].key.enabled.counter.value_()
     print(f"tc_skb_ext_tc reference count is {refcount}")
    
     # ./tc_skb_ext_tc.py
     tc_skb_ext_tc reference count is 0
    
     # tc filter add dev swp1 egress proto all handle 101 pref 1 flower src_mac 00:11:22:33:44:55 action drop
     # tc filter add dev swp1 egress proto all handle 102 pref 2 flower src_mac 00:11:22:33:44:55 l2_miss true action drop
     # tc filter add dev swp1 egress proto all handle 103 pref 3 flower src_mac 00:11:22:33:44:55 l2_miss false action drop
    
     # ./tc_skb_ext_tc.py
     tc_skb_ext_tc reference count is 2
    
     # tc filter replace dev swp1 egress proto all handle 102 pref 2 flower src_mac 00:01:02:03:04:05 l2_miss false action drop
    
     # ./tc_skb_ext_tc.py
     tc_skb_ext_tc reference count is 2
    
     # tc filter del dev swp1 egress proto all handle 103 pref 3 flower
     # tc filter del dev swp1 egress proto all handle 102 pref 2 flower
     # tc filter del dev swp1 egress proto all handle 101 pref 1 flower
    
     # ./tc_skb_ext_tc.py
     tc_skb_ext_tc reference count is 0
    Signed-off-by: default avatarIdo Schimmel <idosch@nvidia.com>
    Reviewed-by: default avatarNikolay Aleksandrov <razor@blackwall.org>
    Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    1a432018
cls_flower.c 99.9 KB