4.2 路由策略初始化
路由策略的初始化,主要分为通用策略规则初始化和协议相关的策略规则初始化。
4.2.1 通用策略规则初始化
功能:注册通知链,包括设备注册和注销时的通知。
路由策略的初始化,主要分为通用策略规则初始化和协议相关的策略规则初始化。
4.2.1 通用策略规则初始化
功能:注册通知链,包括设备注册和注销时的通知。
static int __init fib_rules_init(void)
{
int err;
rtnl_register(PF_UNSPEC, RTM_NEWRULE, fib_nl_newrule, NULL);
rtnl_register(PF_UNSPEC, RTM_DELRULE, fib_nl_delrule, NULL);
rtnl_register(PF_UNSPEC, RTM_GETRULE, NULL, fib_nl_dumprule);
err = register_pernet_subsys(&fib_rules_net_ops);
if (err < 0)
goto fail;
//该通知链只处理NETDEV_REGISTER、NETDEV_UNREGISTER两个事件。
//(1)设备注册时,遍历策略规则,对于匹配的规则,将该策略规则的index赋值;
//(2)设备注销时,对于匹配的规则,将策略规则的index值设为-1。
err = register_netdevice_notifier(&fib_rules_notifier);
if (err < 0)
goto fail_unregister;
return 0;
fail_unregister:
unregister_pernet_subsys(&fib_rules_net_ops);
fail: