如下:
wh = (struct ieee80211_frame *) skb->data;
frm = (u_int8_t *)&wh[1];
wh是一个指针
frm = wh + sizeof(struct ieee80211_frame)
&wh[1] 即frm是wh偏移这一段结构体大小size后的地址。
这是一种写代码的技巧,在协议相关代码里常用来去协议头
---------------------------------------------------------------------
struct ieee80211_frame {
u_int8_t i_fc[2];
u_int8_t i_dur[2];
u_int8_t i_addr1[IEEE80211_ADDR_LEN];
u_int8_t i_addr2[IEEE80211_ADDR_LEN];
u_int8_t i_addr3[IEEE80211_ADDR_LEN];
u_int8_t i_seq[2];
/* possibly followed by addr4[IEEE80211_ADDR_LEN]; */
/* see below */
} __packed;
-----------------------------------------------------------------------