chiark / gitweb /
zoneconf.in (local-addresses-p): Set fake addresses in env var.
[zoneconf] / zoneconf.in
index 43892dbcb8198969e545737fef3e0cd7e004c812..d16e74a2ebfc221928c2833b836f04445df142d4 100755 (executable)
@@ -942,12 +942,21 @@ proc host-canonify {host} {
 
 proc local-address-p {addr} {
   ## Answer whether the ADDR is one of the host's addresses.
+  global env
 
-  if {[catch { set sk [socket -server {} -myaddr $addr 0] }]} {
-    return false
+  if {[info exists env(ZONECONF_LOCAL_ADDRESSES)]} {
+    if {[string match "*:$addr:*" ":$env(ZONECONF_LOCAL_ADDRESSES):"]} {
+      return true
+    } else {
+      return false
+    }
   } else {
-    close $sk
-    return true
+    if {[catch { set sk [socket -server {} -myaddr $addr 0] }]} {
+      return false
+    } else {
+      close $sk
+      return true
+    }
   }
 }