pkg/ns: evaluate syscall number at compile-time
Previously this code used a run-time map lookup keyed by runtime.GOOS/GOARCH. This version uses conditional compilation to make this choice at compile time, giving immediate feedback for unsupported platforms.
This commit is contained in:

committed by
Stefan Junker

parent
5978cf8b88
commit
734bf1ba5b
17
ns/ns.go
17
ns/ns.go
@ -21,24 +21,9 @@ import (
|
||||
"syscall"
|
||||
)
|
||||
|
||||
var setNsMap = map[string]uintptr{
|
||||
"386": 346,
|
||||
"amd64": 308,
|
||||
"arm": 375,
|
||||
}
|
||||
|
||||
// SetNS sets the network namespace on a target file.
|
||||
func SetNS(f *os.File, flags uintptr) error {
|
||||
if runtime.GOOS != "linux" {
|
||||
return fmt.Errorf("unsupported OS: %s", runtime.GOOS)
|
||||
}
|
||||
|
||||
trap, ok := setNsMap[runtime.GOARCH]
|
||||
if !ok {
|
||||
return fmt.Errorf("unsupported arch: %s", runtime.GOARCH)
|
||||
}
|
||||
|
||||
_, _, err := syscall.RawSyscall(trap, f.Fd(), flags, 0)
|
||||
_, _, err := syscall.RawSyscall(setNsNr, f.Fd(), flags, 0)
|
||||
if err != 0 {
|
||||
return err
|
||||
}
|
||||
|
Reference in New Issue
Block a user