net: sched: allow flower to match erspan options
This patch is to allow matching options in erspan. The options can be described in the form: VER:INDEX:DIR:HWID/VER:INDEX_MASK:DIR_MASK:HWID_MASK. When ver is set to 1, index will be applied while dir and hwid will be ignored, and when ver is set to 2, dir and hwid will be used while index will be ignored. Different from geneve, only one option can be set. And also, geneve options, vxlan options or erspan options can't be set at the same time. # ip link add name erspan1 type erspan external # tc qdisc add dev erspan1 ingress # tc filter add dev erspan1 protocol ip parent ffff: \ flower \ enc_src_ip 10.0.99.192 \ enc_dst_ip 10.0.99.193 \ enc_key_id 11 \ erspan_opts 1:12:0:0/1:ffff:0:0 \ ip_proto udp \ action mirred egress redirect dev eth0 v1->v2: - improve some err msgs of extack. Signed-off-by: Xin Long <lucien.xin@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
d8f9dfae49
commit
79b1011cb3
@@ -575,6 +575,10 @@ enum {
|
||||
* TCA_FLOWER_KEY_ENC_OPT_VXLAN_
|
||||
* attributes
|
||||
*/
|
||||
TCA_FLOWER_KEY_ENC_OPTS_ERSPAN, /* Nested
|
||||
* TCA_FLOWER_KEY_ENC_OPT_ERSPAN_
|
||||
* attributes
|
||||
*/
|
||||
__TCA_FLOWER_KEY_ENC_OPTS_MAX,
|
||||
};
|
||||
|
||||
@@ -601,6 +605,18 @@ enum {
|
||||
#define TCA_FLOWER_KEY_ENC_OPT_VXLAN_MAX \
|
||||
(__TCA_FLOWER_KEY_ENC_OPT_VXLAN_MAX - 1)
|
||||
|
||||
enum {
|
||||
TCA_FLOWER_KEY_ENC_OPT_ERSPAN_UNSPEC,
|
||||
TCA_FLOWER_KEY_ENC_OPT_ERSPAN_VER, /* u8 */
|
||||
TCA_FLOWER_KEY_ENC_OPT_ERSPAN_INDEX, /* be32 */
|
||||
TCA_FLOWER_KEY_ENC_OPT_ERSPAN_DIR, /* u8 */
|
||||
TCA_FLOWER_KEY_ENC_OPT_ERSPAN_HWID, /* u8 */
|
||||
__TCA_FLOWER_KEY_ENC_OPT_ERSPAN_MAX,
|
||||
};
|
||||
|
||||
#define TCA_FLOWER_KEY_ENC_OPT_ERSPAN_MAX \
|
||||
(__TCA_FLOWER_KEY_ENC_OPT_ERSPAN_MAX - 1)
|
||||
|
||||
enum {
|
||||
TCA_FLOWER_KEY_FLAGS_IS_FRAGMENT = (1 << 0),
|
||||
TCA_FLOWER_KEY_FLAGS_FRAG_IS_FIRST = (1 << 1),
|
||||
|
Reference in New Issue
Block a user