def getNodeAddressesOnPrefix(self, prefix, node_id=None, state=None): addrs = self.getNodeAddresses(node_id, state) res = [] for addr in addrs: if IP.prefixMatchAddress(prefix, addr): res.append(addr) return res
def getNodeWeaveIPAddress(self, node_id=None, state=None): weave_global_prefix = self.getFabricGlobalPrefix(state) if weave_global_prefix is None: return None node_addresses = self.getNodeAddresses(node_id, state) if node_addresses == []: return None for addr in node_addresses: if IP.prefixMatchAddress(weave_global_prefix, addr): return addr return None
def getNodeAddrMatchingPrefix(self, node_id, interface, prefix): """Each interface may have multiple addresses, this function will get addresses based on interface and prefix. Args: node_id (str): A string containing the node_id, example: "cloud", "BorderRouter" interface (str): A string containing interface id, example: "wpan0", "wlan0" prefix (str): A string containing an IP prefix, example: "10.0.1" Returns: addresses_matchPrefix: A string list containing IP addresses """ addresses = self.getNodeInterfaceAddresses(interface, node_id) addresses_matchPrefix = [] for address in addresses: if IP.prefixMatchAddress(prefix, address): addresses_matchPrefix.append(address) return addresses_matchPrefix