net: sched: allow flower to match vxlan options
authorXin Long <lucien.xin@gmail.com>
Thu, 21 Nov 2019 10:03:28 +0000 (18:03 +0800)
committerDavid S. Miller <davem@davemloft.net>
Thu, 21 Nov 2019 19:44:06 +0000 (11:44 -0800)
commitd8f9dfae49ce4ffb772dc10dd6578dc815b34c12
tree0b96c1e586907102e1779c5c070dae4925f5edc7
parente20d4ff2acd7db2ffce64a6ddbdaeec43a8eec19
net: sched: allow flower to match vxlan options

This patch is to allow matching gbp option in vxlan.

The options can be described in the form GBP/GBP_MASK,
where GBP is represented as a 32bit hexadecimal value.
Different from geneve, only one option can be set. And
also, geneve options and vxlan options can't be set at
the same time.

  # ip link add name vxlan0 type vxlan dstport 0 external
  # tc qdisc add dev vxlan0 ingress
  # tc filter add dev vxlan0 protocol ip parent ffff: \
      flower \
        enc_src_ip 10.0.99.192 \
        enc_dst_ip 10.0.99.193 \
        enc_key_id 11 \
        vxlan_opts 01020304/ffffffff \
        ip_proto udp \
        action mirred egress redirect dev eth0

v1->v2:
  - add .strict_start_type for enc_opts_policy as Jakub noticed.
  - use Duplicate instead of Wrong in err msg for extack as Jakub
    suggested.

Signed-off-by: Xin Long <lucien.xin@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/uapi/linux/pkt_cls.h
net/sched/cls_flower.c