В файле include/linux/ieee80211.h
у нас есть:
struct ieee80211_mgmt {
...
union {
...
struct {
__le16 capab_info;
__le16 listen_interval;
/* followed by SSID and Supported rates */
u8 variable[0];
} __packed assoc_req;
...
} u;
} __packed __aligned(2);
Мне нужно изменить некоторые поля в этой структуре.Например, чтобы изменить capab_info
, я бы сделал это следующим образом:
...
struct ieee80211_mgmt *mgmt_hdr = skb->data;
mgmt_hdr->u.assoc_req.capab_info = 0xABCD;
Но если я хочу изменить / вставить поле "SSID", которое будет локализовано где-то в массиве переменных, я не знаю, гдеи как я должен выделить и изменить его.
Приведенный выше код, я предполагаю, skb-> структура данных уже была выделена модулем mac80211, и что я хочу сделать, это просто вставить новое поле (которого нет в списке встатическая структура).
Я не нашел подобного кода в дереве ядра для использования в качестве примера.Я ценю любые моменты, которые вы можете дать мне, чтобы понять это лучше.Большое спасибо!