1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
|
# named: protocol defaults to "all" -------------------------------------------
tcc | grep filter
prio {
fw();
}
EOF
tc filter add dev eth0 parent 1:0 protocol all prio 1 fw
# named: protocol "ipv4" is translated to "ip" --------------------------------
tcc | grep filter
prio {
fw(protocol "ipv4");
}
EOF
tc filter add dev eth0 parent 1:0 protocol ip prio 1 fw
# named: set protocol by name, retrieve by name -------------------------------
tcc | grep filter
prio {
fw(protocol "ipv6");
}
EOF
tc filter add dev eth0 parent 1:0 protocol ipv6 prio 1 fw
# named: set protocol by number, retrieve by name -----------------------------
tcc | grep filter
prio {
fw(protocol 0x86dd);
}
EOF
tc filter add dev eth0 parent 1:0 protocol ipv6 prio 1 fw
# named: invalid protocol name ------------------------------------------------
tcc 2>&1
prio {
fw(protocol "no such protocol");
}
EOF
ERROR
<stdin>:2: unknown ether protocol "no such protocol" near ")"
# named: invalid protocol number ----------------------------------------------
tcc 2>&1
prio {
fw(protocol 0x12345);
}
EOF
ERROR
<stdin>:2: parameter "protocol" value 0x12345 above limit 0xffff near ")"
# named: set ipproto by name --------------------------------------------------
tcc | sed '/.* ipproto/s//ipproto/p;d'
prio {
class
on rsvp(ipproto "udp") element (dst 1.2.3.4);
}
EOF
ipproto 17 session 1.2.3.4 classid 1:1
# named: set ipproto by number ------------------------------------------------
tcc | sed '/.* ipproto/s//ipproto/p;d'
prio {
class
on rsvp(ipproto 8) element (dst 1.2.3.4); /* EGP */
}
EOF
ipproto 8 session 1.2.3.4 classid 1:1
# named: invalid ipproto name -------------------------------------------------
tcc 2>&1
prio {
class
on rsvp(ipproto "no such proto") element (dst 1.2.3.4);
}
EOF
ERROR
<stdin>:3: unknown IP protocol "no such proto" near ")"
# named: invalid ipproto number -----------------------------------------------
tcc 2>&1
prio {
class
on rsvp(ipproto 0x100) element (dst 1.2.3.4);
}
EOF
ERROR
<stdin>:3: parameter "ipproto" value 256 above limit 255 near ")"
# named: set port by name -----------------------------------------------------
tcc | sed '/.* ipproto/s//ipproto/p;d'
prio {
class
on rsvp(ipproto "tcp") element (dst 1.2.3.4,sport "finger");
}
EOF
ipproto 6 session 1.2.3.4 sender any/79 classid 1:1
# named: set port by number ---------------------------------------------------
tcc | sed '/.* ipproto/s//ipproto/p;d'
prio {
class
on rsvp(ipproto "tcp") element (dst 1.2.3.4,sport 22); /* SSH */
}
EOF
ipproto 6 session 1.2.3.4 sender any/22 classid 1:1
# named: invalid port name ----------------------------------------------------
tcc 2>&1
prio {
class
on rsvp(ipproto "tcp") element (dst 1.2.3.4,sport "no such port");
}
EOF
ERROR
<stdin>:3: unknown service/port "no such port" near ")"
# named: invalid port number --------------------------------------------------
tcc 2>&1
prio {
class
on rsvp(ipproto "tcp") element (dst 1.2.3.4,dport 0); /* SSH */
}
EOF
ERROR
<stdin>:3: parameter "dport" value 0 below limit 1 near ")"
|