Exemple #1
0
    def _intf_repr(self, ifent):
        """
        Return the configuration for a network interface as a dict like interfaces(5).
        """
        if not ifent or ifent["type"] not in (dumbnet.INTF_TYPE_LOOPBACK, dumbnet.INTF_TYPE_ETH):
            return ifent

        ret = {"name": ifent["name"]}

        if not ifent.has_key("addr"):
            ret["mtu"] = ifent["mtu"]
            ret["flags"] = ifent["flags"]
            ret["type"] = self.INTF_TYPES[ifent["type"]]
            ret["typeid"] = ifent["type"]

            if ret["type"] == "eth":
                ret["family"] = "inet"
            else:
                ret["family"] = "unknown"

            if ifent.has_key("link_addr"):
                ret["hwaddress"] = str(ifent["link_addr"])

            return ret

        xaddr = ifent["addr"]
        if xaddr.addrtype == dumbnet.ADDR_TYPE_IP:
            ret["address"] = dumbnet.ip_ntoa(xaddr.ip)
            ret["netmask"] = network.format_ipv4(network.bitmask_to_mask_ipv4(xaddr.bits))
            ret["broadcast"] = str(xaddr.bcast())
            ret["network"] = str(xaddr.net())
            ret["mtu"] = ifent["mtu"]
            ret["flags"] = ifent["flags"]
            ret["type"] = self.INTF_TYPES[ifent["type"]]
            ret["typeid"] = ifent["type"]
            ret["family"] = "inet"

            gw = self._intf_ipv4_gateway(ifent["name"])

            if gw:
                ret["gateway"] = gw

            if ifent.has_key("dst_addr"):
                ret["pointopoint"] = str(ifent["dst_addr"])

            if ifent.has_key("link_addr"):
                ret["hwaddress"] = str(ifent["link_addr"])
        elif xaddr.addrtype == dumbnet.ADDR_TYPE_IP6:
            ret["address"] = dumbnet.ip6_ntoa(xaddr.ip6)
            ret["netmask"] = xaddr.bits
            ret["broadcast"] = str(xaddr.bcast())
            ret["mtu"] = ifent["mtu"]
            ret["flags"] = ifent["flags"]
            ret["type"] = self.INTF_TYPES[ifent["type"]]
            ret["family"] = "inet6"

            if ifent.has_key("link_addr"):
                ret["hwaddress"] = str(ifent["link_addr"])

        return ret
Exemple #2
0
    def _intf_ipv4_gateway(self, ifname):
        """
        Return the default gateway if it belongs to the interface
        """
        defgw = self.route.get(self.default_dst_ipv4)
        xaddr = dumbnet.intf.get(self, ifname)["addr"]
        route = self.route.get(xaddr)

        if not defgw or (route and defgw != route):
            return None

        defgwstr = str(defgw)
        address = network.parse_ipv4(dumbnet.ip_ntoa(xaddr.ip))
        netmask = network.bitmask_to_mask_ipv4(xaddr.bits)

        if network.ipv4_in_network(network.parse_ipv4(defgwstr), netmask, network.mask_ipv4(netmask, address)):
            return defgwstr
Exemple #3
0
    def _intf_repr(self, ifent):
        """
        Return the configuration for a network interface as a dict like interfaces(5).
        """
        if not ifent \
           or ifent['type'] not in (dumbnet.INTF_TYPE_LOOPBACK, dumbnet.INTF_TYPE_ETH):
            return ifent

        ret = {'name': ifent['name']}

        if not ifent.has_key('addr'):
            ret['mtu'] = ifent['mtu']
            ret['flags'] = ifent['flags']
            ret['type'] = self.INTF_TYPES[ifent['type']]
            ret['typeid'] = ifent['type']

            if ret['type'] == 'eth':
                ret['family'] = 'inet'
            else:
                ret['family'] = 'unknown'

            if ifent.has_key('link_addr'):
                ret['hwaddress'] = str(ifent['link_addr'])

            return ret

        xaddr = ifent['addr']
        if xaddr.addrtype == dumbnet.ADDR_TYPE_IP:
            ret['address'] = dumbnet.ip_ntoa(xaddr.ip)
            ret['netmask'] = network.format_ipv4(
                                        network.bitmask_to_mask_ipv4(xaddr.bits))
            ret['broadcast'] = str(xaddr.bcast())
            ret['network'] = str(xaddr.net())
            ret['mtu'] = ifent['mtu']
            ret['flags'] = ifent['flags']
            ret['type'] = self.INTF_TYPES[ifent['type']]
            ret['typeid'] = ifent['type']
            ret['family'] = 'inet'

            gw = self._intf_ipv4_gateway(ifent['name'])

            if gw:
                ret['gateway'] = gw

            if ifent.has_key('dst_addr'):
                ret['pointopoint'] = str(ifent['dst_addr'])

            if ifent.has_key('link_addr'):
                ret['hwaddress'] = str(ifent['link_addr'])
        elif xaddr.addrtype == dumbnet.ADDR_TYPE_IP6:
            ret['address'] = dumbnet.ip6_ntoa(xaddr.ip6)
            ret['netmask'] = xaddr.bits
            ret['broadcast'] = str(xaddr.bcast())
            ret['mtu'] = ifent['mtu']
            ret['flags'] = ifent['flags']
            ret['type'] = self.INTF_TYPES[ifent['type']]
            ret['family'] = 'inet6'

            if ifent.has_key('link_addr'):
                ret['hwaddress'] = str(ifent['link_addr'])

        return ret