Example #1
0
            prefixlen = child.address.prefixlen()
            low_mask = 2 ** (size - self.address.prefixlen()) - 1
            high_mask = 2 ** size - 1
            high_mask &= ~low_mask
            address = self.address.int() & high_mask
            address |= child.address.int() & low_mask
            if prefixlen != size:
                child.address = IP("%s/%s" % (child.address, prefixlen))
            else:
                child.address = IP(address)

    def onModifyAction(self, action, old_attr):
        for child in self._modifyChildren(old_attr):
            action.addBothUpdate(child.createUpdate())

Resource.registerSubclass(NetworkResource)

class IPsecNetworkResource(NetworkResource):
    XML_TAG = 'ipsec_network'
    TYPE = IPSEC_NETWORK_RESTYPE
    TEMPLATE_TYPE = None   # there are no generic IPsec network

    gateway = Address(optional=True)

    def hasAddresses(self):
        return True

    def checkConsistency(self, loader_context=None):
        NetworkResource.checkConsistency(self, loader_context)
        if (self.gateway is not None) \
        and (self.address.version() != self.gateway.version()):
Example #2
0
        if self.address_type == IPV6_ADDRESS:
            family = AF_INET6
        else:
            family = AF_INET
        addresses = set()
        try:
            for family, socktype, proto, canonname, sockaddr in getaddrinfo(self.hostname, None, family):
                address = parseIPAddress(sockaddr[0])
                addresses.add(address)
        except gaierror, err:
            message = toUnicode(err.args[1])
            raise RulesetError(tr('Unable to get the address of the hostname "%s": %s!'), self.hostname, message)
        return addresses

    def exportXML(self, parent):
        if self.from_template:
            return None
        return Resource.exportXML(self, parent)

    def _matchResource(self, other):
        try:
            if other.isGeneric():
                return False
            other_addresses = other.getAddresses()
        except NotImplementedError:
            return False
        return matchAddresses(self.addresses, other_addresses)


Resource.registerSubclass(HostnameResource)