]> git.ipfire.org Git - oddments/ddns.git/blobdiff - src/ddns/system.py
Cache guessed IP addresses.
[oddments/ddns.git] / src / ddns / system.py
index ef525fb942742f9670c174180c167c1be189e4cc..d11fcf46acf60836bc37ed56fa770b56410bc0b9 100644 (file)
@@ -47,6 +47,9 @@ class DDNSSystem(object):
                # Connection to the core of the program.
                self.core = core
 
+               # Address cache.
+               self.__addresses = {}
+
                # Find out on which distribution we are running.
                self.distro = self._get_distro_identifier()
                logger.debug(_("Running on distribution: %s") % self.distro)
@@ -225,6 +228,21 @@ class DDNSSystem(object):
                return authstring
 
        def get_address(self, proto):
+               """
+                       Returns the current IP address for
+                       the given IP protocol.
+               """
+               try:
+                       return self.__addresses[proto]
+
+               # IP is currently unknown and needs to be retrieved.
+               except KeyError:
+                       self.__addresses[proto] = address = \
+                               self._get_address(proto)
+
+                       return address
+
+       def _get_address(self, proto):
                assert proto in ("ipv6", "ipv4")
 
                # IPFire 2 does not support IPv6.