From 7153a26626498d9790ddf73f6a275cc93f847c66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Smr=C5=BE?= Date: Tue, 18 Apr 2023 22:27:15 +0200 Subject: Bring up veth peer in subnet first --- src/Network.hs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Network.hs b/src/Network.hs index 6e3568d..702e7ad 100644 --- a/src/Network.hs +++ b/src/Network.hs @@ -147,6 +147,8 @@ newSubnet net vname = do let veth = T.pack $ "veth_s" <> show idx callOn net $ "ip link add " <> veth <> " type veth peer name veth0 netns \"" <> textNetnsName (netnsName sub) <> "\"" callOn net $ "ip addr add dev " <> veth <> " " <> textIpAddressCidr router + callOn sub $ "ip link set dev veth0 master br0 up" -- this end needs to go up first, + -- otherwise it sometimes gets stuck with NO-CARRIER for a while. callOn net $ "ip link set dev " <> veth <> " up" -- If the new subnet can be split further, routing rule for the whole prefix is needed @@ -155,8 +157,6 @@ newSubnet net vname = do <> " via " <> textIpAddress bridge <> " dev " <> veth <> " src " <> textIpAddress router - - callOn sub $ "ip link set dev veth0 master br0 up" callOn sub $ "ip route add default via " <> textIpAddress router <> " dev br0 src " <> textIpAddress bridge return sub -- cgit v1.2.3