summaryrefslogtreecommitdiff
path: root/core/java/android/net/InterfaceConfiguration.java
diff options
context:
space:
mode:
authorLuke Huang <huangluke@google.com>2018-08-15 19:22:54 +0800
committerLuke Huang <huangluke@google.com>2018-10-25 16:40:47 +0900
commit14f7544c3e5a33ccaa1ef1f1cbdb3a50aa914e3e (patch)
treed70ae550d3f27bf3ddb8b808bcfcf5dec5e5ca02 /core/java/android/net/InterfaceConfiguration.java
parent6636b0227d60cffe838761df9defa90a874bc44c (diff)
interface-related commands porting
Test: runtest frameworks-net passes Test: manual testing of interface related function works(tethering) Change-Id: Ie1a1ac00c28ef914d62e7d75b0db8c2434c810d2
Diffstat (limited to 'core/java/android/net/InterfaceConfiguration.java')
-rw-r--r--core/java/android/net/InterfaceConfiguration.java42
1 files changed, 40 insertions, 2 deletions
diff --git a/core/java/android/net/InterfaceConfiguration.java b/core/java/android/net/InterfaceConfiguration.java
index b27415566368..62cf7d7ceb25 100644
--- a/core/java/android/net/InterfaceConfiguration.java
+++ b/core/java/android/net/InterfaceConfiguration.java
@@ -19,9 +19,11 @@ package android.net;
import android.annotation.UnsupportedAppUsage;
import android.os.Parcel;
import android.os.Parcelable;
+import android.text.TextUtils;
import com.google.android.collect.Sets;
+import java.net.InetAddress;
import java.util.HashSet;
/**
@@ -34,8 +36,10 @@ public class InterfaceConfiguration implements Parcelable {
private LinkAddress mAddr;
private HashSet<String> mFlags = Sets.newHashSet();
- private static final String FLAG_UP = "up";
- private static final String FLAG_DOWN = "down";
+ private static final String FLAG_UP = INetd.IF_STATE_UP;
+ private static final String FLAG_DOWN = INetd.IF_STATE_DOWN;
+
+ private static final String[] EMPTY_STRING_ARRAY = new String[0];
@Override
public String toString() {
@@ -112,6 +116,40 @@ public class InterfaceConfiguration implements Parcelable {
}
/**
+ * Construct InterfaceConfiguration from InterfaceConfigurationParcel.
+ */
+ public static InterfaceConfiguration fromParcel(InterfaceConfigurationParcel p) {
+ InterfaceConfiguration cfg = new InterfaceConfiguration();
+ cfg.setHardwareAddress(p.hwAddr);
+
+ final InetAddress addr = NetworkUtils.numericToInetAddress(p.ipv4Addr);
+ cfg.setLinkAddress(new LinkAddress(addr, p.prefixLength));
+ for (String flag : p.flags) {
+ cfg.setFlag(flag);
+ }
+
+ return cfg;
+ }
+
+ /**
+ * Convert InterfaceConfiguration to InterfaceConfigurationParcel with given ifname.
+ */
+ public InterfaceConfigurationParcel toParcel(String iface) {
+ InterfaceConfigurationParcel cfgParcel = new InterfaceConfigurationParcel();
+ cfgParcel.ifName = iface;
+ if (!TextUtils.isEmpty(mHwAddr)) {
+ cfgParcel.hwAddr = mHwAddr;
+ } else {
+ cfgParcel.hwAddr = "";
+ }
+ cfgParcel.ipv4Addr = mAddr.getAddress().getHostAddress();
+ cfgParcel.prefixLength = mAddr.getPrefixLength();
+ cfgParcel.flags = mFlags.toArray(EMPTY_STRING_ARRAY);
+
+ return cfgParcel;
+ }
+
+ /**
* This function determines if the interface is up and has a valid IP
* configuration (IP address has a non zero octet).
*