diff --git a/weave b/weave index 43589c75..ecc29a3a 100755 --- a/weave +++ b/weave @@ -52,7 +52,7 @@ COMMAND=$1 shift 1 -check_command_and_run() { +check_command_and_run_anything() { if command_exists $1 then shift 1 @@ -62,6 +62,10 @@ check_command_and_run() { fi } +check_command_and_run() { + check_command_and_run_anything $1 "$@" +} + is_cidr() { # The regexp here is far from precise, but good enough. echo "$1" | grep -E '^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/[0-9]{1,2}$' >/dev/null @@ -119,7 +123,7 @@ create_bridge() { ip link set dev v${CONTAINER_IFNAME}du master $BRIDGE ip link del dev v${CONTAINER_IFNAME}du # disable offloading - check_command_and_run ethtool ethtool -K $BRIDGE tx off >/dev/null + check_command_and_run ethtool -K $BRIDGE tx off >/dev/null # Work around the situation where there are no rules allowing traffic # across our bridge. E.g. ufw add_iptables_rule filter FORWARD -i $BRIDGE -o $BRIDGE -j ACCEPT @@ -213,7 +217,7 @@ connect_container_to_bridge() { launch() { connect_container_to_bridge && ip netns exec $NETNS ip link set $CONTAINER_IFNAME up && - check_command_and_run ethtool ip netns exec $NETNS ethtool -K eth0 tx off >/dev/null + check_command_and_run_anything ethtool ip netns exec $NETNS ethtool -K eth0 tx off >/dev/null } attach() { @@ -235,7 +239,7 @@ attach() { if ! connect_container_to_bridge || ! ip netns exec $NETNS ip addr add $1 dev $CONTAINER_IFNAME || ! ip netns exec $NETNS ip link set $CONTAINER_IFNAME up || - ! check_command_and_run ethtool ip netns exec $NETNS ethtool -K $CONTAINER_IFNAME tx off >/dev/null ; then + ! check_command_and_run_anything ethtool ip netns exec $NETNS ethtool -K $CONTAINER_IFNAME tx off >/dev/null ; then return 1 fi @@ -523,7 +527,7 @@ case "$COMMAND" in docker kill $DNS_CONTAINER_NAME >/dev/null 2>&1 || true docker rm -f $CONTAINER_NAME >/dev/null 2>&1 || true docker rm -f $DNS_CONTAINER_NAME >/dev/null 2>&1 || true - check_command_and_run conntrack conntrack -D -p udp --dport $PORT >/dev/null 2>&1 || true + check_command_and_run conntrack -D -p udp --dport $PORT >/dev/null 2>&1 || true ;; reset) [ $# -eq 0 ] || usage @@ -531,7 +535,7 @@ case "$COMMAND" in docker kill $DNS_CONTAINER_NAME >/dev/null 2>&1 || true docker rm -f $CONTAINER_NAME >/dev/null 2>&1 || true docker rm -f $DNS_CONTAINER_NAME >/dev/null 2>&1 || true - check_command_and_run conntrack conntrack -D -p udp --dport $PORT >/dev/null 2>&1 || true + check_command_and_run conntrack -D -p udp --dport $PORT >/dev/null 2>&1 || true destroy_bridge for LOCAL_IFNAME in $(ip link show | grep v${CONTAINER_IFNAME}pl | cut -d ' ' -f 2 | tr -d ':') ; do ip link del $LOCAL_IFNAME