linux-Tcp IP协议栈源码阅读笔记(5)

来源:未知 责任编辑:责任编辑 发表时间:2015-10-08 14:16 点击:

  */

 

#ifdef CONFIG_NET

 rtnetlink_init();

#endif

#ifdef CONFIG_NETLINK_DEV

 init_netlink();

#endif

#ifdef CONFIG_NETFILTER

 netfilter_init();

#endif

 

#ifdef CONFIG_BLUEZ

 bluez_init();

#endif

 

/*yfhuang ipsec*/

#ifdef CONFIG_IPSEC           

 pfkey_init();

#endif

/*yfhuang ipsec*/

}

 

 

    2.2 do_initcalls() 中做了其它的初始化,其中包括

 

                协议初始化,路由初始化,网络接口设备初始化

 

(例如inet_init函数以_init开头表示是系统初始化时做,函数结束后跟module_init(inet_init),这是一个宏,在include/linux/init.c中定义,展开为_initcall(inet_init),表示这个函数在do_initcalls被调用了)

 

    2.3 协议初始化

此处主要列举inet协议的初始化过程。

 

static int __init inet_init(void)

{

 struct sk_buff *dummy_skb;

 struct inet_protocol *p;

 struct inet_protosw *q;

 struct list_head *r;

 

 printk(KERN_INFO "NET4: Linux TCP/IP 1.0 for NET4.0/n");

 

 if (sizeof(struct inet_skb_parm) > sizeof(dummy_skb->cb)) {

  printk(KERN_CRIT "inet_proto_init: panic/n");

  return -EINVAL;

 }

 

 /*

  * Tell SOCKET that we are alive... 注册socket,告诉socket inet类型的地址族已经准备好了

  */

  

   (void) sock_register(&inet_family_ops);

 

 /*

  * Add all the protocols. 包括arp,ip、ICMP、UPD、tcp_v4、tcp、igmp的初始化,主要初始化各种协议对应的inode和socket变量。

 

其中arp_init完成系统中路由部分neighbour表的初始化

 

ip_init完成ip协议的初始化。在这两个函数中,都通过定义一个packet_type结构的变量将这种数据包对应的协议发送数据、允许发送设备都做初始化。

 

  */

 

 printk(KERN_INFO "IP Protocols: ");

 for (p = inet_protocol_base; p != NULL;) {

  struct inet_protocol *tmp = (struct inet_protocol *) p->next;

  inet_add_protocol(p);

  printk("%s%s",p->name,tmp?", ":"/n");

  p = tmp;

 }

 

 /* Register the socket-side information for inet_create. */

 for(r = &inetsw[0]; r < &inetsw[SOCK_MAX]; ++r)

  INIT_LIST_HEAD(r);

 

 for(q = inetsw_array; q < &inetsw_array[INETSW_ARRAY_LEN]; ++q)

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • /etc/fstab 详解
  •  LVS-NAT和LVS-DR模式的实现详解
  •  RHCE考试之磁盘配额
  • nginx主主集群
  •  LVM逻辑卷管理器
  • 学习笔记:ACL详解
  • suse linux双网卡双网关配置
  • puppet文件服务配置
  •  Nginx主主负载均衡架构

快速直达

操作系统导航

LinuxWindows虚拟机
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1