LINUX TC:HTB相关源码

本文详细探讨了Linux TC(Traffic Control)中HTB(Hierarchical Token Bucket)调度器的相关源码分析,从tc_modify_qdisc函数的注册到rtnl_msg_handlers,再到rtnetlink_net_init函数如何启动处理流程。通过对rtnetlink_rcv_msg函数的剖析,揭示了消息处理函数的调用机制。
摘要由CSDN通过智能技术生成

 

3、             什么时候调用qdisc_create函数

在函数tc_modify_qdisc中,会调用qdisc_create函数,而tc_modify_qdisc这个函数在pktsched_init(void)中,被注册到系统中

CODE

static int __init pktsched_init(void)

{

       int err;

 

       err = register_pernet_subsys(&psched_net_ops);

       if (err) {

              printk(KERN_ERR "pktsched_init: "

                     "cannot initialize per netns operations/n");

              return err;

       }

/*

*在系统默认的情况下, 系统内只注册了pfif0bfifomq_qdiscpfifl_head_drop

*这几种qdisc

*/

       register_qdisc(&pfifo_qdisc_ops);

       register_qdisc(&bfifo_qdisc_ops);

       register_qdisc(&pfifo_head_drop_qdisc_ops);

       register_qdisc(&mq_qdisc_ops);

 

       rtnl_register(PF_UNSPEC, RTM_NEWQDISC, tc_modify_qdisc, NULL);

       rtnl_register(PF_UNSPEC, RTM_DELQDISC, tc_get_qdisc, NULL);

       rtnl_register(PF_UNSPEC, RTM_GETQDISC, tc_get_qdisc, tc_dump_qdisc);

       rtnl_register(PF_UNSPEC, RTM_NEWTCLASS, tc_ctl_tclass, NULL);

       rtnl_register(PF_UNSPEC, RTM_DELTCLASS, tc_ctl_tclass, NULL);

       rtnl_register(PF_UNSPEC, RTM_GETTCLASS, tc_ctl_tclass, tc_dump_tclass);

 

       return 0;

}

下面看看rtnl_register函数具体做了哪些事情.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值