From b698fa819723635ddbdde15e592c3b7acc018024 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Smr=C5=BE?= Date: Sun, 1 Jun 2025 16:42:09 +0200 Subject: Execute shell commands in appropriate network namespace Changelog: Execute shell commands in appropriate network namespace --- src/Script/Shell.hs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/Script') diff --git a/src/Script/Shell.hs b/src/Script/Shell.hs index b00dc5f..5c70f2a 100644 --- a/src/Script/Shell.hs +++ b/src/Script/Shell.hs @@ -20,6 +20,7 @@ import System.IO import System.Process hiding (ShellCommand) import Network +import Network.Ip import Output import Process import Run.Monad @@ -37,6 +38,7 @@ newtype ShellScript = ShellScript [ ShellStatement ] executeScript :: Node -> ProcName -> MVar ExitCode -> Handle -> Handle -> Handle -> ShellScript -> TestRun () executeScript node pname statusVar pstdin pstdout pstderr (ShellScript statements) = do + setNetworkNamespace $ getNetns node forM_ statements $ \ShellStatement {..} -> case shellCommand of "echo" -> liftIO $ do T.hPutStrLn pstdout $ T.intercalate " " shellArguments @@ -65,7 +67,7 @@ spawnShell procNode procName script = do ( pstdin, procStdin ) <- liftIO $ createPipe ( hout, pstdout ) <- liftIO $ createPipe ( herr, pstderr ) <- liftIO $ createPipe - procHandle <- fmap (Right . (, statusVar)) $ forkTest $ do + procHandle <- fmap (Right . (, statusVar)) $ forkTestUsing forkOS $ do executeScript procNode procName statusVar pstdin pstdout pstderr script let procKillWith = Nothing -- cgit v1.2.3