In ingress and clsact qdisc TCA_OPTIONS are ignored, since it's parameterless. In tc, we add an empty addattr_l(... TCA_OPTIONS, NULL, 0) to the netlink message nevertheless. This has the side effect that when someone tries a 'tc qdisc replace' and already an existing such qdisc is present, tc fails with EINVAL here. Reason is that in the kernel, this invokes qdisc_change() when such requested qdisc is already present. When TCA_OPTIONS are passed to modify parameters, it looks whether qdisc implements .change() callback, and if not present (like in both cases here) it returns with error. Rather than adding an empty stub to the kernel that ignores TCA_OPTIONS again, just don't add TCA_OPTIONS to the netlink message in the first place. Before: # tc qdisc replace dev foo clsact # first try # tc qdisc replace dev foo clsact # second one RTNETLINK answers: Invalid argument After: # tc qdisc replace dev foo clsact # tc qdisc replace dev foo clsact # tc qdisc replace dev foo clsact Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> |
||
|---|---|---|
| bash-completion | ||
| bridge | ||
| devlink | ||
| doc | ||
| etc/iproute2 | ||
| examples | ||
| genl | ||
| include | ||
| ip | ||
| lib | ||
| man | ||
| misc | ||
| netem | ||
| tc | ||
| testsuite | ||
| tipc | ||
| .gitignore | ||
| COPYING | ||
| Makefile | ||
| README | ||
| README.decnet | ||
| README.devel | ||
| README.distribution | ||
| README.iproute2+tc | ||
| README.lnstat | ||
| configure | ||
README
This is a set of utilities for Linux networking.
Information:
http://www.linuxfoundation.org/collaborate/workgroups/networking/iproute2
Download:
http://www.kernel.org/pub/linux/utils/net/iproute2/
Repository:
git://git.kernel.org/pub/scm/linux/kernel/git/shemminger/iproute2.git
How to compile this.
--------------------
1. libdbm
arpd needs to have the db4 development libraries. For Debian
users this is the package with a name like libdb4.x-dev.
DBM_INCLUDE points to the directory with db_185.h which
is the include file used by arpd to get to the old format Berkeley
database routines. Often this is in the db-devel package.
2. make
The makefile will automatically build a Config file which
contains whether or not ATM is available, etc.
3. To make documentation, cd to doc/ directory , then
look at start of Makefile and set correct values for
PAGESIZE=a4 , ie: a4 , letter ... (string)
PAGESPERPAGE=2 , ie: 1 , 2 ... (numeric)
and make there. It assumes, that latex, dvips and psnup
are in your path.
4. This package includes matching sanitized kernel headers because
the build environment may not have up to date versions. See Makefile
if you have special requirements and need to point at different
kernel include files.
Stephen Hemminger
stephen@networkplumber.org
Alexey Kuznetsov
kuznet@ms2.inr.ac.ru