/*
* 有克隆标志,即到外网,把网关的考过来就行了.
*/
rt_setgate(rt, rt_key(rt), /*既然是外网的IP,设置好他的路由的网关地址*/
(struct sockaddr *)&null_sdl);
gate = rt->;rt_gateway;/*gate是一sockaddr结构,那么他得到的是网关的硬件地址*/
SDL(gate)->;sdl_type = rt->;rt_ifp->;if_type;/*不用去查SDL宏,看都能看出来,他是把sockaddr转成sockaddr_dl结构.*/
SDL(gate)->;sdl_index = rt->;rt_ifp->;if_index;/*想一想,if_type在IP路由会是什么呢(当然还有IPX路由)*/
rt->;rt_expire = time_second;/*看了上面哪个函数就知道了,这个路由开始计时,放入当前时间的秒值*/
break;
}
/* 发送一免费ARP的通告.免费ARP用于查看是否有人和自己的IP相冲突. */
if (rt->;rt_flags & RTF_ANNOUNCE)
arprequest((struct arpcom *)rt->;rt_ifp, /*发送一ARP请求*/
&SIN(rt_key(rt))->;sin_addr, /*看到吧,源IP地址和目的IP地址都是自己*/
&SIN(rt_key(rt))->;sin_addr,
(u_char *)LLADDR(SDL(gate)));/*我的硬件地址*/
case RTM_RESOLVE:
if (gate->;sa_family != AF_LINK ||
gate->;sa_len < sizeof(null_sdl)) {
log(LOG_DEBUG, "arp_rtrequest: bad gateway value\n");
break;
}
SDL(gate)->;sdl_type = rt->;rt_ifp->;if_type;
SDL(gate)->;sdl_index = rt->;rt_ifp->;if_index;
if (la != 0)
break; /*到这是因为路由发生了改变*/
/*
* 该路由可能来自克隆路由.
*/
R_Malloc(la, struct llinfo_arp *, sizeof(*la));/*分配一ARP节点所需的内存*/
rt->;rt_llinfo = (caddr_t)la;/*使相关路由的ARP节点指针指向所分配的地方*/
if (la == 0) { /*一开始我觉得这里有毛病,上面的那句应该放到该判断的后面,并应该FREE掉分配的结构,但没关系,清大家思考*/
log(LOG_DEBUG, "arp_rtrequest: malloc failed\n");
break;
}
arp_inuse++, arp_allocated++;/*统计用*/
Bzero(la, sizeof(*la));/*结构清0*/
la->;la_rt = rt;/*设置ARP节点的相关路由回指针*/
rt->;rt_flags |= RTF_LLINFO;/*在相关的路由中加上有ARP节点标志*/
LIST_INSERT_HEAD(&llinfo_arp, la, la_le);/*把该ARP节点插入ARP节点链表中(队列的插入操作)*/
#ifdef INET
/*
*广播地址和多播地址,他们都是永久ARP
*/
if (IN_MULTICAST(ntohl(SIN(rt_key(rt))->;sin_addr.s_addr))) {
ETHER_MAP_IP_MULTICAST(&SIN(rt_key(rt))->;sin_addr,
LLADDR(SDL(gate)));
SDL(gate)->;sdl_alen = 6;/*硬件地址的长度,对rt(路由信息结构)的rt_gateway成员操作*/
rt->;rt_expire = 0;/*0表示该ARP永不过期*/
}
if (in_broadcast(SIN(rt_key(rt))->;sin_addr, rt->;rt_ifp)) {/*rt_key(rt)是查找路由信息中所包含IP的硬件地址,属路由函数*/
| 论坛热门帖子: | [lch203] 写得蛮好的linux学习笔记(10-21) [黑马制造] 学习java的30个目标(10-19) [笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19) [udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18) [沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18) |
| TAG标签: | 及其 漏洞 分析 详解 协议 地址 解析 ARP IP if ea- 路由 |
注册
个人空间
