memcpy(LLADDR(SDL(gate)), etherbroadcastaddr, 6);
SDL(gate)->;sdl_alen = 6;/*硬件地址的长度,对rt(路由信息结构)的rt_gateway成员操作*/
rt->;rt_expire = 0;/*0表示该ARP永不过期*/
}
#endif
if (SIN(rt_key(rt))->;sin_addr.s_addr ==
(IA_SIN(rt->;rt_ifa))->;sin_addr.s_addr) {
rt->;rt_expire = 0;/*置永久ARP标志,即该ARP永不过期*/
Bcopy(((struct arpcom *)rt->;rt_ifp)->;ac_enaddr, /*把本网卡的硬件地址放入路由的rt->;rt_gateway中*/
LLADDR(SDL(gate)), SDL(gate)->;sdl_alen = 6); /*记住:内核函数Bcopy和Memcpy都是内存拷贝,但参数方向不同*/
if (useloopback)
rt->;rt_ifp = loif;
}
break;
case RTM_DELETE:/*删除一ARP节点,当然也要对对应的路由进行相关的操作*/
if (la == 0)
break;
arp_inuse--;/*统计用*/
LIST_REMOVE(la, la_le);/*从链表中(ARP节点链表,即结构llinfo_arp)删除一ARP节点*/
rt->;rt_llinfo = 0;/*该路由所指向的ARP节点置空*/
rt->;rt_flags &= ~RTF_LLINFO;/*去掉含有ARP节点标志*/
if (la->;la_hold)/*如果在该节点中还有未发送的mbuf,释放掉*/
m_freem(la->;la_hold);
Free((caddr_t)la);/*释放该ARP节点结构占用的内存*/
}
}
/*
* 广播一ARP请求:
* ac 要发送该ARP包的网卡(由以太网通用结构arpcom指向该卡的相关结构)
* sip- 源IP地址
* tip- 目的IP地址
* enaddr 源以太网地址
*/
static void
arprequest(ac, sip, tip, enaddr)
register struct arpcom *ac; /*以太网通用结构*/
register struct in_addr *sip, *tip;/*源和目的IP地址*/
register u_char *enaddr;/*发送ARP包的卡的硬件地址*/
{
register struct mbuf *m;/*mbuf链指针*/
register struct ether_header *eh;/*以太网头部*/
register struct ether_arp *ea; /*ARP头部结构*/
struct sockaddr sa;/*在这没用上,除非你在ISO协议中*/
static u_char llcx[] = { 0x82, 0x40, LLC_SNAP_LSAP, LLC_SNAP_LSAP, /*用于ISO协议*/
LLC_UI, 0x00, 0x00, 0x00, 0x08, 0x06 };
if ((m = m_gethdr(M_DONTWAIT, MT_DATA)) == NULL)/*该函数在mbuf.c中,建立一mbuf,其实他是MGETHDR(m, how, type);下面对该宏有详细的解释*/
return;
m->;m_pkthdr.rcvif = (struct ifnet *)0;/*对于此语句,本人并没有发现什么有用的地方,不管在ether_output,还是在驱动程序的包输出中,都没有用上他*/
switch (ac->;ac_if.if_type) {/*查看该卡所用的协议*/
case IFT_ISO88025:/*支持ISO协议,我们可以略去*/
m->;m_len = sizeof(*ea) + sizeof(llcx);
m->;m_pkthdr.len = sizeof(*ea) + sizeof(llcx);
| 论坛热门帖子: | [lch203] 写得蛮好的linux学习笔记(10-21) [黑马制造] 学习java的30个目标(10-19) [笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19) [udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18) [沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18) |
| TAG标签: | 及其 漏洞 分析 详解 协议 地址 解析 ARP IP if ea- 路由 |
注册
个人空间
