WIP: add ipv6
This commit is contained in:
parent
16e0fd5a07
commit
7780380bc7
2 changed files with 39 additions and 7 deletions
30
service
30
service
|
@ -60,6 +60,30 @@ def get_ipv4(ifname):
|
|||
return None
|
||||
|
||||
|
||||
def get_ipv6(ifname):
|
||||
try:
|
||||
# doesn't work as there is no ipv6 support in info-beamer OS?
|
||||
s = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM)
|
||||
info = fcntl.ioctl(s.fileno(), 0x8915,
|
||||
struct.pack('256s', ifname[:15]))
|
||||
ip = socket.inet_ntoa(info[20:24])
|
||||
|
||||
mask = struct.unpack('>I', fcntl.ioctl(
|
||||
s.fileno(), 0x891b, struct.pack('256s', ifname))[20:24])[0]
|
||||
# Remember: not everything has to be performance optimal :-)
|
||||
mask = bin(mask)[2:].count('1')
|
||||
return "%s/%d" % (ip, mask)
|
||||
|
||||
# This will only get us some global IPv6 address
|
||||
# ipv6 = socket.getaddrinfo(
|
||||
# socket.gethostname(), None, socket.AF_INET6)[1][4][0]
|
||||
# return "%s" & ipv6
|
||||
except IOError:
|
||||
return "<no ipv6>"
|
||||
except:
|
||||
return None
|
||||
|
||||
|
||||
def check_network():
|
||||
return os.path.exists('/sd/config/network') and "static" or "dhcp"
|
||||
|
||||
|
@ -80,8 +104,10 @@ def check_internet():
|
|||
|
||||
|
||||
tests = [
|
||||
(1, "ethip", partial(get_ipv4, "eth0")),
|
||||
(1, "wlanip", partial(get_ipv4, "wlan0")),
|
||||
(1, "ethipv4", partial(get_ipv4, "eth0")),
|
||||
(1, "ethipv6", partial(get_ipv6, "eth0")),
|
||||
(1, "wlanipv4", partial(get_ipv4, "wlan0")),
|
||||
(1, "wlanipv6", partial(get_ipv6, "wlan0")),
|
||||
(1, "gw", get_default_gateway),
|
||||
(10, "online", check_internet),
|
||||
(5, "network", check_network),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue