From 11be118eae09f272641174217ac8502872728058 Mon Sep 17 00:00:00 2001 From: Tobias Klauser Date: Wed, 4 Mar 2020 17:21:54 +0100 Subject: [PATCH 1/2] global: use RTMGRP_* consts from x/sys/unix Update the golang.org/x/sys/unix dependency and use the newly introduced RTMGRP_* consts instead of using the corresponding RTNLGRP_* const to create a mask. Signed-off-by: Tobias Klauser Signed-off-by: Jason A. Donenfeld --- device/conn_linux.go | 2 +- go.mod | 2 +- go.sum | 4 ++-- tun/tun_linux.go | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/device/conn_linux.go b/device/conn_linux.go index 94b6d5c07..e90b0e35b 100644 --- a/device/conn_linux.go +++ b/device/conn_linux.go @@ -118,7 +118,7 @@ func createNetlinkRouteSocket() (int, error) { } saddr := &unix.SockaddrNetlink{ Family: unix.AF_NETLINK, - Groups: uint32(1 << (unix.RTNLGRP_IPV4_ROUTE - 1)), + Groups: unix.RTMGRP_IPV4_ROUTE, } err = unix.Bind(sock, saddr) if err != nil { diff --git a/go.mod b/go.mod index 34b1e720a..f4e7b97c9 100644 --- a/go.mod +++ b/go.mod @@ -5,6 +5,6 @@ go 1.12 require ( golang.org/x/crypto v0.0.0-20191002192127-34f69633bfdc golang.org/x/net v0.0.0-20191003171128-d98b1b443823 - golang.org/x/sys v0.0.0-20191003212358-c178f38b412c + golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527 golang.org/x/text v0.3.2 ) diff --git a/go.sum b/go.sum index 970f4cbad..be3d0cfdf 100644 --- a/go.sum +++ b/go.sum @@ -6,8 +6,8 @@ golang.org/x/net v0.0.0-20191003171128-d98b1b443823 h1:Ypyv6BNJh07T1pUSrehkLemqP golang.org/x/net v0.0.0-20191003171128-d98b1b443823/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191003212358-c178f38b412c h1:6Zx7DRlKXf79yfxuQ/7GqV3w2y7aDsk6bGg0MzF5RVU= -golang.org/x/sys v0.0.0-20191003212358-c178f38b412c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527 h1:uYVVQ9WP/Ds2ROhcaGPeIdVq0RIXVLwsHlnvJ+cT1So= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= diff --git a/tun/tun_linux.go b/tun/tun_linux.go index 36b43ea4d..7ab062314 100644 --- a/tun/tun_linux.go +++ b/tun/tun_linux.go @@ -85,7 +85,7 @@ func createNetlinkSocket() (int, error) { } saddr := &unix.SockaddrNetlink{ Family: unix.AF_NETLINK, - Groups: uint32((1 << (unix.RTNLGRP_LINK - 1)) | (1 << (unix.RTNLGRP_IPV4_IFADDR - 1)) | (1 << (unix.RTNLGRP_IPV6_IFADDR - 1))), + Groups: unix.RTMGRP_LINK | unix.RTMGRP_IPV4_IFADDR | unix.RTMGRP_IPV6_IFADDR, } err = unix.Bind(sock, saddr) if err != nil { From e82589b14916513ac32a1957f63023823b517534 Mon Sep 17 00:00:00 2001 From: David Crawshaw Date: Tue, 4 Jun 2019 05:53:06 -0400 Subject: [PATCH 2/2] device: have IpcSetOperation not return typed error Signed-off-by: David Crawshaw --- device/uapi.go | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/device/uapi.go b/device/uapi.go index 72611ab5e..b3db9fa7c 100644 --- a/device/uapi.go +++ b/device/uapi.go @@ -105,7 +105,7 @@ func (device *Device) IpcGetOperation(socket *bufio.Writer) *IPCError { return nil } -func (device *Device) IpcSetOperation(socket *bufio.Reader) *IPCError { +func (device *Device) IpcSetOperation(socket *bufio.Reader) error { scanner := bufio.NewScanner(socket) logError := device.log.Error logDebug := device.log.Debug @@ -420,7 +420,14 @@ func (device *Device) IpcHandle(socket net.Conn) { switch op { case "set=1\n": - status = device.IpcSetOperation(buffered.Reader) + err := device.IpcSetOperation(buffered.Reader) + if err != nil { + status, _ = err.(*IPCError) + if status == nil { + device.log.Error.Println("Invalid UAPI error:", err) + status = &IPCError{1} + } + } case "get=1\n": status = device.IpcGetOperation(buffered.Writer)