From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr0-f193.google.com ([209.85.128.193]:37653 "EHLO mail-wr0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751008AbeCIKHe (ORCPT ); Fri, 9 Mar 2018 05:07:34 -0500 Received: by mail-wr0-f193.google.com with SMTP id z12so8442901wrg.4 for ; Fri, 09 Mar 2018 02:07:34 -0800 (PST) From: Simon Horman To: Stephen Hemminger Cc: Jiri Pirko , Jamal Hadi Salim , Cong Wang , netdev@vger.kernel.org, oss-drivers@netronome.com, Pieter Jansen van Vuuren , Simon Horman Subject: [PATCH iproute2/net-next] tc: f_flower: Add support for matching first frag packets Date: Fri, 9 Mar 2018 11:07:22 +0100 Message-Id: <20180309100722.21627-1-simon.horman@netronome.com> Sender: netdev-owner@vger.kernel.org List-ID: From: Pieter Jansen van Vuuren 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 --- man/man8/tc-flower.8 | 8 ++++++-- tc/f_flower.c | 1 + 2 files changed, 7 insertions(+), 2 deletions(-) This patch depends on updating pkt_cls.h to add TCA_FLOWER_KEY_FLAGS_FRAG_IS_FIRST along side TCA_FLOWER_KEY_FLAGS_IS_FRAGMENT. That change is present in the kernel net-next tree as of 459d153d9916 ("net/sched: cls_flower: Add support to handle first frag as match field") diff --git a/man/man8/tc-flower.8 b/man/man8/tc-flower.8 index 768eda3d52bd..a561443b9978 100644 --- a/man/man8/tc-flower.8 +++ b/man/man8/tc-flower.8 @@ -258,8 +258,12 @@ is a 16 bit UDP dst port. .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 5a4ec832bc19..9d4bfd2f808b 100644 --- a/tc/f_flower.c +++ b/tc/f_flower.c @@ -155,6 +155,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.11.0