summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephen Hemminger <stephen.hemminger@vyatta.com>2009-01-09 14:52:24 -0800
committerStephen Hemminger <stephen.hemminger@vyatta.com>2009-01-12 11:15:31 -0800
commit64d4f5736b9c8dfe2a516cd03a8699fe1463cff1 (patch)
treeba3272c8861bf16b99e292a2b2432380916233d8
parent5a1dfa9b190f57cbda4e4af78fc8ba214f65c8d7 (diff)
downloadvyatta-cfg-64d4f5736b9c8dfe2a516cd03a8699fe1463cff1.tar.gz
vyatta-cfg-64d4f5736b9c8dfe2a516cd03a8699fe1463cff1.zip
Restore IPV6 addresses when interface re-enabled
Bugfix: 3696 Force restore of IPV6 addresses when interface is enabled
-rw-r--r--scripts/vyatta-interfaces.pl5
-rw-r--r--templates/interfaces/ethernet/node.tag/disable/node.def5
-rw-r--r--templates/interfaces/ethernet/node.tag/vif/node.tag/disable/node.def5
3 files changed, 9 insertions, 6 deletions
diff --git a/scripts/vyatta-interfaces.pl b/scripts/vyatta-interfaces.pl
index 8614591..e890f9c 100644
--- a/scripts/vyatta-interfaces.pl
+++ b/scripts/vyatta-interfaces.pl
@@ -199,12 +199,13 @@ sub restore_ipv6_addr {
exit 1;
}
- foreach my $addr ($config->listNodes('address')) {
+ foreach my $addr ($config->returnValues('address')) {
next if ($addr eq 'dhcp');
my $version = is_ip_v4_or_v6($addr);
next unless $version;
next unless ($version == 6);
- system("ip -6 addr add $addr dev $intf");
+ system("sudo ip -6 addr add $addr dev $intf") == 0
+ or die "restoring $addr failed: $!\n";
}
}
diff --git a/templates/interfaces/ethernet/node.tag/disable/node.def b/templates/interfaces/ethernet/node.tag/disable/node.def
index 54090cc..1dcaf17 100644
--- a/templates/interfaces/ethernet/node.tag/disable/node.def
+++ b/templates/interfaces/ethernet/node.tag/disable/node.def
@@ -1,3 +1,4 @@
help: Set interface disabled
-update:expression: "sudo ip link set $VAR(../@) down"; "Error disabling dev $VAR(../@)"
-delete:expression: "sudo ip link set $VAR(../@) up"; "Error enabling dev $VAR(../@)"
+update: sudo ip link set $VAR(../@) down
+delete: sudo ip link set $VAR(../@) up
+ /opt/vyatta/sbin/vyatta-interfaces.pl --dev $VAR(../@) --restore-ipv6
diff --git a/templates/interfaces/ethernet/node.tag/vif/node.tag/disable/node.def b/templates/interfaces/ethernet/node.tag/vif/node.tag/disable/node.def
index 9599de3..61cdbe8 100644
--- a/templates/interfaces/ethernet/node.tag/vif/node.tag/disable/node.def
+++ b/templates/interfaces/ethernet/node.tag/vif/node.tag/disable/node.def
@@ -1,3 +1,4 @@
help: Set interface disabled
-update:expression: "sudo ip link set $VAR(../../@).$VAR(../@) down"; "Error disabling dev $VAR(../../@).$VAR(../@)"
-delete:expression: "sudo ip link set $VAR(../../@).$VAR(../@) up"; "Error enabling dev $VAR(../../@).$VAR(../@)"
+update:sudo ip link set $VAR(../../@).$VAR(../@) down
+delete:sudo ip link set $VAR(../../@).$VAR(../@) up
+ /opt/vyatta/sbin/vyatta-interfaces.pl --dev $VAR(../../@).$VAR(../@) --restore-ipv6