Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0c5e7400 authored by Remi NGUYEN VAN's avatar Remi NGUYEN VAN
Browse files

Fix sll_protocol in DhcpClient packet socket

The broadcast socket address was created with a deprecated API that does
not set sll_protocol. This causes packets to be filtered incorrectly in
packet capture, typically with tcpdump.

This change only affects device with API > Q, since Q does not have the
proper API to set the protocol.

Also includes fixing the build path that was referencing apishim/current
(which does not exist) instead of apishim/30 (the correct directory).
SocketUtilsShim can be used on the system_current target with that fix.

See change: I07887b82e0e32aadb0cbb9f930f2b2fa3e277ca9

Bug: 133196453
Test: manual; on AOSP with the new build, packet capture has the right
      protocol. When installed on a Q release build, behavior is
      unchanged.

Change-Id: Iaafd0b3935473b1cfab61b49b2f107e71e01de2d
parent dfc4f7c2
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -59,7 +59,7 @@ filegroup {
    srcs: [
        "apishim/common/**/*.java",
        "apishim/29/**/*.java",
        "apishim/current/**/*.java",
        "apishim/30/**/*.java",
        ":net-module-utils-srcs",
    ],
}
+1 −2
Original line number Diff line number Diff line
@@ -44,7 +44,6 @@ public class SocketUtilsShimImpl
    @Override
    public SocketAddress makePacketSocketAddress(
            int protocol, int ifIndex, @NonNull byte[] hwAddr) {
        // TODO: use new API (which takes protocol, ifIndex, hwAddr) once implemented
        return SocketUtils.makePacketSocketAddress(ifIndex, hwAddr);
        return SocketUtils.makePacketSocketAddress(protocol, ifIndex, hwAddr);
    }
}
+3 −1
Original line number Diff line number Diff line
@@ -82,6 +82,7 @@ import com.android.internal.util.StateMachine;
import com.android.internal.util.TrafficStatsConstants;
import com.android.internal.util.WakeupMessage;
import com.android.networkstack.R;
import com.android.networkstack.apishim.SocketUtilsShimImpl;

import java.io.FileDescriptor;
import java.io.IOException;
@@ -389,7 +390,8 @@ public class DhcpClient extends StateMachine {
        }

        mHwAddr = mIface.macAddr.toByteArray();
        mInterfaceBroadcastAddr = makePacketSocketAddress(mIface.index, DhcpPacket.ETHER_BROADCAST);
        mInterfaceBroadcastAddr = SocketUtilsShimImpl.newInstance().makePacketSocketAddress(
                ETH_P_IP, mIface.index, DhcpPacket.ETHER_BROADCAST);
        return true;
    }