6in4: add rfc1918 check function
[openwrt/staging/chunkeey.git] / package / network / ipv6 / 6in4 / files / 6in4.sh
index 941dc43d688feeda645113bd270116be18080fdf..0f631b78ba56609c2ff2cd11d271e8b18e8c636d 100755 (executable)
@@ -9,6 +9,20 @@
        init_proto "$@"
 }
 
+# Function taken from 6to4 package (6to4.sh), flipped returns
+test_6in4_rfc1918()
+{
+       local oIFS="$IFS"; IFS="."; set -- $1; IFS="$oIFS"
+       [ $1 -eq  10 ] && return 1
+       [ $1 -eq 192 ] && [ $2 -eq 168 ] && return 1
+       [ $1 -eq 172 ] && [ $2 -ge  16 ] && [ $2 -le  31 ] && return 1
+
+       # RFC 6598
+       [ $1 -eq 100 ] && [ $2 -ge  64 ] && [ $2 -le 127 ] && return 1
+
+       return 0
+}
+
 proto_6in4_update() {
        sh -c '
                timeout=5
@@ -97,6 +111,11 @@ proto_6in4_setup() {
                }
 
                local url="$http://ipv4.tunnelbroker.net/nic/update?hostname=$tunnelid"
+               
+               test_6in4_rfc1918 "$ipaddr" && {
+                       local url="${url}&myip=${ipaddr}"
+               }
+
                local try=0
                local max=3