【文件属性】:
文件名称:然后是发送一个数据报片函数-用TCP/IP进行网际互连
文件大小:220KB
文件格式:PPT
更新时间:2021-04-24 01:54:30
课后习题答案
然后是发送一个数据报片函数:
Int ipfsend(struct netif *pni, IPaddr nexthop, struct ep *pep,
unsigned offset, unsigned maxdlen, unsigned offindg)
{
struct ep *pepnew;
struct ip *pip, *pipnew;
int hlen, len;
pepnew = (struct ep *)getbuf(Net.netpool); //分配新缓冲区
if (pepnew == (struct ep *)SYSERR)
return SYSERR;
pepnew->ep_order = ~0;
hlen = ipfhcopy(pepnew, pep, offindg); /* copy the headers */
pip = (struct ip *)pep->ep_data //复制数据;
pipnew = (struct ip *)pepnew->ep_data; //分配数据格式
pipnew->ip_fragoff = IP_MF | (offindg>>3);
pipnew->ip_len = len = maxdlen + hlen; //确定首部长
pipnew->ip_cksum = 0;
iph2net(pipnew);
pepnew->ep_order &= ~EPO_IP;
pipnew->ip_cksum = cksum((WORD *)pipnew, hlen);
memcpy(&pepnew->ep_data[hlen],&pep->ep_data[IP_HLEN(pip)+offset], maxdlen); //复制数据
pepnew->ep_nexthop = nexthop;
return netwrite(pni, pepnew, EP_HLEN+len);
}
该函数其实和iputp类似。不多说了
然后是复制数据报首部函数