- 论坛徽章:
- 0
|
本帖最后由 yu_single 于 2010-05-27 09:07 编辑
函数如下,是一内核模块中用来解析网络报文的,但在执行红字部分的时候就会直接导致ARM板子重启,我一开始是以为memcpy出问题了,后来用eh->h_dest[0]这样最简单的一句访问内存的句子也是同样问题,于是打印了skb->data的地址,是以下这些值:246,294,1828。地址为什么这么小,是不是有问题?还望高手指点迷津啊,谢谢了!
int parse_pkt(struct sk_buff *skb, u_int16_t skb_displ, struct pfring_pkthdr *hdr)
{
struct ethhdr *eh = (struct ethhdr *)(skb->data - skb_displ);
u_int16_t displ, ip_len;
memset(&hdr->parsed_pkt, 0, sizeof(struct pkt_parsing_info));
hdr->parsed_header_len = 9;
/* MAC adderess */
memcpy(&hdr->parsed_pkt.dmac, eh->h_dest, sizeof(eh->h_dest)); ...
} |
|