📄 [转载] linux的tcp-ip协议栈阅读笔记(8) - china linux forum.htm
字号:
__inline__ unsigned char *__skb_push(struct sk_buff *skb,
<BR>unsigned int
len)<BR>{<BR>skb->data-=len;<BR>skb->len+=len;<BR>return
skb->data;<BR>}<BR><BR>extern __inline__ unsigned char
*skb_push(struct sk_buff *skb, <BR>unsigned int
len)<BR>{<BR>skb->data-=len;<BR>skb->len+=len;<BR>if(skb->datahead)<BR>{<BR>__label__
here;<BR>skb_under_panic(skb, len, &&here);<BR>here:
;<BR>}<BR>return
skb->data;<BR>}<BR>这个调整使数据长度加长,和skb_pull相反,不过skb_push显然更加安全一点.<BR><BR>在上面的程序中间,如果设备有一个明确的link_level_header,就考虑要不要<BR>调整数据长度和地址,如果sk->type不是SOCK_DGRAM的话,说明程序对整个数据<BR>包包括ll地址都感兴趣.这样需要加长数据段使得数据包含ll头部.不然如果数<BR>据是向外走的,则需要把数据裁减到只包含从网络层数据包头开始的地方.所以<BR>是从nh.raw剪掉data,这就是差值.(nh=network
header)<BR><BR>经过了这些处理以后,现在的skb已经是可以提交的了,这样就调用<BR>sock_queue_rcv_skb函数将这个skb加入到相应socket的接收缓冲区中去.
这个<BR>函数以后再说把.<BR><BR>--<BR><BR>把我的名字刻于水上,<BR>我的生命如江河归于大海,<BR>把我的名字写在火中,<BR>我的心灵像热焰猎猎燃烧.<BR><BR>※
来源:.武汉白云黄鹤站 bbs.whnet.edu.cn.[FROM: 202.106.43.158]<BR>--<BR>※
转载:.武汉白云黄鹤站 bbs.whnet.edu.cn.[FROM:
202.106.43.158]<BR><BR><BR>--------------------------------------------------------------------------------<BR><BR>分类讨论区
全部讨论区 上一篇 本讨论区 回文章 下一篇 <BR><BR><BR>Linux can touch everything!---How
can we do?
<P class=small>文章选项: <A
href="http://www.linuxforum.net/forum/printthread.php?Cat=&Board=linuxK&main=67731&type=post"
target=_blank><IMG align=absMiddle alt=打印 border=0
src="[转载] Linux的TCP-IP协议栈阅读笔记(8) - China Linux Forum.files/print.gif"></A>
</P></TD></TR>
<TR>
<TD class=darktable rowSpan=2 vAlign=top width="17%"><A
name=Post67832></A><A
href="http://www.linuxforum.net/forum/showprofile.php?Cat=&User=yawl&Number=67832&Board=linuxK&what=showflat&page=192&view=collapsed&sb=5&o=all&fpart=1&vc=1">yawl</A><BR><SPAN
class=small>(stranger )<BR>01/04/01 10:41<BR></SPAN></TD>
<TD class=subjecttable width="83%">
<TABLE border=0 class=subjecttable width="100%">
<TBODY>
<TR>
<TD align=left width="70%"><IMG height=15
src="C:\经验\[转载] Linux的TCP-IP协议栈阅读笔记(8) - China Linux Forum.files\book(1).gif"
width=15> <B>补充</B> <IMG alt=新
src="[转载] Linux的TCP-IP协议栈阅读笔记(8) - China Linux Forum.files/new.gif">
<FONT class=small>[<A
href="http://www.linuxforum.net/forum/showthreaded.php?Cat=&Board=linuxK&Number=67731&page=192&view=collapsed&sb=5&o=all&vc=1"
target=_new>re: tommytang</A>]</FONT></TD>
<TD align=right width="30%"> </TD></TR></TBODY></TABLE></TD></TR>
<TR>
<TD class=lighttable width="83%"><BR>
<P class=post>那个Packet
types是在eth.c中的eth_type_trans里面赋值的,而这个函数几乎被所有的网卡驱动程序调用。其实也就这么几种,都是真对链路层的:<BR>#define
PACKET_HOST 0 /* To us */<BR>#define PACKET_BROADCAST 1 /* To all
*/<BR>#define PACKET_MULTICAST 2 /* To group */<BR>#define
PACKET_OTHERHOST 3 /* To someone else */<BR>#define PACKET_OUTGOING
4 /* Outgoing of any type */<BR>/* These ones are invisible by user
level */<BR>#define PACKET_LOOPBACK 5 /* MC/BRD frame looped back
*/<BR>#define PACKET_FASTROUTE 6 /* Fastrouted frame */<BR><BR>
<P class=small>文章选项: <A
href="http://www.linuxforum.net/forum/printthread.php?Cat=&Board=linuxK&main=67832&type=post"
target=_blank><IMG align=absMiddle alt=打印 border=0
src="[转载] Linux的TCP-IP协议栈阅读笔记(8) - 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=67731&type=thread"
target=_blank><IMG align=top border=0
src="[转载] Linux的TCP-IP协议栈阅读笔记(8) - 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="[转载] Linux的TCP-IP协议栈阅读笔记(8) - China Linux Forum.files/greyflat.gif">平坦模式
</TD>
<TD class=navigation noWrap><A
href="http://www.linuxforum.net/forum/showthreaded.php?Cat=&Board=linuxK&Number=67832&page=192&view=collapsed&sb=5&o=all&vc=1"><IMG
align=absMiddle alt=树状模式,一封一封读 border=0
src="[转载] Linux的TCP-IP协议栈阅读笔记(8) - 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 + -