diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2018-05-22 19:40:51 +0200 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2018-05-22 23:22:23 +0200 |
commit | 65a74f3175855dc41b49332103ada6bb27733291 (patch) | |
tree | f78cdb95b2cdec5fc9493303ce9b9aabd23e6dc5 | |
parent | b4cef2524f3b2be11f905c4114e2e747a8101160 (diff) |
Avoid sticky sockets on Android
The android policy routing system does insane things.
-rw-r--r-- | conn_default.go | 9 | ||||
-rw-r--r-- | conn_linux.go | 2 |
2 files changed, 8 insertions, 3 deletions
diff --git a/conn_default.go b/conn_default.go index fc52fbf..14ed56c 100644 --- a/conn_default.go +++ b/conn_default.go @@ -1,4 +1,4 @@ -// +build !linux +// +build !linux android /* SPDX-License-Identifier: GPL-2.0 * @@ -143,9 +143,12 @@ func (bind *NativeBind) Send(buff []byte, endpoint Endpoint) error { var fwmarkIoctl int func init() { - if runtime.GOOS == "freebsd" { + switch runtime.GOOS { + case "linux", "android": + fwmarkIoctl = 36 /* unix.SO_MARK */ + case "freebsd": fwmarkIoctl = 0x1015 /* unix.SO_USER_COOKIE */ - } else if runtime.GOOS == "openbsd" { + case "openbsd": fwmarkIoctl = 0x1021 /* unix.SO_RTABLE */ } } diff --git a/conn_linux.go b/conn_linux.go index e5105e3..fa09087 100644 --- a/conn_linux.go +++ b/conn_linux.go @@ -1,3 +1,5 @@ +// +build !android + /* SPDX-License-Identifier: GPL-2.0 * * Copyright (C) 2017-2018 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved. |