2013-02-27 78 views
2

我正在使用NF_INET_PRE_ROUTING挂钩的Linux内核模块中工作。在那个钩子中,我需要知道我所有的net_devices,特别是无线设备的状态。我可以从net_device->flags获得有关设备的一些信息,即IFF_UP是设备启动或关闭。但我需要一些关于无线net_device的更多细节。如何获取有关无线网络设备的信息

  1. 是net_device无线/有线吗?
  2. 无线设备是否连接到无线接入点?
  3. 如果是哪个无线接入点(接入点的名称)?
  4. 与该设备关联的网关地址(我认为,我需要从路由表中获取该地址?)。

回答

1

if(net_device->ieee80211_ptr != NULL)ieee80211_ptrstruct wireless_dev*。这个结构应该可以让你访问你请求的大部分值。在struct wireless_devstruct wiphy *wiphy;,你可以用这个来得到cfg80211_registered_devicewiphy_to_dev()

网关地址与无线无关。我怀疑devices有任何网关信息,但您需要在net_device的接口name找到路线。该路线是IP相关,与device无关。祝你好运。

+0

谢谢比尔,我能够得到cfg80211_registered_device。但仍然努力获取连接状态和连接的'接入点'的名字 – 2013-02-28 10:12:11

+0

'cfg80211_conn'有'wireless_dev'中的'cfg80211_connect_params'这个* AP名*。我没有看到一个优雅的方式来获取这些信息。 'cfg80211_conn'指针本身指示一个连接。 – 2013-02-28 15:37:09

+0

其实我正在接收来自“有线”网络的数据包(在我的情况下是'eth0'),并在可用和连接的无线网络上重定向数据包。 – 2013-02-28 18:29:36

1

请参阅iwconfig,iwlist和其他实用程序。

+0

我在内核模块中需要此信息,特别是在“NF_INET_PRE_ROUTING”钩子中。 – 2013-02-27 20:02:32

相关问题