Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 16ec29b3 authored by Sunil Ravi's avatar Sunil Ravi
Browse files

Wifi: IP Address Allocation in EAPOL-Key Frames

Implementation of Wi-Fi P2P Technical Specification v1.7 - Section  4.2.8
"IP Address Allocation in EAPOL-Key Frames (4-Way Handshake)".

Changes includes,
1. API to configure the IP addresses in supplicant for P2P GO to
provide the IP address to client in EAPOL handshake.
2. Send the received IP address information to framework via
p2p group started event.

Bug: 170056953
Test: Manual - Establish P2P connection & confirmed from sniffer logs
      and logcat logs that IP addresse is allocated via EAPOL exchange.
      Ping works after connection.

Change-Id: I2662fde9ca645aa5e34b21678d1a47cbf26ef3d3
parent b291605b
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -96,4 +96,5 @@ interface ISupplicantP2pIface {
  void findOnSocialChannels(in int timeoutInSec);
  void findOnSpecificFrequency(in int freqInHz, in int timeoutInSec);
  void setVendorElements(in android.hardware.wifi.supplicant.P2pFrameTypeMask frameTypeMask, in byte[] vendorElemBytes);
  void configureEapolIpAddressAllocationParams(in int ipAddressGo, in int ipAddressMask, in int ipAddressStart, in int ipAddressEnd);
}
+40 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2023 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 permissions and
 * limitations under the License.
 */
///////////////////////////////////////////////////////////////////////////////
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
///////////////////////////////////////////////////////////////////////////////

// This file is a snapshot of an AIDL file. Do not edit it manually. There are
// two cases:
// 1). this is a frozen version file - do not edit this in any case.
// 2). this is a 'current' file. If you make a backwards compatible change to
//     the interface (from the latest frozen version), the build system will
//     prompt you to update this file with `m <name>-update-api`.
//
// You must not make a backward incompatible change to any AIDL file built
// with the aidl_interface module type with versions property set. The module
// type is used to build AIDL files in a way that they can be used across
// independently updatable components of the system. If a device is shipped
// with such a backward incompatible change, it has a high risk of breaking
// later when a module using the interface is updated, e.g., Mainline modules.

package android.hardware.wifi.supplicant;
@VintfStability
parcelable P2pClientEapolIpAddressInfo {
  int ipAddressClient;
  int ipAddressMask;
  int ipAddressGo;
}
+2 −0
Original line number Diff line number Diff line
@@ -43,4 +43,6 @@ parcelable P2pGroupStartedEventParams {
  boolean isPersistent;
  byte[] goDeviceAddress;
  byte[] goInterfaceAddress;
  boolean isP2pClientEapolIpAddressInfoPresent;
  android.hardware.wifi.supplicant.P2pClientEapolIpAddressInfo p2pClientIpInfo;
}
+18 −0
Original line number Diff line number Diff line
@@ -827,4 +827,22 @@ interface ISupplicantP2pIface {
     *         |SupplicantStatusCode.FAILURE_IFACE_INVALID|
     */
    void setVendorElements(in P2pFrameTypeMask frameTypeMask, in byte[] vendorElemBytes);

    /**
     * Configure the IP addresses in supplicant for P2P GO to provide the IP address to
     * client in EAPOL handshake. Refer Wi-Fi P2P Technical Specification v1.7 - Section  4.2.8
     * "IP Address Allocation in EAPOL-Key Frames (4-Way Handshake)" for more details.
     * The IP addresses are IPV4 addresses and higher-order address bytes are in the lower-order
     * int bytes (e.g. 1.2.3.4 is represented as 0x04030201)
     *
     * @param ipAddressGo The P2P Group Owner IP address.
     * @param ipAddressMask The P2P Group owner subnet mask.
     * @param ipAddressStart The starting address in the IP address pool.
     * @param ipAddressEnd The ending address in the IP address pool.
     * @throws ServiceSpecificException with one of the following values:
     *         |SupplicantStatusCode.FAILURE_UNKNOWN|,
     *         |SupplicantStatusCode.FAILURE_IFACE_INVALID|
     */
    void configureEapolIpAddressAllocationParams(
            in int ipAddressGo, in int ipAddressMask, in int ipAddressStart, in int ipAddressEnd);
}
+38 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2023 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 permissions and
 * limitations under the License.
 */

package android.hardware.wifi.supplicant;

/**
 * P2P Client IPV4 address allocated via EAPOL exchange.
 * The IP addresses are IPV4 addresses and higher-order address bytes are in the lower-order
 * int bytes (e.g. 1.2.3.4 is represented as 0x04030201)
 */
@VintfStability
parcelable P2pClientEapolIpAddressInfo {
    /**
     * The P2P Client IP address.
     */
    int ipAddressClient;
    /**
     * The subnet that the P2P Group Owner is using.
     */
    int ipAddressMask;
    /**
     * The P2P Group Owner IP address.
     */
    int ipAddressGo;
}
Loading