diff options
author | Remi NGUYEN VAN <reminv@google.com> | 2019-09-02 19:20:54 +0900 |
---|---|---|
committer | Remi NGUYEN VAN <reminv@google.com> | 2020-02-12 10:39:55 +0900 |
commit | dc018dd943f0c11e0b9172dee0db0966871af20d (patch) | |
tree | 964a774fb259941aa3f548a49b80992e268a88cc /common/networkstackclient | |
parent | ee23002c1f0a547ea46fa399d20caf542e68ab57 (diff) |
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
Diffstat (limited to 'common/networkstackclient')
4 files changed, 72 insertions, 3 deletions
diff --git a/common/networkstackclient/Android.bp b/common/networkstackclient/Android.bp index 31f3384..5a9c707 100644 --- a/common/networkstackclient/Android.bp +++ b/common/networkstackclient/Android.bp @@ -58,7 +58,9 @@ aidl_interface { "src/android/net/PrivateDnsConfigParcel.aidl", "src/android/net/ProvisioningConfigurationParcelable.aidl", "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/IDhcpServer.aidl", "src/android/net/dhcp/IDhcpServerCallbacks.aidl", "src/android/net/ip/IIpClient.aidl", 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. + * + * <p>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<DhcpLeaseParcelable> 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 } |