ctdb-scripts: Fix regression in VLAN interface support
authorMartin Schwenke <martin@meltin.net>
Tue, 7 Jul 2015 10:49:38 +0000 (20:49 +1000)
committerAmitay Isaacs <amitay@samba.org>
Tue, 14 Jul 2015 07:57:16 +0000 (09:57 +0200)
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>
ctdb/config/functions

index bcef4c78b0b8cce1b38414aeb23ca877132b2edd..73d2255c65b5e0fb589dd133add5b8230fd16969 100755 (executable)
@@ -957,7 +957,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 }'
 }