diff --git a/common/moduleutils/Android.bp b/common/moduleutils/Android.bp
index 81475d2..f32f8d8 100644
--- a/common/moduleutils/Android.bp
+++ b/common/moduleutils/Android.bp
@@ -23,6 +23,7 @@
         "src/android/net/util/SharedLog.java",
         "src/android/net/shared/InitialConfiguration.java",
         "src/android/net/shared/IpConfigurationParcelableUtil.java",
+        "src/android/net/shared/Layer2Information.java",
         "src/android/net/shared/LinkPropertiesParcelableUtil.java",
         "src/android/net/shared/ParcelableUtil.java",
         "src/android/net/shared/NetdUtils.java",
diff --git a/common/moduleutils/src/android/net/shared/Layer2Information.java b/common/moduleutils/src/android/net/shared/Layer2Information.java
new file mode 100644
index 0000000..77956a7
--- /dev/null
+++ b/common/moduleutils/src/android/net/shared/Layer2Information.java
@@ -0,0 +1,81 @@
+/*
+ * 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 permissions and
+ * limitations under the License.
+ */
+
+package android.net.shared;
+
+import android.net.Layer2InformationParcelable;
+import android.net.MacAddress;
+
+import java.util.Objects;
+
+/** @hide */
+public class Layer2Information {
+    private final String mL2Key;
+    private final String mGroupHint;
+    private final MacAddress mBssid;
+
+    /**
+     * Create a Layer2Information with the specified configuration.
+     */
+    public Layer2Information(String l2Key, String groupHint, MacAddress bssid) {
+        mL2Key = l2Key;
+        mGroupHint = groupHint;
+        mBssid = bssid;
+    }
+
+    @Override
+    public String toString() {
+        StringBuffer str = new StringBuffer();
+        str.append("L2Key: ").append(mL2Key);
+        str.append(", GroupHint: ").append(mGroupHint);
+        str.append(", bssid: ").append(mBssid.toString());
+        return str.toString();
+    }
+
+    /**
+     * Convert Layer2 Information to a {@link Layer2InformationParcelable}.
+     */
+    public Layer2InformationParcelable toStableParcelable() {
+        final Layer2InformationParcelable p = new Layer2InformationParcelable();
+        p.l2Key = mL2Key;
+        p.groupHint = mGroupHint;
+        p.bssid = mBssid;
+        return p;
+    }
+
+    /**
+     * Create an instance of {@link Layer2Information} based on the contents of the specified
+     * {@link Layer2InformationParcelable}.
+     */
+    public Layer2Information fromStableParcelable(Layer2InformationParcelable p) {
+        if (p == null) return null;
+        return new Layer2Information(p.l2Key, p.groupHint, p.bssid);
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (!(obj instanceof Layer2Information)) return false;
+        final Layer2Information other = (Layer2Information) obj;
+        return Objects.equals(mL2Key, other.mL2Key)
+                && Objects.equals(mGroupHint, other.mGroupHint)
+                && Objects.equals(mBssid, other.mBssid);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(mL2Key, mGroupHint, mBssid);
+    }
+}
diff --git a/common/networkstackclient/Android.bp b/common/networkstackclient/Android.bp
index f5b7974..ac8fda7 100644
--- a/common/networkstackclient/Android.bp
+++ b/common/networkstackclient/Android.bp
@@ -59,6 +59,7 @@
         "src/android/net/INetworkStackStatusCallback.aidl",
         "src/android/net/InitialConfigurationParcelable.aidl",
         "src/android/net/InformationElementParcelable.aidl",
+        "src/android/net/Layer2InformationParcelable.aidl",
         "src/android/net/Layer2PacketParcelable.aidl",
         "src/android/net/NattKeepalivePacketDataParcelable.aidl",
         "src/android/net/PrivateDnsConfigParcel.aidl",
