summaryrefslogtreecommitdiffstats
path: root/perl-install/network
diff options
context:
space:
mode:
Diffstat (limited to 'perl-install/network')
-rw-r--r--perl-install/network/netconnect.pm11
-rw-r--r--perl-install/network/network.pm27
2 files changed, 25 insertions, 13 deletions
diff --git a/perl-install/network/netconnect.pm b/perl-install/network/netconnect.pm
index d95b01d47..c3fe7be8c 100644
--- a/perl-install/network/netconnect.pm
+++ b/perl-install/network/netconnect.pm
@@ -89,6 +89,7 @@ sub real_main {
my ($isdn, $isdn_name, $isdn_type, %isdn_cards, @isdn_dial_methods);
my $my_isdn = join('', N("Manual choice"), " (", N("Internal ISDN card"), ")");
my ($ndiswrapper_driver, $ndiswrapper_inf_file);
+ my $wireless_use_wpa;
my ($module, $auto_ip, $protocol, $onboot, $needhostname, $peerdns, $peeryp, $peerntpd, $hotplug, $track_network_id); # lan config
my $success = 1;
my $ethntf = {};
@@ -1176,6 +1177,7 @@ notation (for example, 1.2.3.4).")),
$netc->{wireless_eth} = 1;
$ethntf->{WIRELESS_MODE} ||= "Managed";
$ethntf->{WIRELESS_ESSID} ||= "any";
+ $wireless_use_wpa = exists $ethntf->{WIRELESS_WPA_DRIVER};
},
name => N("Please enter the wireless parameters for this card:"),
data => sub {
@@ -1189,7 +1191,7 @@ notation (for example, 1.2.3.4).")),
{ label => N("Bitrate (in b/s)"), val => \$ethntf->{WIRELESS_RATE}, advanced => 1 },
{ label => N("Encryption key"), val => \$ethntf->{WIRELESS_ENC_KEY} },
#- FIXME: ask if the access point is open or restricted
- { text => N("Use Wi-Fi Protected Access (WPA)"), val => \$ethntf->{WIRELESS_USE_WPA}, type => "bool" },
+ { text => N("Use Wi-Fi Protected Access (WPA)"), val => \$wireless_use_wpa, type => "bool" },
];
},
complete => sub {
@@ -1255,7 +1257,12 @@ See iwpriv(8) man page for further information."),
# untranslate parameters
$ethntf->{WIRELESS_MODE} = $wireless_mode{$ethntf->{WIRELESS_MODE}};
$module =~ /^prism2_/ and network::network::wlan_ng_configure($in, $ethntf, $module);
- network::network::wpa_supplicant_configure($in, $ethntf);
+ if ($wireless_use_wpa) {
+ $ethntf->{WIRELESS_WPA_DRIVER} = network::network::wpa_supplicant_get_driver($module);
+ network::network::wpa_supplicant_configure($in, $ethntf);
+ } else {
+ delete $ethntf->{WIRELESS_WPA_DRIVER};
+ }
return "static_hostname";
},
},
diff --git a/perl-install/network/network.pm b/perl-install/network/network.pm
index eb12ba63a..cfd40b9a5 100644
--- a/perl-install/network/network.pm
+++ b/perl-install/network/network.pm
@@ -163,7 +163,7 @@ sub write_interface_conf {
}
setVarsInSh($file, $intf, qw(DEVICE BOOTPROTO IPADDR NETMASK NETWORK BROADCAST ONBOOT HWADDR METRIC MII_NOT_SUPPORTED TYPE USERCTL ATM_ADDR),
- qw(WIRELESS_MODE WIRELESS_ESSID WIRELESS_NWID WIRELESS_FREQ WIRELESS_SENS WIRELESS_RATE WIRELESS_ENC_KEY WIRELESS_RTS WIRELESS_FRAG WIRELESS_IWCONFIG WIRELESS_IWSPY WIRELESS_IWPRIV),
+ qw(WIRELESS_MODE WIRELESS_ESSID WIRELESS_NWID WIRELESS_FREQ WIRELESS_SENS WIRELESS_RATE WIRELESS_ENC_KEY WIRELESS_RTS WIRELESS_FRAG WIRELESS_IWCONFIG WIRELESS_IWSPY WIRELESS_IWPRIV WIRELESS_WPA_DRIVER),
if_($intf->{BOOTPROTO} eq "dhcp", qw(DHCP_CLIENT DHCP_HOSTNAME NEEDHOSTNAME PEERDNS PEERYP PEERNTPD DHCP_TIMEOUT)),
if_($intf->{DEVICE} =~ /^ippp\d+$/, qw(DIAL_ON_IFUP))
);
@@ -527,22 +527,27 @@ sub wlan_ng_configure {
services::restart($module eq 'prism2_cs' ? 'pcmcia' : 'wlan');
}
+sub wpa_supplicant_get_driver {
+ my ($module) = @_;
+ $module =~ /^hostap_/ ? "hostap" :
+ $module eq "prism54" ? "prism54" :
+ $module =~ /^ath_/ ? "madwifi" :
+ $module =~ /^at76c50|atmel_/ ? "atmel" :
+ $module eq "ndiswrapper" ? "ndiswrapper" :
+ $module =~ /^ipw2[12]00$/ ? "ipw" :
+ "wext";
+}
+
sub wpa_supplicant_configure {
my ($in, $ethntf) = @_;
require services;
- if (delete $ethntf->{WIRELESS_USE_WPA}) {
- $in->do_pkgs->install('wpa_supplicant');
- wpa_supplicant_add_network({
+ $in->do_pkgs->install('wpa_supplicant');
+
+ wpa_supplicant_add_network({
ssid => qq("$ethntf->{WIRELESS_ESSID}"),
psk => network::tools::convert_key_for_wpa_supplicant($ethntf->{WIRELESS_ENC_KEY}),
scan_ssid => 1,
- });
- services::start_service_on_boot('wpa_supplicant');
- services::restart('wpa_supplicant');
- } else {
- services::stop('wpa_supplicant');
- services::do_not_start_service_on_boot('wpa_supplicant');
- }
+ });
}
sub wpa_supplicant_add_network {