Handle ifupdown-without-bridge networking better.
authorRalph Ronnquist <rrq@rrq.au>
Sun, 28 Jan 2024 22:09:48 +0000 (09:09 +1100)
committerRalph Ronnquist <rrq@rrq.au>
Sun, 28 Jan 2024 22:09:48 +0000 (09:09 +1100)
functions

index fa1d527012262a85a85c8b718cf28fe71a9be71a..8f39d4014e9213a56c63f4dc03b228f94e73c5ce 100644 (file)
--- a/functions
+++ b/functions
@@ -103,6 +103,12 @@ setup_veth_cables() {
     for C in "$@" ; do
        IF=$NETNS$i
        MAC="${C#*=}"
+        if ip link show $IF > /dev/null 2>&1 ; then
+           : # The interface exists already (bad badness); let things fail
+        elif ifquery --state $IF >/dev/null 2>&1 ; then
+            # doesn't exist but has residue state; quiet cleanup
+            ifdown -f $IF > /dev/null 2>&1
+        fi
        if [ -z "$MAC" ] ; then
            # set up veth with "random" mac address
            ip link add $IF type veth peer name eth$i netns $NETNS