From dc018dd943f0c11e0b9172dee0db0966871af20d Mon Sep 17 00:00:00 2001 From: Remi NGUYEN VAN Date: Mon, 2 Sep 2019 19:20:54 +0900 Subject: Add DhcpLeaseCallbacks The callbacks will be used by Tethering to provide callbacks when DHCP leases are updated. The current design only supports one client as Tethering may want to send callbacks to multiple callers, but DhcpServer is only owned by Tethering. Bug: 135411507 Test: atest NetworkStackTests Change-Id: I1e44221d6fbd1b1f2d0d0057a29c7445af1cdbcf --- .../src/android/net/dhcp/DhcpLeaseParcelable.aidl | 32 ++++++++++++++++++++++ .../src/android/net/dhcp/IDhcpLeaseCallbacks.aidl | 30 ++++++++++++++++++++ .../src/android/net/dhcp/IDhcpServer.aidl | 11 ++++++-- 3 files changed, 70 insertions(+), 3 deletions(-) create mode 100644 common/networkstackclient/src/android/net/dhcp/DhcpLeaseParcelable.aidl create mode 100644 common/networkstackclient/src/android/net/dhcp/IDhcpLeaseCallbacks.aidl (limited to 'common/networkstackclient/src') diff --git a/common/networkstackclient/src/android/net/dhcp/DhcpLeaseParcelable.aidl b/common/networkstackclient/src/android/net/dhcp/DhcpLeaseParcelable.aidl new file mode 100644 index 0000000..ba3390d --- /dev/null +++ b/common/networkstackclient/src/android/net/dhcp/DhcpLeaseParcelable.aidl @@ -0,0 +1,32 @@ +/** + * Copyright (c) 2020, The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing perNmissions and + * limitations under the License. + */ + +package android.net.dhcp; + +parcelable DhcpLeaseParcelable { + // Client ID of the lease; may be null. + byte[] clientId; + // MAC address provided by the client. + byte[] hwAddr; + // IPv4 address of the lease, in network byte order. + int netAddr; + // Prefix length of the lease (0-32) + int prefixLength; + // Expiration time of the lease, to compare with SystemClock.elapsedRealtime(). + long expTime; + // Hostname provided by the client, if any, or null. + String hostname; +} \ No newline at end of file diff --git a/common/networkstackclient/src/android/net/dhcp/IDhcpLeaseCallbacks.aidl b/common/networkstackclient/src/android/net/dhcp/IDhcpLeaseCallbacks.aidl new file mode 100644 index 0000000..cf2dfa8 --- /dev/null +++ b/common/networkstackclient/src/android/net/dhcp/IDhcpLeaseCallbacks.aidl @@ -0,0 +1,30 @@ +/** + * Copyright (c) 2020, The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing perNmissions and + * limitations under the License. + */ + +package android.net.dhcp; + +import android.net.dhcp.DhcpLeaseParcelable; + +oneway interface IDhcpLeaseCallbacks { + /** + * Called when a lease is committed or released on the DHCP server. + * + *

This only reports lease changes after assigning a lease, or after releasing a lease + * following a DHCPRELEASE: this callback will not be fired when a lease just expires. + * @param newLeases The new list of leases tracked by the server. + */ + void onLeasesChanged(in List newLeases); +} \ No newline at end of file diff --git a/common/networkstackclient/src/android/net/dhcp/IDhcpServer.aidl b/common/networkstackclient/src/android/net/dhcp/IDhcpServer.aidl index 559433b..dd93174 100644 --- a/common/networkstackclient/src/android/net/dhcp/IDhcpServer.aidl +++ b/common/networkstackclient/src/android/net/dhcp/IDhcpServer.aidl @@ -18,6 +18,7 @@ package android.net.dhcp; import android.net.INetworkStackStatusCallback; import android.net.dhcp.DhcpServingParamsParcel; +import android.net.dhcp.IDhcpLeaseCallbacks; /** @hide */ oneway interface IDhcpServer { @@ -26,7 +27,11 @@ oneway interface IDhcpServer { const int STATUS_INVALID_ARGUMENT = 2; const int STATUS_UNKNOWN_ERROR = 3; - void start(in INetworkStackStatusCallback cb); - void updateParams(in DhcpServingParamsParcel params, in INetworkStackStatusCallback cb); - void stop(in INetworkStackStatusCallback cb); + void start(in INetworkStackStatusCallback cb) = 0; + void startWithCallbacks(in INetworkStackStatusCallback statusCb, + in IDhcpLeaseCallbacks leaseCb) = 3; + void updateParams(in DhcpServingParamsParcel params, in INetworkStackStatusCallback cb) = 1; + void stop(in INetworkStackStatusCallback cb) = 2; + + // Next available ID: 4 } -- cgit v1.2.3