gbproxy-fr: Wait for interface to be _up_ not just its existance

I've seen at least one instance where -EIFDOWN was returned when the
test suite was coming up.  This is a race condition, as we first
have to move the netdev into the namespace and only then can configure
it.  "pipework wait" only waits for its existence, not until it is up.

We cannot revert the order, as the netdev looses its state when it
is moved to a different netns.

Change-Id: I1bfb6eb925bca4e4e1901e06eed831152cddbbe2
This commit is contained in:
Harald Welte 2021-02-03 22:05:43 +01:00
parent 18564ba9c2
commit 4b8931d210
1 changed files with 14 additions and 0 deletions

View File

@ -5,7 +5,21 @@ SUBDIR=$1
SUITE=$2
if [[ -n ${WAIT_FOR_NETDEV:-} ]]; then
echo Waiting for ${WAIT_FOR_NETDEV} to appear
# this unfortunately only waits until the device exists
/usr/bin/pipework --wait -i ${WAIT_FOR_NETDEV}
# here we have to wait until it is up
while true; do
if [ ! -f /sys/class/net/${WAIT_FOR_NETDEV}/operstate ]; then
exit 23
fi
OPSTATE=`cat /sys/class/net/${WAIT_FOR_NETDEV}/operstate`
if [ "$OPSTATE" == "up" ]; then
break
fi
echo Waiting for ${WAIT_FOR_NETDEV} to become operational
sleep 1
done
fi
cd /data && /osmo-ttcn3-hacks/start-testsuite.sh /osmo-ttcn3-hacks/$SUBDIR/$SUITE; \