Commit Graph

249 Commits

Author SHA1 Message Date
Patrick McHardy
ae76106841 tc: don't set protococol field on filter delete
> # tc filter show dev eth1 | grep 4:29:d1
> filter parent 1: protocol ip pref 5 u32 fh 4:29:d1 order 209 key ht 4
> bkt 29 flowid 1:b7aa
>
> # tc filter del dev eth1 parent 1: pref 5 handle 4:29:d1 u32
> RTNETLINK answers: Invalid argument
> We have an error talking to the kernel
>
> after rollback to package"sys-apps/iproute2-2.6.24.20080108" all
> deleted normal...

The current iproute version uses "protocol all" by default
if its not specified. This is actually only useful for creating
new filters, on deletion an unset protocol is treated as wildcard.
2008-06-23 09:09:45 -07:00
Stephen Hemminger
b6da1afc73 ematch related bugfix and cleanup
Bugfix: use strtoul rather than strtol for bstrtol to handle large key/mask.
Deinline larger functions to save space.
2008-05-29 11:54:19 -07:00
jamal
1750abe2ba Infrastructure for pretty printing
And last for now ..

cheers,
jamal

[PATCH 3/3] [TC/U32] Infrastructure for pretty printing

This patch makes it easy to add pretty printers of different protocols.
For starters it makes use of ipv4 and raw printers.
Add more later ...

Signed-off-by: Jamal Hadi Salim <hadi@cyberus.ca>
2008-05-09 15:50:12 -07:00
jamal
eefcbc7206 Expose the filter protocol
makes protocol accessible ..

cheers,
jamal

[PATCH 2/3] [TC/FILTERS] Expose the filter protocol

Expose the filter protocol so it can be used by underlying
classifiers when they need it.

Signed-off-by: Jamal Hadi Salim <hadi@cyberus.ca>
2008-05-09 15:44:46 -07:00
Stephen Hemminger
44dcfe8201 Change formatting of u32 back to default
Don't break scripts that depend on previous offset/value format.
Introduce a new -pretty flag for decoding, and (*gasp*) document
the formatting arguments.
2008-05-09 15:42:34 -07:00
Patrick McHardy
083a5f00a1 Fix classifier help
commit c504ffd627ac211eebf5ed34ef0fbfd7f1dbb347
Author: Patrick McHardy <kaber@trash.net>
Date:   Wed Mar 26 07:38:43 2008 +0100

    [IPROUTE]: Fix classifier help

    The new check whether the user has specified a protocol makes
    "ip filter <type> help" fails with "protocol is required".

    This could be fixed by moving it further down, but a more user-friendly
    way it to simply use ETH_P_ALL as default if nothing is specified.

    Signed-off-by: Patrick McHardy <kaber@trash.net>
2008-04-17 10:07:02 -07:00
Jesper Dangaard Brouer
292f29b42c ATM cell alignment.
Introducing the function that does the ATM cell alignment, and
modifying tc_calc_rtable() to use this based upon a linklayer
parameter.

Modified from original to use constants from atm.h and
fix all the usages of rtable in same patch.

Signed-off-by: Jesper Dangaard Brouer <hawk@comx.dk>
Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
2008-04-17 10:04:31 -07:00
Stephen Hemminger
1a5bd776a2 In police, fix uninitialized "overhead" variable.
Bug introduced by myself in an earlier patch series.

Signed-off-by: Jesper Dangaard Brouer <hawk@comx.dk>
2008-04-17 09:12:38 -07:00
Jesper Dangaard Brouer
f71f75f39b police, implement overhead parameter parsing.
For police, implement overhead parameter parsing.

The change is ABI (Application Binary Interface) backward compatible
with older kernels, but will first have effect from kernel 2.6.24.

