summaryrefslogtreecommitdiff
path: root/data/templates/wwan/ip-down.script.tmpl
diff options
context:
space:
mode:
Diffstat (limited to 'data/templates/wwan/ip-down.script.tmpl')
-rw-r--r--data/templates/wwan/ip-down.script.tmpl27
1 files changed, 27 insertions, 0 deletions
diff --git a/data/templates/wwan/ip-down.script.tmpl b/data/templates/wwan/ip-down.script.tmpl
new file mode 100644
index 000000000..9dc15ea99
--- /dev/null
+++ b/data/templates/wwan/ip-down.script.tmpl
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+# Script parameters will be like:
+# wlm0 /dev/serial/by-bus/usb0b1.3p1.3 115200 10.100.118.91 10.64.64.64 wlm0
+
+# Only applicable for Wireless Modems (WWAN)
+if [ -z $(echo $2 | egrep "(ttyS[0-9]+|usb[0-9]+b.*)$") ]; then
+ exit 0
+fi
+
+# Determine if we are running inside a VRF or not, required for proper routing table
+# NOTE: the down script can not be properly templated as we need the VRF name,
+# which is not present on deletion, thus we read it from the operating system.
+if [ -d /sys/class/net/{{ ifname }}/upper_* ]; then
+ # Determine upper (VRF) interface
+ VRF=$(basename $(ls -d /sys/class/net/{{ ifname }}/upper_*))
+ # Remove upper_ prefix from result string
+ VRF_NAME=${VRF#"upper_"}
+ # Remove default route from VRF routing table
+ vtysh -c "conf t" -c "vrf ${VRF_NAME}" -c "no ip route 0.0.0.0/0 {{ ifname }}"
+else
+ # Remove default route from GRT (global routing table)
+ vtysh -c "conf t" -c "no ip route 0.0.0.0/0 {{ ifname }}"
+fi
+
+DIALER_PID=$(cat /var/run/{{ ifname }}.pid)
+logger -t pppd[$DIALER_PID] "removed default route via {{ ifname }} metric {{ backup.distance }}"