diff options
author | Martin Schwenke <martin@meltin.net> | 2014-01-16 14:48:39 +1100 |
---|---|---|
committer | Amitay Isaacs <amitay@samba.org> | 2014-05-05 03:55:08 +0200 |
commit | 151b02cd9e05b120cc88086cfa0be6eaad04f736 (patch) | |
tree | 8c4720dcac53d60363f17b0bf06b3cd77f2009e2 | |
parent | e09147b6a31371d46b269563b707313619616564 (diff) | |
download | samba-151b02cd9e05b120cc88086cfa0be6eaad04f736.tar.gz samba-151b02cd9e05b120cc88086cfa0be6eaad04f736.tar.xz samba-151b02cd9e05b120cc88086cfa0be6eaad04f736.zip |
ctdb-eventscripts: Add check for invalid policy routing configuration
The range
CTDB_PER_IP_ROUTING_TABLE_ID_LOW..CTDB_PER_IP_ROUTING_TABLE_ID_HIGH
should not include 253-255. Otherwise policy routing may overwrite
the default system routing tables.
Add some corresponding tests.
Signed-off-by: Martin Schwenke <martin@meltin.net>
Pair-programmed-with: Amitay Isaacs <amitay@gmail.com>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
-rwxr-xr-x | ctdb/config/events.d/13.per_ip_routing | 5 | ||||
-rwxr-xr-x | ctdb/tests/eventscripts/13.per_ip_routing.021.sh | 14 | ||||
-rwxr-xr-x | ctdb/tests/eventscripts/13.per_ip_routing.022.sh | 14 |
3 files changed, 33 insertions, 0 deletions
diff --git a/ctdb/config/events.d/13.per_ip_routing b/ctdb/config/events.d/13.per_ip_routing index de153a6db1..ee83632024 100755 --- a/ctdb/config/events.d/13.per_ip_routing +++ b/ctdb/config/events.d/13.per_ip_routing @@ -19,6 +19,11 @@ table_id_prefix="ctdb." [ "$CTDB_PER_IP_ROUTING_TABLE_ID_LOW" -lt "$CTDB_PER_IP_ROUTING_TABLE_ID_HIGH" ] 2>/dev/null || \ die "error: CTDB_PER_IP_ROUTING_TABLE_ID_LOW[$CTDB_PER_IP_ROUTING_TABLE_ID_LOW] and/or CTDB_PER_IP_ROUTING_TABLE_ID_HIGH[$CTDB_PER_IP_ROUTING_TABLE_ID_HIGH] improperly configured" +if [ "$CTDB_PER_IP_ROUTING_TABLE_ID_LOW" -le 253 -a \ + 255 -le "$CTDB_PER_IP_ROUTING_TABLE_ID_HIGH" ] ; then + die "error: range CTDB_PER_IP_ROUTING_TABLE_ID_LOW[$CTDB_PER_IP_ROUTING_TABLE_ID_LOW]..CTDB_PER_IP_ROUTING_TABLE_ID_HIGH[$CTDB_PER_IP_ROUTING_TABLE_ID_HIGH] must not include 253-255" +fi + have_link_local_config () { [ "$CTDB_PER_IP_ROUTING_CONF" = "__auto_link_local__" ] diff --git a/ctdb/tests/eventscripts/13.per_ip_routing.021.sh b/ctdb/tests/eventscripts/13.per_ip_routing.021.sh new file mode 100755 index 0000000000..609ecadb06 --- /dev/null +++ b/ctdb/tests/eventscripts/13.per_ip_routing.021.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "Invalid table ID range - includes system tables" + +setup_ctdb +setup_ctdb_policy_routing + +CTDB_PER_IP_ROUTING_TABLE_ID_LOW=100 +CTDB_PER_IP_ROUTING_TABLE_ID_HIGH=500 + +required_result 1 "error: range CTDB_PER_IP_ROUTING_TABLE_ID_LOW[${CTDB_PER_IP_ROUTING_TABLE_ID_LOW}]..CTDB_PER_IP_ROUTING_TABLE_ID_HIGH[${CTDB_PER_IP_ROUTING_TABLE_ID_HIGH}] must not include 253-255" +simple_test_event "ipreallocated" diff --git a/ctdb/tests/eventscripts/13.per_ip_routing.022.sh b/ctdb/tests/eventscripts/13.per_ip_routing.022.sh new file mode 100755 index 0000000000..28997e3e6c --- /dev/null +++ b/ctdb/tests/eventscripts/13.per_ip_routing.022.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "Invalid table ID range - reversed" + +setup_ctdb +setup_ctdb_policy_routing + +CTDB_PER_IP_ROUTING_TABLE_ID_LOW=9000 +CTDB_PER_IP_ROUTING_TABLE_ID_HIGH=1000 + +required_result 1 "error: CTDB_PER_IP_ROUTING_TABLE_ID_LOW[${CTDB_PER_IP_ROUTING_TABLE_ID_LOW}] and/or CTDB_PER_IP_ROUTING_TABLE_ID_HIGH[${CTDB_PER_IP_ROUTING_TABLE_ID_HIGH}] improperly configured" +simple_test_event "ipreallocated" |