]> git.ipfire.org Git - thirdparty/iproute2.git/commitdiff
tc: flower: add support for verbose logging
authorMarcelo Ricardo Leitner <mleitner@redhat.com>
Sun, 13 May 2018 20:44:28 +0000 (17:44 -0300)
committerDavid Ahern <dsahern@gmail.com>
Fri, 18 May 2018 16:06:04 +0000 (09:06 -0700)
Currently there is no way to log offloading errors if the rule is not
explicitly marked as skip_sw, making it hard for other applications such
as Open vSwitch to log why a given could not be offloaded.

This patch adds support for signaling the kernel that more verbose
logging is wanted, which now will include such messages.

Signed-off-by: Marcelo Ricardo Leitner <mleitner@redhat.com>
Signed-off-by: David Ahern <dsahern@gmail.com>
man/man8/tc-flower.8
tc/f_flower.c

index a561443b9978bee55142f7dfed6b46106f7b9baf..4f3714b79544b33f198d711fa9006806685d43a8 100644 (file)
@@ -22,6 +22,8 @@ flower \- flow based traffic control filter
 .IR MATCH " := { "
 .B indev
 .IR ifname " | "
+.BR verbose
+.RI " | "
 .BR skip_sw " | " skip_hw
 .RI " | { "
 .BR dst_mac " | " src_mac " } "
@@ -100,6 +102,11 @@ is the name of an interface which must exist at the time of
 .B tc
 invocation.
 .TP
+.BI verbose
+Enable verbose logging, including offloading errors when not using
+.B skip_sw
+flag.
+.TP
 .BI skip_sw
 Do not process filter by software. If hardware has no offload support for this
 filter, or TC offload is not enabled for the interface, operation will fail.
index ba8eb66cdd111adf4f68f041fb6c4acc48fd1a90..c710765179fb08ac94e04ec664fac0d30cf04931 100644 (file)
@@ -41,7 +41,7 @@ enum flower_icmp_field {
 static void explain(void)
 {
        fprintf(stderr,
-               "Usage: ... flower [ MATCH-LIST ]\n"
+               "Usage: ... flower [ MATCH-LIST ] [ verbose ]\n"
                "                  [ skip_sw | skip_hw ]\n"
                "                  [ action ACTION-SPEC ] [ classid CLASSID ]\n"
                "\n"
@@ -648,6 +648,8 @@ static int flower_parse_opt(struct filter_util *qu, char *handle,
                                fprintf(stderr, "Illegal \"ip_flags\"\n");
                                return -1;
                        }
+               } else if (matches(*argv, "verbose") == 0) {
+                       flags |= TCA_CLS_FLAGS_VERBOSE;
                } else if (matches(*argv, "skip_hw") == 0) {
                        flags |= TCA_CLS_FLAGS_SKIP_HW;
                } else if (matches(*argv, "skip_sw") == 0) {