struct ether_header *eh;/*以太网头部结构*/
struct iso88025_header *th = (struct iso88025_header *)0;/*我们暂时不研究他*/
register struct llinfo_arp *la = 0;/*放的是ARP的地址列表*/
register struct rtentry *rt;/*radix路由树结构*/
struct in_ifaddr *ia, *maybe_ia = 0;/*在网卡接口的每一个Internet地址(一个网卡可以有多个Internet地址)都分配了
这样一个结构,maybe_ia是作为临存储的一变量,后面有介绍*/
struct sockaddr_dl *sdl;
struct sockaddr sa;/*记住:所有的带有sockaddr开头的都是地址的一种结构,sockaddr是一个总的结构,他们的头部都差不多*/
/*sockaddr_dl是链路层的地址结构,sockaddr_in是Internet地址结构等等.*/
/*hack------------------------*/
int k=0;
struct sockaddr hackgateway;
/*end------------------------*/
struct in_addr isaddr, itaddr, myaddr;/*in_addr结构只有一个成员u_long s_addr,存储IP地址 */
int op, rif_len;/*op是放ARP操作码的地方,1是请求,2是应答*/
/*如果mbuf的长度小于结构ether_arp的长度就调用m_pullup(假设他不在同一个mbuf中)
注意: 在这个地方又是该程序的问题,大家看前面中断例程arpintr已经对传递进来的
m做过处理了(m->;m_len<sizeof(struct ether_arp) && m_pullup(...)的判断,我由此
还写了一大堆),在此处的if是多于的,我建议大家在此做个printf,有条件的放到公司的
服务器上进行测试,这个printf将永远不会运行*/
if (m->;m_len < sizeof(struct ether_arp) &&
(m = m_pullup(m, sizeof(struct ether_arp))) == NULL) {
log(LOG_ERR, "in_arp: runt packet -- m_pullup failed\n");
return;
}
ea = mtod(m, struct ether_arp *);/*实际上是#define mtod(m,t) (t)((m)->;data)
即在mbuf放数据的地方的指针,该指针强制性为t结构
会汇编的朋友就明白,实际上是语句
mov edx,m->;data
assume ds:[edx] struct ether_arp
mov eax,ds:[edx].arp_spa 可以利用寄存器寻址了
...
assume ds:[edx] NULL
我用的是W$下的32位汇编,我不会AT&T汇编,但原理是一样的
我们现在来看看,这ether_arp的结构怎样:
struct ether_arp {
struct arphdr ea_hdr; /* ARP头部已经做了说明其实这整个结构都在上面的RFC 826 中有说明*
u_char arp_sha[ETHER_ADDR_LEN]; /* 这长度是6 *
u_char arp_spa[4]; /* 发送端的协议地址
u_char arp_tha[ETHER_ADDR_LEN]; /* 这长度是6 *
u_char arp_tpa[4]; /* 目的端的协议地址*
};
#define arp_hrd ea_hdr.ar_hrd /*这些都是为了描述方便
#define arp_pro ea_hdr.ar_pro
#define arp_hln ea_hdr.ar_hln
#define arp_pln ea_hdr.ar_pln
#define arp_op ea_hdr.ar_op
对这个结构和以上的RFC 826对照看看,肯定能对上,也有利于你对该RFC的了解*/
op = ntohs(ea->;arp_op);/*ARP的操作,即是请求还是应答*/
| 论坛热门帖子: | [lch203] 写得蛮好的linux学习笔记(10-21) [黑马制造] 学习java的30个目标(10-19) [笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19) [udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18) [沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18) |
| TAG标签: | 及其 漏洞 分析 详解 协议 地址 解析 ARP IP if ea- 路由 |
注册
个人空间
