From 65a74f3175855dc41b49332103ada6bb27733291 Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Tue, 22 May 2018 19:40:51 +0200 Subject: Avoid sticky sockets on Android The android policy routing system does insane things. --- conn_default.go | 9 ++++++--- 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 . All Rights Reserved. -- cgit v1.2.3-59-g8ed1b