l2tpv3tun: moved to github
[openwrt.org/packages.git] / net / l2tp.sh
blob:a/net/l2tpv3tun/files/l2tp.sh -> blob:b/net/l2tpv3tun/files/l2tp.sh
--- a/net/l2tpv3tun/files/l2tp.sh
+++ b/net/l2tpv3tun/files/l2tp.sh
@@ -1,214 +1,1 @@
-# l2tp.sh - L2TPv3 tunnel backend
-# Copyright (c) 2010 OpenWrt.org
 
-l2tp_next_tunnel_id() {
-	local max=0
-	local val
-	for val in $(
-		local l
-		l2tpv3tun show tunnel | while read l; do
-			case "$l" in
-				Tunnel*,*encap*) l="${l#Tunnel }"; echo "${l%%,*}";;
-			esac
-		done
-	); do
-		[ "$val" -gt "$max" ] && max="$val"
-	done
-	echo $((max + 1))
-}
-
-l2tp_next_session_id() {
-	local tunnel="$1"
-	local max=0
-	local val
-	for val in $(
-		local l
-		l2tpv3tun show session${tunnel:+ tunnel_id "$tunnel"} | while read l; do
-			case "$l" in
-				Session*in*) l="${l#Session }"; echo "${l%% *}";;
-			esac
-		done
-	); do
-		[ "$val" -gt "$max" ] && max="$val"
-	done
-	echo $((max + 1))
-}
-
-l2tp_tunnel_exists() {
-	test -n "$(l2tpv3tun show tunnel tunnel_id "$1" 2>/dev/null)"
-}
-
-l2tp_session_exists() {
-	test -n "$(l2tpv3tun show session tunnel_id "$1" session_id "$2" 2>/dev/null)"
-}
-
-l2tp_ifname() {
-	l2tpv3tun show session tunnel_id "$1" session_id "$2" 2>/dev/null | \
-		sed -ne 's/^.*interface name: //p'
-}
-
-l2tp_lock() {
-	lock /var/lock/l2tp-setup
-}
-
-l2tp_unlock() {
-	lock -u /var/lock/l2tp-setup
-}
-
-l2tp_log() {
-	logger -t "ifup-l2tp" "$@"
-}
-
-
-# Hook into scan_interfaces() to synthesize a .device option
-# This is needed for /sbin/ifup to properly dispatch control
-# to setup_interface_l2tp() even if no .ifname is set in
-# the configuration.
-scan_l2tp() {
-	local dev
-	config_get dev "$1" device
-	config_set "$1" device "${dev:+$dev }l2tp-$1"
-}
-
-coldplug_interface_l2tp() {
-	setup_interface_l2tp "l2tp-$1" "$1"
-}
-
-setup_interface_l2tp() {
-	local iface="$1"
-	local cfg="$2"
-	local link="l2tp-$cfg"
-
-	l2tp_lock
-
-	# prevent recursion
-	local up="$(uci_get_state network "$cfg" up 0)"
-	[ "$up" = 0 ] || {
-		l2tp_unlock
-		return 0
-	}
-
-	local tunnel_id
-	config_get tunnel_id "$cfg" tunnel_id
-	[ -n "$tunnel_id" ] || {
-		tunnel_id="$(l2tp_next_tunnel_id)"
-		uci_set_state network "$cfg" tunnel_id "$tunnel_id"
-		l2tp_log "No tunnel ID specified, assuming $tunnel_id"
-	}
-
-	local peer_tunnel_id
-	config_get peer_tunnel_id "$cfg" peer_tunnel_id
-	[ -n "$peer_tunnel_id" ] || {
-		peer_tunnel_id="$tunnel_id"
-		uci_set_state network "$cfg" peer_tunnel_id "$peer_tunnel_id"
-		l2tp_log "No peer tunnel ID specified, assuming $peer_tunnel_id"
-	}
-
-	local encap
-	config_get encap "$cfg" encap udp
-
-	local sport dport
-	[ "$encap" = udp ] && {
-		config_get sport "$cfg" sport 1701
-		config_get dport "$cfg" dport 1701
-	}
-
-	local peeraddr
-	config_get peeraddr "$cfg" peeraddr
-	[ -z "$peeraddr" ] && config_get peeraddr "$cfg" peer6addr
-
-	local localaddr
-	case "$peeraddr" in
-		*:*) config_get localaddr "$cfg" local6addr ;;
-		*)   config_get localaddr "$cfg" localaddr  ;;
-	esac
-
-	[ -n "$localaddr" -a -n "$peeraddr" ] || {
-		l2tp_log "Missing local or peer address for tunnel $cfg - skipping"
-		return 1
-	}
-
-	(
-		while ! l2tp_tunnel_exists "$tunnel_id"; do
-			[ -n "$sport" ] && l2tpv3tun show tunnel 2>/dev/null | grep -q "ports: $sport/" && {
-				l2tp_log "There already is a tunnel with src port $sport - skipping"
-				l2tp_unlock
-				return 1
-			}
-
-			l2tpv3tun add tunnel tunnel_id "$tunnel_id" peer_tunnel_id "$peer_tunnel_id" \
-				encap "$encap" local "$localaddr" remote "$peeraddr" \
-				${sport:+udp_sport "$sport"} ${dport:+udp_dport "$dport"}
-
-			# Wait for tunnel
-			sleep 1
-		done
-
-
-		local session_id
-		config_get session_id "$cfg" session_id
-		[ -n "$session_id" ] || {
-			session_id="$(l2tp_next_session_id "$tunnel_id")"
-			uci_set_state network "$cfg" session_id "$session_id"
-			l2tp_log "No session ID specified, assuming $session_id"
-		}
-
-		local peer_session_id
-		config_get peer_session_id "$cfg" peer_session_id
-		[ -n "$peer_session_id" ] || {
-			peer_session_id="$session_id"
-			uci_set_state network "$cfg" peer_session_id "$peer_session_id"
-			l2tp_log "No peer session ID specified, assuming $peer_session_id"
-		}
-
-
-		while ! l2tp_session_exists "$tunnel_id" "$session_id"; do
-			l2tpv3tun add session ifname "$link" tunnel_id "$tunnel_id" \
-				session_id "$session_id" peer_session_id "$peer_session_id"
-
-			# Wait for session
-			sleep 1
-		done
-
-
-		local dev
-		config_get dev "$cfg" device
-
-		local ifn
-		config_get ifn "$cfg" ifname
-
-		uci_set_state network "$cfg" ifname "${ifn:-$dev}"
-		uci_set_state network "$cfg" device "$dev"
-
-		local mtu
-		config_get mtu "$cfg" mtu 1462
-
-		local ttl
-		config_get ttl "$cfg" ttl
-
-		ip link set mtu "$mtu" ${ttl:+ ttl "$ttl"} dev "$link"
-
-		# IP setup inherited from proto static
-		prepare_interface "$link" "$cfg"
-		setup_interface_static "${ifn:-$dev}" "$cfg"
-
-		ip link set up dev "$link"
-
-		uci_set_state network "$cfg" up 1
-		l2tp_unlock
-	) &
-}
-
-stop_interface_l2tp() {
-	local cfg="$1"
-	local link="l2tp-$cfg"
-
-	local tunnel=$(uci_get_state network "$cfg" tunnel_id)
-	local session=$(uci_get_state network "$cfg" session_id)
-
-	[ -n "$tunnel" ] && [ -n "$session" ] && {
-		l2tpv3tun del session tunnel_id "$tunnel" session_id "$session"
-		l2tpv3tun del tunnel tunnel_id "$tunnel"
-	}
-}
-

comments