IPv6 method local: allow configuring device
authorRalf Jung <post@ralfj.de>
Wed, 12 Apr 2017 17:19:01 +0000 (19:19 +0200)
committerRalf Jung <post@ralfj.de>
Wed, 12 Apr 2017 17:19:01 +0000 (19:19 +0200)
client-scripts/dyn-ns-client
dyn-ns-client.conf.dist

index 11e45127d2430a8ab7da2fd6d930bb70b940fa07..93b977ff57b193c249972c010804a2be5197b07e 100755 (executable)
@@ -85,7 +85,8 @@ def getMyIPv4(config, verbose = 0):
 def getMyIPv6(config, verbose = 0):
     '''Returns our current IPv6 address, detected as given by the configuration'''
     def local():
 def getMyIPv6(config, verbose = 0):
     '''Returns our current IPv6 address, detected as given by the configuration'''
     def local():
-        out = subprocess.check_output(["ip", "addr"])
+        device = config["IPv6"].get("device")
+        out = subprocess.check_output(["ip", "addr", "show"] + ([] if device is None else ["dev", device]))
         for line in out.decode('utf-8').split('\n'):
             m = re.search('inet6 ([a-fA-F0-9:]+)/64 ([a-zA-Z0-9 ]*)', line)
             if m is not None:
         for line in out.decode('utf-8').split('\n'):
             m = re.search('inet6 ([a-fA-F0-9:]+)/64 ([a-zA-Z0-9 ]*)', line)
             if m is not None:
index a833f439969ab8307b27b5b70de6203f50f6a32f..5c13deee1cc4eb0766a33c96b0254eee7f24b359 100644 (file)
@@ -12,7 +12,7 @@ password = some_secure_password
 # web: Call a website to detect the current, external IPv4 address.
 method = web
 
 # web: Call a website to detect the current, external IPv4 address.
 method = web
 
-# The server to query for web-based IPv4 detection (if enabled).
+# The server to query for web-based IPv4 detection (method = web).
 # Default: same as the global server in the default section.
 # This server should NOT have an AAAA record, or it may return the IPv6 address instead!
 server = ipv4.ns.example.com
 # Default: same as the global server in the default section.
 # This server should NOT have an AAAA record, or it may return the IPv6 address instead!
 server = ipv4.ns.example.com
@@ -25,8 +25,11 @@ server = ipv4.ns.example.com
 # local: Try to detect the global IPv6 address based on the configuration of the local network interfaces.
 method = none
 
 # local: Try to detect the global IPv6 address based on the configuration of the local network interfaces.
 method = none
 
-# The server to query for web-based IPv6 detection.
+# The server to query for web-based IPv6 detection (method = web).
 # Default: same as the global server in the default section.
 # This server should NOT have an A record, or it may return the IPv4 address instead!
 server = ipv6.ns.example.com
 
 # Default: same as the global server in the default section.
 # This server should NOT have an A record, or it may return the IPv4 address instead!
 server = ipv6.ns.example.com
 
+# The network device of which to use the IPv6 address for local detection (method = local).
+# If left unset, pick any device.
+device = eth0