aboutsummaryrefslogtreecommitdiff
path: root/ipv6/tayga/files/tayga.hotplug
diff options
context:
space:
mode:
Diffstat (limited to 'ipv6/tayga/files/tayga.hotplug')
-rw-r--r--ipv6/tayga/files/tayga.hotplug37
1 files changed, 37 insertions, 0 deletions
diff --git a/ipv6/tayga/files/tayga.hotplug b/ipv6/tayga/files/tayga.hotplug
new file mode 100644
index 000000000..fb989bdbe
--- /dev/null
+++ b/ipv6/tayga/files/tayga.hotplug
@@ -0,0 +1,37 @@
+#!/bin/sh
+
+if [ "$ACTION" = ifup ]; then
+ . /lib/functions.sh
+
+ include /lib/network
+ scan_interfaces
+
+ update_tunnel() {
+ local cfg="$1"
+
+ local proto
+ config_get proto "$cfg" proto
+ [ "$proto" = tayga ] || return 0
+
+ local wandev4
+ config_get wandev4 "$cfg" wan4_device "$(find_tayga_wanif4)"
+
+ local wandev6
+ config_get wandev6 "$cfg" wan6_device "$(find_tayga_wanif6)"
+
+ [ "$wandev4" = "$DEVICE" ] || [ "$wandev6" = "$DEVICE" ] || return 0
+
+ local wanip4=$(find_tayga_wanip4 "$wandev4")
+ local wanip6=$(find_tayga_wanip6 "$wandev6")
+
+ [ -n "$wanip4" ] && [ -n "$wanip6" ] && {
+ uci_set_state network "$cfg" ipv4addr "$wanip4"
+ uci_set_state network "$cfg" ipv6addr "$wanip6"
+
+ logger -t tayga-update "Re-establishing tayga NAT64 due to change on $INTERFACE ($DEVICE)"
+ ifup "$cfg" &
+ }
+ }
+
+ config_foreach update_tunnel interface
+fi