Signed-off-by: Jesper Dangaard Brouer <hawk@comx.dk>
Signed-off-by: Stephen Hemminger <stephen.hemminger@vyatta.com>
2008-04-01 11:27:42 -07:00
Jesper Dangaard Brouer
2a1f78b376 CBQ, doc usage of overhead parameter.
CBQ remember to doc usage of overhead parameter.

Signed-off-by: Jesper Dangaard Brouer <hawk@comx.dk>
Signed-off-by: Stephen Hemminger <stephen.hemminger@vyatta.com>
2008-04-01 11:27:35 -07:00
Jesper Dangaard Brouer
08fd01843f CBQ, implement overhead parameter parsing.
For CBQ, implement overhead parameter parsing.

The change is ABI (Application Binary Interface) backward compatible
with older kernels, but will first have effect from kernel 2.6.24.

Signed-off-by: Jesper Dangaard Brouer <hawk@comx.dk>
Signed-off-by: Stephen Hemminger <stephen.hemminger@vyatta.com>
2008-04-01 11:27:25 -07:00
Jesper Dangaard Brouer
1db5e2ec13 CBQ use matches() function instead of strcmp().
Change CBQ to use matches() function instead of strcmp().

This resembels the usage in other parse functions, and allows
partial command parameter matching.

Signed-off-by: Jesper Dangaard Brouer <hawk@comx.dk>
Signed-off-by: Stephen Hemminger <stephen.hemminger@vyatta.com>
2008-04-01 11:27:17 -07:00
Jesper Dangaard Brouer
2c42579f9c TBF overhead parameter parsing.
For TBF, implement overhead parameter parsing.

The change is ABI (Application Binary Interface) backward compatible
with older kernels, but will first have effect from kernel 2.6.24.

Signed-off-by: Jesper Dangaard Brouer <hawk@comx.dk>
Signed-off-by: Stephen Hemminger <stephen.hemminger@vyatta.com>
2008-04-01 11:27:06 -07:00
Mike Frysinger
418a217ad9 Do not strip binaries with install
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Stephen Hemminger <stephen.hemminger@vyatta.com>
2008-04-01 11:26:47 -07:00
Stephen Hemminger
cfa440b0da missing dport in f_u32 output
Small typo from last change to decode filters. Should print dport
not port.
2008-02-22 11:51:35 -08:00
Stephen Hemminger
4c9ffc2f8c decode the output of u32 matches
reverse the match offset/mask values into ip header matches.
2008-02-18 11:35:29 -08:00
Stephen Hemminger
e62077d0b6 break excessively long lines
Cleanup code (slightly).
2008-02-18 10:51:42 -08:00
Stephen Hemminger
6695297433 Revert "rlim qdisc support"
This reverts commit 7ca30b789d.

Since rlim isn't upstream (yet), drop it.
2008-02-18 10:13:25 -08:00
PJ Waskiewicz
e9acc2420c Update various classifiers' help output for expected CLASSID syntax
update: Fix the spelling of "hexidecimal"

This updates the help output to specify that CLASSID should be hexidecimal.
This makes sure that a user entering "flowid 1:10" gets his flow put into
band 15 (0x10) and knows why.

Signed-off-by: Peter P Waskiewicz Jr <peter.p.waskiewicz.jr@intel.com>
Signed-off-by: Stephen Hemminger <stephen.hemminger@vyatta.com>
2008-02-13 12:36:38 -08:00
Stephen Hemminger
84d66882aa minor typo fixes
A couple of obvious typo's.
2008-02-07 22:10:14 -08:00
Stephen Hemminger
de33a43055 Protocol field on tc_filter is required
Kernel won't find matching filter if protocol value not
provided.
2008-02-07 19:25:26 -08:00
Stephen Hemminger
ba26a6e853 fix typos in help message for meta match
Make sure examples actually work.
2008-02-05 12:07:07 -08:00
Stephen Hemminger
5e76a87d4c Change where vlan option shows up in help
Vlan should not be in the socket section
2008-02-05 11:33:44 -08:00
Patrick McHardy
66862d3cc7 cls_flow: add vlan-tag support
commit 94e9cba778cb97d77d9146dc3bd38ff195bc2c8a
Author: Patrick McHardy <kaber@trash.net>
Date:   Sat Feb 2 18:22:16 2008 +0100

    [IPROUTE]: cls_flow: add vlan-tag support

    Signed-off-by: Patrick McHardy <kaber@trash.net>

