]> git.ipfire.org Git - thirdparty/iproute2.git/commitdiff
etf: Add skip_sock_check
authorVedang Patel <vedang.patel@intel.com>
Thu, 18 Jul 2019 19:55:39 +0000 (12:55 -0700)
committerDavid Ahern <dsahern@gmail.com>
Thu, 18 Jul 2019 22:44:21 +0000 (15:44 -0700)
ETF Qdisc currently checks for a socket with SO_TXTIME socket option. If
either is not present, the packet is dropped. In the future commits, we
want other Qdiscs to add packet with launchtime to the ETF Qdisc. Also,
there are some packets (e.g. ICMP packets) which may not have a socket
associated with them.  So, add an option to skip this check.

Signed-off-by: Vedang Patel <vedang.patel@intel.com>
Signed-off-by: David Ahern <dsahern@gmail.com>
tc/q_etf.c

index 76aca476c61d490bb017246ba3987bd8ae7ee0e1..c2090589bc64595c61843279fada9bea04d38c2d 100644 (file)
@@ -130,6 +130,13 @@ static int etf_parse_opt(struct qdisc_util *qu, int argc,
                                explain_clockid(*argv);
                                return -1;
                        }
+               } else if (strcmp(*argv, "skip_sock_check") == 0) {
+                       if (opt.flags & TC_ETF_SKIP_SOCK_CHECK) {
+                               fprintf(stderr, "etf: duplicate \"skip_sock_check\" specification\n");
+                               return -1;
+                       }
+
+                       opt.flags |= TC_ETF_SKIP_SOCK_CHECK;
                } else if (strcmp(*argv, "help") == 0) {
                        explain();
                        return -1;
@@ -171,8 +178,10 @@ static int etf_print_opt(struct qdisc_util *qu, FILE *f, struct rtattr *opt)
        print_uint(PRINT_ANY, "delta", "delta %d ", qopt->delta);
        print_string(PRINT_ANY, "offload", "offload %s ",
                                (qopt->flags & TC_ETF_OFFLOAD_ON) ? "on" : "off");
-       print_string(PRINT_ANY, "deadline_mode", "deadline_mode %s",
+       print_string(PRINT_ANY, "deadline_mode", "deadline_mode %s ",
                                (qopt->flags & TC_ETF_DEADLINE_MODE_ON) ? "on" : "off");
+       print_string(PRINT_ANY, "skip_sock_check", "skip_sock_check %s",
+                               (qopt->flags & TC_ETF_SKIP_SOCK_CHECK) ? "on" : "off");
 
        return 0;
 }