superwujc 发表于 2014-12-13 01:06

请教optptr = (unsigned char *)&(ip_hdr(skb)[1]);这个语句是什么意思?

2.6.32-5内核的net/ipv4/ip_options.c文件

ip_options_compile()函数,验证与解析ip选项


其中对于入站数据包,skb != NULLunsigned char * optptr;if (skb != NULL) {
    rt = skb_rtable(skb);
    optptr = (unsigned char *)&(ip_hdr(skb));
}教程中说,语句 optptr = (unsigned char *)&(ip_hdr(skb));是将optptr指针指向紧随基本IP首部之后的选项部分
但是怎么会出现一个数组的索引呢?ip_hdr(skb)返回的是(struct iphdr *)类型的指针,指向ip首部的位置,怎么想也想不出这里的数组从何而来

请各位高手指点一下,非常感谢

mnipxh 发表于 2014-12-14 16:25

&是首部,&不就是首部后面那个。

superwujc 发表于 2014-12-14 20:23

回复 2# mnipxh
已明了,指针运算,谢谢。

   
页: [1]
查看完整版本: 请教optptr = (unsigned char *)&(ip_hdr(skb)[1]);这个语句是什么意思?