How to do it...

We can use a third-party library, netifaces, to find out if there is IPv6 support on your machine. We can call the interfaces() function from this library to list all interfaces present in the system.

Listing 3.10 shows the Python IPv6 support checker, as follows:

#!/usr/bin/env python 
# Python Network Programming Cookbook, Second Edition -- Chapter - 3 
# This program is optimized for Python 2.7.12 and Python 3.5.2. 
# It may run on any other version with/without modifications. 
# This program depends on Python module netifaces => 0.8 
 
import socket 
import argparse 
import netifaces as ni 
 
 
def inspect_ipv6_support(): 
    """ Find the ipv6 address""" 
    print ("IPV6 support built into Python: %s" %socket.has_ipv6) 
    ipv6_addr = {} 
    for interface in ni.interfaces(): 
        all_addresses = ni.ifaddresses(interface) 
        print ("Interface %s:" %interface) 
 
        for family,addrs in all_addresses.items(): 
            fam_name = ni.address_families[family] 
            print ('  Address family: %s' % fam_name) 
            for addr in addrs: 
                if fam_name == 'AF_INET6': 
                    ipv6_addr[interface] = addr['addr'] 
                print ('    Address  : %s' % addr['addr']) 
                nmask = addr.get('netmask', None) 
                if nmask: 
                    print ('    Netmask  : %s' % nmask) 
                bcast = addr.get('broadcast', None) 
                if bcast: 
                    print ('    Broadcast: %s' % bcast) 
    if ipv6_addr: 
        print ("Found IPv6 address: %s" %ipv6_addr) 
    else: 
        print ("No IPv6 interface found!")   
 
    
if __name__ == '__main__': 
    inspect_ipv6_support() 

The output from this script will be as follows:

$ python 3_10_check_ipv6_support.py 
IPV6 support built into Python: True
Interface lo:
  Address family: AF_PACKET
    Address  : 00:00:00:00:00:00
  Address family: AF_INET
    Address  : 127.0.0.1
    Netmask  : 255.0.0.0
  Address family: AF_INET6
    Address  : ::1
    Netmask  : ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128
Interface enp2s0:
  Address family: AF_PACKET
    Address  : 9c:5c:8e:26:a2:48
    Broadcast: ff:ff:ff:ff:ff:ff
  Address family: AF_INET
    Address  : 130.104.228.90
    Netmask  : 255.255.255.128
    Broadcast: 130.104.228.127
  Address family: AF_INET6
    Address  : 2001:6a8:308f:2:88bc:e3ec:ace4:3afb
    Netmask  : ffff:ffff:ffff:ffff::/64
    Address  : 2001:6a8:308f:2:5bef:e3e6:82f8:8cca
    Netmask  : ffff:ffff:ffff:ffff::/64
    Address  : fe80::66a0:7a3f:f8e9:8c03%enp2s0
    Netmask  : ffff:ffff:ffff:ffff::/64
Interface wlp1s0:
  Address family: AF_PACKET
    Address  : c8:ff:28:90:17:d1
    Broadcast: ff:ff:ff:ff:ff:ff
Found IPv6 address: {'lo': '::1', 'enp2s0': 'fe80::66a0:7a3f:f8e9:8c03%enp2s0'}
  
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.137.164.24