Example #1
0
def routes ():
	links = {}
	for ifi in Link.getLinks():
		links[ifi.index] = ifi.attributes.get(Link.Type.Attribute.IFLA_IFNAME).strip('\0')

	print('Kernel IP routing table')
	print('%-18s %-18s %-18s %-7s %s' % ('Destination','Genmask','Gateway','Metric','Iface'))

	for route in Network.getRoutes():
		if route.family != socket.AF_INET:
			continue

		if route.type not in (Network.Type.Type.RTN_LOCAL,Network.Type.Type.RTN_UNICAST):
			continue

		if route.src_len == 32:
			continue

		destination = route.attributes.get(Network.Type.Attribute.RTA_DST)
		gateway = route.attributes.get(Network.Type.Attribute.RTA_GATEWAY)

		oif = ord(route.attributes.get(Network.Type.Attribute.RTA_OIF)[0])
		metric = ord(route.attributes.get(Network.Type.Attribute.RTA_PRIORITY,'\0')[0])

		dst = '%s' % socket.inet_ntop(route.family, destination) if destination else ''
		gw  = '%s' % socket.inet_ntop(route.family, gateway) if gateway else '0.0.0.0'
		mask = NetMask.CIDR[route.src_len]
		iface = links[oif]

		print('%-18s %-18s %-18s %-7d %-s' % (dst or '0.0.0.0',mask,gw,metric,iface))
Example #2
0
def new ():
	links = {}
	for ifi in Link.getLinks():
		links[ifi.index] = ifi.attributes.get(Link.Type.Attribute.IFLA_IFNAME).strip('\0')

	for route in Network.newRoute():
		print(route)
Example #3
0
def route ():
	links = {}
	for ifi in Link.getLinks():
		links[ifi.index] = ifi.attributes.get(Link.Type.Attribute.IFLA_IFNAME).strip('\0')

	print 'Kernel IP routing table'
	print '%-18s %-18s %-18s %-7s %s' % ('Destination','Genmask','Gateway','Metric','Iface')

	for route in Network.getRoutes():
		if route.family != socket.AF_INET:
			continue

		if route.type not in (Network.Type.Type.RTN_LOCAL,Network.Type.Type.RTN_UNICAST):
			continue

		if route.src_len == 32:
			continue

		destination = route.attributes.get(Network.Type.Attribute.RTA_DST)
		gateway = route.attributes.get(Network.Type.Attribute.RTA_GATEWAY)

		oif = ord(route.attributes.get(Network.Type.Attribute.RTA_OIF)[0])
		metric = ord(route.attributes.get(Network.Type.Attribute.RTA_PRIORITY,'\0')[0])

		dst = '%s' % socket.inet_ntop(route.family, destination) if destination else ''
		gw  = '%s' % socket.inet_ntop(route.family, gateway) if gateway else '0.0.0.0'
		mask = NetMask.CIDR[route.src_len]
		iface = links[oif]

		print '%-18s %-18s %-18s %-7d %-s' % (dst or '0.0.0.0',mask,gw,metric,iface)
Example #4
0
def new():
    links = {}
    for ifi in Link.getLinks():
        links[ifi.index] = ifi.attributes.get(
            Link.Type.Attribute.IFLA_IFNAME).strip('\0')

    for route in Network.newRoute():
        print(route)
