Procházet zdrojové kódy

6in4: - add log entries for update operations - always update tunnel, even if wan ip is unchanged - use multiple wget tries before giving up, resolv.conf might not be ready when ifup is triggered

SVN-Revision: 23528
Jo-Philipp Wich před 15 roky
rodič
revize
64f9925245
2 změnil soubory, kde provedl 18 přidání a 5 odebrání
  1. 1 1
      package/6in4/Makefile
  2. 17 4
      package/6in4/files/6in4.hotplug

+ 1 - 1
package/6in4/Makefile

@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=6in4
-PKG_VERSION:=6
+PKG_VERSION:=7
 PKG_RELEASE:=1
 
 include $(INCLUDE_DIR)/package.mk

+ 17 - 4
package/6in4/files/6in4.hotplug

@@ -17,11 +17,9 @@ if [ "$ACTION" = ifup ]; then
 		config_get wandev "$cfg" wan_device "$(find_6in4_wanif)"
 		[ "$wandev" = "$DEVICE" ] || return 0
 
-		local oldip
 		local wanip=$(find_6in4_wanip "$wandev")
-		config_get oldip "$cfg" ipaddr
 
-		[ -n "$wanip" ] && [ "$oldip" != "$wanip" ] && {
+		[ -n "$wanip" ] && {
 			local tunnelid
 			config_get tunnelid "$cfg" tunnelid
 
@@ -37,7 +35,22 @@ if [ "$ACTION" = ifup ]; then
 				}
 				uci_set_state network "$cfg" ipaddr "$wanip"
 
-				( wget -qO/dev/null "http://ipv4.tunnelbroker.net/ipv4_end.php?ipv4b=AUTO&user_id=$username&pass=$password&tunnel_id=$tunnelid" && ifup "$cfg" )&
+				(
+					local url="http://ipv4.tunnelbroker.net/ipv4_end.php?ipv4b=AUTO&user_id=$username&pass=$password&tunnel_id=$tunnelid"
+					local try=0
+					local max=3
+
+					while [ $((++try)) -le $max ]; do
+						wget -qO/dev/null "$url" 2>/dev/null && {
+							logger -t 6in4-update "Updated tunnel #$tunnelid endpoint to $wanip"
+							ifup "$cfg"
+							break
+						} || {
+							logger -t 6in4-update "Try $try/$max failed, retrying"
+							sleep 1
+						}
+					done
+				)&
 			}
 		}
 	}