iproute2/tc
Boris Sukholitko 5ba31bcf44 f_flower: Add num of vlans parameter
Our customers in the fiber telecom world have network configurations
where they would like to control their traffic according to the number
of tags appearing in the packet.

For example, TR247 GPON conformance test suite specification mostly
talks about untagged, single, double tagged packets and gives lax
guidelines on the vlan protocol vs. number of vlan tags.

This is different from the common IT networks where 802.1Q and 802.1ad
protocols are usually describe single and double tagged packet. GPON
configurations that we work with have arbitrary mix the above protocols
and number of vlan tags in the packet.

This patch adds num_of_vlans flower key and associated print and parse
routines. The following command becomes possible:

tc filter add dev eth1 ingress flower num_of_vlans 1 action drop

Signed-off-by: Boris Sukholitko <boris.sukholitko@broadcom.com>
Signed-off-by: David Ahern <dsahern@kernel.org>
2022-04-27 20:16:16 -06:00
..
.gitignore make yacc usage POSIX compatible 2020-01-20 09:43:22 -08:00
e_bpf.c tc: e_bpf: fix memory leak in parse_bpf() 2021-04-26 21:05:19 -07:00
em_canid.c drop unneeded include of syslog.h 2017-11-12 16:22:36 -08:00
em_cmp.c drop unneeded include of syslog.h 2017-11-12 16:22:36 -08:00
em_ipset.c Include bsd/string.h only in include/utils.h 2018-11-05 08:38:32 -08:00
em_ipt.c tc: fix spelling errors 2019-08-12 18:18:51 -07:00
em_meta.c tc/meta: make meta_table static and const 2018-11-19 11:42:44 -08:00
em_nbyte.c drop unneeded include of syslog.h 2017-11-12 16:22:36 -08:00
em_u32.c drop unneeded include of syslog.h 2017-11-12 16:22:36 -08:00
emp_ematch.l make yacc usage POSIX compatible 2020-01-20 09:43:22 -08:00
emp_ematch.y make yacc usage POSIX compatible 2020-01-20 09:43:22 -08:00
f_basic.c treewide: refactor help messages 2019-05-20 14:35:07 -07:00
f_bpf.c tc: full JSON support for 'bpf' filter 2020-05-05 16:19:06 +00:00
f_cgroup.c tc actions: Improved batching and time filtered dumping 2017-08-04 13:16:51 -07:00
f_flow.c treewide: refactor help messages 2019-05-20 14:35:07 -07:00
f_flower.c f_flower: Add num of vlans parameter 2022-04-27 20:16:16 -06:00
f_fw.c treewide: refactor help messages 2019-05-20 14:35:07 -07:00
f_matchall.c treewide: refactor help messages 2019-05-20 14:35:07 -07:00
f_route.c treewide: refactor help messages 2019-05-20 14:35:07 -07:00
f_rsvp.c treewide: refactor help messages 2019-05-20 14:35:07 -07:00
f_tcindex.c treewide: refactor help messages 2019-05-20 14:35:07 -07:00
f_u32.c tc: u32: add json support in print_raw, print_ipv4, print_ipv6 2022-02-02 20:51:43 -07:00
m_action.c tc: separate action print for filter and action dump 2022-03-07 15:45:41 -07:00
m_bpf.c tc: skip actions that don't have options attribute when printing 2020-10-31 09:14:01 -06:00
m_connmark.c tc: skip actions that don't have options attribute when printing 2020-10-31 09:14:01 -06:00
m_csum.c tc: skip actions that don't have options attribute when printing 2020-10-31 09:14:01 -06:00
m_ct.c tc: skip actions that don't have options attribute when printing 2020-10-31 09:14:01 -06:00
m_ctinfo.c tc: skip actions that don't have options attribute when printing 2020-10-31 09:14:01 -06:00
m_ematch.c tc/ematch: make local functions static 2018-11-19 11:42:44 -08:00
m_ematch.h tc/ematch: make local functions static 2018-11-19 11:42:44 -08:00
m_estimator.c tc/m_estimator: Print proper value for estimator interval in raw. 2020-07-20 13:25:56 -07:00
m_gact.c tc: skip actions that don't have options attribute when printing 2020-10-31 09:14:01 -06:00
m_gate.c tc: m_gate: use SPRINT_BUF when needed 2021-02-22 18:11:03 -08:00
m_ife.c tc: skip actions that don't have options attribute when printing 2020-10-31 09:14:01 -06:00
m_ipt.c tc: skip actions that don't have options attribute when printing 2020-10-31 09:14:01 -06:00
m_mirred.c tc: skip actions that don't have options attribute when printing 2020-10-31 09:14:01 -06:00
m_mpls.c Merge branch 'main' into next 2020-11-24 22:04:48 -07:00
m_nat.c tc: skip actions that don't have options attribute when printing 2020-10-31 09:14:01 -06:00
m_pedit.c tc: pedit: add decrement operation 2021-06-26 04:45:19 +00:00
m_pedit.h tc: pedit: add decrement operation 2021-06-26 04:45:19 +00:00
m_police.c police: Fix normal output back to what it was 2021-07-17 11:14:30 -07:00
m_sample.c tc: skip actions that don't have options attribute when printing 2020-10-31 09:14:01 -06:00
m_simple.c tc: skip actions that don't have options attribute when printing 2020-10-31 09:14:01 -06:00
m_skbedit.c tc: skip actions that don't have options attribute when printing 2020-10-31 09:14:01 -06:00
m_skbmod.c tc/skbmod: Introduce SKBMOD_F_ECN option 2021-09-01 12:51:44 -07:00
m_tunnel_key.c tc: skip actions that don't have options attribute when printing 2020-10-31 09:14:01 -06:00
m_vlan.c tc/m_vlan: fix print_vlan() conditional on TCA_VLAN_ACT_PUSH_ETH 2021-11-17 11:13:12 -08:00
m_xt_old.c tc: skip actions that don't have options attribute when printing 2020-10-31 09:14:01 -06:00
m_xt.c tc: skip actions that don't have options attribute when printing 2020-10-31 09:14:01 -06:00
Makefile tc: Add helpers to support qevent handling 2020-07-05 15:37:27 +00:00
p_eth.c tc: pedit: parse_cmd: add flags argument 2021-06-26 04:44:35 +00:00
p_icmp.c tc/pedit: use structure initialization 2018-11-19 11:42:44 -08:00
p_ip6.c tc: pedit: add decrement operation 2021-06-26 04:45:19 +00:00
p_ip.c tc: pedit: add decrement operation 2021-06-26 04:45:19 +00:00
p_tcp.c tc: pedit: parse_cmd: add flags argument 2021-06-26 04:44:35 +00:00
p_udp.c tc: pedit: parse_cmd: add flags argument 2021-06-26 04:44:35 +00:00
q_atm.c treewide: refactor help messages 2019-05-20 14:35:07 -07:00
q_cake.c q_cake: allow changing to diffserv3 2022-01-12 15:26:11 -08:00
q_cbq.c lib: Move print_rate() from tc here; modernize 2020-12-09 02:30:15 +00:00
q_cbs.c tc: cbs: add support for JSON output 2019-12-29 09:57:27 -08:00
q_choke.c tc: choke: add support for JSON output 2019-12-29 09:57:27 -08:00
q_clsact.c SPDX license identifiers 2017-11-24 12:21:35 -08:00
q_codel.c tc: codel: add support for JSON output 2019-12-29 09:57:27 -08:00
q_drr.c lib: Move sprint_size() from tc here, add print_size() 2020-12-09 02:30:25 +00:00
q_dsmark.c treewide: Use addattr_nest()/addattr_nest_end() to handle nested attributes 2018-02-02 15:01:09 -08:00
q_etf.c etf: Add skip_sock_check 2019-07-18 15:44:21 -07:00
q_ets.c tc: q_ets: drop dead code from argument parsing 2021-05-06 14:42:44 +00:00
q_fifo.c lib: Move sprint_size() from tc here, add print_size() 2020-12-09 02:30:25 +00:00
q_fq_codel.c tc: Add support for ce_threshold_value/mask in fq_codel 2021-12-13 20:19:37 -07:00
q_fq_pie.c lib: Move sprint_size() from tc here, add print_size() 2020-12-09 02:30:25 +00:00
q_fq.c tc: fq: add horizon attributes 2021-06-07 02:56:01 +00:00
q_gred.c lib: Move sprint_size() from tc here, add print_size() 2020-12-09 02:30:25 +00:00
q_hfsc.c lib: Move print_rate() from tc here; modernize 2020-12-09 02:30:15 +00:00
q_hhf.c lib: Move sprint_size() from tc here, add print_size() 2020-12-09 02:30:25 +00:00
q_htb.c tc: htb: improve burst error messages 2021-05-09 22:13:22 +00:00
q_ingress.c ingress: Don't break JSON output 2018-04-25 11:08:39 -07:00
q_mqprio.c lib: Move print_rate() from tc here; modernize 2020-12-09 02:30:15 +00:00
q_multiq.c tc: B.W limits can now be specified in %. 2017-11-24 11:22:13 -08:00
q_netem.c netem: fix clang warnings 2022-01-26 10:19:08 -07:00
q_pie.c Revert "tc: pie: change maximum integer value of tc_pie_xstats->prob" 2020-03-10 18:29:26 +00:00
q_plug.c tc: add support for plug qdisc 2019-05-04 09:22:14 -07:00
q_prio.c tc: prio: fix space in JSON tag 2020-01-06 13:11:41 -08:00
q_qfq.c treewide: Use addattr_nest()/addattr_nest_end() to handle nested attributes 2018-02-02 15:01:09 -08:00
q_red.c lib: Move sprint_size() from tc here, add print_size() 2020-12-09 02:30:25 +00:00
q_rr.c tc: B.W limits can now be specified in %. 2017-11-24 11:22:13 -08:00
q_sfb.c tc: sfb: add support for JSON output 2019-12-29 09:57:27 -08:00
q_sfq.c lib: Move sprint_size() from tc here, add print_size() 2020-12-09 02:30:25 +00:00
q_skbprio.c tc: skbprio: add support for JSON output 2020-01-06 13:12:02 -08:00
q_taprio.c Replace open-coded instances of print_nl() 2020-05-04 17:13:53 -07:00
q_tbf.c lib: Move sprint_size() from tc here, add print_size() 2020-12-09 02:30:25 +00:00
static-syms.c SPDX license identifiers 2017-11-24 12:21:35 -08:00
tc_cbq.c tc: fix spelling errors 2019-08-12 18:18:51 -07:00
tc_cbq.h SPDX license identifiers 2017-11-24 12:21:35 -08:00
tc_class.c tc: parse attributes with NLA_F_NESTED flag 2020-01-22 03:45:48 +00:00
tc_common.h Move the use_iec declaration to the tools 2020-12-09 02:28:43 +00:00
tc_core.c iproute2-next: police: support 64bit rate and peakrate in tc utility 2019-09-15 10:39:19 -07:00
tc_core.h iproute2-next: police: support 64bit rate and peakrate in tc utility 2019-09-15 10:39:19 -07:00
tc_estimator.c tc: support conversions to or from 64 bit nanosecond-based time 2018-08-30 11:04:38 -07:00
tc_exec.c treewide: refactor help messages 2019-05-20 14:35:07 -07:00
tc_filter.c tc: implement support for terse dump 2020-10-31 09:15:15 -06:00
tc_monitor.c Tree wide: Drop sockaddr_nl arg 2018-10-22 09:43:48 -07:00
tc_qdisc.c tc: Look for blocks in qevents 2020-07-20 16:34:02 +00:00
tc_qevent.c tc: Add space after format specifier 2020-07-29 17:03:46 +00:00
tc_qevent.h tc: Look for blocks in qevents 2020-07-20 16:34:02 +00:00
tc_red.c tc: q_red: Support 'nodrop' flag 2020-03-25 16:45:37 +00:00
tc_red.h tc: move RED flag printing to helper 2018-11-24 07:10:58 -08:00
tc_stab.c drop unneeded include of syslog.h 2017-11-12 16:22:36 -08:00
tc_util.c Merge branch 'main' into next 2022-02-27 18:25:02 -07:00
tc_util.h lib: Move get_size() from tc here 2020-12-09 02:30:50 +00:00
tc.c iproute2: add check_libbpf() and get_libbpf_version() 2020-11-24 22:14:02 -07:00