• Eric Garver's avatar
    net: openvswitch: add explicit drop action · e7bc7db9
    Eric Garver authored
    From: Eric Garver <eric@garver.life>
    
    This adds an explicit drop action. This is used by OVS to drop packets
    for which it cannot determine what to do. An explicit action in the
    kernel allows passing the reason _why_ the packet is being dropped or
    zero to indicate no particular error happened (i.e: OVS intentionally
    dropped the packet).
    
    Since the error codes coming from userspace mean nothing for the kernel,
    we squash all of them into only two drop reasons:
    - OVS_DROP_EXPLICIT_WITH_ERROR to indicate a non-zero value was passed
    - OVS_DROP_EXPLICIT to indicate a zero value was passed (no error)
    
    e.g. trace all OVS dropped skbs
    
     # perf trace -e skb:kfree_skb --filter="reason >= 0x30000"
     [..]
     106.023 ping/2465 skb:kfree_skb(skbaddr: 0xffffa0e8765f2000, \
      location:0xffffffffc0d9b462, protocol: 2048, reason: 196611)
    
    reason: 196611 --> 0x30003 (OVS_DROP_EXPLICIT)
    
    Also, this patch allows ovs-dpctl.py to add explicit drop actions as:
      "drop"     -> implicit empty-action drop
      "drop(0)"  -> explicit non-error action drop
      "drop(42)" -> explicit error action drop
    Signed-off-by: default avatarEric Garver <eric@garver.life>
    Co-developed-by: default avatarAdrian Moreno <amorenoz@redhat.com>
    Signed-off-by: default avatarAdrian Moreno <amorenoz@redhat.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    e7bc7db9
flow_netlink.c 99.8 KB