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 <pieter.jansenvanvuuren@netronome.com>
Reviewed-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Signed-off-by: Simon Horman <simon.horman@netronome.com>
Signed-off-by: David Ahern <dsahern@gmail.com>
This commit is contained in:
Pieter Jansen van Vuuren 2018-03-09 11:07:22 +01:00 committed by David Ahern
parent 4de0a06b34
commit fb4e6abfca
2 changed files with 7 additions and 2 deletions

View File

@ -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

View File

@ -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,