码为uip_arpc中的void uip_arp_arpin(void)函数

码为uip_arpc中的void uip_arp_arpin(void)函数

ID:33180803

大小:60.50 KB

页数:6页

时间:2019-02-21

码为uip_arpc中的void uip_arp_arpin(void)函数_第1页
码为uip_arpc中的void uip_arp_arpin(void)函数_第2页
码为uip_arpc中的void uip_arp_arpin(void)函数_第3页
码为uip_arpc中的void uip_arp_arpin(void)函数_第4页
码为uip_arpc中的void uip_arp_arpin(void)函数_第5页
资源描述:

《码为uip_arpc中的void uip_arp_arpin(void)函数》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、ARP应答部分代码为uip_arp.c中的voiduip_arp_arpin(void)函数.这个函数是在设备接收到ARP包时,由驱动程序调用的.如果收到是ARP包是一个对本地主机上次发送的ARP请求的应答,那么就从包中取得自己想要的主机的MAC地址,加入自己的ARP缓存表中.如果收到是一个ARP请求,那就把自己的MAC地址打包成一个ARP应答,发送给请求的主机.看代码uip_arp.c的254行:1./*-------------------------------------------------------------------------

2、----------*/2./**3.*ARPprocessingforincomingARPpackets.4.*对传入的ARP包的处理.5.*ThisfunctionshouldbecalledbythedevicedriverwhenanARP6.*packethasbeenreceived.Thefunctionwillactdifferently7.*dependingontheARPpackettype:ifitisareplyforarequest8.*thatwepreviouslysentout,theARPcachewillbef

3、illedinwith9.*thevaluesfromtheARPreply.IftheincomingARPpacketisanARP10.*requestforourIPaddress,anARPreplypacketiscreatedandput11.*intotheuip_buf[]buffer.12.*此函数在收到ARP包时由设备驱动调用,函数行为会因包类型而有不同.如果收到的是一个对前先发送的请求的应答13.*则根据应答的值填充缓存.如果传入的包是对我们的IP的请求,则创建一个ARP应答,并放入uip_buf[]中.14.*Whenthe

4、functionreturns,thevalueoftheglobalvariableuip_len15.*indicateswhetherthedevicedrivershouldsendoutapacketor16.*not.Ifuip_leniszero,nopacketshouldbesent.Ifuip_lenis17.*non-zero,itcontainsthelengthoftheoutboundpacketthatis18.*presentintheuip_buf[]buffer.19.*函数返回时,全局变量uip_len的值指明了

5、设备驱动要不要发送包.若uip_len为0,则不需发送,若uip_len不是0,20.*则其值是uip_buf[]中包含的要传出的包的大小.21.*ThisfunctionexpectsanARPpacketwithaprependedEthernet22.*headerintheuip_buf[]buffer,andthelengthofthepacketinthe23.*globalvariableuip_len.此函数预期中的uip_buf中有一个带以太网头的ARP包.其长度存为uip_len中.24.*/25./*--------------

6、---------------------------------------------------------------------*/26.void27.uip_arp_arpin(void)28.{29.30.if(uip_lenopcode){6.caseHTONS(ARP_REQUEST):7./*ARPrequest.Ifitaskedforouraddress,wesendouta

7、8.reply.如果是一个ARP请求,则发送应答.*/9.if(uip_ipaddr_cmp(BUF->dipaddr,uip_hostaddr)){10./*First,weregistertheonewhomadetherequestinourARP11.table,sinceitislikelythatwewilldomorecommunication12.withthishostinthefuture.首先,我们将发送请求的主机注册到ARP缓存表中,因为我们很可能要跟它要有更多的交流*/13.uip_arp_update(BUF->sipad

8、dr,&BUF->shwaddr);14.15./*Thereplyopcodeis2.应答的操作码为2*/

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。