summaryrefslogtreecommitdiff
path: root/src/Script
diff options
context:
space:
mode:
authorRoman Smrž <roman.smrz@seznam.cz>2025-06-01 16:42:09 +0200
committerRoman Smrž <roman.smrz@seznam.cz>2025-06-01 16:56:21 +0200
commitb698fa819723635ddbdde15e592c3b7acc018024 (patch)
tree11c7e543209a2bc6d93f32bb2c979736fba6eb26 /src/Script
parent66de6b7e5ed20fb8b833ff267fe578e4716e83c7 (diff)
Execute shell commands in appropriate network namespace
Changelog: Execute shell commands in appropriate network namespace
Diffstat (limited to 'src/Script')
-rw-r--r--src/Script/Shell.hs4
1 files changed, 3 insertions, 1 deletions
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