def _getInterfaces(self): interfaces = {} addrlist = _ifconfig.getifaddrs() for i in addrlist: if not interfaces.has_key(i["name"]): interfaces[i["name"]] = Interface(i["name"]) return interfaces
def getAddresses(self): """ Returns a list of Address objects (IPAddress, IP6Address, or EthernetAddress), or, if the address type is unknown, a dictionary interface specification. Address objects have a "mask" attribute, which is an Address object, and "destination" attribute, which is an Address object or None. """ addrlist = _ifconfig.getifaddrs() addresses = [] for i in addrlist: if i["name"] == self.Name: d = {} if i["address"].has_key("iftype"): # This is a link-layer address. self.Iftype = i["address"]["iftype"] if i["address"]["address"]: af = i["address"]["sa_family"] del i["name"] if af == AF_INET: d["address"] = utils.IPAddress.fromBytes(i["address"]["address"]) if i["netmask"]["address"]: d["mask"] = utils.IPMask.fromBytes(i["netmask"]["address"]) if i.has_key("dstaddr"): if i["dstaddr"]["address"]: d["destination"] = utils.IPAddress.fromBytes(i["dstaddr"]["address"]) else: d["destination"] = None elif af == AF_INET6: d["address"] = utils.IP6Address.fromBytes(i["address"]["address"]) if i["netmask"]["address"]: d["mask"] = utils.IP6Mask.fromBytes(i["netmask"]["address"]) if i.has_key("dstaddr"): if i["dstaddr"]["address"]: d["destination"] = utils.IP6Address.fromBytes(i["dstaddr"]["address"]) else: d["destination"] = None elif af == AF_LINK: d = { "address": utils.EthernetAddress.fromBytes(i["address"]["address"]) } else: # Unidentified. d = i addresses.append(d) return addresses