summaryrefslogtreecommitdiffstats
path: root/modules/retiolum/bin/ipv6
blob: 65a1eaa138676dd3a03caac41d66c515233bd359 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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