From 7c979d6725071c53ec0aaa9ac8ca3d190e9f37ed Mon Sep 17 00:00:00 2001 From: Bryan Boreham Date: Wed, 17 Sep 2014 15:44:34 +0100 Subject: [PATCH 1/6] Remove veth and/or netns symlink if interface configuration fails part-way through --- weaver/weave | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/weaver/weave b/weaver/weave index 8ba2b3ac..4e76309a 100755 --- a/weaver/weave +++ b/weaver/weave @@ -117,19 +117,28 @@ configure_container_networking() { [ -f /var/run/netns/$NSPID ] && rm -f /var/run/netns/$NSPID ln -s /proc/$NSPID/ns/net /var/run/netns/$NSPID + EXITCODE=1 LOCAL_IFNAME="v${CONTAINER_IFNAME}pl${NSPID}" GUEST_IFNAME="v${CONTAINER_IFNAME}pg${NSPID}" - ip link add name $LOCAL_IFNAME mtu $MTU type veth peer name $GUEST_IFNAME mtu $MTU - ip link set $LOCAL_IFNAME master $BRIDGE - ip link set $LOCAL_IFNAME up - ip link set $GUEST_IFNAME netns $NSPID - ip netns exec $NSPID ip link set $GUEST_IFNAME name $CONTAINER_IFNAME - ip netns exec $NSPID ip addr add $2 dev $CONTAINER_IFNAME - ip netns exec $NSPID ip link set $CONTAINER_IFNAME up - - check_command_and_run ethtool ip netns exec $NSPID ethtool -K $3 tx off >/dev/null + if ip link add name $LOCAL_IFNAME mtu $MTU type veth peer name $GUEST_IFNAME mtu $MTU ; then + if ip link set $LOCAL_IFNAME master $BRIDGE && \ + ip link set $LOCAL_IFNAME up && \ + ip link set $GUEST_IFNAME netns $NSPID + then + ip netns exec $NSPID ip link set $GUEST_IFNAME name $CONTAINER_IFNAME && \ + ip netns exec $NSPID ip addr add $2 dev $CONTAINER_IFNAME && \ + ip netns exec $NSPID ip link set $CONTAINER_IFNAME up && \ + $(check_command_and_run ethtool ip netns exec $NSPID ethtool -K $3 tx off >/dev/null) && \ + EXITCODE=0 + else + # failed before we assigned the veth to the container's namespace - delete it + ip link delete $LOCAL_IFNAME type veth || true + fi + fi [ -f /var/run/netns/$NSPID ] && rm -f /var/run/netns/$NSPID + + exit $EXITCODE } case "$COMMAND" in From fd7b0347131af66064271b1118aaf67767436e6f Mon Sep 17 00:00:00 2001 From: Bryan Boreham Date: Wed, 17 Sep 2014 16:11:30 +0100 Subject: [PATCH 2/6] untabify --- weaver/weave | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/weaver/weave b/weaver/weave index 4e76309a..d0598469 100755 --- a/weaver/weave +++ b/weaver/weave @@ -121,24 +121,24 @@ configure_container_networking() { LOCAL_IFNAME="v${CONTAINER_IFNAME}pl${NSPID}" GUEST_IFNAME="v${CONTAINER_IFNAME}pg${NSPID}" if ip link add name $LOCAL_IFNAME mtu $MTU type veth peer name $GUEST_IFNAME mtu $MTU ; then - if ip link set $LOCAL_IFNAME master $BRIDGE && \ - ip link set $LOCAL_IFNAME up && \ - ip link set $GUEST_IFNAME netns $NSPID - then - ip netns exec $NSPID ip link set $GUEST_IFNAME name $CONTAINER_IFNAME && \ - ip netns exec $NSPID ip addr add $2 dev $CONTAINER_IFNAME && \ - ip netns exec $NSPID ip link set $CONTAINER_IFNAME up && \ - $(check_command_and_run ethtool ip netns exec $NSPID ethtool -K $3 tx off >/dev/null) && \ - EXITCODE=0 - else - # failed before we assigned the veth to the container's namespace - delete it - ip link delete $LOCAL_IFNAME type veth || true - fi + if ip link set $LOCAL_IFNAME master $BRIDGE && \ + ip link set $LOCAL_IFNAME up && \ + ip link set $GUEST_IFNAME netns $NSPID + then + ip netns exec $NSPID ip link set $GUEST_IFNAME name $CONTAINER_IFNAME && \ + ip netns exec $NSPID ip addr add $2 dev $CONTAINER_IFNAME && \ + ip netns exec $NSPID ip link set $CONTAINER_IFNAME up && \ + $(check_command_and_run ethtool ip netns exec $NSPID ethtool -K $3 tx off >/dev/null) && \ + EXITCODE=0 + else + # failed before we assigned the veth to the container's namespace - delete it + ip link delete $LOCAL_IFNAME type veth || true + fi fi [ -f /var/run/netns/$NSPID ] && rm -f /var/run/netns/$NSPID - exit $EXITCODE + exit $EXITCODE } case "$COMMAND" in From eabcc55f7368797c272e3f6795e7c08613a61c5c Mon Sep 17 00:00:00 2001 From: Bryan Boreham Date: Wed, 17 Sep 2014 16:25:46 +0100 Subject: [PATCH 3/6] fix subshell syntax and make del/delete consistent --- weaver/weave | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/weaver/weave b/weaver/weave index d0598469..fcb5a492 100755 --- a/weaver/weave +++ b/weaver/weave @@ -128,11 +128,11 @@ configure_container_networking() { ip netns exec $NSPID ip link set $GUEST_IFNAME name $CONTAINER_IFNAME && \ ip netns exec $NSPID ip addr add $2 dev $CONTAINER_IFNAME && \ ip netns exec $NSPID ip link set $CONTAINER_IFNAME up && \ - $(check_command_and_run ethtool ip netns exec $NSPID ethtool -K $3 tx off >/dev/null) && \ + (check_command_and_run ethtool ip netns exec $NSPID ethtool -K $3 tx off >/dev/null) && \ EXITCODE=0 else # failed before we assigned the veth to the container's namespace - delete it - ip link delete $LOCAL_IFNAME type veth || true + ip link del $LOCAL_IFNAME type veth || true fi fi From 09aed84638fb0561c7e2e7b43bff55097ca1bcfe Mon Sep 17 00:00:00 2001 From: Bryan Boreham Date: Wed, 17 Sep 2014 16:30:50 +0100 Subject: [PATCH 4/6] return not exit from function --- weaver/weave | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/weaver/weave b/weaver/weave index fcb5a492..b622b07c 100755 --- a/weaver/weave +++ b/weaver/weave @@ -1,5 +1,6 @@ #!/bin/sh set -e +set -x usage() { echo "Usage:" @@ -138,7 +139,7 @@ configure_container_networking() { [ -f /var/run/netns/$NSPID ] && rm -f /var/run/netns/$NSPID - exit $EXITCODE + return $EXITCODE } case "$COMMAND" in From 0a403dd0818d3481772a8858864e2087199a5f01 Mon Sep 17 00:00:00 2001 From: Bryan Boreham Date: Wed, 17 Sep 2014 16:31:52 +0100 Subject: [PATCH 5/6] untabify --- weaver/weave | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/weaver/weave b/weaver/weave index b622b07c..c54a6d5d 100755 --- a/weaver/weave +++ b/weaver/weave @@ -118,7 +118,7 @@ configure_container_networking() { [ -f /var/run/netns/$NSPID ] && rm -f /var/run/netns/$NSPID ln -s /proc/$NSPID/ns/net /var/run/netns/$NSPID - EXITCODE=1 + EXITCODE=1 LOCAL_IFNAME="v${CONTAINER_IFNAME}pl${NSPID}" GUEST_IFNAME="v${CONTAINER_IFNAME}pg${NSPID}" if ip link add name $LOCAL_IFNAME mtu $MTU type veth peer name $GUEST_IFNAME mtu $MTU ; then From 2f5a9733b8d3b302b7c552592529df30ea0e4beb Mon Sep 17 00:00:00 2001 From: Bryan Boreham Date: Wed, 17 Sep 2014 16:32:21 +0100 Subject: [PATCH 6/6] Take out debugging -x mode --- weaver/weave | 1 - 1 file changed, 1 deletion(-) diff --git a/weaver/weave b/weaver/weave index c54a6d5d..b7fa02d7 100755 --- a/weaver/weave +++ b/weaver/weave @@ -1,6 +1,5 @@ #!/bin/sh set -e -set -x usage() { echo "Usage:"