diff --git a/common/networkstackclient/Android.bp b/common/networkstackclient/Android.bp
index ac8fda7..7b72e72 100644
--- a/common/networkstackclient/Android.bp
+++ b/common/networkstackclient/Android.bp
@@ -68,7 +68,7 @@
         "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
similarity index 91%
rename from common/networkstackclient/aidl_api/networkstack-aidl-interfaces/current/android/net/dhcp/IDhcpLeaseCallbacks.aidl
rename to 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 @@
 /* @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
similarity index 64%
rename from common/networkstackclient/src/android/net/dhcp/IDhcpLeaseCallbacks.aidl
rename to 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 @@
      * @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 @@
 
 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 @@
 
     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 a1f6612..3639a2d 100644
--- a/src/android/net/dhcp/DhcpLeaseRepository.java
+++ b/src/android/net/dhcp/DhcpLeaseRepository.java
@@ -91,7 +91,7 @@
     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) {
@@ -386,15 +386,15 @@
             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) {
@@ -430,9 +430,9 @@
     /**
      * 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 bf22fcb..429b10c 100644
--- a/src/android/net/dhcp/DhcpServer.java
+++ b/src/android/net/dhcp/DhcpServer.java
@@ -285,11 +285,11 @@
      */
     @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));
     }
 
     /**
@@ -357,8 +357,8 @@
                     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 818a48a..3a6a890 100644
--- a/tests/unit/src/android/net/dhcp/DhcpLeaseRepositoryTest.java
+++ b/tests/unit/src/android/net/dhcp/DhcpLeaseRepositoryTest.java
@@ -100,7 +100,7 @@
     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 @@
     @NonNull @Mock
     private DhcpPacketListener mPacketListener;
     @NonNull @Mock
-    private IDhcpLeaseCallbacks mLeaseCallbacks;
+    private IDhcpEventCallbacks mEventCallbacks;
 
     @NonNull @Captor
     private ArgumentCaptor<ByteBuffer> mSentPacketCaptor;
@@ -207,9 +207,9 @@
 
     @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
