On Tuesday 27 May 2003 11:49, Jurijs Dorofejevs wrote:
> Hi!
>
> Can anybody explain me how does the mask work in filters?
>
> This example set filter for exactly port #2000 :
> tc filter add dev eth1 parent 1:0 protocol ip prio 100 u32 match ip sport
> 2000 0xffff classid 1:256
>
> But if I need to set filter for the range of ports, for example, ports
> from 2000 till 3000, what mask do I need?
>
> Trying google, I've read that Mask = 0xffff - (high_port - low_port),
> that in my case will be: Mask = 0xffff - (3000 - 2000) = 0xfc17
>
> tc filter add dev eth1 parent 1:0 protocol ip prio 100 u32 match ip sport
> 2000 0xfc17 classid 1:256
>
> But this example doesn't work correctly and I suppose that I'm wrong
> with mask defying algorithm.
>
> Any ideas?
I don't use the u32 mask myself, but I think you have to write it down in
binary to understand.
Easy example :
match ip sport 2000 0xffff
2000 = 0000 0111 1101 0000
0xfff0 = 1111 1111 1111 0000
So all packets going from 0000 0111 1101 0000 (2000) to 0000 0111 1101 0000
(2031) are matched.
Other example :
match ip sport 2000 0xfc17
2000 = 0000 0111 1101 0000
0xfc17 = 1111 1100 0001 0111
This is more complicated. This matches all packets with 0000 01xx xxx1 x000
(x = 0 or 1) as source port.
Stef
--
[EMAIL PROTECTED]
"Using Linux as bandwidth manager"
http://www.docum.org/
#lartc @ irc.oftc.net
_______________________________________________
LARTC mailing list / [EMAIL PROTECTED]
http://mailman.ds9a.nl/mailman/listinfo/lartc HOWTO: http://lartc.org/