summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThierry Vignaud <tvignaud@mandriva.org>2004-05-19 15:28:36 +0000
committerThierry Vignaud <tvignaud@mandriva.org>2004-05-19 15:28:36 +0000
commitb8266795f0feff415261179120d70d0e6910cdfb (patch)
tree1686850eb0db7cb1d67fea645a5b53ee40c01e1f
parentb653de526b0a1cb7556ad744facae34b42c645e7 (diff)
downloaddrakx-b8266795f0feff415261179120d70d0e6910cdfb.tar
drakx-b8266795f0feff415261179120d70d0e6910cdfb.tar.gz
drakx-b8266795f0feff415261179120d70d0e6910cdfb.tar.bz2
drakx-b8266795f0feff415261179120d70d0e6910cdfb.tar.xz
drakx-b8266795f0feff415261179120d70d0e6910cdfb.zip
forward better LAN vs wireless filtering
-rw-r--r--perl-install/c/stuff.xs.pl20
-rw-r--r--perl-install/network/netconnect.pm4
2 files changed, 22 insertions, 2 deletions
diff --git a/perl-install/c/stuff.xs.pl b/perl-install/c/stuff.xs.pl
index 26e6ce413..d30aff57f 100644
--- a/perl-install/c/stuff.xs.pl
+++ b/perl-install/c/stuff.xs.pl
@@ -23,6 +23,8 @@ print '
#include <sys/stat.h>
#include <sys/utsname.h>
#include <sys/mount.h>
+#undef __USE_MISC
+#include <linux/wireless.h>
#include <linux/keyboard.h>
#include <linux/kd.h>
#include <linux/hdreg.h>
@@ -405,6 +407,24 @@ hasNetDevice(device)
OUTPUT:
RETVAL
+
+int
+isNetDeviceWirelessAware(device)
+ char * device
+ CODE:
+ struct iwreq ifr;
+
+ int s = socket(AF_INET, SOCK_DGRAM, 0);
+
+ memset(&ifr, 0, sizeof(ifr));
+ strncpy(ifr.ifr_name, device, IFNAMSIZ);
+ RETVAL = ioctl(s, SIOCGIWNAME, &ifr) != -1;
+ close(s);
+ OUTPUT:
+ RETVAL
+
+
+
char*
getNetDriver(char* device)
ALIAS:
diff --git a/perl-install/network/netconnect.pm b/perl-install/network/netconnect.pm
index d4ff1ab1d..18f75b032 100644
--- a/perl-install/network/netconnect.pm
+++ b/perl-install/network/netconnect.pm
@@ -130,8 +130,8 @@ sub real_main {
@all_cards = network::ethernet::get_eth_cards();
%eth_intf = network::ethernet::get_eth_cards_names(@all_cards);
require list_modules;
- my @wmodules = list_modules::category2modules('network/wireless');
- %eth_intf = map { $_->[0] => join(': ', $_->[0], $_->[2]) } grep { int(!$is_wireless) ^ member($_->[1], @wmodules) } @all_cards;
+ %eth_intf = map { $_->[0] => join(': ', $_->[0], $_->[2]) }
+ grep { $is_wireless ^ !c::isNetDeviceWirelessAware($_->[0]) } @all_cards;
};
my $find_lan_module = sub {