summaryrefslogtreecommitdiffstats
path: root/modules/retiolum/bin/ipv6
diff options
context:
space:
mode:
authortv <tv@also>2011-05-27 15:25:07 +0200
committertv <tv@also>2011-05-27 15:25:07 +0200
commit77355d28e804ace544f78674866f894bf96a7f89 (patch)
tree8a01a2eabd4992260f9d4592fa37f1fa86cccab3 /modules/retiolum/bin/ipv6
parenta6563e5a9c554aa5d08c11f645815fb25deb8bcd (diff)
retiolum/bin: (addipv6 => ipv6) + tinc
Diffstat (limited to 'modules/retiolum/bin/ipv6')
-rwxr-xr-xmodules/retiolum/bin/ipv635
1 files changed, 35 insertions, 0 deletions
diff --git a/modules/retiolum/bin/ipv6 b/modules/retiolum/bin/ipv6
new file mode 100755
index 00000000..65a1eaa1
--- /dev/null
+++ b/modules/retiolum/bin/ipv6
@@ -0,0 +1,35 @@
+#! /bin/sh
+#
+# Manage IPv6 of the retiolum interface.
+#
+# usage: ipv6 {start,stop}
+#
+set -euf
+
+if test `id -u` != 0; then
+ echo "we're going sudo..." >&2
+ exec sudo "$0" "$@"
+ exit 23 # go to hell
+fi
+
+file=/etc/tinc/retiolum/hosts/`hostname`
+addr=`sed -rn 's|^Subnet *= *(42:[0-9A-Fa-f:]*/128)|\1|p' $file`
+route=42::/16
+
+start() {
+ stop
+ ip -6 addr add $addr dev retiolum
+ ip -6 route add $route dev retiolum
+}
+
+stop() {
+ ip -6 addr del $addr dev retiolum 2>/dev/null || :
+ ip -6 route del $route dev retiolum 2>/dev/null || :
+}
+
+## dispatch
+case "$1" in
+ (start) start;;
+ (stop) stop;;
+ (*) echo "You're made of stupid" 2>/dev/null; exit 23;;
+esac