Re: ipset support in tc

Linux Advanced Routing and Traffic Control

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> Nice, thanks for testing this!
OK, I've had a bit more time to test this, though I am far from finished, but decided to stop at this stage as I found quite a few nasties. So far, I came across the following bugs:

1. ipset bug - "ipset --help" produces multiples of hash:ip,port,net, hash:net,iface, hash:net,port & hash:net. Executing "ipset --help" gives me this:
Supported set types:
    list:set
    hash:ip,port,net
    hash:ip,port,net
    hash:ip,port,net
    hash:ip,port,ip
    hash:ip,port
    hash:net,iface
    hash:net,iface
    hash:net,port
    hash:net,port
    hash:net,port
    hash:net
    hash:net
    hash:net
    hash:ip
    bitmap:port
    bitmap:ip,mac
    bitmap:ip

2. tc ematch bug
tc filter add dev ifb0 protocol ip parent f:0 prio 10\
basic match (ipset'(set1 src,src,dst)' or ipset'(set2 dst,src,src)' or ipset'(set3 src,dst)') and ipset'(set4 src,src)'\
flowid f:38

produces the following error: syntax error near unexpected token `('

According to the help text though (see "Example" below), the above syntax should be fine:
Usage: EXPR
where: EXPR  := TERM [ { and | or } EXPR ]
       TERM  := [ not ] { MATCH | '(' EXPR ')' }
       MATCH := module '(' ARGS ')'
       ARGS := ARG1 ARG2 ...

Example: a(x y) and not (b(x) or c(x y z))

Am I missing something?

3. Numerous tc ematch ipset bugs:

3.1. bitmap:port can't produce any matches

ipset n b_test-port bitmap:port range 22-22 timeout 0
ipset a b_test-port 22

tc filter add dev ifb0 protocol ip parent f:0 prio 14\
basic match ipset'(b_test-port src)'\
flowid f:26

produces no matches. This is also true when port match is present in an "and" | "or" logical expression, like ipset'(b_ssh-host src)' and ipset'(b_ssh-port src)'

3.2. hash:ip,port produces no matches:

ipset n h_test-hosts hash:ip,port family inet timeout 0 hashsize 64
ipset a h_test-hosts 10.1.1.7,tcp:22

tc filter add dev ifb0 protocol ip parent f:0 prio 21\
basic match ipset'(h_test-hosts src,src)'\
flowid f:33

produces no matches.

3.3. hash:net,port produces no matches
ipset n h_test-hosts hash:net,port family inet timeout 0 hashsize 64
ipset a h_test-hosts 10.1.1.1/24,tcp:22

tc filter add dev ifb0 protocol ip parent f:0 prio 22\
basic match ipset'(h_test-hosts src,src)'\
flowid f:34

produces no matches.

3.4. hash:ip,port,ip produces no matches
ipset n h_test-hosts hash:ip,port,ip family inet timeout 0 hashsize 64
ipset a h_test-hosts 10.1.1.7,tcp:22,10.1.1.2

tc filter add dev ifb0 protocol ip parent f:0 prio 23\
basic match ipset'(h_test-hosts src,src,dst)'\
flowid f:35

produces no matches.

3.5. hash:ip,port,net produces no matches
ipset n h_test-hosts hash:ip,port,net family inet timeout 0 hashsize 64
ipset a h_test-hosts 10.1.1.2,tcp:22,10.1.1.1/24

tc filter add dev ifb0 protocol ip parent f:0 prio 23\
basic match ipset'(h_test-hosts dst,src,src)'\
flowid f:36

produces no matches.

3.6. hash:net,iface produces no matches
ipset n h_test-hosts hash:net,iface  family inet timeout 0 hashsize 64
ipset a h_test-hosts 10.1.1.1/24,eth0

tc filter add dev ifb0 protocol ip parent f:0 prio 25\
basic match ipset'(h_test-hosts src,dst)'\
flowid f:37

produces no matches.


It looks as though port matching is non-existent and so is multi-dimensional ipset matching - I wasn't able to produce a single match by using either ports or ipsets with multiple dimensions. That's it for now - let me know if you need any more info from me. I hope the above could be fixed...
--
To unsubscribe from this list: send the line "unsubscribe lartc" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [LARTC Home Page]     [Netfilter]     [Netfilter Development]     [Network Development]     [Bugtraq]     [GCC Help]     [Yosemite News]     [Linux Kernel]     [Fedora Users]
  Powered by Linux