如何弄清楚NL消息的交换方式

时间:2016-10-12 14:44:27

标签: linux kernel netlink

Hi Linux kernel / net guru,

我正在寻找一种如何在wpa_supplicant和内核之间挂接和打印NL(netlink)消息的方法。截至目前,我只是插入了几条printk信息来打印这些信息,但我认为这非常痛苦。

如果你有更好的主意,请告诉我。

感谢。

1 个答案:

答案 0 :(得分:1)

考虑到OP专门使用wpa_supplicant,这不是一个好的答案,但可能会帮助那些意外被吸引到这里的人。

如果某人正在使用libnl(wpa_supplicant并不是这样),那么你需要做的就是在用户空间中,一旦套接字被初始化,

error = nl_socket_modify_cb(sk, NL_CB_MSG_IN, NL_CB_DEBUG, NULL, NULL);
if (error < 0)
    log_err("Could not register debug cb for incoming packets.");
error = nl_socket_modify_cb(sk, NL_CB_MSG_OUT, NL_CB_DEBUG, NULL, NULL);
if (error < 0)
    log_err("Could not register debug cb for outgoing packets.");

用户空间客户端将在发送或接收消息时打印所有消息。

(另外,您也可以随时拨打nl_msg_dump(msg, stderr)。)

对于没有使用libnl的东西,你总是可以从libnl复制相关的函数并调用它们。请参阅libnl源代码中的nl_msg_dump()libnl/lib/msg.c)。