From 03a10fd14de94618392bbaec764fd3a905f7532f Mon Sep 17 00:00:00 2001 From: Chuwei He Date: Tue, 4 Feb 2025 16:51:10 +0900 Subject: [PATCH] Use NLM_F_REQUEST_ACK in createGetLinkMessage() This rtnl message is used with sendOneShotKernelMessage() which expects that kernel returns an ACK. We need to set NLM_F_ACK explicitly for that. Bug: 379021505 Test: Manually run and no more exception with EAGAIN. Change-Id: Iba21fedf60f5eca63eceee9362e252952bb805c1 --- .../android/net/module/util/netlink/RtNetlinkLinkMessage.java | 3 +-- .../net/module/util/netlink/RtNetlinkLinkMessageTest.java | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/staticlibs/device/com/android/net/module/util/netlink/RtNetlinkLinkMessage.java b/staticlibs/device/com/android/net/module/util/netlink/RtNetlinkLinkMessage.java index c19a124046..5d49fa33d3 100644 --- a/staticlibs/device/com/android/net/module/util/netlink/RtNetlinkLinkMessage.java +++ b/staticlibs/device/com/android/net/module/util/netlink/RtNetlinkLinkMessage.java @@ -22,7 +22,6 @@ import static com.android.net.module.util.NetworkStackConstants.ETHER_ADDR_LEN; import static com.android.net.module.util.netlink.NetlinkConstants.IFF_UP; import static com.android.net.module.util.netlink.NetlinkConstants.RTM_GETLINK; import static com.android.net.module.util.netlink.NetlinkConstants.RTM_NEWLINK; -import static com.android.net.module.util.netlink.StructNlMsgHdr.NLM_F_REQUEST; import static com.android.net.module.util.netlink.StructNlMsgHdr.NLM_F_REQUEST_ACK; import android.net.MacAddress; @@ -307,7 +306,7 @@ public class RtNetlinkLinkMessage extends NetlinkMessage { } return RtNetlinkLinkMessage.build( - new StructNlMsgHdr(0, RTM_GETLINK, NLM_F_REQUEST, sequenceNumber), + new StructNlMsgHdr(0, RTM_GETLINK, NLM_F_REQUEST_ACK, sequenceNumber), new StructIfinfoMsg((short) AF_UNSPEC, (short) 0, interfaceIndex, 0, 0), DEFAULT_MTU, null, null); } diff --git a/staticlibs/tests/unit/src/com/android/net/module/util/netlink/RtNetlinkLinkMessageTest.java b/staticlibs/tests/unit/src/com/android/net/module/util/netlink/RtNetlinkLinkMessageTest.java index 13710b1266..08cab03b36 100644 --- a/staticlibs/tests/unit/src/com/android/net/module/util/netlink/RtNetlinkLinkMessageTest.java +++ b/staticlibs/tests/unit/src/com/android/net/module/util/netlink/RtNetlinkLinkMessageTest.java @@ -290,7 +290,7 @@ public class RtNetlinkLinkMessageTest { @Test public void testCreateGetLinkMessage() { final String expectedHexBytes = - "20000000120001006824000000000000" // struct nlmsghdr + "20000000120005006824000000000000" // struct nlmsghdr + "00000000080000000000000000000000"; // struct ifinfomsg final String interfaceName = "wlan0"; final int interfaceIndex = 8;