From 69685a7aa7fb408cce256e469430e10e99a43e2d Mon Sep 17 00:00:00 2001 From: Andrea Claudi Date: Mon, 25 Mar 2019 16:54:31 +0100 Subject: [PATCH] tc: f_flower: Add support for matching first frag packets Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1559814 Upstream Status: iproute2.git commit fb4e6abfca2c4 commit fb4e6abfca2c48380210d48c1e7f3685f8bb58fd Author: Pieter Jansen van Vuuren Date: Fri Mar 9 11:07:22 2018 +0100 tc: f_flower: Add support for matching first frag packets Add matching support for distinguishing between first and later fragmented packets. # tc filter add dev eth0 protocol ip parent ffff: \ flower indev eth0 \ ip_flags firstfrag \ ip_proto udp \ action mirred egress redirect dev eth1 # tc filter add dev eth0 protocol ip parent ffff: \ flower indev eth0 \ ip_flags nofirstfrag \ ip_proto udp \ action mirred egress redirect dev eth1 Signed-off-by: Pieter Jansen van Vuuren Reviewed-by: Jakub Kicinski Signed-off-by: Simon Horman Signed-off-by: David Ahern --- man/man8/tc-flower.8 | 8 ++++++-- tc/f_flower.c | 1 + 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/man/man8/tc-flower.8 b/man/man8/tc-flower.8 index 387f73f5cd2e9..661f42200bdfb 100644 --- a/man/man8/tc-flower.8 +++ b/man/man8/tc-flower.8 @@ -255,8 +255,12 @@ is an 8 bit time-to-live value. .BI ip_flags " IP_FLAGS" .I IP_FLAGS may be either -.BR frag " or " nofrag -to match on fragmented packets or not respectively. +.BR frag ", " nofrag ", " firstfrag " or " nofirstfrag +where frag and nofrag could be used to match on fragmented packets or not, +respectively. firstfrag and nofirstfrag can be used to further distinguish +fragmented packet. firstfrag can be used to indicate the first fragmented +packet. nofirstfrag can be used to indicates subsequent fragmented packets +or non-fragmented packets. .SH NOTES As stated above where applicable, matches of a certain layer implicitly depend on the matches of the next lower layer. Precisely, layer one and two matches diff --git a/tc/f_flower.c b/tc/f_flower.c index 40dcfbd687a20..e2c7daa0b8e03 100644 --- a/tc/f_flower.c +++ b/tc/f_flower.c @@ -162,6 +162,7 @@ struct flag_to_string { static struct flag_to_string flags_str[] = { { TCA_FLOWER_KEY_FLAGS_IS_FRAGMENT, FLOWER_IP_FLAGS, "frag" }, + { TCA_FLOWER_KEY_FLAGS_FRAG_IS_FIRST, FLOWER_IP_FLAGS, "firstfrag" }, }; static int flower_parse_matching_flags(char *str, -- 2.20.1