run ethtool outside container netns

We want to run as little as possible inside the container netns.

Unfortunately we cannot make that change for the weave container,
since the interface on which we need to invoke ethtool is created by
docker and already inside the container netns by the time we get
control.
This commit is contained in:
Matthias Radestock committed 2014-11-27 10:20:25 +00:00
1 parent 1ba1f63776
commit 29b3db6c05
1 file changed
+9 -5
+9 -5
View File
@@ -198,9 +198,6 @@ with_container_netns () {
}
connect_container_to_bridge() {
if ! ip link add name $LOCAL_IFNAME mtu $MTU type veth peer name $GUEST_IFNAME mtu $MTU ; then
return 1
fi
if ip link set $LOCAL_IFNAME master $BRIDGE &&
ip link set $LOCAL_IFNAME up &&
ip link set $GUEST_IFNAME netns $NETNS ; then
@@ -214,6 +211,9 @@ connect_container_to_bridge() {
}
launch() {
if ! ip link add name $LOCAL_IFNAME mtu $MTU type veth peer name $GUEST_IFNAME mtu $MTU ; then
return 1
fi
connect_container_to_bridge &&
check_command_and_run_anything ethtool ip netns exec $NETNS ethtool -K eth0 tx off >/dev/null &&
ip netns exec $NETNS ip link set $CONTAINER_IFNAME up
@@ -235,8 +235,12 @@ attach() {
return 0
fi
if ! connect_container_to_bridge ||
! check_command_and_run_anything ethtool ip netns exec $NETNS ethtool -K $CONTAINER_IFNAME tx off >/dev/null ||
if ! ip link add name $LOCAL_IFNAME mtu $MTU type veth peer name $GUEST_IFNAME mtu $MTU ; then
return 1
fi
if ! check_command_and_run ethtool -K $GUEST_IFNAME tx off >/dev/null ||
! 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 ; then
return 1