summaryrefslogtreecommitdiffhomepage
path: root/device
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2020-06-07 01:41:08 -0600
committerJason A. Donenfeld <Jason@zx2c4.com>2020-06-07 01:48:28 -0600
commitc403da6a39c876123c096113d08d0d3019b4a07e (patch)
tree3ac29ee510e5eebb2510dfeb3e771259627c65ff /device
parentd6de6f3ce6c24841d29b563d3283a0fd85e437ac (diff)
conn: unbreak boundif on android
Another thing never tested ever. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'device')
-rw-r--r--device/bindsocketshim.go24
-rw-r--r--device/boundif_android.go44
2 files changed, 24 insertions, 44 deletions
diff --git a/device/bindsocketshim.go b/device/bindsocketshim.go
index 896c7d2..68e1504 100644
--- a/device/bindsocketshim.go
+++ b/device/bindsocketshim.go
@@ -34,3 +34,27 @@ func (device *Device) BindSocketToInterface6(interfaceIndex uint32, blackhole bo
}
return nil
}
+
+// TODO(crawshaw): this method is a compatibility shim. Replace with direct use of conn.
+func (device *Device) PeekLookAtSocketFd4() (fd int, err error) {
+ if device.net.bind == nil {
+ return -1, errors.New("Bind is not yet initialized")
+ }
+
+ if iface, ok := device.net.bind.(conn.PeekLookAtSocketFd); ok {
+ return iface.PeekLookAtSocketFd4()
+ }
+ return -1, errors.New("unimplemented")
+}
+
+// TODO(crawshaw): this method is a compatibility shim. Replace with direct use of conn.
+func (device *Device) PeekLookAtSocketFd6() (fd int, err error) {
+ if device.net.bind == nil {
+ return -1, errors.New("Bind is not yet initialized")
+ }
+
+ if iface, ok := device.net.bind.(conn.PeekLookAtSocketFd); ok {
+ return iface.PeekLookAtSocketFd6()
+ }
+ return -1, errors.New("unimplemented")
+}
diff --git a/device/boundif_android.go b/device/boundif_android.go
deleted file mode 100644
index a4be8de..0000000
--- a/device/boundif_android.go
+++ /dev/null
@@ -1,44 +0,0 @@
-/* SPDX-License-Identifier: MIT
- *
- * Copyright (C) 2017-2020 WireGuard LLC. All Rights Reserved.
- */
-
-package device
-
-import "errors"
-
-func (device *Device) PeekLookAtSocketFd4() (fd int, err error) {
- nb, ok := device.net.bind.(*nativeBind)
- if !ok {
- return 0, errors.New("no socket exists")
- }
- sysconn, err := nb.ipv4.SyscallConn()
- if err != nil {
- return
- }
- err = sysconn.Control(func(f uintptr) {
- fd = int(f)
- })
- if err != nil {
- return
- }
- return
-}
-
-func (device *Device) PeekLookAtSocketFd6() (fd int, err error) {
- nb, ok := device.net.bind.(*nativeBind)
- if !ok {
- return 0, errors.New("no socket exists")
- }
- sysconn, err := nb.ipv6.SyscallConn()
- if err != nil {
- return
- }
- err = sysconn.Control(func(f uintptr) {
- fd = int(f)
- })
- if err != nil {
- return
- }
- return
-}