Signed-off-by: Stephen Hemminger <stephen.hemminger@vyatta.com>
2008-02-05 08:36:59 -08:00
Patrick McHardy
9932abb498 Add flow classifier support
[IPROUTE]: Add flow classifier support

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: Stephen Hemminger <stephen.hemminger@vyatta.com>
2008-01-31 22:28:11 -08:00
Patrick McHardy
5626a24a8b Add support for SFQ xstats
[IPROUTE]: Add support for SFQ xstats

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: Stephen Hemminger <stephen.hemminger@vyatta.com>
2008-01-31 22:28:10 -08:00
Stephen Hemminger
42169181b8 whitespace typo in tc_common.h
minor whitespace typo.
2008-01-31 21:26:00 -08:00
Stephen Hemminger
9becb950e9 vlan meta tag match
Signed-off-by: Stephen Hemminger <stephen.hemminger@vyatta.com>
2008-01-24 13:16:41 -08:00
Stephen Hemminger
d21dd573e7 Revert "TC action parsing bug fix"
[...]
> Commands like "tc filter add dev ppp0 parent ffff: protocol ip prio 50
> u32 match ip src 0.0.0.0/0 police rate 4mbit burst 10k drop flowid :1"
> apparently no longer works. The flowid is not accepted anymore.
> Reverting commit 720a2e8d99... which you authored seems to "fix" this.
[...]

After further investigation it seems clear to me that reverting the
commit 720a2e8d990707749b2... is the correct thing to do, since the real
fix for the problem this commit was supposed to fix was instead fixed in
commit c29391c7c68f031e246c...

Whatever you specify after a u32 police you will now get a syntax error,
and according to "tc filter add u32 help" there are several things that
you are supposed to be able to specify after a police.

This reverts commit 720a2e8d99.
2008-01-02 09:29:30 -08:00
Stephen Hemminger
4c7abb271b Merge branch 'master' into net-2.6.25 2007-12-31 12:51:15 -08:00
Denys Fedoryshchenko
53c017880b iptables compatiablity
New iptables 1.4.0 has some library names changed from libipt to libxt.
It is prefferable also to open libxt_ first, as newer "style".

Signed-off-by: Denys Fedoryshchenko <nuclearcat@nuclearcat.com>
Signed-off-by: Jamal Hadi Salim <hadi@cyberus.ca>
Signed-off-by: Stephen Hemminger <stephen.hemminger@vyatta.com>
2007-12-31 11:15:29 -08:00
Jesper Dangaard Brouer
eeee367d91 Change the rate table calc of transmit cost to use upper bound value.
Patrick McHardy, Cite: 'its better to overestimate than underestimate
to stay in control of the queue'.

Illustrating the rate table array:
 Legend description
   rtab[x]   : Array index x of rtab[x]
   xmit_sz   : Transmit size contained in rtab[x] (normally transmit time)
   maps[a-b] : Packet sizes from a to b, will map into rtab[x]

Current/old rate table mapping (cell_log:3):
 rtab[0]:=xmit_sz:0  maps[0-7]
 rtab[1]:=xmit_sz:8  maps[8-15]
 rtab[2]:=xmit_sz:16 maps[16-23]
 rtab[3]:=xmit_sz:24 maps[24-31]
 rtab[4]:=xmit_sz:32 maps[32-39]
 rtab[5]:=xmit_sz:40 maps[40-47]
 rtab[6]:=xmit_sz:48 maps[48-55]

