summaryrefslogtreecommitdiffhomepage
path: root/src/uapi_darwin.go
diff options
context:
space:
mode:
authorMathias Hall-Andersen <mathias@hall-andersen.dk>2017-09-03 18:10:06 +0200
committerMathias Hall-Andersen <mathias@hall-andersen.dk>2017-09-03 18:10:06 +0200
commit89d00452144dd1f517e90b4ea4c72ca9ee12ba3b (patch)
treed9d6315b84a344c7042c2d7e6125ce017f0386a9 /src/uapi_darwin.go
parentc24b883c01fc932dd28add1ac0319459a007d498 (diff)
Fixed TUN interface implementation os OS X
Diffstat (limited to 'src/uapi_darwin.go')
-rw-r--r--src/uapi_darwin.go24
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