diff options
Diffstat (limited to 'src/uapi_darwin.go')
-rw-r--r-- | src/uapi_darwin.go | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/src/uapi_darwin.go b/src/uapi_darwin.go index 9eee53c..13e5c4f 100644 --- a/src/uapi_darwin.go +++ b/src/uapi_darwin.go @@ -2,11 +2,22 @@ package main import ( "fmt" + "golang.org/x/sys/unix" "net" "os" + "path" "time" ) +const ( + ipcErrorIO = -int64(unix.EIO) + ipcErrorNotDefined = -int64(unix.ENODEV) + ipcErrorProtocol = -int64(unix.EPROTO) + ipcErrorInvalid = -int64(unix.EINVAL) + socketDirectory = "/var/run/wireguard" + socketName = "%s.sock" +) + type UAPIListener struct { listener net.Listener // unix socket listener connNew chan net.Conn @@ -35,9 +46,20 @@ func (l *UAPIListener) Addr() net.Addr { func NewUAPIListener(name string) (net.Listener, error) { + // check if path exist + + err := os.MkdirAll(socketDirectory, 077) + if err != nil && !os.IsExist(err) { + return nil, err + } + // open UNIX socket - socketPath := fmt.Sprintf("/var/run/wireguard/%s.sock", name) + socketPath := path.Join( + socketDirectory, + fmt.Sprintf(socketName, name), + ) + listener, err := net.Listen("unix", socketPath) if err != nil { return nil, err |