Linux中如何如何添加规则,如何在linux中添加新的qdisk

据strace tc qdisc add dev eth0 root red_new结果,并tc源命令,似乎TC正在搜索$TC_LIB_DIR/q_red_new.so。

您必须为您自己创建模块。我会给你小指导。 (1)从以下url中下载iproute2的源文件,将其解压缩,然后将cd下载到该文件夹​​中。 https://wiki.linuxfoundation.org/networking/iproute2

(2)复制到q_red.cq_red_new.c

$ cp tc/q_red.c tc/q_red_new.c

(3)编辑TC/q_red_new.c

重命名red_parse_opt,red_print_opt,red_print_xstats,以red_new_parse等。 此外,您必须将red_qdisk_util重命名为req_new_qdisc_util并更改id和其他成员。

struct qdisc_util red_new_qdisc_util = {

.id = "red_new",

.parse_qopt = red_new_parse_opt,

.print_qopt = red_new_print_opt,

.print_xstats = red_new_print_xstats,

};

(4)配置,并建立q_red_new.so

$ ./configure

$ make TCSO=q_red_new.so

现在你看到./tc/q_red_new.so创建

(5)在与TC_LIB_DIR环境tc命令。

$ TC_LIB_DIR='./tc' tc qdisc add dev eth0 root red_new

更新:这里是如何知道tc命令正确装入q_red_new.so。

if dlopen returns zero,then you failed to load ./tc/q_red_new.so。

if dlsym returns zero,then you failed to load red_new_qdisc_util inside the q_red_new.so。

# export TC_LIB_DIR='./tc'

# ltrace ./tc/tc qdisc add dev eth0 root red_new limit 100 min 80 max 90 avpkt 10 burst 10 probability 1 bandwidth 200 ecn 2>&1 | grep red_new

.. OMITTED ..

dlopen("./tc/q_red_new.so", 1) = 0x12c1030

snprintf("red_new_qdisc_util", 256, "%s_qdisc_util", "red_new") = 18

dlsym(0x12c1030, "red_new_qdisc_util") = 0x7f1cf0d6cc40

.. OMITTED ..

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值