]> git.ipfire.org Git - thirdparty/wireguard-go.git/commitdiff
conn: harmonize GOOS checks between "linux" and "android"
authorJason A. Donenfeld <Jason@zx2c4.com>
Wed, 18 Oct 2023 19:14:13 +0000 (21:14 +0200)
committerJason A. Donenfeld <Jason@zx2c4.com>
Wed, 18 Oct 2023 19:14:13 +0000 (21:14 +0200)
Otherwise GRO gets enabled on Android, but the conn doesn't use it,
resulting in bundled packets being discarded.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
conn/bind_std.go

index 9886c91f99a38358a554182a0f5ee38ee2ab4015..5a00f34b36966d3589cb1bae563504f2c657250b 100644 (file)
@@ -175,7 +175,7 @@ again:
        var fns []ReceiveFunc
        if v4conn != nil {
                s.ipv4TxOffload, s.ipv4RxOffload = supportsUDPOffload(v4conn)
-               if runtime.GOOS == "linux" {
+               if runtime.GOOS == "linux" || runtime.GOOS == "android" {
                        v4pc = ipv4.NewPacketConn(v4conn)
                        s.ipv4PC = v4pc
                }
@@ -184,7 +184,7 @@ again:
        }
        if v6conn != nil {
                s.ipv6TxOffload, s.ipv6RxOffload = supportsUDPOffload(v6conn)
-               if runtime.GOOS == "linux" {
+               if runtime.GOOS == "linux" || runtime.GOOS == "android" {
                        v6pc = ipv6.NewPacketConn(v6conn)
                        s.ipv6PC = v6pc
                }
@@ -237,7 +237,7 @@ func (s *StdNetBind) receiveIP(
        }
        defer s.putMessages(msgs)
        var numMsgs int
-       if runtime.GOOS == "linux" {
+       if runtime.GOOS == "linux" || runtime.GOOS == "android" {
                if rxOffload {
                        readAt := len(*msgs) - (IdealBatchSize / udpSegmentMaxDatagrams)
                        numMsgs, err = br.ReadBatch((*msgs)[readAt:], 0)
@@ -291,7 +291,7 @@ func (s *StdNetBind) makeReceiveIPv6(pc *ipv6.PacketConn, conn *net.UDPConn, rxO
 // TODO: When all Binds handle IdealBatchSize, remove this dynamic function and
 // rename the IdealBatchSize constant to BatchSize.
 func (s *StdNetBind) BatchSize() int {
-       if runtime.GOOS == "linux" {
+       if runtime.GOOS == "linux" || runtime.GOOS == "android" {
                return IdealBatchSize
        }
        return 1
@@ -414,7 +414,7 @@ func (s *StdNetBind) send(conn *net.UDPConn, pc batchWriter, msgs []ipv6.Message
                err   error
                start int
        )
-       if runtime.GOOS == "linux" {
+       if runtime.GOOS == "linux" || runtime.GOOS == "android" {
                for {
                        n, err = pc.WriteBatch(msgs[start:], 0)
                        if err != nil || n == len(msgs[start:]) {