package main import ( "bytes" "os" "os/exec" "os/signal" "syscall" C "github.com/sagernet/sing-box/constant" "github.com/sagernet/sing-box/option" "github.com/sagernet/sing/common" E "github.com/sagernet/sing/common/exceptions" "golang.org/x/sys/unix" ) func runInUserNamespaceIfNeeded(options option.Options, optionsList []*OptionsEntry) error { if !common.Any(options.NetworkNamespaces, func(namespace option.NetworkNamespace) bool { return namespace.Type == C.NetNsTypeUnshare }) { return nil } var header unix.CapUserHeader header.Version = unix.LINUX_CAPABILITY_VERSION_3 var data [2]unix.CapUserData err := unix.Capget(&header, &data[0]) if err != nil { return E.Cause(err, "get capabilities") } if data[0].Effective&(1<