diff options
author | Mathias Hall-Andersen <mathias@hall-andersen.dk> | 2017-09-03 18:10:06 +0200 |
---|---|---|
committer | Mathias Hall-Andersen <mathias@hall-andersen.dk> | 2017-09-03 18:10:06 +0200 |
commit | 89d00452144dd1f517e90b4ea4c72ca9ee12ba3b (patch) | |
tree | d9d6315b84a344c7042c2d7e6125ce017f0386a9 /src/uapi_darwin.go | |
parent | c24b883c01fc932dd28add1ac0319459a007d498 (diff) |
Fixed TUN interface implementation os OS X
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 |