Example #5
0
def addresses():
    links = {}
    for ifi in Link.getLinks():
        links[ifi.index] = ifi

    addrs = {}
    for ifa in Address.getAddresses():
        addrs.setdefault(ifa.index, []).append(ifa)

    neighbors = {}
    for neighbor in Neighbor.getNeighbors():
        neighbors.setdefault(neighbor.index, []).append(neighbor)

    for index, ifi in links.items():
        hwaddr = '<no addr>'
        if Address.Type.Attribute.IFLA_ADDRESS in ifi.attributes:
            hwaddr = ':'.join(
                x.encode('hex')
                for x in ifi.attributes[Address.Type.Attribute.IFLA_ADDRESS])
        print(
            "%d: %s %s" %
            (ifi.index,
             ifi.attributes[Address.Type.Attribute.IFLA_IFNAME][:-1], hwaddr))

        for ifa in addrs.get(ifi.index, {}):
            address = ifa.attributes.get(Attributes.Type.IFA_ADDRESS)
            if not address:
                continue

            if ifa.family == socket.AF_INET:
                print('  %s %s' %
                      ('inet ', socket.inet_ntop(ifa.family, address)))
            elif ifa.family == socket.AF_INET6:
                print('  %s %s' %
                      ('inet6', socket.inet_ntop(ifa.family, address)))
            else:
                print('  %d %s' % (ifa.family, address.encode('hex')))

        for neighbor in neighbors.get(ifi.index, {}):
            if neighbor.state == Neighbor.Type.State.NUD_REACHABLE:
                address = neighbor.attributes.get(Neighbor.Type.Flag.NTF_USE,
                                                  '\0\0\0\0')
                if ifa.family == socket.AF_INET:
                    print(
                        '  %s %s' %
                        ('inet ', socket.inet_ntop(neighbor.family, address)),
                        end=' ')
                elif ifa.family == socket.AF_INET6:
                    print(
                        '  %s %s' %
                        ('inet ', socket.inet_ntop(neighbor.family, address)),
                        end=' ')
                else:
                    print('  %d %s' % (ifa.family, address.encode('hex')))
                print(
                    'mac', ':'.join(
                        _.encode('hex') for _ in neighbor.attributes[
                            Neighbor.Type.State.NUD_REACHABLE]))
Example #6
0
def new ():
	netlink = NetLinkMessage()

	links = {}
	for ifi in Link(netlink).getLinks():
		links[ifi.index] = ifi.attributes.get(Link.Type.Attribute.IFLA_IFNAME).strip('\0')

	for route in Network(netlink).newRoute():
		print route
Example #7
0
def addresses ():
	links = {}
	for ifi in Link.getLinks():
		links[ifi.index] = ifi

	addrs = {}
	for ifa in Address.getAddresses():
		addrs.setdefault(ifa.index,[]).append(ifa)

	neighbors = {}
	for neighbor in Neighbor.getNeighbors():
		neighbors.setdefault(neighbor.index,[]).append(neighbor)

	for index, ifi in links.items():
		hwaddr = '<no addr>'
		if Address.Type.Attribute.IFLA_ADDRESS in ifi.attributes:
			hwaddr = ':'.join(x.encode('hex') for x in ifi.attributes[Address.Type.Attribute.IFLA_ADDRESS])
		print("%d: %s %s" % (ifi.index,ifi.attributes[Address.Type.Attribute.IFLA_IFNAME][:-1],hwaddr))

		for ifa in addrs.get(ifi.index,{}):
			address = ifa.attributes.get(Attributes.Type.IFA_ADDRESS)
			if not address:
				continue

			if ifa.family == socket.AF_INET:
				print('  %s %s' % ('inet ', socket.inet_ntop(ifa.family, address)))
			elif ifa.family == socket.AF_INET6:
				print('  %s %s' % ('inet6', socket.inet_ntop(ifa.family, address)))
			else:
				print('  %d %s' % (ifa.family, address.encode('hex')))

		for neighbor in neighbors.get(ifi.index,{}):
			if neighbor.state == Neighbor.Type.State.NUD_REACHABLE:
				address = neighbor.attributes.get(Neighbor.Type.Flag.NTF_USE,'\0\0\0\0')
				if ifa.family == socket.AF_INET:
					print('  %s %s' % ('inet ', socket.inet_ntop(neighbor.family, address)), end=' ')
				elif ifa.family == socket.AF_INET6:
					print('  %s %s' % ('inet ', socket.inet_ntop(neighbor.family, address)), end=' ')
				else:
					print('  %d %s' % (ifa.family, address.encode('hex')))
				print('mac',':'.join(_.encode('hex') for _ in neighbor.attributes[Neighbor.Type.State.NUD_REACHABLE]))