Порезку трафика делал на основе LAR&TC HowTo. Ограничиваю скорость для каждого пользователя созданием класса с последующим наложением фильтра. Все прекрасно работает, но при попытке удалить фильтр подставив del вместо add в ту же команду, которой этот фильтр добавлялся получаю сообщение:
RTNETLINK answers: No such file or directoryПодробнее:
Часть скрипта отвечающая за добавление корневых классов и пример класса для одного пользователя
tc qdisc add dev eth2 root handle 1: htb r2q 1
tc class add dev eth2 parent 1: classid 1:1000 htb rate 100mbit
tc class add dev eth2 parent 1:1000 classid 1:1001 htb rate 1kbit
tc class add dev eth2 parent 1:1000 classid 1:1002 htb rate 128kbit
tc class add dev eth2 classid 1:1003 htb prio 2 rate 128kbit
tc filter add dev eth2 protocol ip u32 match ip src 10.0.0.2 flowid 1:1003
tc qdisc add dev eth2 parent 1:1003 handle 1003: sfq perturb 10
соответственно после добавления: tc filter show dev eth2 выдает
filter parent 1: protocol ip pref 49152 u32
filter parent 1: protocol ip pref 49152 u32 fh 800: ht divisor 1
filter parent 1: protocol ip pref 49152 u32 fh 800::800 order 2048 key ht 800 bkt 0 flowid 1:003
match 0a021213/ffffffff at 12
соответсвенно попытка удалить фильтр пользователя с помощью
tc filter del dev eth2 protocol ip u32 match ip src 10.0.0.2 flowid 1:1003
приводит к вышеуказанной ошибке, в следствие чего не могу удалить класс с сообщением Device or resource busy (но здесь-то причина понятна)
ядро: 2.6.19
Может я туплю где-то, но вроде во всех доках указано, что удаление фильтра производится именно заменой add на del в tc filter ... уже даже не знаю в какую сторону копать ...