summaryrefslogtreecommitdiff
path: root/src/android/net/dhcp/DhcpServer.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/android/net/dhcp/DhcpServer.java')
-rw-r--r--src/android/net/dhcp/DhcpServer.java19
1 files changed, 17 insertions, 2 deletions
diff --git a/src/android/net/dhcp/DhcpServer.java b/src/android/net/dhcp/DhcpServer.java
index 6aadc04..bcca47a 100644
--- a/src/android/net/dhcp/DhcpServer.java
+++ b/src/android/net/dhcp/DhcpServer.java
@@ -274,10 +274,22 @@ public class DhcpServer extends IDhcpServer.Stub {
*/
@Override
public void start(@Nullable INetworkStackStatusCallback cb) {
+ startWithCallbacks(cb, null);
+ }
+
+ /**
+ * Start listening for and responding to packets, with optional callbacks for lease events.
+ *
+ * <p>It is not legal to call this method more than once; in particular the server cannot be
+ * restarted after being stopped.
+ */
+ @Override
+ public void startWithCallbacks(@Nullable INetworkStackStatusCallback statusCb,
+ @Nullable IDhcpLeaseCallbacks leaseCb) {
mDeps.checkCaller();
mHandlerThread.start();
mHandler = new ServerHandler(mHandlerThread.getLooper());
- sendMessage(CMD_START_DHCP_SERVER, cb);
+ sendMessage(CMD_START_DHCP_SERVER, new Pair<>(statusCb, leaseCb));
}
/**
@@ -344,9 +356,12 @@ 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;
+ cb = obj.first;
+ mLeaseRepo.addLeaseCallbacks(obj.second);
mPacketListener = mDeps.makePacketListener();
mPacketListener.start();
- cb = (INetworkStackStatusCallback) msg.obj;
break;
case CMD_STOP_DHCP_SERVER:
if (mPacketListener != null) {