summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--templates/system/ipv6/disable-forwarding/node.def30
1 files changed, 23 insertions, 7 deletions
diff --git a/templates/system/ipv6/disable-forwarding/node.def b/templates/system/ipv6/disable-forwarding/node.def
index 2c8f4ac5..a029c81a 100644
--- a/templates/system/ipv6/disable-forwarding/node.def
+++ b/templates/system/ipv6/disable-forwarding/node.def
@@ -3,23 +3,39 @@ help: Disable IPv6 forwarding on all interfaces
# Disable IPv6 forwarding for all interfaces we currently have,
# and set default such that it will be disabled on any new interfaces
# that come up after this.
+#
create:
sudo sh -c "echo 0 > /proc/sys/net/ipv6/conf/all/forwarding"
sudo sh -c "echo 0 > /proc/sys/net/ipv6/conf/default/forwarding"
-# Re-enable IPv6 forwarding globally. But only enable it for those
-# interfaces that do not have forwarding disabled on a per-interface
-# basis. A per-interface flag file under /var/run/vyatta/ tells us if
-# it is disabled. Restore default value so that any new interfaces
-# that come up after this will have forwarding enabled.
+# Re-enable IPv6 forwarding globally. But setting the global
+# forwarding parameter under "all" has the side effect of setting the
+# per-interface forwarding parameter for all interfaces. Users may
+# disable forwarding per-interface, so we have to restore the state of
+# the per-interface parameter here. A per-interface flag file under
+# /var/run/vyatta/ tells us if forwarding is disabled on specific
+# interfaces. Restore default value of the forwarding parameter under
+# "default" so that any new interfaces that come up after this will
+# have forwarding enabled.
+#
delete:
+ sudo sh -c "echo 1 > /proc/sys/net/ipv6/conf/all/forwarding"
cd /proc/sys/net/ipv6/conf
for i in * ; do
if [ "$i" = "default" -o "$i" = "all" -o ! -d "$i" ]; then
continue
fi
- if [ ! -e /var/run/vyatta/ipv6_no_fwd.$i ]; then
- sudo sh -c "echo 1 > $i/forwarding"
+ if [ -e /var/run/vyatta/ipv6_no_fwd.$i ]; then
+ sudo sh -c "echo 0 > $i/forwarding"
fi
done
sudo sh -c "echo 1 > /proc/sys/net/ipv6/conf/default/forwarding"
+ #
+ # If router advertisements were configured while global IPv6
+ # forwarding was disabled, we will need to start the radvd daemon
+ # now.
+ running=`ps --no-headers -C radvd | wc -l`
+ if [ $running -eq 0 -a -e /etc/radvd.conf -a -x /etc/init.d/radvd ]; then
+ /etc/init.d/radvd start
+ fi
+