Exemple #1
0
 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
Exemple #2
0
    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