diff options
author | Antonio Quartulli <ordex@autistici.org> | 2011-07-07 15:35:35 +0200 |
---|---|---|
committer | Marek Lindner <lindner_marek@yahoo.de> | 2011-08-22 15:16:20 +0200 |
commit | bc2790808a7a3699a7c9f72f7ad225c8504824aa (patch) | |
tree | a1b0e88091facf44e0afb78d3438c55cfd6633ad /net/batman-adv/hard-interface.c | |
parent | 015758d00251a4dd9287806cdab4b9c1298f97ed (diff) | |
download | linux-bc2790808a7a3699a7c9f72f7ad225c8504824aa.tar.gz linux-bc2790808a7a3699a7c9f72f7ad225c8504824aa.tar.bz2 linux-bc2790808a7a3699a7c9f72f7ad225c8504824aa.zip |
batman-adv: detect clients connected through a 802.11 device
Clients connected through a 802.11 device are now marked with the
TT_CLIENT_WIFI flag. This flag is also advertised with the tt
announcement.
Signed-off-by: Antonio Quartulli <ordex@autistici.org>
Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
Diffstat (limited to 'net/batman-adv/hard-interface.c')
-rw-r--r-- | net/batman-adv/hard-interface.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/net/batman-adv/hard-interface.c b/net/batman-adv/hard-interface.c index 0d73e1e9e3d5..bf91e4d8a47f 100644 --- a/net/batman-adv/hard-interface.c +++ b/net/batman-adv/hard-interface.c @@ -681,6 +681,36 @@ err_out: return NET_RX_DROP; } +/* This function returns true if the interface represented by ifindex is a + * 802.11 wireless device */ +bool is_wifi_iface(int ifindex) +{ + struct net_device *net_device = NULL; + bool ret = false; + + if (ifindex == NULL_IFINDEX) + goto out; + + net_device = dev_get_by_index(&init_net, ifindex); + if (!net_device) + goto out; + +#ifdef CONFIG_WIRELESS_EXT + /* pre-cfg80211 drivers have to implement WEXT, so it is possible to + * check for wireless_handlers != NULL */ + if (net_device->wireless_handlers) + ret = true; + else +#endif + /* cfg80211 drivers have to set ieee80211_ptr */ + if (net_device->ieee80211_ptr) + ret = true; +out: + if (net_device) + dev_put(net_device); + return ret; +} + struct notifier_block hard_if_notifier = { .notifier_call = hard_if_event, }; |