1
0
Fork 0
mirror of https://github.com/moby/moby.git synced 2022-11-09 12:21:53 -05:00
moby--moby/libnetwork/reexec.go
Arnaud Porterie 7d4450e647 Unexport reexec symbols
Signed-off-by: Arnaud Porterie <arnaud.porterie@docker.com>
2015-02-19 17:44:48 -08:00

45 lines
883 B
Go

package libnetwork
import (
"fmt"
"os"
"os/exec"
dre "github.com/docker/docker/pkg/reexec"
)
type reexecCommand int
const (
reexecCreateNamespace reexecCommand = iota
reexecMoveInterface
)
var reexecCommands = map[reexecCommand]struct {
Key string
Entrypoint func()
}{
reexecCreateNamespace: {"netns-create", createNetworkNamespace},
reexecMoveInterface: {"netns-moveif", namespaceMoveInterface},
}
func init() {
for _, reexecCmd := range reexecCommands {
dre.Register(reexecCmd.Key, reexecCmd.Entrypoint)
}
}
func reexec(command reexecCommand, params ...string) error {
reexecCommand, ok := reexecCommands[command]
if !ok {
return fmt.Errorf("unknown reexec command %q", command)
}
cmd := &exec.Cmd{
Path: dre.Self(),
Args: append([]string{reexecCommand.Key}, params...),
Stdout: os.Stdout,
Stderr: os.Stderr,
}
return cmd.Run()
}