ctdb-eventscripts: Improve check in NATGW "startup" event
authorMartin Schwenke <martin@meltin.net>
Fri, 7 Mar 2014 03:07:17 +0000 (14:07 +1100)
committerAmitay Isaacs <amitay@samba.org>
Wed, 26 Mar 2014 03:21:42 +0000 (04:21 +0100)
Although the dots in $CTDB_NATGW_PUBLIC_IP could probably only help
match an invalid public IP address, this is only executed once so do
as exact a check as possible.

Use CTDB_BASE instead of hardcoding /etc/ctdb.

Make the error message less redundant.

Signed-off-by: Martin Schwenke <martin@meltin.net>
ctdb/config/events.d/11.natgw

index ae093058564b1b72d1d2c0479e149377e3472164..4d58ed2425a0b314596ad17ece13febaa5f19768 100755 (executable)
@@ -107,8 +107,11 @@ case "$1" in
        natgw_check_config
 
        # Error if CTDB_NATGW_PUBLIC_IP is listed in public addresses
-       grep -q "^$CTDB_NATGW_PUBLIC_IP[[:space:]]" "${CTDB_PUBLIC_ADDRESSES:-/etc/ctdb/public_addresses}" && \
-           die "ERROR: NATGW configured to use a public address. NATGW must not use a public address."
+       ip_pat=$(echo "$CTDB_NATGW_PUBLIC_IP" | sed -e 's@\.@\\.@g')
+       if grep -q "^${ip_pat}[[:space:]]" \
+           "${CTDB_PUBLIC_ADDRESSES:-${CTDB_BASE}/public_addresses}" ; then
+           die "ERROR: CTDB_NATGW_PUBLIC_IP same as a public address"
+       fi
 
        # do not send out arp requests from loopback addresses
        set_proc sys/net/ipv4/conf/all/arp_announce 2