scripts: Fix regression in VLAN interface support
authorMartin Schwenke <martin@meltin.net>
Tue, 7 Jul 2015 10:49:38 +0000 (20:49 +1000)
committerMartin Schwenke <martin@meltin.net>
Wed, 24 Feb 2016 10:44:28 +0000 (21:44 +1100)
Commit 6471541d6d2bc9f2af0ff92b280abbd1d933cf88 broke support for VLAN
interfaces.  Releasing a public IP address depends on
ip_maskbits_iface() and for a VLAN interface this will return an
interface of the form <vlan>@<iface>, which can't be fed back into
"ip" commands.

Update ip_maskbits_iface() to drop the '@' and everything after it.

Signed-off-by: Martin Schwenke <martin@meltin.net>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
Reported-by: Jan Schwaratzki <jschwaratzki@ddn.com>
(Imported from commit 87c5c96b767aa317dd620f89ac3e11bb40dae70f)

config/functions

index d4209cbe76438cea11135426c01429d013e67b4a..a8321d24d1f4885fcc164e435f2d22f60d420d99 100644 (file)
@@ -969,7 +969,8 @@ ip_maskbits_iface ()
 
     ip addr show to "${_addr}/${_bits}" 2>/dev/null | \
        awk -v family="${_family}" \
-           'NR == 1 { iface = $2; sub(":$", "", iface) } \
+           'NR == 1 { iface = $2; sub(":$", "", iface) ; \
+                      sub("@.*", "", iface) } \
              $1 ~ /inet/ { mask = $2; sub(".*/", "", mask); \
                            print mask, iface, family }'
 }