void ArpRequest (void)
来源:互联网 发布:网络受限怎么办 编辑:程序博客网 时间:2024/05/16 19:36
void ArpRequest (void)
{
int i;
volatile uchar *pkt;
ARP_t *arp;
#ifdef ET_DEBUG
printf ("ARP broadcast %d\n", NetArpWaitTry);
#endif
pkt = NetTxPacket;
arp->ar_hrd = htons (ARP_ETHER); //设置目标地址硬件类型
arp->ar_pro = htons (PROT_IP); //设置目标地址上层协议为IP协议
arp->ar_hln = 6; //设置目标地址硬件地址长度
arp->ar_pln = 4; //设置目标地址上层协议地址长度(IP地址长度)
arp->ar_op = htons (ARPOP_REQUEST); //操作类型
memcpy (&arp->ar_data[0], NetOurEther, 6); /* source ET addr */ //本机mac地址
NetWriteIP ((uchar *) & arp->ar_data[6], NetOurIP); /* source IP addr */ //本机ip地址
for (i = 10; i < 16; ++i) {
arp->ar_data[i] = 0; /* dest ET addr = 0 */ //目标mac地址=0
}
if ((NetArpWaitPacketIP & NetOurSubnetMask) !=
(NetOurIP & NetOurSubnetMask)) {
if (NetOurGatewayIP == 0) {
puts ("## Warning: gatewayip needed but not set\n");
NetArpWaitReplyIP = NetArpWaitPacketIP; //不在同一网段,且没有网关-----目的ip地址
} else {
NetArpWaitReplyIP = NetOurGatewayIP; //不在同一网段,且已设网关-----网关地址
}
} else {
NetArpWaitReplyIP = NetArpWaitPacketIP; //在同一网段-------------------------目的ip地址
}
NetWriteIP ((uchar *) & arp->ar_data[16], NetArpWaitReplyIP); //写入ar_data[16]
(void) eth_send (NetTxPacket, (pkt - NetTxPacket) + ARP_HDR_SIZE);
}
{
int i;
volatile uchar *pkt;
ARP_t *arp;
#ifdef ET_DEBUG
printf ("ARP broadcast %d\n", NetArpWaitTry);
#endif
pkt = NetTxPacket;
pkt += NetSetEther (pkt, NetBcastAddr, PROT_ARP); //设置帧头(设置帧头(广播地址,本机mac,协议)
arp->ar_hrd = htons (ARP_ETHER); //设置目标地址硬件类型
arp->ar_pro = htons (PROT_IP); //设置目标地址上层协议为IP协议
arp->ar_hln = 6; //设置目标地址硬件地址长度
arp->ar_pln = 4; //设置目标地址上层协议地址长度(IP地址长度)
arp->ar_op = htons (ARPOP_REQUEST); //操作类型
memcpy (&arp->ar_data[0], NetOurEther, 6); /* source ET addr */ //本机mac地址
NetWriteIP ((uchar *) & arp->ar_data[6], NetOurIP); /* source IP addr */ //本机ip地址
for (i = 10; i < 16; ++i) {
arp->ar_data[i] = 0; /* dest ET addr = 0 */ //目标mac地址=0
}
if ((NetArpWaitPacketIP & NetOurSubnetMask) !=
(NetOurIP & NetOurSubnetMask)) {
if (NetOurGatewayIP == 0) {
puts ("## Warning: gatewayip needed but not set\n");
NetArpWaitReplyIP = NetArpWaitPacketIP; //不在同一网段,且没有网关-----目的ip地址
} else {
NetArpWaitReplyIP = NetOurGatewayIP; //不在同一网段,且已设网关-----网关地址
}
} else {
NetArpWaitReplyIP = NetArpWaitPacketIP; //在同一网段-------------------------目的ip地址
}
NetWriteIP ((uchar *) & arp->ar_data[16], NetArpWaitReplyIP); //写入ar_data[16]
(void) eth_send (NetTxPacket, (pkt - NetTxPacket) + ARP_HDR_SIZE);
}
- void ArpRequest (void)
- void *
- void
- void
- void
- void
- void
- void*
- void
- void
- void
- void
- void
- void
- void
- (void**)&
- void *
- void
- Handler总结
- CentOS 6上的redis搭建实战记录
- C的动态内存管理--mallac()和free()
- 判断是否含有全角
- strtol()函数解析
- void ArpRequest (void)
- MapReduce 流程详述
- JavaWEB开发-国际化
- iOS开发:iOS网络编程--ASIHTTPRequest框架安装和配置
- experiment : 使用vs2008编译C文件
- c++中string类成员函数c_str()
- Ubuntu安装MongoDB
- 端口号被占用解决方法
- PHP MVC快速开发框架EaglePHP v2.5正式发布