summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAn-Cheng Huang <ancheng@vyatta.com>2011-05-25 11:49:47 -0700
committerAn-Cheng Huang <ancheng@vyatta.com>2011-05-25 11:49:47 -0700
commitd7b033bb5576b497c84a73bfc8a852614f9821b9 (patch)
tree77d6b8873c9c71696808c4a4220eb4bf4311a4b5
parent44a842e60437bd3912e5a4fd1fe35b196307efa7 (diff)
downloadvyatta-cfg-quagga-d7b033bb5576b497c84a73bfc8a852614f9821b9.tar.gz
vyatta-cfg-quagga-d7b033bb5576b497c84a73bfc8a852614f9821b9.zip
alternative fix for bug 6958
-rwxr-xr-xscripts/vyatta-tunnel-cleanup8
-rw-r--r--templates/interfaces/tunnel/node.def9
2 files changed, 9 insertions, 8 deletions
diff --git a/scripts/vyatta-tunnel-cleanup b/scripts/vyatta-tunnel-cleanup
index 6094818c..979fb7bd 100755
--- a/scripts/vyatta-tunnel-cleanup
+++ b/scripts/vyatta-tunnel-cleanup
@@ -15,13 +15,17 @@ my %encapsulation = (
'sit' => 'sit',
);
+# interface being deleted
+my $interface = $ARGV[0];
+
# Create map of encapsulations still in use
my $config = new Vyatta::Config;
$config->setLevel("interfaces tunnel");
my %tunnel;
-foreach my $tun ( $config->listNodes() ) {
- my $mode = $config->returnValue("$tun encapsulation");
+foreach my $tun ( $config->listEffectiveNodes() ) {
+ my $mode = $config->returnEffectiveValue("$tun encapsulation");
+ next if ($interface eq $tun); # don't count the one being deleted
$tunnel{$mode} = 1;
}
diff --git a/templates/interfaces/tunnel/node.def b/templates/interfaces/tunnel/node.def
index c8670a16..669f7636 100644
--- a/templates/interfaces/tunnel/node.def
+++ b/templates/interfaces/tunnel/node.def
@@ -40,10 +40,7 @@ delete: ip link set $VAR(@) down
ip tunnel del $VAR(@) mode $VAR(./encapsulation/@)
fi
-end: if [ "$COMMIT_SIBLING_POSITION" = "LAST" ] || \
- [ "$COMMIT_SIBLING_POSITION" = "FIRSTLAST" ] ; then
- if [ ${COMMIT_ACTION} = "DELETE" ]; then
- /opt/vyatta/sbin/vyatta-tunnel-cleanup
- fi
- fi
+end: if [ "${COMMIT_ACTION}" == DELETE ]; then
+ /opt/vyatta/sbin/vyatta-tunnel-cleanup $VAR(@)
+ fi