From bb0118ffc3f5312d2d955b04db8f4064b9b58b04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Tue, 24 Sep 2013 13:37:24 +0200 Subject: [PATCH] Add tc -OK option --- iproute.spec | 8 +++- iproute2-3.11.0-tc-ok.patch | 91 +++++++++++++++++++++++++++++++++++++ 2 files changed, 98 insertions(+), 1 deletion(-) create mode 100644 iproute2-3.11.0-tc-ok.patch diff --git a/iproute.spec b/iproute.spec index 0c3e487..d9ff7ba 100644 --- a/iproute.spec +++ b/iproute.spec @@ -2,7 +2,7 @@ Summary: Advanced IP routing and network device configuration tools Name: iproute Version: 3.10.0 -Release: 6%{?dist} +Release: 7%{?dist} Group: Applications/System URL: http://kernel.org/pub/linux/utils/net/%{name}2/ Source0: http://kernel.org/pub/linux/utils/net/%{name}2/%{name}2-%{version}.tar.gz @@ -20,6 +20,8 @@ Patch8: iproute2-3.8.0-unused-result.patch Patch9: iproute2-3.10.0-xfrm-state-overflow.patch Patch10: iproute2-3.10.0-lnstat-interval.patch Patch11: iproute2-3.10.0-rtnl_send.patch +# Rejected by upstream +Patch12: iproute2-3.11.0-tc-ok.patch License: GPLv2+ and Public Domain BuildRequires: bison BuildRequires: flex @@ -76,6 +78,7 @@ The libnetlink static library. %patch9 -p1 -b .xfrm-state %patch10 -p1 -b .lnstat-interval %patch11 -p1 -b .rtnl_send +%patch12 -p1 -b .tc_ok sed -i 's/^LIBDIR=/LIBDIR?=/' Makefile %build @@ -175,6 +178,9 @@ done %{_includedir}/libnetlink.h %changelog +* Tue Sep 24 2013 Petr Pisar - 3.10.0-7 +- Add tc -OK option + * Fri Aug 30 2013 Petr Šabata - 3.10.0-6 - Fix lnstat -i properly this time diff --git a/iproute2-3.11.0-tc-ok.patch b/iproute2-3.11.0-tc-ok.patch new file mode 100644 index 0000000..fb8a13c --- /dev/null +++ b/iproute2-3.11.0-tc-ok.patch @@ -0,0 +1,91 @@ +From 3c4b5a852d5bb9070c7fb4428aa50f2e3e1f6e1b Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Thu, 19 Sep 2013 11:25:49 +0200 +Subject: [PATCH] Confirm success for each tc -batch command +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +If `tc -force -batch' is fed by a controlling program from a pipe, +it's not possible to recognize when a command has been processes +successfully. + +This patch adds an optional `-OK' option to the tc(8) tool, so `tc +-force -OK -batch' will print "OK\n" to standard output on each +successfully completed tc command. + +Signed-off-by: Petr Písař +--- + man/man8/tc.8 | 8 +++++++- + tc/tc.c | 8 +++++++- + 2 files changed, 14 insertions(+), 2 deletions(-) + +diff --git a/man/man8/tc.8 b/man/man8/tc.8 +index e0acfeb..583eae2 100644 +--- a/man/man8/tc.8 ++++ b/man/man8/tc.8 +@@ -49,7 +49,7 @@ DEV + DEV + + .P +-.B tc [ -force ] -b\fR[\fIatch\fR] \fB[ filename ] ++.B tc [ -force ] [ -OK ] -b\fR[\fIatch\fR] \fB[ filename ] + + .ti 8 + .IR FORMAT " := {" +@@ -440,6 +440,12 @@ First failure will cause termination of tc. + don't terminate tc on errors in batch mode. + If there were any errors during execution of the commands, the application return code will be non zero. + ++.TP ++.BR "\-OK" ++in batch mode, print ++.B OK ++and a new line on standard output after each successfully interpreted command. ++ + .SH HISTORY + .B tc + was written by Alexey N. Kuznetsov and added in Linux 2.2. +diff --git a/tc/tc.c b/tc/tc.c +index 9b50e74..b43bb47 100644 +--- a/tc/tc.c ++++ b/tc/tc.c +@@ -39,6 +39,7 @@ int batch_mode = 0; + int resolve_hosts = 0; + int use_iec = 0; + int force = 0; ++int ok = 0; + struct rtnl_handle rth; + + static void *BODY = NULL; /* cached handle dlopen(NULL) */ +@@ -183,7 +184,7 @@ noexist: + static void usage(void) + { + fprintf(stderr, "Usage: tc [ OPTIONS ] OBJECT { COMMAND | help }\n" +- " tc [-force] -batch filename\n" ++ " tc [-force] [-OK] -batch filename\n" + "where OBJECT := { qdisc | class | filter | action | monitor }\n" + " OPTIONS := { -s[tatistics] | -d[etails] | -r[aw] | -p[retty] | -b[atch] [filename] }\n"); + } +@@ -251,6 +252,9 @@ static int batch(const char *name) + ret = 1; + if (!force) + break; ++ } else if (ok) { ++ printf("OK\n"); ++ fflush(stdout); + } + } + if (line) +@@ -288,6 +292,8 @@ int main(int argc, char **argv) + return 0; + } else if (matches(argv[1], "-force") == 0) { + ++force; ++ } else if (matches(argv[1], "-OK") == 0) { ++ ++ok; + } else if (matches(argv[1], "-batch") == 0) { + argc--; argv++; + if (argc <= 1) +-- +1.8.3.1 +