New rate table mapping, with kernel cell_align support.
 rtab[0]:=xmit_sz:8  maps[0-8]
 rtab[1]:=xmit_sz:16 maps[9-16]
 rtab[2]:=xmit_sz:24 maps[17-24]
 rtab[3]:=xmit_sz:32 maps[25-32]
 rtab[4]:=xmit_sz:40 maps[33-40]
 rtab[5]:=xmit_sz:48 maps[41-48]
 rtab[6]:=xmit_sz:56 maps[49-56]

New TC util on a kernel WITHOUT support for cell_align
 rtab[0]:=xmit_sz:8 maps[0-7]
 rtab[1]:=xmit_sz:16 maps[8-15]
 rtab[2]:=xmit_sz:24 maps[16-23]
 rtab[3]:=xmit_sz:32 maps[24-31]
 rtab[4]:=xmit_sz:40 maps[32-39]
 rtab[5]:=xmit_sz:48 maps[40-47]
 rtab[6]:=xmit_sz:56 maps[48-55]

Signed-off-by: Jesper Dangaard Brouer <hawk@comx.dk>
Signed-off-by: Stephen Hemminger <stephen.hemminger@vyatta.com>
2007-12-31 11:08:08 -08:00
Jesper Dangaard Brouer
d5f46f9cc3 Cleanup: tc_calc_rtable().
Change tc_calc_rtable() to take a tc_ratespec struct as an
argument. (cell_log still needs to be passed on as a parameter,
because -1 indicate that the cell_log needs to be computed by the
function.).

Signed-off-by: Jesper Dangaard Brouer <hawk@comx.dk>
Signed-off-by: Stephen Hemminger <stephen.hemminger@vyatta.com>
2007-12-31 11:08:04 -08:00
Jesper Dangaard Brouer
bccd014b86 Overhead calculation is now done in the kernel.
The only current user is HTB. HTB overhead argument is now passed on
to the kernel (in the struct tc_ratespec). Also correct the data
types.

Signed-off-by: Jesper Dangaard Brouer <hawk@comx.dk>
Signed-off-by: Stephen Hemminger <stephen.hemminger@vyatta.com>
2007-12-31 11:07:58 -08:00
Stephen Hemminger
6b1ac654e9 add decode of match rules
Show ip address etc when decoding output of tc filter show

Signed-off-by: Stephen Hemminger <stephen.hemminger@vyatta.com>
2007-12-31 10:29:52 -08:00
Stephen Hemminger
c1b81cb5fe netem potential dist table overflow
Fix possible stack overflow when given distribution table that is
too large.

Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>
2007-12-12 15:02:51 -08:00
Stephen Hemminger
e50e9f9123 Merge branch 'master' into net-2.6.25 2007-12-11 10:04:33 -08:00
François Delawarde
e22b42a2c1 tc mask patch
Hello Stephen,

As the current maintainer of iproute2 package, you could be interested
in including the attached patch that allow using masks in the fw filter
of the tc utility (very useful at least for me). AFAK, it works at least
from iproute2 version 2.6.20-?. Feel free to make the appropriate
cleaning changes if necessary, or contact me if you see any trouble.

Best regards,
François Delawarde.

Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>
2007-12-11 09:35:49 -08:00
Herbert Xu
fc2d02069b Add NAT action
Here's a patch to add support for the nat action which is now
in the kernel.

Thanks,
--
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmV>HI~} <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
--

Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>
2007-12-11 09:33:55 -08:00
Stephen Hemminger
7ca30b789d rlim qdisc support
Add support for new rate limit qdisc

Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>
2007-12-10 13:10:20 -08:00
Stephen Hemminger
ece02ea0a3 Fix breakage from netfilter/ip_tables header change.
Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>
2007-12-10 09:40:45 -08:00
Stephen Hemminger
45305c2470 add q_rr to tc Makefile
Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>
2007-10-16 14:27:42 -07:00
Andreas Henriksson
64e2ad593b Also do tc_core_time2big argument (long->unsigned).
tc_core_time2big only used in tc/q_netem.c where it gets passed an unsigned.

