The branch, master has been updated via 3d5b80f ctdb-tests: Add NAT gateway eventscript unit tests for static routes via 70bbbbe ctdb-eventscripts: CTDB_NATGW_STATIC_ROUTES can specify gateways via 34682af ctdb-eventscripts: New configuration variable CTDB_NATGW_STATIC_ROUTES via 7705efc ctdb-eventscripts: Clarify that CTDB_NATGW_DEFAULT_GATEWAY is optional via 8a3be1f ctdb-eventscripts: Improve check in NATGW "startup" event via e22a22b ctdb-eventscripts: Reformat natgw_clear() via 3c839c6 ctdb-eventscripts: Rename some NAT gateway functions via c0e2394 ctdb-tests: Add a test for NAT gateway sanity checking via 4ee4925 ctdb-eventscripts: Sanity check NAT gateway configuration via 0953f57 ctdb-eventscripts: Improve readability of NAT gateway update code via 7fdd6b7 ctdb-tests: Add some tests for 11.natgw eventscript via feeb984 ctdb-eventscripts: Use set_proc() to update /proc from 233e3c9 selftest: Remove print_smbtorture4_version and smbtorture4_possible check
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 3d5b80f26ae65ce43ea25dd94274ec865f1c4026 Author: Martin Schwenke <mar...@meltin.net> Date: Mon Mar 17 16:06:48 2014 +1100 ctdb-tests: Add NAT gateway eventscript unit tests for static routes Signed-off-by: Martin Schwenke <mar...@meltin.net> Autobuild-User(master): Amitay Isaacs <ami...@samba.org> Autobuild-Date(master): Wed Mar 26 06:24:01 CET 2014 on sn-devel-104 commit 70bbbbe448e96019c79832ac89563eefc25b1bae Author: Martin Schwenke <mar...@meltin.net> Date: Fri Mar 7 15:33:17 2014 +1100 ctdb-eventscripts: CTDB_NATGW_STATIC_ROUTES can specify gateways Extend CTDB_NATGW_STATIC_ROUTES so that each network can have an optional gateway that overrides CTDB_NATGW_DEFAULT_GATEWAY. Signed-off-by: Martin Schwenke <mar...@meltin.net> commit 34682affe9f19432851d5f921b58e692e5c6274d Author: Martin Schwenke <mar...@meltin.net> Date: Fri Mar 7 15:11:36 2014 +1100 ctdb-eventscripts: New configuration variable CTDB_NATGW_STATIC_ROUTES This can be used to create more specific NATGW routes than the usual NATGW default route. Signed-off-by: Martin Schwenke <mar...@meltin.net> commit 7705efc35551a083873e2fed91ac42d021669df9 Author: Martin Schwenke <mar...@meltin.net> Date: Fri Mar 7 14:14:16 2014 +1100 ctdb-eventscripts: Clarify that CTDB_NATGW_DEFAULT_GATEWAY is optional This has been implied since the command to add the route has had errors redirected to /dev/null. If infrastucture (e.g. ADS, DNS) is on the same network as CTDB_NATGW_PUBLIC_IP then no route is necessary. Signed-off-by: Martin Schwenke <mar...@meltin.net> commit 8a3be1f1a979b8058cf7754632d60ab52d066d5c Author: Martin Schwenke <mar...@meltin.net> Date: Fri Mar 7 14:07:17 2014 +1100 ctdb-eventscripts: Improve check in NATGW "startup" event 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 <mar...@meltin.net> commit e22a22b1f72f75507941b5652bb9a0a2f42dd22f Author: Martin Schwenke <mar...@meltin.net> Date: Fri Mar 7 13:55:47 2014 +1100 ctdb-eventscripts: Reformat natgw_clear() Signed-off-by: Martin Schwenke <mar...@meltin.net> commit 3c839c60d15f11c538709c3e6b85d888131d6e30 Author: Martin Schwenke <mar...@meltin.net> Date: Fri Mar 7 13:47:43 2014 +1100 ctdb-eventscripts: Rename some NAT gateway functions delete_all() really needed renaming for clarity. While doing this, might as well rename some of the others that don't start with "natgw_". Signed-off-by: Martin Schwenke <mar...@meltin.net> commit c0e239473b532cebd31ef5e53d8cbf23c262c18d Author: Martin Schwenke <mar...@meltin.net> Date: Mon Mar 17 06:15:39 2014 +1100 ctdb-tests: Add a test for NAT gateway sanity checking Signed-off-by: Martin Schwenke <mar...@meltin.net> commit 4ee4925d416a86341bd76c11fa99ec9173682a1d Author: Martin Schwenke <mar...@meltin.net> Date: Fri Mar 7 13:43:17 2014 +1100 ctdb-eventscripts: Sanity check NAT gateway configuration NAT gateway really can't operate unless most of the configuration variables are set. A check in delete_all() can be removed - strange that this isn't also done in the add case. Signed-off-by: Martin Schwenke <mar...@meltin.net> commit 0953f5799c8545d9afee27d2350f344f2480df02 Author: Martin Schwenke <mar...@meltin.net> Date: Fri Mar 7 13:35:03 2014 +1100 ctdb-eventscripts: Improve readability of NAT gateway update code Put the code into a couple of usefully named functions. Signed-off-by: Martin Schwenke <mar...@meltin.net> commit 7fdd6b7861a4767cd3e2dfa76a7d7e7790efd840 Author: Martin Schwenke <mar...@meltin.net> Date: Fri Mar 14 16:29:01 2014 +1100 ctdb-tests: Add some tests for 11.natgw eventscript This includes adding support for: * Configuring fake NATGW state in the eventscript unit tests * "natgwlist" and "setnatgwstate" in ctdb command stub * ip command stub to default to "main table" when no table specified, allow routes to be added without "dev" option (just add a default dev), support "metric" option Signed-off-by: Martin Schwenke <mar...@meltin.net> commit feeb9843bf46d00beb10f3e959ba0f73f5e33e8c Author: Martin Schwenke <mar...@meltin.net> Date: Fri Mar 7 13:37:21 2014 +1100 ctdb-eventscripts: Use set_proc() to update /proc In case we want to write some unit tests in the future. Signed-off-by: Martin Schwenke <mar...@meltin.net> ----------------------------------------------------------------------- Summary of changes: ctdb/config/events.d/11.natgw | 139 +++++++++++++++++++++--------- ctdb/doc/ctdb.7.xml | 23 ++++-- ctdb/doc/ctdbd.conf.5.xml | 61 ++++++++++++- ctdb/tests/eventscripts/11.natgw.001.sh | 12 +++ ctdb/tests/eventscripts/11.natgw.002.sh | 24 +++++ ctdb/tests/eventscripts/11.natgw.011.sh | 23 +++++ ctdb/tests/eventscripts/11.natgw.012.sh | 23 +++++ ctdb/tests/eventscripts/11.natgw.013.sh | 25 ++++++ ctdb/tests/eventscripts/11.natgw.014.sh | 25 ++++++ ctdb/tests/eventscripts/11.natgw.015.sh | 62 +++++++++++++ ctdb/tests/eventscripts/11.natgw.021.sh | 25 ++++++ ctdb/tests/eventscripts/11.natgw.022.sh | 25 ++++++ ctdb/tests/eventscripts/11.natgw.023.sh | 25 ++++++ ctdb/tests/eventscripts/11.natgw.024.sh | 25 ++++++ ctdb/tests/eventscripts/11.natgw.025.sh | 64 ++++++++++++++ ctdb/tests/eventscripts/scripts/local.sh | 101 ++++++++++++++++++++++ ctdb/tests/eventscripts/stubs/ctdb | 82 ++++++++++++++++-- ctdb/tests/eventscripts/stubs/ip | 84 ++++++++++++++++--- 18 files changed, 779 insertions(+), 69 deletions(-) create mode 100755 ctdb/tests/eventscripts/11.natgw.001.sh create mode 100755 ctdb/tests/eventscripts/11.natgw.002.sh create mode 100755 ctdb/tests/eventscripts/11.natgw.011.sh create mode 100755 ctdb/tests/eventscripts/11.natgw.012.sh create mode 100755 ctdb/tests/eventscripts/11.natgw.013.sh create mode 100755 ctdb/tests/eventscripts/11.natgw.014.sh create mode 100755 ctdb/tests/eventscripts/11.natgw.015.sh create mode 100755 ctdb/tests/eventscripts/11.natgw.021.sh create mode 100755 ctdb/tests/eventscripts/11.natgw.022.sh create mode 100755 ctdb/tests/eventscripts/11.natgw.023.sh create mode 100755 ctdb/tests/eventscripts/11.natgw.024.sh create mode 100755 ctdb/tests/eventscripts/11.natgw.025.sh Changeset truncated at 500 lines: diff --git a/ctdb/config/events.d/11.natgw b/ctdb/config/events.d/11.natgw index 8555005..b2a219c 100755 --- a/ctdb/config/events.d/11.natgw +++ b/ctdb/config/events.d/11.natgw @@ -14,7 +14,22 @@ loadconfig [ -n "$CTDB_NATGW_NODES" ] || exit 0 export CTDB_NATGW_NODES -set_natgw_capability () +natgw_check_config () +{ + [ -r "$CTDB_NATGW_NODES" ] || \ + die "error: CTDB_NATGW_NODES=${CTDB_NATGW_NODES} unreadable" + [ -n "$CTDB_NATGW_PUBLIC_IP" ] || \ + die "Invalid configuration: CTDB_NATGW_PUBLIC_IP not set" + [ -n "$CTDB_NATGW_PUBLIC_IFACE" ] || \ + die "Invalid configuration: CTDB_NATGW_PUBLIC_IFACE not set" + [ -n "$CTDB_NATGW_PRIVATE_NETWORK" ] || \ + die "Invalid configuration: CTDB_NATGW_PRIVATE_NETWORK not set" + + # The default is to create a single default route + [ -n "$CTDB_NATGW_STATIC_ROUTES" ] || CTDB_NATGW_STATIC_ROUTES="0.0.0.0/0" +} + +natgw_set_capability () { # Set NATGW capability depending on configuration if [ "$CTDB_NATGW_SLAVE_ONLY" = "yes" ] ; then @@ -24,24 +39,70 @@ set_natgw_capability () fi } -delete_all() { - _ip="${CTDB_NATGW_PUBLIC_IP%/*}" - _maskbits="${CTDB_NATGW_PUBLIC_IP#*/}" +natgw_clear () +{ + _ip="${CTDB_NATGW_PUBLIC_IP%/*}" + _maskbits="${CTDB_NATGW_PUBLIC_IP#*/}" + + delete_ip_from_iface \ + $CTDB_NATGW_PUBLIC_IFACE $_ip $_maskbits >/dev/null 2>&1 + for _net_gw in $CTDB_NATGW_STATIC_ROUTES ; do + _net="${_net_gw%@*}" + ip route del "$_net" metric 10 >/dev/null 2>/dev/null + done + + # Delete the masquerading setup from a previous iteration where we + # were the NAT-GW + iptables -D POSTROUTING -t nat \ + -s $CTDB_NATGW_PRIVATE_NETWORK ! -d $CTDB_NATGW_PRIVATE_NETWORK \ + -j MASQUERADE >/dev/null 2>/dev/null + + iptables -D INPUT -p tcp --syn -d $_ip/32 -j REJECT 2>/dev/null +} - [ -z "$CTDB_NATGW_PUBLIC_IFACE" ] || { - delete_ip_from_iface $CTDB_NATGW_PUBLIC_IFACE $_ip $_maskbits >/dev/null 2>&1 - } - ip route del 0.0.0.0/0 metric 10 >/dev/null 2>/dev/null +natgw_set_master () +{ + set_proc sys/net/ipv4/ip_forward 1 + iptables -A POSTROUTING -t nat \ + -s $CTDB_NATGW_PRIVATE_NETWORK ! -d $CTDB_NATGW_PRIVATE_NETWORK \ + -j MASQUERADE + + # block all incoming connections to the NATGW IP address + ctdb_natgw_public_ip_host="${CTDB_NATGW_PUBLIC_IP%/*}/32" + iptables -D INPUT -p tcp --syn \ + -d $ctdb_natgw_public_ip_host -j REJECT 2>/dev/null + iptables -I INPUT -p tcp --syn \ + -d $ctdb_natgw_public_ip_host -j REJECT 2>/dev/null + + ip addr add $CTDB_NATGW_PUBLIC_IP dev $CTDB_NATGW_PUBLIC_IFACE + for _net_gw in $CTDB_NATGW_STATIC_ROUTES ; do + _net="${_net_gw%@*}" + if [ "$_net" != "$_net_gw" ] ; then + _gw="${_net_gw#*@}" + else + _gw="$CTDB_NATGW_DEFAULT_GATEWAY" + fi - # Delete the masquerading setup from a previous iteration where we - # were the NAT-GW - iptables -D POSTROUTING -t nat -s $CTDB_NATGW_PRIVATE_NETWORK ! -d $CTDB_NATGW_PRIVATE_NETWORK -j MASQUERADE >/dev/null 2>/dev/null + [ -n "$_gw" ] || continue + ip route add "$_net" metric 10 via "$_gw" + done +} - # remove any iptables rule we may have on this address - iptables -D INPUT -p tcp --syn -d $_ip/32 -j REJECT 2>/dev/null +natgw_set_slave () +{ + _natgwip="$1" + + for _net_gw in $CTDB_NATGW_STATIC_ROUTES ; do + _net="${_net_gw%@*}" + ip route add "$_net" via "$_natgwip" metric 10 + done + + # Make sure winbindd does not stay bound to this address if we are + # no longer NATGW master + smbcontrol winbindd ip-dropped $CTDB_NATGW_PUBLIC_IP >/dev/null 2>&1 } -ensure_natgwmaster () +natgw_ensure_master () { _event="$1" @@ -57,57 +118,53 @@ ensure_natgwmaster () case "$1" in setup) - set_natgw_capability + natgw_check_config + natgw_set_capability ;; startup) + 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 - echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce + set_proc sys/net/ipv4/conf/all/arp_announce 2 ;; updatenatgw|ipreallocated) + natgw_check_config + mypnn=$(ctdb pnn | cut -d: -f2) - set_natgw_capability - ensure_natgwmaster "$1" + natgw_set_capability + natgw_ensure_master "$1" - delete_all + natgw_clear if [ "$mypnn" = "$natgwmaster" ]; then - # This is the NAT GW - echo 1 >/proc/sys/net/ipv4/ip_forward - iptables -A POSTROUTING -t nat -s $CTDB_NATGW_PRIVATE_NETWORK ! -d $CTDB_NATGW_PRIVATE_NETWORK -j MASQUERADE - - # block all incoming connections to the natgw address - ctdb_natgw_public_ip_host="${CTDB_NATGW_PUBLIC_IP%/*}/32" - iptables -D INPUT -p tcp --syn -d $ctdb_natgw_public_ip_host -j REJECT 2>/dev/null - iptables -I INPUT -p tcp --syn -d $ctdb_natgw_public_ip_host -j REJECT 2>/dev/null - - ip addr add $CTDB_NATGW_PUBLIC_IP dev $CTDB_NATGW_PUBLIC_IFACE - ip route add 0.0.0.0/0 metric 10 via $CTDB_NATGW_DEFAULT_GATEWAY >/dev/null 2>/dev/null + natgw_set_master else - # This is NOT the NAT GW - ip route add 0.0.0.0/0 via $natgwip metric 10 - # Make sure winbindd does not stay bound to this address - # if we are no longer natgwmaster - smbcontrol winbindd ip-dropped $CTDB_NATGW_PUBLIC_IP >/dev/null 2>/dev/null + natgw_set_slave "$natgwip" fi # flush our route cache - echo 1 > /proc/sys/net/ipv4/route/flush + set_proc sys/net/ipv4/route/flush 1 ;; shutdown|removenatgw) - delete_all + natgw_check_config + natgw_clear ;; monitor) - set_natgw_capability - ensure_natgwmaster "$1" + natgw_check_config + natgw_set_capability + natgw_ensure_master "$1" ;; *) diff --git a/ctdb/doc/ctdb.7.xml b/ctdb/doc/ctdb.7.xml index 989a280..f48d5a6 100644 --- a/ctdb/doc/ctdb.7.xml +++ b/ctdb/doc/ctdb.7.xml @@ -635,11 +635,12 @@ CTDB_NATGW_DEFAULT_GATEWAY=10.0.0.1 <varname>CTDB_NATGW_PUBLIC_IP</varname> on the configured public interfaces <varname>CTDB_NATGW_PUBLIC_IFACE</varname> and acts as a router, masquerading outgoing connections from slave nodes - via this IP address. It also establishes a fallback default - route to the configured default gateway - <varname>CTDB_NATGW_DEFAULT_GATEWAY</varname> with a metric of 10. - A metric 10 route is used so it can co-exist with other - default routes that may be available. + via this IP address. If + <varname>CTDB_NATGW_DEFAULT_GATEWAY</varname> is set then it + also establishes a fallback default route to the configured + this gateway with a metric of 10. A metric 10 route is used + so it can co-exist with other default routes that may be + available. </para> <para> @@ -654,9 +655,17 @@ CTDB_NATGW_DEFAULT_GATEWAY=10.0.0.1 </para> <para> + <varname>CTDB_NATGW_STATIC_ROUTES</varname> can be used to + have NATGW create more specific routes instead of just default + routes. + </para> + + <para> This is implemented in the <filename>11.natgw</filename> - eventscript. Please see the eventscript file for the finer - details. + eventscript. Please see the eventscript file and the + <citetitle>NAT GATEWAY</citetitle> section in + <citerefentry><refentrytitle>ctdbd.conf</refentrytitle> + <manvolnum>5</manvolnum></citerefentry> for more details. </para> </refsect2> diff --git a/ctdb/doc/ctdbd.conf.5.xml b/ctdb/doc/ctdbd.conf.5.xml index d80bda6..188a4df 100644 --- a/ctdb/doc/ctdbd.conf.5.xml +++ b/ctdb/doc/ctdbd.conf.5.xml @@ -458,11 +458,13 @@ <listitem> <para> IPADDR is an alternate network gateway to use on the NAT - gateway master node. A fallback default route is added - via this network gateway. + gateway master node. If set, a fallback default route + is added via this network gateway. </para> <para> - No default. + No default. Setting this variable is optional - if not + set that no route is created on the NAT gateway master + node. </para> </listitem> </varlistentry> @@ -543,6 +545,42 @@ </listitem> </varlistentry> + <varlistentry> + <term>CTDB_NATGW_STATIC_ROUTES=<parameter>IPADDR/MASK[@GATEWAY]</parameter> ...</term> + <listitem> + <para> + Each IPADDR/MASK identifies a network or host to which + NATGW should create a fallback route, instead of + creating a single default route. This can be used when + there is already a default route, via an interface that + can not reach required infrastructure, that overrides + the NAT gateway default route. + </para> + <para> + If GATEWAY is specified then the corresponding route on + the NATGW master node will be via GATEWAY. Such routes + are created even if + <varname>CTDB_NATGW_DEFAULT_GATEWAY</varname> is not + specified. If GATEWAY is not specified for some + networks then routes are only created on the NATGW + master node for those networks if + <varname>CTDB_NATGW_DEFAULT_GATEWAY</varname> is + specified. + </para> + <para> + This should be used with care to avoid causing traffic + to unnecessarily double-hop through the NAT gateway + master, even when a node is hosting public IP addresses. + Each specified network or host should probably have a + corresponding automatically created link route or static + route to avoid this. + </para> + <para> + No default. + </para> + </listitem> + </varlistentry> + </variablelist> <refsect3> @@ -554,6 +592,23 @@ CTDB_NATGW_DEFAULT_GATEWAY=10.0.0.1 CTDB_NATGW_PUBLIC_IP=10.0.0.227/24 CTDB_NATGW_PUBLIC_IFACE=eth0 </screen> + + <para> + A variation that ensures that infrastructure (ADS, DNS, ...) + directly attached to the public network (10.0.0.0/24) is + always reachable would look like this: + </para> + <screen> +CTDB_NATGW_NODES=/etc/ctdb/natgw_nodes +CTDB_NATGW_PRIVATE_NETWORK=192.168.1.0/24 +CTDB_NATGW_PUBLIC_IP=10.0.0.227/24 +CTDB_NATGW_PUBLIC_IFACE=eth0 +CTDB_NATGW_STATIC_ROUTES=10.0.0.0/24 + </screen> + <para> + Note that <varname>CTDB_NATGW_DEFAULT_GATEWAY</varname> is + not specified. + </para> </refsect3> </refsect2> diff --git a/ctdb/tests/eventscripts/11.natgw.001.sh b/ctdb/tests/eventscripts/11.natgw.001.sh new file mode 100755 index 0000000..afcc097 --- /dev/null +++ b/ctdb/tests/eventscripts/11.natgw.001.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "not configured" + +setup_ctdb + +ok_null +simple_test_event "ipreallocate" + +check_routes 0 diff --git a/ctdb/tests/eventscripts/11.natgw.002.sh b/ctdb/tests/eventscripts/11.natgw.002.sh new file mode 100755 index 0000000..e496e4a --- /dev/null +++ b/ctdb/tests/eventscripts/11.natgw.002.sh @@ -0,0 +1,24 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "missing config file" + +setup_ctdb +setup_ctdb_natgw <<EOF +192.168.1.21 master +192.168.1.22 +192.168.1.23 +192.168.1.24 +EOF + +rm -f "$CTDB_NATGW_NODES" + +required_result 1 <<EOF +error: CTDB_NATGW_NODES=${CTDB_NATGW_NODES} unreadable +EOF + +for i in "startup" "ipreallocated" "monitor" ; do + simple_test_event "$i" +done + diff --git a/ctdb/tests/eventscripts/11.natgw.011.sh b/ctdb/tests/eventscripts/11.natgw.011.sh new file mode 100755 index 0000000..4c5a937 --- /dev/null +++ b/ctdb/tests/eventscripts/11.natgw.011.sh @@ -0,0 +1,23 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "master node, basic configuration" + +setup_ctdb + +setup_ctdb_natgw <<EOF +192.168.1.21 master +192.168.1.22 +192.168.1.23 +192.168.1.24 +EOF + +ok_null +simple_test_event "ipreallocated" + +ok "default via ${CTDB_NATGW_DEFAULT_GATEWAY} dev ethXXX metric 10 " +simple_test_command ip route show + +ok_natgw_master_ip_addr_show +simple_test_command ip addr show "$CTDB_NATGW_PUBLIC_IFACE" diff --git a/ctdb/tests/eventscripts/11.natgw.012.sh b/ctdb/tests/eventscripts/11.natgw.012.sh new file mode 100755 index 0000000..6ec98a0 --- /dev/null +++ b/ctdb/tests/eventscripts/11.natgw.012.sh @@ -0,0 +1,23 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "slave node, basic configuration" + +setup_ctdb + +setup_ctdb_natgw <<EOF +192.168.1.21 +192.168.1.22 master +192.168.1.23 +192.168.1.24 +EOF + +ok_null +simple_test_event "ipreallocated" + +ok "default via ${FAKE_CTDB_NATGW_MASTER} dev ethXXX metric 10 " +simple_test_command ip route show + +ok_natgw_slave_ip_addr_show +simple_test_command ip addr show "$CTDB_NATGW_PUBLIC_IFACE" diff --git a/ctdb/tests/eventscripts/11.natgw.013.sh b/ctdb/tests/eventscripts/11.natgw.013.sh new file mode 100755 index 0000000..16f0622 --- /dev/null +++ b/ctdb/tests/eventscripts/11.natgw.013.sh @@ -0,0 +1,25 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "master node, no gateway" + +setup_ctdb + +setup_ctdb_natgw <<EOF +192.168.1.21 master +192.168.1.22 +192.168.1.23 +192.168.1.24 +EOF + +CTDB_NATGW_DEFAULT_GATEWAY="" + +ok_null +simple_test_event "ipreallocated" + +ok_null +simple_test_command ip route show + +ok_natgw_master_ip_addr_show +simple_test_command ip addr show "$CTDB_NATGW_PUBLIC_IFACE" diff --git a/ctdb/tests/eventscripts/11.natgw.014.sh b/ctdb/tests/eventscripts/11.natgw.014.sh new file mode 100755 index 0000000..462756c --- /dev/null +++ b/ctdb/tests/eventscripts/11.natgw.014.sh @@ -0,0 +1,25 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "slave node, no gateway" + +setup_ctdb + +setup_ctdb_natgw <<EOF +192.168.1.21 +192.168.1.22 master +192.168.1.23 +192.168.1.24 +EOF + +CTDB_NATGW_DEFAULT_GATEWAY="" + +ok_null +simple_test_event "ipreallocated" + +ok "default via ${FAKE_CTDB_NATGW_MASTER} dev ethXXX metric 10 " +simple_test_command ip route show + +ok_natgw_slave_ip_addr_show +simple_test_command ip addr show "$CTDB_NATGW_PUBLIC_IFACE" diff --git a/ctdb/tests/eventscripts/11.natgw.015.sh b/ctdb/tests/eventscripts/11.natgw.015.sh new file mode 100755 index 0000000..d202ae6 --- /dev/null +++ b/ctdb/tests/eventscripts/11.natgw.015.sh @@ -0,0 +1,62 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" -- Samba Shared Repository