Esempio n. 1
0
class AddressCache(object):
    def __init__(self):
        self.__address_obj = Addressing()
        self.__address_obj.set_family("inet6")
        self.__address_cache = []  # store addresses that are added by the node

    def is_assigned(self, address):
        """Indicates if the address is assigned on the node"""
        return repr(Address(address)) in str(self.__address_obj)

    def is_assigned_if(self, address, interface):
        """Indicates if the address is assigned on the interface"""
        iface_address = [address for address \
                         in str(self.__address_obj).splitlines() \
                         if "dev %s" % interface in address]
        return address in iface_address

    def add(self, address, interface, pref_len=64, valid_lft=None, preferred_lft=None):
        """Add an address to an interface"""
        if (address, pref_len, interface) not in self.__address_cache:
            self.__address_obj.add(address + "/" + str(pref_len), interface, str(valid_lft), str(preferred_lft))
            self.__address_cache.append((address, pref_len, interface))
        else:
            self.__address_obj.add(address + "/" + str(pref_len), interface, str(valid_lft), str(preferred_lft), replace=True)

    def emptyCache(self):
        for (addr, pref_len, iface) in self.__address_cache:
            self.__address_obj.remove(addr + "/" + str(pref_len), iface)

    def __iter__(self):
        return iter(self.__address_cache)
Esempio n. 2
0
class AddressCache(object):
    def __init__(self):
        self.__address_obj = Addressing()
        self.__address_obj.set_family("inet6")
        self.__address_cache = []  # store addresses that are added by the node

    def is_assigned(self, address):
        """Indicates if the address is assigned on the node"""
        return repr(Address(address)) in str(self.__address_obj)

    def is_assigned_if(self, address, interface):
        """Indicates if the address is assigned on the interface"""
        iface_address = [address for address \
                         in str(self.__address_obj).splitlines() \
                         if "dev %s" % interface in address]
        return address in iface_address

    def add(self,
            address,
            interface,
            pref_len=64,
            valid_lft=None,
            preferred_lft=None):
        """Add an address to an interface"""
        if (address, pref_len, interface) not in self.__address_cache:
            self.__address_obj.add(address + "/" + str(pref_len), interface,
                                   str(valid_lft), str(preferred_lft))
            self.__address_cache.append((address, pref_len, interface))
        else:
            self.__address_obj.add(address + "/" + str(pref_len),
                                   interface,
                                   str(valid_lft),
                                   str(preferred_lft),
                                   replace=True)

    def emptyCache(self):
        for (addr, pref_len, iface) in self.__address_cache:
            self.__address_obj.remove(addr + "/" + str(pref_len), iface)

    def __iter__(self):
        return iter(self.__address_cache)
Esempio n. 3
0
 def __init__(self):
     self.__address_obj = Addressing()
     self.__address_obj.set_family("inet6")
     self.__address_cache = []  # store addresses that are added by the node
Esempio n. 4
0
 def __init__(self):
     self.__address_obj = Addressing()
     self.__address_obj.set_family("inet6")
     self.__address_cache = []  # store addresses that are added by the node