From a70c44a9f6eb66ceedc38f3258d5a1b159b1db6c Mon Sep 17 00:00:00 2001 From: Mathias Hall-Andersen Date: Wed, 2 Aug 2017 15:30:57 +0200 Subject: Create /var/run/wireguard if non-existent --- src/uapi_linux.go | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'src/uapi_linux.go') diff --git a/src/uapi_linux.go b/src/uapi_linux.go index 17c5a9d..fd83918 100644 --- a/src/uapi_linux.go +++ b/src/uapi_linux.go @@ -6,6 +6,7 @@ import ( "golang.org/x/sys/unix" "net" "os" + "path" "time" ) @@ -15,6 +16,8 @@ const ( ipcErrorNoKeyValue = int64(unix.EPROTO) ipcErrorInvalidKey = int64(unix.EPROTO) ipcErrorInvalidValue = int64(unix.EPROTO) + socketDirectory = "/var/run/wireguard" + socketName = "%s.sock" ) /* TODO: @@ -77,9 +80,20 @@ func connectUnixSocket(path string) (net.Listener, error) { 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 := connectUnixSocket(socketPath) if err != nil { return nil, err -- cgit v1.2.3-59-g8ed1b