📄 2_4内核网络部分的初始化 - china linux forum.htm
字号:
<BR>/* <BR>* Add all the protocols. <BR>*/ <BR>printk(KERN_INFO "IP
Protocols: "); <BR>for(p = inet_protocol_base; p != NULL;) <BR>{
<BR>struct inet_protocol *tmp = (struct inet_protocol *) p->next;
<BR>inet_add_protocol(p); <BR>printk("%s%s",p->name,tmp?",
":"\n"); <BR>p = tmp; <BR>} <BR>/* <BR>* Set the ARP module up
<BR>*/
<BR>>>>>>初始化全局变量邻居表arp_tbl,然后赋值:全局变量neigh_tables=arp_tbl
<BR>>>>>>并调用dev_add_pack将arp_packet_type注册到ptype_base链表中
<BR>arp_init(); <BR>/* <BR>* Set the IP module up <BR>*/
<BR>>>>>> 下面的ip_init包括: <BR>>>>>>
dev_add_pack(&ip_packet_type):注册到ptype_base链表中;
<BR>>>>>> ip_rt_init():初始化路由的一些数据结构
<BR>>>>>>
inet_initpeers():分配一个SLAB缓冲池peer_cachep,然后初始化一个定时器
<BR>>>>>> peer_periodic_timer <BR>ip_init();
<BR>>>>>> 创建一个tcp_socket,为IPPROTO_TCP类型的原始套接字
<BR>>>>>>
用来发送rst,然后调用proto->unhash函数(udp_v4_unhash)
<BR>>>>>> 退出由pprev和next连接的双向链表(2.2中没有这一步),其理由是如下
<BR>/* Unhash it so that IP input processing does not even <BR>* see
it, we do not wish this socket to see incoming <BR>* packets. <BR>*/
<BR>>>>>> 即到来的TCP数据报不要投递到这个套接字
<BR>tcp_v4_init(&inet_family_ops); <BR>>>>>>
分配几个slab缓冲池tcp_openreq_cachep ,tcp_bucket_cachep ,tcp_timewai
<BR>t_cachep <BR>>>>>> 以及几个hash表tcp_ehash ,tcp_bhash
<BR>/* Setup TCP slab cache for open requests. */ <BR>tcp_init();
<BR>icmp_init(&inet_family_ops); <BR><BR>..................
<BR>} <BR>比较一下2.2和2.4的初始化的不同在于:2.4的内核将各个协议簇的初始化函数分开来,
<BR>放到各个协议簇所在的文件中,例如af_unix.c定义了module_init(af_unix_init),用
<BR>来注册定义在该文件中的AF_UNIX的net_proto_family结构,af_inet.c定义了module_i
<BR>nit(inet_init),用来注册定义在该文件中的AF_INET的net_proto_family结构。2.2的
<BR>内核则用一个数组protocols将各个协议簇链接起来,然后在sock_init中调用proto_in
<BR>it,用一个for循环,调用定义在protocols中的各个协议簇的初始化函数。
<BR><BR><BR><BR><BR>欢迎访问"Unix编程" <BR>telnet apue.dhs.org 2323 <BR>or
http://apue.dhs.org
<P class=small>文章选项: <A
href="http://www.linuxforum.net/forum/printthread.php?Cat=&Board=linuxK&main=147047&type=post"
target=_blank><IMG align=absMiddle alt=打印 border=0
src="2_4内核网络部分的初始化 - China Linux Forum.files/print.gif"></A>
</P></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<TABLE align=center border=0 cellPadding=4 cellSpacing=0 width="95%">
<TBODY>
<TR>
<TD align=left class=small> </TD>
<TD align=right class=small><A
href="http://www.linuxforum.net/forum/printthread.php?Cat=&Board=linuxK&main=147047&type=thread"
target=_blank><IMG align=top border=0
src="2_4内核网络部分的初始化 - China Linux Forum.files/printthread.gif"> 打印</A>
</TD></TR></TBODY></TABLE><BR>
<TABLE align=center border=0 cellPadding=0 cellSpacing=0 width="95%">
<TBODY>
<TR>
<TD class=tableborders>
<TABLE border=0 cellPadding=3 cellSpacing=1 width="100%">
<TBODY>
<TR class=darktable>
<TD align=right>
<TABLE border=0>
<TBODY>
<TR>
<TD class=navigation noWrap><IMG align=absMiddle alt=*
src="2_4内核网络部分的初始化 - China Linux Forum.files/greyflat.gif">平坦模式
</TD>
<TD class=navigation noWrap><A
href="http://www.linuxforum.net/forum/showthreaded.php?Cat=&Board=linuxK&Number=147047&page=120&view=collapsed&sb=5&o=all&vc=1"><IMG
align=absMiddle alt=树状模式,一封一封读 border=0
src="2_4内核网络部分的初始化 - China Linux Forum.files/threaded.gif">树状模式</A>
</TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<TABLE align=center border=0 cellPadding=0 cellSpacing=0 width="95%">
<TBODY>
<TR>
<TD align=right>
<FORM action=http://www.linuxforum.net/forum/jumper.php method=post><INPUT
name=Cat type=hidden> <SPAN class=onbody>前往讨论区 </SPAN><SELECT
class=formboxes name=board> <OPTION value=-CATJUMP-1>*Linux 社区和文化*
-----<OPTION value=new> 社区公告栏<OPTION
value=uglyduck> 社区服务台<OPTION
value=linuxnews> 业界新闻与评论<OPTION
value=linuxtalk> 自由软件杂谈<OPTION
value=software> Linux软件快递<OPTION
value=Tworkshop> 中文MAN-PAGE计划(CMPP)<OPTION
value=tcl> Linux图书与评论<OPTION
value=job> 招聘和求职<OPTION value=-CATJUMP-2>*Linux
桌面与办公自动化* -----<OPTION value=chinese> Linux
中文环境和中文化<OPTION value=office> Linux桌面与办公软件<OPTION
value=game> Linux 多媒体与娱乐版<OPTION
value=mozilla> 自由之窗Mozilla<OPTION
value=laptop> 笔记本电脑上的Linux<OPTION
value=-CATJUMP-3>*Linux 入门及网络应用* -----<OPTION
value=debian> Debian 一族<OPTION
value=nm> 网络管理技术<OPTION
value=newbie> Linux 安装与入门<OPTION
value=web> WEB服务器和FTP服务器<OPTION
value=dns> 域名服务器和邮件服务器<OPTION
value=proxy> Linux防火墙和代理服务器应用<OPTION
value=samba> 文件及打印服务器<OPTION
value=training> 技术培训与认证<OPTION value=-CATJUMP-4>*Linux
高级应用* -----<OPTION selected
value=linuxK> Linux内核技术<OPTION
value=embedded> 嵌入开发推进计划 (OpenARM)<OPTION
value=driver> Linux设备驱动程序<OPTION
value=cluster> Linux 集群技术<OPTION
value=db> LINUX平台数据库<OPTION
value=cpu> CPU 与 编译器<OPTION
value=security> 系统和网络安全<OPTION value=-CATJUMP-5>*Linux
环境下的程序设计* -----<OPTION
value=kylix> LINUX下的快速开发工具(RAD)<OPTION
value=program> C/C++编程版<OPTION
value=php3> PHP 技 术<OPTION
value=java> Java&jsp技术<OPTION
value=vrml> Shell编程技术<OPTION
value=perl> Perl 编 程<OPTION
value=python> Python 编 程<OPTION
value=xml> XML/Web Service 技术<OPTION
value=-CATJUMP-6>*永远的 UNIX* -----<OPTION
value=unix> 永远的Unix<OPTION
value=bsd> FreeBSD世界<OPTION value=-CATJUMP-7>*IT 人生*
-----<OPTION value=life> IT 人生</OPTION></SELECT> <INPUT class=buttons name=Jump type=submit value=出发>
</FORM></TD></TR></TBODY></TABLE>
<P>
<TABLE align=center border=0 cellPadding=0 cellSpacing=0 width="95%">
<TBODY>
<TR>
<TD class=tableborders>
<TABLE border=0 cellPadding=3 cellSpacing=1 width="100%">
<TBODY>
<TR class=darktable>
<TD>
<TABLE border=0 cellPadding=0 cellSpacing=0 width="100%">
<TBODY>
<TR>
<TD align=left><A href="mailto:davidd@linuxforum.net">Contact
Us</A> </TD>
<TD align=right><A
href="http://www.linuxforum.net/">LINUXFORUM.NET</A>
</TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></P></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -