summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Poessinger <christian@poessinger.com>2020-04-04 12:31:21 +0200
committerChristian Poessinger <christian@poessinger.com>2020-04-04 12:31:21 +0200
commit29bae2e88911f72abe8294576b3c6eba806598a7 (patch)
treedcb8f069ef4b3d4eccca4747b26c53a06e60dc5c
parentfec5b40244520b8455abd2fdcd8ce347a27fd7f4 (diff)
downloadvyos-1x-29bae2e88911f72abe8294576b3c6eba806598a7.tar.gz
vyos-1x-29bae2e88911f72abe8294576b3c6eba806598a7.zip
wwan: T2219: add default route into VRF
-rw-r--r--data/templates/wwan/ip-down.script.tmpl14
-rw-r--r--data/templates/wwan/ip-up.script.tmpl14
2 files changed, 26 insertions, 2 deletions
diff --git a/data/templates/wwan/ip-down.script.tmpl b/data/templates/wwan/ip-down.script.tmpl
index 1c5b8a749..5ce61f9b1 100644
--- a/data/templates/wwan/ip-down.script.tmpl
+++ b/data/templates/wwan/ip-down.script.tmpl
@@ -12,7 +12,19 @@ fi
device=`echo "$ipparam"|awk '{ print $1 }'`
metric=`echo "$ipparam"|awk '{ print $2 }'`
-vtysh -c "conf t" -c "no ip route 0.0.0.0/0 ${device} ${metric}"
+# Determine if we are enslaved to a VRF, this is needed to properly insert
+# the backup default route
+if [ -d /sys/class/net/${device}/upper_* ]; then
+ # Determine upper (VRF) interface
+ VRF=$(basename $(ls -d /sys/class/net/wlm0/upper_*))
+ # Remove upper_ prefix from result string
+ VRF=${VRF#"upper_"}
+ # Configure VRF default route
+ vtysh -c "conf t" -c "vrf $VRF" -c "no ip route 0.0.0.0/0 ${device} ${metric}"
+else
+ # No VRF, use default routing table
+ vtysh -c "conf t" -c "no ip route 0.0.0.0/0 ${device} ${metric}"
+fi
DIALER_PID=$(cat /var/run/${device}.pid)
logger -t pppd[$DIALER_PID] "removed default route via $device metric $metric"
diff --git a/data/templates/wwan/ip-up.script.tmpl b/data/templates/wwan/ip-up.script.tmpl
index c40f3ba9d..a63042989 100644
--- a/data/templates/wwan/ip-up.script.tmpl
+++ b/data/templates/wwan/ip-up.script.tmpl
@@ -12,7 +12,19 @@ fi
device=`echo "$ipparam"|awk '{ print $1 }'`
metric=`echo "$ipparam"|awk '{ print $2 }'`
-vtysh -c "conf t" -c "ip route 0.0.0.0/0 ${device} ${metric}"
+# Determine if we are enslaved to a VRF, this is needed to properly insert
+# the backup default route
+if [ -d /sys/class/net/${device}/upper_* ]; then
+ # Determine upper (VRF) interface
+ VRF=$(basename $(ls -d /sys/class/net/wlm0/upper_*))
+ # Remove upper_ prefix from result string
+ VRF=${VRF#"upper_"}
+ # Configure VRF default route
+ vtysh -c "conf t" -c "vrf $VRF" -c "ip route 0.0.0.0/0 ${device} ${metric}"
+else
+ # No VRF, use default routing table
+ vtysh -c "conf t" -c "ip route 0.0.0.0/0 ${device} ${metric}"
+fi
DIALER_PID=$(cat /var/run/${device}.pid)
logger -t pppd[$DIALER_PID] "added default route via $device metric $metric"