get_key_seq函数的用途是什么,如何实现?

时间:2019-01-10 14:21:34

标签: wifi netlink 802.11 wpa hostapd

我正在尝试为新驱动程序实现get_key_seq函数,但是我不知道该返回什么以及如何使用它。

函数声明:

void (*get_key_seq)(struct ieee80211_hw *hw,
            struct ieee80211_key_conf *key,
            struct ieee80211_key_seq *seq);

该函数仅获取硬件,而不获取net_device或类似的内容,因此它似乎是每个无线电而不是每个ap。 但是,如果我认为它用于wpa身份验证,则应该按ap进行,因为同一无线电中可能有多个wpa ap。

来自mac80211.h:  * @get_key_seq:如果您的设备在硬件中实现了加密并且确实  * IV / PN分配,则应提供此回调以读取  * IV / PN用于硬件给定的密钥。  *回调必须是原子的。

从硬件中获取IV / PN是没有用的,它一直在变化,我相信它应该返回一个所使用的IV / PN数量的计数器,但是我不明白为什么需要它。

我已将其跟踪到hostapd,它遵循以下路径:

wpa_auth_get_seqnum->(结构wpa_auth_callbacks cb)cb.get_seqnum-> hostapd_wpa_auth_get_seqnum-> hostapd_get_seqnum->(nl)

或: “ mesh_rsn”-> wpa_drv_get_seqnum->(nl)

nl:

.get_seqnum(nl)= i802_get_seqnum-> NL80211_CMD_GET_KEY-> nl80211_get_key-> .get_key(cfg)= ieee80211_get_key-> .get_key_seq(mac)

我已经在内核中的rt2800lib.c中找到了该函数的实现,但是它似乎只是返回插入到set_key中的怪异值。

任何人都可以帮助我进一步了解这件事吗?

0 个答案:

没有答案