summaryrefslogtreecommitdiffstats
path: root/perl-install/network/netconnect.pm
diff options
context:
space:
mode:
Diffstat (limited to 'perl-install/network/netconnect.pm')
-rw-r--r--perl-install/network/netconnect.pm15
1 files changed, 13 insertions, 2 deletions
diff --git a/perl-install/network/netconnect.pm b/perl-install/network/netconnect.pm
index 025210a23..da095d2c2 100644
--- a/perl-install/network/netconnect.pm
+++ b/perl-install/network/netconnect.pm
@@ -70,7 +70,7 @@ sub real_main {
my (@ndiswrapper_drivers, $ndiswrapper_driver, $ndiswrapper_device);
my ($is_wireless, $wireless_enc_mode, $wireless_enc_key, $need_rt2x00_iwpriv, $wireless_roaming, $need_wpa_supplicant);
my ($dvb_adapter, $dvb_ad, $dvb_net, $dvb_pid);
- my ($module, $auto_ip, $protocol, $onboot, $needhostname, $peerdns, $peeryp, $peerntpd, $ifplugd, $track_network_id); # lan config
+ my ($module, $auto_ip, $protocol, $onboot, $needhostname, $peerdns, $peeryp, $peerntpd, $ifplugd, $track_network_id, $ipv6_tunnel, $need_network_restart);
my $success = 1;
my $ethntf = {};
my $db_path = "/usr/share/apps/kppp/Provider";
@@ -160,7 +160,9 @@ sub real_main {
if ($net->{type} eq 'adsl' && !member($net->{adsl}{method}, qw(static dhcp)) ||
member($net->{type}, qw(modem isdn isdn_external))) {
return "ask_connect_now";
- } else {
+ } elsif ($need_network_restart) {
+ services::restart("network");
+ } else {
network::tools::stop_net_interface($net, 0);
network::tools::start_net_interface($net, 0);
}
@@ -872,6 +874,7 @@ If you do not know, choose 'use PPPoE'"),
$track_network_id = $::isStandalone && $ethntf->{HWADDR} || detect_devices::isLaptop();
delete $ethntf->{TYPE} if $net->{type} ne 'adsl' || !member($net->{adsl}{method}, qw(static dhcp));
$ethntf->{DHCP_CLIENT} ||= (find { -x "$::prefix/sbin/$_" } qw(dhclient dhcpcd pump dhcpxd));
+ $ipv6_tunnel = text2bool($ethntf->{IPV6TO4INIT});
},
name => sub { join('',
N("Configuring network device %s (driver %s)", $ethntf->{DEVICE}, $module),
@@ -896,6 +899,7 @@ notation (for example, 1.2.3.4).")),
{ text => N("Start at boot"), val => \$onboot, type => "bool" },
),
{ label => N("Metric"), val => \$ethntf->{METRIC}, advanced => 1 },
+ { text => N("Enable IPv6 to IPv4 tunnel"), val => \$ipv6_tunnel, type => "bool", advanced => 1 },
if_($auto_ip,
{ label => N("DHCP client"), val => \$ethntf->{DHCP_CLIENT},
list => \@network::ethernet::dhcp_clients, advanced => 1 },
@@ -941,6 +945,13 @@ notation (for example, 1.2.3.4).")),
#- FIXME: special case for sagem where $ethntf->{DEVICE} is the result of a command
#- we can't always use $ntf_name because of some USB DSL modems
$net->{net_interface} = $ntf_name eq "sagem" ? "sagem" : $ethntf->{DEVICE};
+ $need_network_restart = $ipv6_tunnel xor text2bool($ethntf->{IPV6TO4INIT});
+ if ($ipv6_tunnel) {
+ $net->{network}{NETWORKING_IPV6} = "yes";
+ $net->{network}{IPV6_DEFAULTDEV} = "tun6to4";
+ }
+ $ethntf->{IPV6INIT} = bool2yesno($ipv6_tunnel);
+ $ethntf->{IPV6TO4INIT} = bool2yesno($ipv6_tunnel);
if ($auto_ip) {
#- delete gateway settings if gateway device is invalid or if reconfiguring the gateway interface to dhcp
$delete_gateway_settings->($ntf_name);