无规则采集器列表算法(直接用过滤器的生成规则去删除TC的filter会导致所有过滤器都被清空)

优采云 发布时间: 2022-03-21 12:00

  无规则采集器列表算法(直接用过滤器的生成规则去删除TC的filter会导致所有过滤器都被清空)

  直接用过滤器生成规则删除TC过滤器会导致所有过滤器被清除

  邮件列表中提到了正确的方法

  与类不同,添加后很容易删除。只需将 TC 命令中的 add 替换为 del 即可。如果重复上课,会提示好像路由添加错误。

  但过滤器不同。可以连续添加具有相同规则的过滤器。添加规则后,内核会使用不同的句柄号进行区分。

  要删除一个过滤器,不能简单地将规则的add改为del,它会删除所有过滤器规则,因为你没有提供最重要的句柄号(handle),如果你不提供,为0。如果为0,则删除所有规则。

  您必须至少提供以下信息:

  开发

  父级(qdisc 或类)

  优先

  种类(过滤器类型)

  处理

  如果一个过滤器已经与一个类关联,那么如果你删除这个类,你会得到这个提示:RTNETLINK answers: Device or resource busy

  因此,在删除类规则之前,请先删除与该类关联的过滤器。下面是我的一个实现($id代表类规则ID号)

  [bash]handles=tc filter list dev ${dev} |grep "flowid 1:${id}"|awk '{print $10}'

  $handles 中的句柄

  做

  tc filter delete dev ${dev} parent 1: protocol ip prio 1 handle ${handle} u32

  完成[/bash]

  之所以使用循环,是因为过滤器可能与一个类有多个关联

  作者信息:来自:正确删除tc的过滤器过滤器网址:请保留此链接,谢谢!

  

  本作品已获得知识共享署名-非商业性许可3.0 Unported License。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线