WIP: add ipv6
This commit is contained in:
parent
16e0fd5a07
commit
70210142da
14
node.lua
14
node.lua
|
@ -22,8 +22,10 @@ font = resource.load_font("vera.ttf")
|
|||
|
||||
local v = {
|
||||
network = "<unkown>",
|
||||
ethip = "<unkown>",
|
||||
wlanip = "<unkown>",
|
||||
ethipv4 = "<unkown>",
|
||||
ethipv6 = "<unkown>",
|
||||
wlanipv4 = "<unkown>",
|
||||
wlanipv6 = "<unkown>",
|
||||
gw = "<unkown>"
|
||||
}
|
||||
|
||||
|
@ -80,9 +82,13 @@ function node.render()
|
|||
|
||||
-- right side: IP addresses
|
||||
y = y_start
|
||||
font:write(x_right, y, "Eth: " .. v.ethip, fontsize, 1,1,1,1)
|
||||
font:write(x_right, y, "Eth: " .. v.ethipv4, fontsize, 1,1,1,1)
|
||||
y = y + offset
|
||||
font:write(x_right, y, v.ethipv6, fontsize, 1,1,1,1)
|
||||
|
||||
y = y + offset
|
||||
font:write(x_right, y, "WiFi: " .. v.wlanip, fontsize, 1,1,1,1)
|
||||
font:write(x_right, y, "WiFi: " .. v.wlanipv4, fontsize, 1,1,1,1)
|
||||
y = y + offset
|
||||
font:write(x_right, y, v.wlanipv6, fontsize, 1,1,1,1)
|
||||
|
||||
end
|
||||
|
|
24
service
24
service
|
@ -60,6 +60,24 @@ def get_ipv4(ifname):
|
|||
return None
|
||||
|
||||
|
||||
def get_ipv6(ifname):
|
||||
try:
|
||||
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)
|
||||
except IOError:
|
||||
return "<no ipv6>"
|
||||
except:
|
||||
return None
|
||||
|
||||
|
||||
def check_network():
|
||||
return os.path.exists('/sd/config/network') and "static" or "dhcp"
|
||||
|
||||
|
@ -80,8 +98,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…
Reference in a new issue