Python netifaces.AF_INET Examples
The following are 30
code examples of netifaces.AF_INET().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
netifaces
, or try the search function
.
Example #1
Source File: topology.py From InsightAgent with Apache License 2.0 | 7 votes |
def get_interfaces(): interfaces = netifaces.interfaces() interfaces.remove('lo') out_interfaces = dict() for interface in interfaces: addrs = netifaces.ifaddresses(interface) out_addrs = dict() if netifaces.AF_INET in addrs.keys(): out_addrs["ipv4"] = addrs[netifaces.AF_INET] if netifaces.AF_INET6 in addrs.keys(): out_addrs["ipv6"] = addrs[netifaces.AF_INET6] out_interfaces[interface] = out_addrs return out_interfaces
Example #2
Source File: multicast_checks.py From rift-python with Apache License 2.0 | 7 votes |
def _create_ipv4_sockets(loopback_enabled): # Open a multicast send socket, with IP_MULTICAST_LOOP enabled or disabled as requested. mcast_address = "224.0.1.195" port = 49501 group = (mcast_address, port) txsock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP) txsock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) if loopback_enabled: txsock.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_LOOP, 1) else: txsock.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_LOOP, 0) txsock.connect(group) # Open a multicast receive socket and join the group rxsock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP) req = struct.pack("=4sl", socket.inet_aton(mcast_address), socket.INADDR_ANY) rxsock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, req) rxsock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) rxsock.bind(group) return (txsock, rxsock)
Example #3
Source File: net.py From pykit with MIT License | 7 votes |
def get_host_devices(iface_prefix=''): rst = {} for ifacename in netifaces.interfaces(): if not ifacename.startswith(iface_prefix): continue addrs = netifaces.ifaddresses(ifacename) if netifaces.AF_INET in addrs and netifaces.AF_LINK in addrs: ips = [addr['addr'] for addr in addrs[netifaces.AF_INET]] for ip in ips: if is_ip4_loopback(ip): break else: rst[ifacename] = {'INET': addrs[netifaces.AF_INET], 'LINK': addrs[netifaces.AF_LINK]} return rst
Example #4
Source File: _net.py From flocker with Apache License 2.0 | 7 votes |
def get_all_ips(): """ Find all IPs for this machine. :return: ``set`` of IP addresses (``IPAddress``). """ ips = set() interfaces = netifaces.interfaces() for interface in interfaces: addresses = netifaces.ifaddresses(interface) for address_family in (netifaces.AF_INET, netifaces.AF_INET6): family_addresses = addresses.get(address_family) if not family_addresses: continue for address in family_addresses: ips.add(ipaddress_from_string(address['addr'])) return ips
Example #5
Source File: utils_net.py From avocado-vt with GNU General Public License v2.0 | 6 votes |
def get_netmask(self): """ Get ip network netmask """ if not CTYPES_SUPPORT: raise exceptions.TestSkipError("Getting the netmask requires " "python > 2.4") ifreq = struct.pack('16sH14s', self.name.encode(), socket.AF_INET, b'\x00' * 14) try: res = fcntl.ioctl(sockfd, arch.SIOCGIFNETMASK, ifreq) except IOError: return 0 netmask = socket.ntohl(struct.unpack('16sH2xI8x', res)[2]) return 32 - int(math.log(ctypes.c_uint32(~netmask).value + 1, 2))
Example #6
Source File: wol.py From epoptes with GNU General Public License v3.0 | 6 votes |
def get_broadcast_list(): """Return all broadcast addresses. E.g. WOL messages need to be sent from all NICs. """ brlist = ['<broadcast>'] ifaces = [iface for iface in netifaces.interfaces() if iface != 'lo'] for ifname in ifaces: # An interface can have more than one address, even within the # same family (AF_INET), or none, so check this case too. addresses = netifaces.ifaddresses(ifname) if netifaces.AF_INET not in addresses: continue for addr in addresses[netifaces.AF_INET]: if 'broadcast' in addr: brlist.append(addr['broadcast']) return brlist
Example #7
Source File: wol.py From epoptes with GNU General Public License v3.0 | 6 votes |
def wake_on_lan(macaddress): """Power on remote computers using Wake On LAN.""" # Handle MACs with or without separators. if len(macaddress) == 12: pass elif len(macaddress) == 12 + 5: sep = macaddress[2] macaddress = macaddress.replace(sep, '') else: raise ValueError('Incorrect MAC address format') print("Sending magic packet to", macaddress) packet = bytes.fromhex(''.join(['FFFFFFFFFFFF', macaddress * 20])) # Broadcast it to the LAN. sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) for brd in get_broadcast_list(): sock.sendto(packet, (brd, 9))
Example #8
Source File: nat.py From pyquarkchain with MIT License | 6 votes |
def find_internal_ip_on_device_network(upnp_dev: upnpclient.upnp.Device) -> str: """ For a given UPnP device, return the internal IP address of this host machine that can be used for a NAT mapping. """ parsed_url = urlparse(upnp_dev.location) # Get an ipaddress.IPv4Network instance for the upnp device's network. upnp_dev_net = ipaddress.ip_network(parsed_url.hostname + "/24", strict=False) for iface in netifaces.interfaces(): for family, addresses in netifaces.ifaddresses(iface).items(): # TODO: Support IPv6 addresses as well. if family != netifaces.AF_INET: continue for item in addresses: if ipaddress.ip_address(item["addr"]) in upnp_dev_net: return item["addr"] raise NoInternalAddressMatchesDevice(device_hostname=parsed_url.hostname)
Example #9
Source File: network.py From pulseaudio-dlna with GNU General Public License v3.0 | 6 votes |
def __pyroute2_get_host_by_ip(ip): import pyroute2 ipr = pyroute2.IPRoute() routes = ipr.get_routes(family=socket.AF_INET, dst=ip) ipr.close() for route in routes: for attr in route.get('attrs', []): if type(attr) is list: if attr[0] == 'RTA_PREFSRC': return attr[1] else: if attr.cell[0] == 'RTA_PREFSRC': return attr.get_value() logger.critical( '__pyroute2_get_host_by_ip() - No host found for IP {}!'.format(ip)) return None
Example #10
Source File: engine.py From rift-python with Apache License 2.0 | 6 votes |
def default_physical_interface(self): # When simulated interfaces are disabled, the interface names on nodes correspond to real # interfaces on the host platform. # When simulated interface are enabled, the interface names on nodes are "fake" i.e. they do # not correspond to real interfaces on the host platform. All these simulated interfaces # actually run on a single real interface, referred to as the physical interface. Traffic to # and from different simulated interfaces are distinguished by using different multicast # addresses and port numbers for each simulated interface. # Pick the first interface with a broadcast IPv4 address (if any) as the default. for intf_name in netifaces.interfaces(): addresses = netifaces.ifaddresses(intf_name) if netifaces.AF_INET in addresses: ipv4_addresses = addresses[netifaces.AF_INET] for ipv4_address in ipv4_addresses: if 'broadcast' in ipv4_address: return intf_name print("Cannot pick default physical interface: no broadcast interface found") sys.exit(1)
Example #11
Source File: multicast-relay.py From multicast-relay with GNU General Public License v3.0 | 6 votes |
def addListener(self, addr, port, service): if self.isBroadcast(addr): self.etherAddrs[addr] = self.broadcastIpToMac(addr) elif self.isMulticast(addr): self.etherAddrs[addr] = self.multicastIpToMac(addr) else: # unicast -- we don't know yet which IP we'll want to send to self.etherAddrs[addr] = None # Set up the receiving socket and corresponding IP and interface information. # One receiving socket is required per multicast address. rx = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_UDP) rx.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) for interface in self.interfaces: (ifname, mac, ip, netmask) = self.getInterface(interface) # Add this interface to the receiving socket's list. if self.isBroadcast(addr): rx.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) elif self.isMulticast(addr): packedAddress = struct.pack('4s4s', socket.inet_aton(addr), socket.inet_aton(ip)) rx.setsockopt(socket.SOL_IP, socket.IP_ADD_MEMBERSHIP, packedAddress) # Generate a transmitter socket. Each interface # requires its own transmitting socket. if interface not in self.noTransmitInterfaces: tx = socket.socket(socket.AF_PACKET, socket.SOCK_RAW) tx.bind((ifname, 0)) self.transmitters.append({'relay': {'addr': addr, 'port': port}, 'interface': ifname, 'addr': ip, 'mac': mac, 'netmask': netmask, 'socket': tx, 'service': service}) rx.bind((addr, port)) self.receivers.append(rx)
Example #12
Source File: multicast-relay.py From multicast-relay with GNU General Public License v3.0 | 6 votes |
def connectRemotes(self): for remote in self.remoteAddrs: if remote['socket']: continue # Attempt reconnection at most once every N seconds if remote['connectFailure'] and remote['connectFailure'] > time.time()-self.remoteRetry: return remoteConnection = socket.socket(socket.AF_INET, socket.SOCK_STREAM) remoteConnection.setblocking(0) self.logger.info('REMOTE: Connecting to remote %s' % remote['addr']) remote['connecting'] = True try: remoteConnection.connect((remote['addr'], self.remotePort)) except socket.error as e: if e.errno == errno.EINPROGRESS: remote['socket'] = remoteConnection else: remote['connecting'] = False remote['connectFailure'] = time.time()
Example #13
Source File: util.py From apple_bleee with GNU General Public License v3.0 | 6 votes |
def get_ip_for_interface(interface_name, ipv6=False): """ Get the ip address in IPv4 or IPv6 for a specific network interface :param str interace_name: declares the network interface name for which the ip should be accessed :param bool ipv6: Boolean indicating if the ipv6 address should be rertrieved :return: (str ipaddress, byte ipaddress_bytes) returns a tuple with the ip address as a string and in bytes """ addresses = netifaces.ifaddresses(interface_name) if netifaces.AF_INET6 in addresses and ipv6: # Use the normal ipv6 address addr = addresses[netifaces.AF_INET6][0]['addr'].split('%')[0] bytes_addr = ipaddress.IPv6Address(addr).packed elif netifaces.AF_INET in addresses and not ipv6: addr = addresses[netifaces.AF_INET][0]['addr'] bytes_addr = socket.inet_aton(addr) else: addr = None bytes_addr = None return addr, bytes_addr
Example #14
Source File: network.py From Paradrop with Apache License 2.0 | 6 votes |
def select_chute_subnet_pool(host_config): """ Select IP subnet to use as pool for chutes. Behavior depends on whether a static subnet is configured or auto configuration is requested. If the chuteSubnetPool option is set to 'auto', then we check the WAN interface address and choose either 10.128.0.0/9 or 192.168.128.0/17 to avoid conflict. Otherwise, we used the specified subnet. """ pool = datastruct.getValue(host_config, "system.chuteSubnetPool", 'auto') wan_ifname = datastruct.getValue(host_config, 'wan.interface', 'eth0') if pool == 'auto': addresses = netifaces.ifaddresses(wan_ifname) ipv4_addrs = addresses.get(netifaces.AF_INET, []) if any(x['addr'].startswith("10.") for x in ipv4_addrs): return "192.168.128.0/17" else: return "10.128.0.0/9" else: return pool
Example #15
Source File: utils_net.py From avocado-vt with GNU General Public License v2.0 | 6 votes |
def canonicalize(self, ip_str): """ Parse an IP string for listen to IPAddress content. """ try: if ':' in ip_str: self.version = 'ipv6' if '%' in ip_str: ip_str, scope = ip_str.split('%') self.scope = int(scope) self.packed_addr = socket.inet_pton(socket.AF_INET6, ip_str) self.addr = socket.inet_ntop(socket.AF_INET6, self.packed_addr) else: self.version = 'ipv4' self.packed_addr = socket.inet_pton(socket.AF_INET, ip_str) self.addr = socket.inet_ntop(socket.AF_INET, self.packed_addr) except socket.error as detail: if 'illegal IP address' in str(detail): self.addr = ip_str self.version = 'hostname'
Example #16
Source File: multicast-relay.py From multicast-relay with GNU General Public License v3.0 | 6 votes |
def interfaces(self): if self.homebrewNetifaces: import array import fcntl maxInterfaces = 128 bufsiz = maxInterfaces * 40 nullByte = b'\0' s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) ifNames = array.array('B', nullByte * bufsiz) ifNameLen = struct.unpack('iL', fcntl.ioctl( s.fileno(), 0x8912, # SIOCGIFCONF struct.pack('iL', bufsiz, ifNames.buffer_info()[0]) ))[0] if ifNameLen % self.ifNameStructLen != 0: print('Do you need to set --ifNameStructLen? %s/%s ought to have a remainder of zero.' % (ifNameLen, self.ifNameStructLen)) sys.exit(1) ifNames = ifNames.tostring() for i in range(0, ifNameLen, self.ifNameStructLen): name = ifNames[i:i+16].split(nullByte, 1)[0].decode() if not name: print('Cannot determine interface name: do you need to set --ifNameStructLen? %s/%s ought to have a remainder of zero.' % (ifNameLen, self.ifNameStructLen)) sys.exit(1) ip = socket.inet_ntoa(fcntl.ioctl(socket.socket(socket.AF_INET, socket.SOCK_DGRAM), 0x8915, struct.pack('256s', str(name)))[20:24]) # SIOCGIFADDR netmask = socket.inet_ntoa(fcntl.ioctl(socket.socket(socket.AF_INET, socket.SOCK_DGRAM), 0x891b, struct.pack('256s', str(name)))[20:24]) # SIOCGIFNETMASK broadcast = socket.inet_ntoa(fcntl.ioctl(socket.socket(socket.AF_INET, socket.SOCK_DGRAM), 0x8919, struct.pack('256s', str(name)))[20:24]) # SIOCGIFBRDADDR hwaddr = ':'.join(['%02x' % ord(char) for char in fcntl.ioctl(socket.socket(socket.AF_INET, socket.SOCK_DGRAM), 0x8927, struct.pack('256s', str(name)))[18:24]]) # SIOCGIFHWADDR self.interfaceAttrs[name] = {Netifaces.AF_LINK: [{'addr': hwaddr}], Netifaces.AF_INET: [{'addr': ip, 'netmask': netmask, 'broadcast': broadcast}]} return self.interfaceAttrs.keys() else: import netifaces return netifaces.interfaces()
Example #17
Source File: localif.py From pscheduler with Apache License 2.0 | 6 votes |
def __init__(self, data # Data suitable for this class ): valid, message = data_is_valid(data) if not valid: raise ValueError("Invalid data: %s" % message) self.cidrs = [] for iface in netifaces.interfaces(): ifaddrs = netifaces.ifaddresses(iface) if netifaces.AF_INET in ifaddrs: for ifaddr in ifaddrs[netifaces.AF_INET]: if 'addr' in ifaddr: self.cidrs.append(ipaddress.ip_network(unicode(ifaddr['addr']))) if netifaces.AF_INET6 in ifaddrs: for ifaddr in ifaddrs[netifaces.AF_INET6]: if 'addr' in ifaddr: #add v6 but remove stuff like %eth0 that gets thrown on end of some addrs self.cidrs.append(ipaddress.ip_network(unicode(ifaddr['addr'].split('%')[0])))
Example #18
Source File: utils_net.py From avocado-vt with GNU General Public License v2.0 | 5 votes |
def if_set_macaddress(ifname, mac): """ Set the mac address for an interface :param ifname: Name of the interface :param mac: Mac address """ ctrl_sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, 0) ifr = struct.pack("256s", ifname.encode()) try: mac_dev = fcntl.ioctl(ctrl_sock, arch.SIOCGIFHWADDR, ifr)[18:24] mac_dev = ":".join(["%02x" % ord(m) for m in mac_dev]) except IOError as e: raise HwAddrGetError(ifname) if mac_dev.lower() == mac.lower(): return ifr = struct.pack("16sH14s", ifname.encode(), 1, b"".join([chr(int(m, 16)) for m in mac.split(":")])) try: fcntl.ioctl(ctrl_sock, arch.SIOCSIFHWADDR, ifr) except IOError as e: logging.info(e) raise HwAddrSetError(ifname, mac) ctrl_sock.close()
Example #19
Source File: peer_ims.py From simulator with GNU General Public License v3.0 | 5 votes |
def listen_to_the_team(self): Peer_DBS.listen_to_the_team(self) self.mcast_socket = socket(socket.AF_INET, socket.SOCK_DGRAM) self.mcast_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) self.mcast_socket.bind(('', 1234)) # Listen any interface, # including 224.0.0.1 self.lg.debug("{}: port 1234 bound to 0.0.0.0".format(self.ext_id))
Example #20
Source File: core.py From networkzero with MIT License | 5 votes |
def _find_ip4_addresses(): """Find all the IP4 addresses currently bound to interfaces """ global _ip4_addresses proto = socket.AF_INET if _ip4_addresses is None: _ip4_addresses = [] # # Determine the interface for the default gateway # (if any) and, later, prioritise the INET address on # that interface. # default_gateway = netifaces.gateways()['default'] if proto in default_gateway: _, default_gateway_interface = default_gateway[proto] else: default_gateway_interface = None for interface in netifaces.interfaces(): for info in netifaces.ifaddresses(interface).get(netifaces.AF_INET, []): if info['addr']: if interface == default_gateway_interface: _ip4_addresses.insert(0, info['addr']) else: _ip4_addresses.append(info['addr']) return _ip4_addresses
Example #21
Source File: core.py From networkzero with MIT License | 5 votes |
def _find_ip4_broadcast_addresses(): """Yield each IP4 broadcast address, and the all-broadcast """ yield "255.255.255.255" for interface in netifaces.interfaces(): ifaddresses = netifaces.ifaddresses(interface) for family in ifaddresses: if family == netifaces.AF_INET: address_info = ifaddresses[family] for info in address_info: if "broadcast" in info: yield info['broadcast']
Example #22
Source File: sys_functions.py From dkeras with MIT License | 5 votes |
def get_addr(iface_name): for ifaceName in interfaces(): addresses = [i['addr'] for i in ifaddresses(ifaceName).setdefault(AF_INET, [{'addr': 'No IP addr'}])] if ifaceName == iface_name: return addresses
Example #23
Source File: utils_net.py From avocado-vt with GNU General Public License v2.0 | 5 votes |
def set_netmask(self, netmask): """ Set netmask """ if not CTYPES_SUPPORT: raise exceptions.TestSkipError("Setting the netmask requires " "python > 2.4") netmask = ctypes.c_uint32(~((2 ** (32 - netmask)) - 1)).value nmbytes = socket.htonl(netmask) ifreq = struct.pack('16sH2si8s', self.name.encode(), socket.AF_INET, b'\x00' * 2, nmbytes, b'\x00' * 8) fcntl.ioctl(sockfd, arch.SIOCSIFNETMASK, ifreq)
Example #24
Source File: utils_net.py From avocado-vt with GNU General Public License v2.0 | 5 votes |
def get_ip_address_by_interface(ifname, ip_ver="ipv4", linklocal=False): """ returns ip address by interface :param ifname: interface name :param ip_ver: Host IP version, ipv4 or ipv6. :param linklocal: Whether ip address is local or remote :raise NetError: When failed to fetch IP address (ioctl raised IOError.). """ if ip_ver == "ipv6": ver = netifaces.AF_INET6 linklocal_prefix = "fe80" else: ver = netifaces.AF_INET linklocal_prefix = "169.254" addr = netifaces.ifaddresses(ifname).get(ver) if addr is not None: try: if linklocal: return [a['addr'] for a in addr if a['addr'].lower().startswith(linklocal_prefix)][0] else: return [a['addr'] for a in addr if not a['addr'].lower().startswith(linklocal_prefix)][0] except IndexError: logging.warning("No IP address configured for " "the network interface %s !", ifname) return None else: logging.warning("No IP address configured for the network interface" "%s !", ifname) return None
Example #25
Source File: utils_net.py From avocado-vt with GNU General Public License v2.0 | 5 votes |
def bring_down_ifname(ifname): """ Bring down an interface :param ifname: Name of the interface """ ctrl_sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, 0) ifr = struct.pack("16sh", ifname.encode(), 0) try: fcntl.ioctl(ctrl_sock, arch.SIOCSIFFLAGS, ifr) except IOError: raise TAPBringDownError(ifname) ctrl_sock.close()
Example #26
Source File: utils_net.py From avocado-vt with GNU General Public License v2.0 | 5 votes |
def bring_up_ifname(ifname): """ Bring up an interface :param ifname: Name of the interface """ ctrl_sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, 0) ifr = struct.pack("16sh", ifname.encode(), arch.IFF_UP) try: fcntl.ioctl(ctrl_sock, arch.SIOCSIFFLAGS, ifr) except IOError: raise TAPBringUpError(ifname) ctrl_sock.close()
Example #27
Source File: utils_net.py From avocado-vt with GNU General Public License v2.0 | 5 votes |
def del_bridge(self, brname): """ Delete a bridge in host """ ctrl_sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, 0) fcntl.ioctl(ctrl_sock, arch.SIOCBRDELBR, brname) ctrl_sock.close()
Example #28
Source File: utils_net.py From avocado-vt with GNU General Public License v2.0 | 5 votes |
def listening_on(self, port, max_retry=30): """ Check whether a port is used for listening. """ def test_connection(self, port): """ Try connect to a port and return the connect result as error no. """ port = int(port) if self.version == 'ipv6': sock = socket.socket(socket.AF_INET6, socket.SOCK_STREAM) sock.settimeout(1.0) result = sock.connect_ex((self.addr, port, 0, self.scope)) else: sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.settimeout(1.0) result = sock.connect_ex((self.addr, port)) return result retry = 0 while True: if retry == max_retry: return False result = test_connection(self, port) if result == 0: return True elif result == 11: # Resource temporarily unavailable. time.sleep(0.1) retry += 1 else: return False
Example #29
Source File: utils_net.py From avocado-vt with GNU General Public License v2.0 | 5 votes |
def _br_ioctl(self, io_cmd, brname, ifname): ctrl_sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, 0) index = if_nametoindex(ifname) if index == 0: raise TAPNotExistError(ifname) ifr = struct.pack("16si", brname.encode(), index) _ = fcntl.ioctl(ctrl_sock, io_cmd, ifr) ctrl_sock.close()
Example #30
Source File: utils_net.py From avocado-vt with GNU General Public License v2.0 | 5 votes |
def add_bridge(self, brname): """ Add a bridge in host """ ctrl_sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, 0) fcntl.ioctl(ctrl_sock, arch.SIOCBRADDBR, brname) ctrl_sock.close()