diff options
-rw-r--r-- | common/networkstackclient/Android.bp | 2 | ||||
-rw-r--r-- | common/networkstackclient/aidl_api/networkstack-aidl-interfaces/current/android/net/dhcp/IDhcpEventCallbacks.aidl (renamed from common/networkstackclient/aidl_api/networkstack-aidl-interfaces/current/android/net/dhcp/IDhcpLeaseCallbacks.aidl) | 3 | ||||
-rw-r--r-- | common/networkstackclient/aidl_api/networkstack-aidl-interfaces/current/android/net/dhcp/IDhcpServer.aidl | 2 | ||||
-rw-r--r-- | common/networkstackclient/src/android/net/dhcp/IDhcpEventCallbacks.aidl (renamed from common/networkstackclient/src/android/net/dhcp/IDhcpLeaseCallbacks.aidl) | 16 | ||||
-rw-r--r-- | common/networkstackclient/src/android/net/dhcp/IDhcpServer.aidl | 4 | ||||
-rw-r--r-- | src/android/net/dhcp/DhcpLeaseRepository.java | 12 | ||||
-rw-r--r-- | src/android/net/dhcp/DhcpServer.java | 8 | ||||
-rw-r--r-- | tests/unit/src/android/net/dhcp/DhcpLeaseRepositoryTest.java | 2 | ||||
-rw-r--r-- | tests/unit/src/android/net/dhcp/DhcpServerTest.java | 6 |
9 files changed, 34 insertions, 21 deletions
diff --git a/common/networkstackclient/Android.bp b/common/networkstackclient/Android.bp index 9081af4..49e9688 100644 --- a/common/networkstackclient/Android.bp +++ b/common/networkstackclient/Android.bp @@ -71,7 +71,7 @@ aidl_interface { "src/android/net/TcpKeepalivePacketDataParcelable.aidl", "src/android/net/dhcp/DhcpLeaseParcelable.aidl", "src/android/net/dhcp/DhcpServingParamsParcel.aidl", - "src/android/net/dhcp/IDhcpLeaseCallbacks.aidl", + "src/android/net/dhcp/IDhcpEventCallbacks.aidl", "src/android/net/dhcp/IDhcpServer.aidl", "src/android/net/dhcp/IDhcpServerCallbacks.aidl", "src/android/net/ip/IIpClient.aidl", diff --git a/common/networkstackclient/aidl_api/networkstack-aidl-interfaces/current/android/net/dhcp/IDhcpLeaseCallbacks.aidl b/common/networkstackclient/aidl_api/networkstack-aidl-interfaces/current/android/net/dhcp/IDhcpEventCallbacks.aidl index 673afe4..dfcaf98 100644 --- a/common/networkstackclient/aidl_api/networkstack-aidl-interfaces/current/android/net/dhcp/IDhcpLeaseCallbacks.aidl +++ b/common/networkstackclient/aidl_api/networkstack-aidl-interfaces/current/android/net/dhcp/IDhcpEventCallbacks.aidl @@ -16,6 +16,7 @@ // later when a module using the interface is updated, e.g., Mainline modules. package android.net.dhcp; -interface IDhcpLeaseCallbacks { +interface IDhcpEventCallbacks { oneway void onLeasesChanged(in List<android.net.dhcp.DhcpLeaseParcelable> newLeases); + oneway void onNewPrefixRequest(in android.net.IpPrefix currentPrefix); } diff --git a/common/networkstackclient/aidl_api/networkstack-aidl-interfaces/current/android/net/dhcp/IDhcpServer.aidl b/common/networkstackclient/aidl_api/networkstack-aidl-interfaces/current/android/net/dhcp/IDhcpServer.aidl index 3372062..ef936cc 100644 --- a/common/networkstackclient/aidl_api/networkstack-aidl-interfaces/current/android/net/dhcp/IDhcpServer.aidl +++ b/common/networkstackclient/aidl_api/networkstack-aidl-interfaces/current/android/net/dhcp/IDhcpServer.aidl @@ -19,7 +19,7 @@ package android.net.dhcp; /* @hide */ interface IDhcpServer { oneway void start(in android.net.INetworkStackStatusCallback cb) = 0; - oneway void startWithCallbacks(in android.net.INetworkStackStatusCallback statusCb, in android.net.dhcp.IDhcpLeaseCallbacks leaseCb) = 3; + oneway void startWithCallbacks(in android.net.INetworkStackStatusCallback statusCb, in android.net.dhcp.IDhcpEventCallbacks eventCb) = 3; oneway void updateParams(in android.net.dhcp.DhcpServingParamsParcel params, in android.net.INetworkStackStatusCallback cb) = 1; oneway void stop(in android.net.INetworkStackStatusCallback cb) = 2; const int STATUS_UNKNOWN = 0; diff --git a/common/networkstackclient/src/android/net/dhcp/IDhcpLeaseCallbacks.aidl b/common/networkstackclient/src/android/net/dhcp/IDhcpEventCallbacks.aidl index cf2dfa8..155c528 100644 --- a/common/networkstackclient/src/android/net/dhcp/IDhcpLeaseCallbacks.aidl +++ b/common/networkstackclient/src/android/net/dhcp/IDhcpEventCallbacks.aidl @@ -16,9 +16,10 @@ package android.net.dhcp; +import android.net.IpPrefix; import android.net.dhcp.DhcpLeaseParcelable; -oneway interface IDhcpLeaseCallbacks { +oneway interface IDhcpEventCallbacks { /** * Called when a lease is committed or released on the DHCP server. * @@ -27,4 +28,15 @@ oneway interface IDhcpLeaseCallbacks { * @param newLeases The new list of leases tracked by the server. */ void onLeasesChanged(in List<DhcpLeaseParcelable> newLeases); -}
\ No newline at end of file + + /** + * Called when DHCP server receives DHCPDECLINE message and only if a new IPv4 address prefix + * (e.g. a different subnet prefix) is requested. + * + * <p>When this callback is called, IpServer must call IDhcpServer#updateParams with a new + * prefix, as processing of DHCP packets should be paused until the new prefix and route + * configuration on IpServer is completed. + * @param currentPrefix The current prefix parameter serving on DHCP server. + */ + void onNewPrefixRequest(in IpPrefix currentPrefix); +} diff --git a/common/networkstackclient/src/android/net/dhcp/IDhcpServer.aidl b/common/networkstackclient/src/android/net/dhcp/IDhcpServer.aidl index dd93174..973ffb0 100644 --- a/common/networkstackclient/src/android/net/dhcp/IDhcpServer.aidl +++ b/common/networkstackclient/src/android/net/dhcp/IDhcpServer.aidl @@ -18,7 +18,7 @@ package android.net.dhcp; import android.net.INetworkStackStatusCallback; import android.net.dhcp.DhcpServingParamsParcel; -import android.net.dhcp.IDhcpLeaseCallbacks; +import android.net.dhcp.IDhcpEventCallbacks; /** @hide */ oneway interface IDhcpServer { @@ -29,7 +29,7 @@ oneway interface IDhcpServer { void start(in INetworkStackStatusCallback cb) = 0; void startWithCallbacks(in INetworkStackStatusCallback statusCb, - in IDhcpLeaseCallbacks leaseCb) = 3; + in IDhcpEventCallbacks eventCb) = 3; void updateParams(in DhcpServingParamsParcel params, in INetworkStackStatusCallback cb) = 1; void stop(in INetworkStackStatusCallback cb) = 2; diff --git a/src/android/net/dhcp/DhcpLeaseRepository.java b/src/android/net/dhcp/DhcpLeaseRepository.java index 1dc2f7f..d0dc389 100644 --- a/src/android/net/dhcp/DhcpLeaseRepository.java +++ b/src/android/net/dhcp/DhcpLeaseRepository.java @@ -89,7 +89,7 @@ class DhcpLeaseRepository { private long mNextExpirationCheck = EXPIRATION_NEVER; @NonNull - private RemoteCallbackList<IDhcpLeaseCallbacks> mLeaseCallbacks = new RemoteCallbackList<>(); + private RemoteCallbackList<IDhcpEventCallbacks> mEventCallbacks = new RemoteCallbackList<>(); static class DhcpLeaseException extends Exception { DhcpLeaseException(String message) { @@ -381,15 +381,15 @@ class DhcpLeaseRepository { leaseParcelables.add(committedLease.toParcelable()); } - final int cbCount = mLeaseCallbacks.beginBroadcast(); + final int cbCount = mEventCallbacks.beginBroadcast(); for (int i = 0; i < cbCount; i++) { try { - mLeaseCallbacks.getBroadcastItem(i).onLeasesChanged(leaseParcelables); + mEventCallbacks.getBroadcastItem(i).onLeasesChanged(leaseParcelables); } catch (RemoteException e) { mLog.e("Could not send lease callback", e); } } - mLeaseCallbacks.finishBroadcast(); + mEventCallbacks.finishBroadcast(); } public void markLeaseDeclined(@NonNull Inet4Address addr) { @@ -425,9 +425,9 @@ class DhcpLeaseRepository { /** * Add callbacks that will be called on leases update. */ - public void addLeaseCallbacks(@NonNull IDhcpLeaseCallbacks cb) { + public void addLeaseCallbacks(@NonNull IDhcpEventCallbacks cb) { Objects.requireNonNull(cb, "Callbacks must be non-null"); - mLeaseCallbacks.register(cb); + mEventCallbacks.register(cb); } /** diff --git a/src/android/net/dhcp/DhcpServer.java b/src/android/net/dhcp/DhcpServer.java index 9c5b3c6..064aa5d 100644 --- a/src/android/net/dhcp/DhcpServer.java +++ b/src/android/net/dhcp/DhcpServer.java @@ -285,11 +285,11 @@ public class DhcpServer extends IDhcpServer.Stub { */ @Override public void startWithCallbacks(@Nullable INetworkStackStatusCallback statusCb, - @Nullable IDhcpLeaseCallbacks leaseCb) { + @Nullable IDhcpEventCallbacks eventCb) { mDeps.checkCaller(); mHandlerThread.start(); mHandler = new ServerHandler(mHandlerThread.getLooper()); - sendMessage(CMD_START_DHCP_SERVER, new Pair<>(statusCb, leaseCb)); + sendMessage(CMD_START_DHCP_SERVER, new Pair<>(statusCb, eventCb)); } /** @@ -356,8 +356,8 @@ public class DhcpServer extends IDhcpServer.Stub { cb = pair.second; break; case CMD_START_DHCP_SERVER: - final Pair<INetworkStackStatusCallback, IDhcpLeaseCallbacks> obj = - (Pair<INetworkStackStatusCallback, IDhcpLeaseCallbacks>) msg.obj; + final Pair<INetworkStackStatusCallback, IDhcpEventCallbacks> obj = + (Pair<INetworkStackStatusCallback, IDhcpEventCallbacks>) msg.obj; cb = obj.first; if (obj.second != null) { mLeaseRepo.addLeaseCallbacks(obj.second); diff --git a/tests/unit/src/android/net/dhcp/DhcpLeaseRepositoryTest.java b/tests/unit/src/android/net/dhcp/DhcpLeaseRepositoryTest.java index 82f9b50..4cd0e6c 100644 --- a/tests/unit/src/android/net/dhcp/DhcpLeaseRepositoryTest.java +++ b/tests/unit/src/android/net/dhcp/DhcpLeaseRepositoryTest.java @@ -98,7 +98,7 @@ public class DhcpLeaseRepositoryTest { private DhcpLeaseRepository mRepo; @NonNull @Mock - private IDhcpLeaseCallbacks mCallbacks; + private IDhcpEventCallbacks mCallbacks; private final Binder mCallbacksBinder = new Binder(); private static Inet4Address parseAddr4(String inet4Addr) { diff --git a/tests/unit/src/android/net/dhcp/DhcpServerTest.java b/tests/unit/src/android/net/dhcp/DhcpServerTest.java index a278a88..86f8a25 100644 --- a/tests/unit/src/android/net/dhcp/DhcpServerTest.java +++ b/tests/unit/src/android/net/dhcp/DhcpServerTest.java @@ -119,7 +119,7 @@ public class DhcpServerTest { @NonNull @Mock private DhcpPacketListener mPacketListener; @NonNull @Mock - private IDhcpLeaseCallbacks mLeaseCallbacks; + private IDhcpEventCallbacks mEventCallbacks; @NonNull @Captor private ArgumentCaptor<ByteBuffer> mSentPacketCaptor; @@ -207,9 +207,9 @@ public class DhcpServerTest { @Test public void testStartWithCallbacks() throws Exception { - mServer.startWithCallbacks(mAssertSuccessCallback, mLeaseCallbacks); + mServer.startWithCallbacks(mAssertSuccessCallback, mEventCallbacks); mLooper.processAllMessages(); - verify(mRepository).addLeaseCallbacks(eq(mLeaseCallbacks)); + verify(mRepository).addLeaseCallbacks(eq(mEventCallbacks)); } @Test |