Signed-off-by: Andreas Henriksson <andreas@fatal.se>
Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>
2007-10-12 16:06:22 -07:00
Andreas Henriksson
57a800d45a Switch helpers tc_core_{time2ktime,ktime2time} from long to unsigned as well.
Follow up patch to "Fix overflow in time2tick / tick2time." which switches
the remaining two helper functions from long to unsigned as well.
These functions are only used in "tc/q_hfsc.c" where both the passed argument
and the place the return value is stored are unsigned/u32 variables, so this
change should be safe to make but hasn't been tested as extensively as the
time2tick patch.

Signed-off-by: Andreas Henriksson <andreas@fatal.se>
Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>
2007-10-12 16:06:21 -07:00
Andreas Henriksson
4475984498 Fix overflow in time2tick / tick2time.
The helper functions gets passed an unsigned int, which gets cast to long
and overflows. See http://bugs.debian.org/175462

Signed-off-by: Andreas Henriksson <andreas@fatal.se>
Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>
2007-10-12 14:56:35 -07:00
Lionel Elie Mamane
bc45ded42c Fix ematch cmp and nbyte syntax help text.
The help/usage screen of ematch cmp and nbyte say recognised symbolic
values for "layer FOO" are link, header and next-header, but the code
does _not_ implement that: it will recognise "next-header" as what is
supposed to be "header" and will not recognise "header". The right
symbolic values seem to be link, network, transport. Here is a patch
that changes the help/usage screen to match the code.
(http://bugs.debian.org/438653)

Signed-off-by: Andreas Henriksson <andreas@fatal.se>
Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>
2007-10-12 14:56:31 -07:00
Patrick McHardy
6140785236 Fix meta ematch usage of 0 values
em_meta doesn't send 0 values to the kernel. breaking matching on them and
resulting in "Missing value TLV" messages on dump.

Signed-off-by: Patrick McHardy <kaber@trash.net>
2007-08-22 10:52:13 -07:00
Stephen Hemminger
f7cd9b0354 Fix m_ipt build
Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>
2007-08-22 10:33:33 -07:00
PJ Waskiewicz
292ce96bca iproute2: sch_rr support in tc
This patch applies on top of Patrick McHardy's RTNETLINK
patches to add nested compat attributes.  This is needed to maintain
ABI for sch_{rr|prio} in the kernel with respect to tc.  A new option,
namely multiqueue, was added to sch_prio and sch_rr.  This will allow
a user to turn multiqueue support on for sch_prio or sch_rr at loadtime.
Also, tc qdisc ls will display whether or not multiqueue is enabled on
that qdisc.  When in multiqueue mode, a user can specify a value of 0 for
bands, and the number of bands will be created to match the number of
queues on the device.

This patch is to support the new sch_rr (round-robin) qdisc being proposed
in NET for multiqueue network device support in the Linux network stack.
It uses q_prio.c as the template, since the qdiscs are nearly identical,
outside of the ->dequeue() routine.

Signed-off-by: Peter P Waskiewicz Jr <peter.p.waskiewicz.jr@intel.com>
2007-08-22 10:04:25 -07:00
Patrick McHardy
c29391c7c6 Bug fix tc action drop
>>That command is from a script that used to work with iproute2-ss020116
>>(2002!), which had the following in tc/m_police.c:
>>
>>210     } else if (strcmp(*argv, "action") == 0) {
>>211             NEXT_ARG();
>>212             if (get_police_result(&p.action, &presult, *argv)) {
>>
>>I don't know when that bit was dropped, but it used to be there. :-)
>
>
>
> Indeed, I missed that. I'll fix up the patch ..

OK this patch fixes parsing of "action ...". I've removed
the erroring on unknown arguments again since in that case
the caller should continue parsing.
2007-08-22 10:01:10 -07:00