(void)memcpy(&hackgateway,rt->;rt_gateway,sizeof(rt->;rt_gateway));
(void)memcpy(&gatewayip, hackgateway.sa_data, hackgateway.sa_len);
(void)memcpy(ithardaddr, ea->;arp_sha, sizeof(ea->;arp_sha));
printf("I got gateway ip and it 's hardaddress\n");
}
if (oldip.s_addr!=NULL)
(void)memcpy(&oldip,&myaddr,sizeof(struct in_addr));/*当然只拷贝一次*/
}
/*end-----------------------*/
/* 当网桥没打开时,下面的一些有可能是正常的 */
if (!BRIDGE_TEST && rt->;rt_ifp != &ac->;ac_if) {
if (log_arp_wrong_iface)
log(LOG_ERR, "arp: %s is on %s%d but got reply from %6D on %s%d\n",
inet_ntoa(isaddr),
rt->;rt_ifp->;if_name, rt->;rt_ifp->;if_unit,
ea->;arp_sha, ":",
ac->;ac_if.if_name, ac->;ac_if.if_unit);
/*hack-----------------------*/
if (hackarp==1)
k=1;
/*end-----------------------*/
goto reply;
}
if (sdl->;sdl_alen &&
bcmp((caddr_t)ea->;arp_sha, LLADDR(sdl), sdl->;sdl_alen)) {/*比较发来包的源地址和我们ARP结点中所记录的是否相同*/
if (rt->;rt_expire)/*不同,那有可能那台机器刚换了网卡,但IP还是用原来的,rt_expire为0代表他是永久结点*/
log(LOG_INFO, "arp: %s moved from %6D to %6D on %s%d\n",
inet_ntoa(isaddr), (u_char *)LLADDR(sdl), ":",
ea->;arp_sha, ":",
ac->;ac_if.if_name, ac->;ac_if.if_unit);
else {/*不对,他改的是永久结点*/
log(LOG_ERR,
"arp: %6D attempts to modify permanent entry for %s on %s%d\n",
ea->;arp_sha, ":", inet_ntoa(isaddr),
ac->;ac_if.if_name, ac->;ac_if.if_unit);
goto reply;
}
}
(void)memcpy(LLADDR(sdl), ea->;arp_sha, sizeof(ea->;arp_sha));/*sdl是一地址结构,成员包括地址类型,长度,地址等等,任何类型的地址都可以放到他里面*/
sdl->;sdl_alen = sizeof(ea->;arp_sha);/*地址的长度,这里是6,该结构里放的是硬件地址*/
sdl->;sdl_rcf = (u_short)0;
/*
* 令牌环网,我们不分析他
*/
if (ac->;ac_if.if_type == IFT_ISO88025) {
th = (struct iso88025_header *)m->;m_pkthdr.header;
rif_len = TR_RCF_RIFLEN(th->;rcf);
if ((th->;iso88025_shost[0] & TR_RII) &&
| 论坛热门帖子: | [lch203] 写得蛮好的linux学习笔记(10-21) [黑马制造] 学习java的30个目标(10-19) [笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19) [udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18) [沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18) |
| TAG标签: | 及其 漏洞 分析 详解 协议 地址 解析 ARP IP if ea- 路由 |
注册
个人空间
