Dump IkeSession in VcnGatewayConnection#dump
Bug: 288599290
Test: atest FrameworksVcnTests && atest CtsVcnTestCases
Test: adb shell dumpsys vcn_management
FLAG: NONE mainline API flag not accessible; using try catch
block to gate the behaviors
Change-Id: I6e868b7c51d32754be53944957c79ee2413a2d14
diff --git a/services/core/java/com/android/server/vcn/Vcn.java b/services/core/java/com/android/server/vcn/Vcn.java
index 37f0450..5a5f7ef 100644
--- a/services/core/java/com/android/server/vcn/Vcn.java
+++ b/services/core/java/com/android/server/vcn/Vcn.java
@@ -626,8 +626,12 @@
* Dumps the state of this Vcn for logging and debugging purposes.
*
* <p>PII and credentials MUST NEVER be dumped here.
+ *
+ * <p>This method is not thread safe and MUST run on the VCN thread.
*/
public void dump(IndentingPrintWriter pw) {
+ mVcnContext.ensureRunningOnLooperThread();
+
pw.println("Vcn (" + mSubscriptionGroup + "):");
pw.increaseIndent();
diff --git a/services/core/java/com/android/server/vcn/VcnGatewayConnection.java b/services/core/java/com/android/server/vcn/VcnGatewayConnection.java
index 3094b18..8d378a0 100644
--- a/services/core/java/com/android/server/vcn/VcnGatewayConnection.java
+++ b/services/core/java/com/android/server/vcn/VcnGatewayConnection.java
@@ -2580,8 +2580,12 @@
* Dumps the state of this VcnGatewayConnection for logging and debugging purposes.
*
* <p>PII and credentials MUST NEVER be dumped here.
+ *
+ * <p>This method is not thread safe and MUST run on the VCN thread.
*/
public void dump(IndentingPrintWriter pw) {
+ mVcnContext.ensureRunningOnLooperThread();
+
pw.println("VcnGatewayConnection (" + mConnectionConfig.getGatewayConnectionName() + "):");
pw.increaseIndent();
@@ -2602,6 +2606,19 @@
mUnderlyingNetworkController.dump(pw);
pw.println();
+ if (mIkeSession == null) {
+ pw.println("mIkeSession: null");
+ } else {
+ pw.println("mIkeSession:");
+
+ // Add a try catch block in case IkeSession#dump is not thread-safe
+ try {
+ mIkeSession.dump(pw);
+ } catch (Exception e) {
+ Slog.wtf(TAG, "Failed to dump IkeSession: " + e);
+ }
+ }
+
pw.decreaseIndent();
}
@@ -2905,6 +2922,11 @@
public void setNetwork(@NonNull Network network) {
mImpl.setNetwork(network);
}
+
+ /** Dumps the state of the IkeSession */
+ public void dump(@NonNull IndentingPrintWriter pw) {
+ mImpl.dump(pw);
+ }
}
/** Proxy Implementation of WakeLock, used for testing. */