最近,我正在學習iw
的源代碼,試圖瞭解libnl
如何工作。nl_socket_set_cb()在libnl中的用途
我遇到使用nl_socket_set_cb()
的原因,我無法理解的iw.c
一些點。網絡上也沒有文檔。
我的第一個疑問是在有數據要從nl套接字讀取時關聯回調函數,但這是在源代碼的其他部分通過調用nl_recvmsgs()
時關聯回調來完成的。
任何人都可以點亮一下嗎? nl_socket_set_cb()
是多餘的?
最近,我正在學習iw
的源代碼,試圖瞭解libnl
如何工作。nl_socket_set_cb()在libnl中的用途
我遇到使用nl_socket_set_cb()
的原因,我無法理解的iw.c
一些點。網絡上也沒有文檔。
我的第一個疑問是在有數據要從nl套接字讀取時關聯回調函數,但這是在源代碼的其他部分通過調用nl_recvmsgs()
時關聯回調來完成的。
任何人都可以點亮一下嗎? nl_socket_set_cb()
是多餘的?
絕對不知道!
我沒有在5月份的情況下(NL80211_ATTR_WIPHY_RTS_THRESHOLD配置)
它仍然運轉完好
或許真的與「nla_put_failure」符號
如果使用nl_recvmsgs(sk, cb),你仍然需要使用它如果您計劃使用NL_CB_MSG_OUT回調,請使用nl_socket_set_cb(sk, cb)。在通過套接字發送任何東西之前,該回調在nl_sendmsg()
中調用。
但是,如果您改爲使用nl_recvmsgs_default(sk),那麼nl_socket_set_cb()
便於使用,因爲它在sk->s_cb
結構中存儲了回調,該結構傳遞給發送和接收函數。
我認爲nl_socket_set_sb()
的真實用途是將nl_recvmsgs_default()
與相同的套接字重新使用,因爲它看起來會刪除存儲在sk
結構中的任何先前設置的回調。
https://github.com/thom311/libnl/blob/master/lib/nl.c
https://github.com/thom311/libnl/blob/master/lib/socket.c
https://github.com/thom311/libnl/blob/master/include/netlink-private/types.h