linux网络协议栈初始化Series---(8)

1898阅读 0评论2010-09-18 mtloveft
分类:LINUX

声明:本文为原创
#####请转贴时保留以下内容######
作者GTT
本文档归属http://oldtown.cublog.cn/.转载请注明出处!
请提出宝贵意见Mail:mtloveft@hotmail.com
Linux Version:2.6.33
提示本文是介绍linux 网络协议栈初始化
继续介绍subsys_initcall级别的网络初始化方法。
策略路由的初始化。
 

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;

    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:
    rtnl_unregister(PF_UNSPEC, RTM_NEWRULE);
    rtnl_unregister(PF_UNSPEC, RTM_DELRULE);
    rtnl_unregister(PF_UNSPEC, RTM_GETRULE);
    return err;
}

 
先注册和user space 进行交互的netlink。
 
 
 
 
 
上一篇:linux网络协议栈初始化Series---(7)
下一篇:linux路由实现分析Series---(1)