On Tue, 9 Apr 2002, Mihai RUSU wrote:
> Hi
>
> I have a cbq setup with all the filters in tha root class.
> If I try to delete a class with the following line:
> tc class del dev eth0 classid 1:1000
> it says:
> RTNETLINK answers: Device or resource busy
>
> Is this because I have filters (not with parent this class) with flowid
> this class?
>
> If so, then I tried to delete a specific filter. The tc filter show dev
> eth0 command shows me what I have to delete but if I try something like
> this:
>
> tc filter del dev eth0 handle 2:a5:809
> it says:
> RTNETLINK answers: No such file or directory
>
> But 2:a5:809 exists and is on dev eth0...
>
> Help ?!
>
> :)
>
Hi I have found a/the solution. Maybe it would be cool to be included in
the HOWTO.
To delete a specific filter you can use:
tc filter del dev <device> pref <priority> handle
<filterhandle> <filtertype>
ex.
tc filter del dev eth0 pref 5 handle 800::801 u32
To find out the filter handle you can use tc filter show. I noticed that
this handles are structured like this:
<hashtableid>:<hashoffset>:<localoffset>
To delete a specific class first of all you have to delete all the filters
that point to that class (flowid <classid>) and also all the other classes
that are linked to this one (child classes).
Then you can use this command:
tc class del dev eth0 classid <classid>
ex.
tc class del dev eth0 classid 1:20
The only exception to this are the qdisc. They can be deleted no matter if
you have classes to a classful qdisc, filters atached to that classes
etc...
To delete a qdisc one can use:
tc qdisc del dev eth0 [parent <parentid> | root]
Its strange that it doesnt work with "handle" to specify the qdisc
handle
but it works with the parent handle ;)
----------------------------
Mihai RUSU
Disclaimer: Any views or opinions presented within this e-mail are solely
those of the author and do not necessarily represent those of any company,
unless otherwise specifically stated.