From b0762eb3db82486cec9bfe31cb45bf7e20716430 Mon Sep 17 00:00:00 2001 From: Remi NGUYEN VAN Date: Tue, 28 Aug 2018 11:06:54 +0900 Subject: Ignore DHCP packet sent from non-68 client port This differs from previous behavior where dnsmasq would reply to port 68 if the client had no configured address (ciaddr empty in request), or send replies to the client port if the request ciaddr matched the assigned lease. Not all DHCP servers preserve this behavior, and there is no good known use-case for it. Not replying to such packets is less error-prone and closer to the standard. Bug: b/109584964 Test: Added test in DhcpServerTest.py passes Change-Id: I88d467336cc4f4e4c9498c3787ec22fdef5e1cdd --- .../java/android/net/dhcp/DhcpPacketListener.java | 24 +++++++----- services/net/java/android/net/dhcp/DhcpServer.java | 15 ++++++-- .../net/java/android/net/dhcp/DhcpServerTest.java | 43 ++++++++++++++-------- 3 files changed, 53 insertions(+), 29 deletions(-) diff --git a/services/net/java/android/net/dhcp/DhcpPacketListener.java b/services/net/java/android/net/dhcp/DhcpPacketListener.java index 498fd93fff59..6f620c5ce30e 100644 --- a/services/net/java/android/net/dhcp/DhcpPacketListener.java +++ b/services/net/java/android/net/dhcp/DhcpPacketListener.java @@ -16,15 +16,14 @@ package android.net.dhcp; +import android.annotation.NonNull; import android.annotation.Nullable; import android.net.util.FdEventsReader; -import android.net.util.PacketReader; import android.os.Handler; import android.system.Os; import java.io.FileDescriptor; import java.net.Inet4Address; -import java.net.InetAddress; import java.net.InetSocketAddress; /** @@ -35,19 +34,20 @@ abstract class DhcpPacketListener extends FdEventsReader