gluon-mesh-batman-adv-core: Only announce valid IPv6 addresses

The nodeinfo/network/addresses announcement included deprecated and
tentative addresses, which it clearly shouldn't as the host doesn't want
to be contacted on those addresses. They are now filtered out.
This commit is contained in:
Jan-Philipp Litza 2015-08-03 23:20:43 +02:00
parent bf2f4880fa
commit 4e5b3354d2
1 changed files with 5 additions and 2 deletions

View File

@ -1,10 +1,13 @@
local ip = require 'luci.ip'
local bit = require 'nixio'.bit
local addresses = {}
for line in io.lines('/proc/net/if_inet6') do
local matches = { line:match('^' .. string.rep('(%x%x%x%x)', 8) .. string.rep(' %x%x', 4) .. '%s+([^%s]+)$') }
if matches[9] == 'br-client' then
local matches = { line:match('^' .. string.rep('(%x%x%x%x)', 8) .. string.rep(' %x%x', 3) .. ' (%x%x)%s+([^%s]+)$') }
-- exclude wrong interfaces and deprecated as well as tentative addresses
-- (see /include/uapi/linux/if_addr.h in linux source for flags)
if matches[10] == 'br-client' and bit.band(tonumber(matches[9], 16), 0x60) == 0 then
table.insert(addresses, ip.IPv6(string.format('%s:%s:%s:%s:%s:%s:%s:%s', unpack(matches))):string():lower())
end
end