Allow setting tunnel options using the act_tunnel_key action. Options are expressed as class:type:data and multiple options may be listed using a comma delimiter. # ip link add name geneve0 type geneve dstport 0 external # tc qdisc add dev eth0 ingress # tc filter add dev eth0 protocol ip parent ffff: \ flower indev eth0 \ ip_proto udp \ action tunnel_key \ set src_ip 10.0.99.192 \ dst_ip 10.0.99.193 \ dst_port 6081 \ id 11 \ geneve_opts 0102:80:00800022,0102:80:00800022 \ action mirred egress redirect dev geneve0
Showing the changes to include/uapi/linux (1 of 2 files). Show all
Unified · Split
| @@ -36,9 +36,35 @@ enum { · 35 unmodified lines | ||
| 36 | 36 | TCA_TUNNEL_KEY_PAD, |
| 37 | 37 | TCA_TUNNEL_KEY_ENC_DST_PORT, /* be16 */ |
| 38 | 38 | TCA_TUNNEL_KEY_NO_CSUM, /* u8 */ |
| 39 | + TCA_TUNNEL_KEY_ENC_OPTS, /* Nested TCA_TUNNEL_KEY_ENC_OPTS_ | |
| 40 | + * attributes | |
| 41 | + */ | |
| 39 | 42 | __TCA_TUNNEL_KEY_MAX, |
| 40 | 43 | }; |
| 41 | 44 | |
| 42 | 45 | #define TCA_TUNNEL_KEY_MAX (__TCA_TUNNEL_KEY_MAX - 1) |
| 43 | 46 | |
| 47 | +enum { | |
| 48 | + TCA_TUNNEL_KEY_ENC_OPTS_UNSPEC, | |
| 49 | + TCA_TUNNEL_KEY_ENC_OPTS_GENEVE, /* Nested | |
| 50 | + * TCA_TUNNEL_KEY_ENC_OPTS_ | |
| 51 | + * attributes | |
| 52 | + */ | |
| 53 | + __TCA_TUNNEL_KEY_ENC_OPTS_MAX, | |
| 54 | +}; | |
| 55 | + | |
| 56 | +#define TCA_TUNNEL_KEY_ENC_OPTS_MAX (__TCA_TUNNEL_KEY_ENC_OPTS_MAX - 1) | |
| 57 | + | |
| 58 | +enum { | |
| 59 | + TCA_TUNNEL_KEY_ENC_OPT_GENEVE_UNSPEC, | |
| 60 | + TCA_TUNNEL_KEY_ENC_OPT_GENEVE_CLASS, /* be16 */ | |
| 61 | + TCA_TUNNEL_KEY_ENC_OPT_GENEVE_TYPE, /* u8 */ | |
| 62 | + TCA_TUNNEL_KEY_ENC_OPT_GENEVE_DATA, /* 4 to 128 bytes */ | |
| 63 | + | |
| 64 | + __TCA_TUNNEL_KEY_ENC_OPT_GENEVE_MAX, | |
| 65 | +}; | |
| 66 | + | |
| 67 | +#define TCA_TUNNEL_KEY_ENC_OPT_GENEVE_MAX \ | |
| 68 | + (__TCA_TUNNEL_KEY_ENC_OPT_GENEVE_MAX - 1) | |
| 69 | + | |
| 44 | 70 | #endif |