diff --git a/common/networkstackclient/aidl_api/networkstack-aidl-interfaces/current/android/net/Layer2InformationParcelable.aidl b/common/networkstackclient/aidl_api/networkstack-aidl-interfaces/current/android/net/Layer2InformationParcelable.aidl
new file mode 100644
index 0000000..c733188
--- /dev/null
+++ b/common/networkstackclient/aidl_api/networkstack-aidl-interfaces/current/android/net/Layer2InformationParcelable.aidl
@@ -0,0 +1,23 @@
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL interface (or parcelable). Do not try to
+// edit this file. It looks like you are doing that because you have modified
+// an AIDL interface in a backward-incompatible way, e.g., deleting a function
+// from an interface or a field from a parcelable and it broke the build. That
+// breakage is intended.
+//
+// You must not make a backward incompatible changes to the AIDL files 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.net;
+parcelable Layer2InformationParcelable {
+  String l2Key;
+  String groupHint;
+  android.net.MacAddress bssid;
+}
diff --git a/common/networkstackclient/aidl_api/networkstack-aidl-interfaces/current/android/net/ip/IIpClient.aidl b/common/networkstackclient/aidl_api/networkstack-aidl-interfaces/current/android/net/ip/IIpClient.aidl
index 250f855..6c2d86b 100644
--- a/common/networkstackclient/aidl_api/networkstack-aidl-interfaces/current/android/net/ip/IIpClient.aidl
+++ b/common/networkstackclient/aidl_api/networkstack-aidl-interfaces/current/android/net/ip/IIpClient.aidl
@@ -32,4 +32,5 @@
   oneway void setL2KeyAndGroupHint(in String l2Key, in String groupHint);
   oneway void addNattKeepalivePacketFilter(int slot, in android.net.NattKeepalivePacketDataParcelable pkt);
   oneway void notifyPreconnectionComplete(boolean success);
+  oneway void updateLayer2Information(in android.net.Layer2InformationParcelable info);
 }
diff --git a/common/networkstackclient/src/android/net/Layer2InformationParcelable.aidl b/common/networkstackclient/src/android/net/Layer2InformationParcelable.aidl
new file mode 100644
index 0000000..496d291
--- /dev/null
+++ b/common/networkstackclient/src/android/net/Layer2InformationParcelable.aidl
@@ -0,0 +1,25 @@
+/*
+ * 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 permissions and
+ * limitations under the License.
+ */
+
+package android.net;
+
+import android.net.MacAddress;
+
+parcelable Layer2InformationParcelable {
+    String l2Key;
+    String groupHint;
+    MacAddress bssid;
+}
diff --git a/common/networkstackclient/src/android/net/ip/IIpClient.aidl b/common/networkstackclient/src/android/net/ip/IIpClient.aidl
index ad94aee..0027949 100644
--- a/common/networkstackclient/src/android/net/ip/IIpClient.aidl
+++ b/common/networkstackclient/src/android/net/ip/IIpClient.aidl
@@ -15,6 +15,7 @@
  */
 package android.net.ip;
 
+import android.net.Layer2InformationParcelable;
 import android.net.ProxyInfo;
 import android.net.ProvisioningConfigurationParcelable;
 import android.net.NattKeepalivePacketDataParcelable;
@@ -36,4 +37,5 @@
     void setL2KeyAndGroupHint(in String l2Key, in String groupHint);
     void addNattKeepalivePacketFilter(int slot, in NattKeepalivePacketDataParcelable pkt);
     void notifyPreconnectionComplete(boolean success);
+    void updateLayer2Information(in Layer2InformationParcelable info);
 }
diff --git a/src/android/net/ip/IpClient.java b/src/android/net/ip/IpClient.java
index ebb31c6..bb5565d 100644
--- a/src/android/net/ip/IpClient.java
+++ b/src/android/net/ip/IpClient.java
@@ -28,6 +28,7 @@
 import android.net.DhcpResults;
 import android.net.INetd;
 import android.net.IpPrefix;
+import android.net.Layer2InformationParcelable;
 import android.net.Layer2PacketParcelable;
 import android.net.LinkAddress;
 import android.net.LinkProperties;
@@ -705,6 +706,12 @@
         }
 
         @Override
+        public void updateLayer2Information(Layer2InformationParcelable info) {
+            enforceNetworkStackCallingPermission();
+            IpClient.this.updateLayer2Information(info);
+        }
+
+        @Override
         public int getInterfaceVersion() {
             return this.VERSION;
         }
@@ -878,6 +885,13 @@
     }
 
     /**
+     * Update the network bssid, L2Key and GroupHint layer2 information.
+     */
+    public void updateLayer2Information(@NonNull Layer2InformationParcelable info) {
+        // TODO: add specific implementation.
+    }
+
+    /**
      * Dump logs of this IpClient.
      */
     public void dump(FileDescriptor fd, PrintWriter writer, String[] args) {
