From b1161dfd96ca6ee964c24c34a10073681e0ebded Mon Sep 17 00:00:00 2001 From: Franco Fichtner Date: Sat, 16 Jul 2016 19:05:17 +0200 Subject: [PATCH] interfaces: properly pick up subnet6 for link-local scope --- src/etc/inc/interfaces.lib.inc | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/etc/inc/interfaces.lib.inc b/src/etc/inc/interfaces.lib.inc index d0de33239..aff06afc0 100644 --- a/src/etc/inc/interfaces.lib.inc +++ b/src/etc/inc/interfaces.lib.inc @@ -302,16 +302,19 @@ function _legacy_getall_interface_addresses($ifs) break; case 'inet6': $addr = strtok($stat[1], '%'); + /* throw error on ifconfig output scan fail: */ + unset($mask); + for ($i = 0; $i < count($stat) - 1; ++$i) { + if ($stat[$i] == 'prefixlen') { + $mask = intval($stat[$i + 1]); + } + } if (!isset($addrs['ipaddr6']) && strpos($addr, 'fe80:') !== 0) { /* does not pick up link-local */ + $addrs['subnetbits6'] = $mask; $addrs['ipaddr6'] = $addr; - for ($i = 0; $i < count($stat); ++$i) { - if ($stat[$i] == 'prefixlen') { - $addrs['subnetbits6'] = intval($stat[$i+1]); - } - } - $addrs['compat'][] = $addr . '/' . $addrs['subnetbits6']; } + $addrs['compat'][] = $addr . '/' . $mask; break; case 'ether': $addrs['macaddr'] = $stat[1];