bec5fcefce
Signed-off-by: Maximilian Wilhelm <max@sdn.clinic>
69 lines
1.3 KiB
Bash
Executable file
69 lines
1.3 KiB
Bash
Executable file
#!/bin/sh
|
|
# Based on alpine's tunnel configuration script.
|
|
# Copyright (c) 2017 Kaarle Ritvanen
|
|
# Copyright (c) 2020 Ariadne Conill (extended for ifupdown-ng)
|
|
# Copyright (c) 2021 Maximilian Wilhelm (make sure mode/type is 1st parameter)
|
|
|
|
[ -z "$IF_TUNNEL_LOCAL" ] && exit 1
|
|
[ -z "$IF_TUNNEL_REMOTE" ] && exit 1
|
|
[ -z "$IF_TUNNEL_MODE" ] && exit 1
|
|
|
|
[ -n "$VERBOSE" ] && set -x
|
|
|
|
# Figure out address familiy
|
|
FAMILY="-4"
|
|
|
|
case "$IF_TUNNEL_MODE" in
|
|
vti6|ipip6|ip6*)
|
|
FAMILY="-6"
|
|
;;
|
|
esac
|
|
|
|
# Figure out object type - gretap tunnels have to create using ip link
|
|
# and therefor require 'type' keyword instead of 'mode'
|
|
OBJECT="tunnel"
|
|
TYPE_KW="mode"
|
|
case "${IF_TUNNEL_MODE}" in
|
|
*gretap)
|
|
OBJECT="link"
|
|
TYPE_KW="type"
|
|
|
|
# Strip possible "ip6" from tunnel mode
|
|
TUNNEL_MODE="gretap"
|
|
;;
|
|
|
|
*)
|
|
# Store tunnel type/mode separaltely and unset input variable to exclude it
|
|
# from PARAMS below
|
|
TUNNEL_MODE="$IF_TUNNEL_MODE"
|
|
unset IF_TUNNEL_MODE
|
|
;;
|
|
esac
|
|
|
|
|
|
# Mangle residual IF_TUNNEL_* params into single string
|
|
PARAMS=$(set | sed -E '
|
|
s/^IF_TUNNEL_([A-Z0-9_]+)=(.+)/\1\n\2/
|
|
ta
|
|
d
|
|
:a
|
|
h
|
|
y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
|
|
P
|
|
g
|
|
s/.*\n//
|
|
')
|
|
|
|
[ "$PARAMS" ] || exit 0
|
|
|
|
case "$PHASE" in
|
|
create)
|
|
${MOCK} eval ip $FAMILY $OBJECT add $IFACE $TYPE_KW $TUNNEL_MODE $PARAMS
|
|
;;
|
|
destroy)
|
|
${MOCK} ip $FAMILY $OBJECT del $IFACE
|
|
;;
|
|
depend)
|
|
echo "$IF_TUNNEL_DEV"
|
|
;;
|
|
esac
|