Merge "Address the comments left in the IPv6 utils change."
diff --git a/staticlibs/device/com/android/net/module/util/structs/EthernetHeader.java b/staticlibs/device/com/android/net/module/util/structs/EthernetHeader.java
index d895cfa..92ef8a7 100644
--- a/staticlibs/device/com/android/net/module/util/structs/EthernetHeader.java
+++ b/staticlibs/device/com/android/net/module/util/structs/EthernetHeader.java
@@ -40,7 +40,7 @@
  * +-                             -+
  * |            Address            |
  * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * |1 0 0 0 0 1 1 0 1 1 0 1 1 1 0 1|
+ * |            EtherType          |
  * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  */
 public class EthernetHeader extends Struct {
diff --git a/staticlibs/device/com/android/net/module/util/structs/Ipv6Header.java b/staticlibs/device/com/android/net/module/util/structs/Ipv6Header.java
index 3ad8157..a14e064 100644
--- a/staticlibs/device/com/android/net/module/util/structs/Ipv6Header.java
+++ b/staticlibs/device/com/android/net/module/util/structs/Ipv6Header.java
@@ -53,7 +53,7 @@
     @Field(order = 0, type = Type.S32)
     public int vtf;
     @Field(order = 1, type = Type.U16)
-    public int length;
+    public int payloadLength;
     @Field(order = 2, type = Type.S8)
     public byte nextHeader;
     @Field(order = 3, type = Type.U8)
@@ -63,10 +63,10 @@
     @Field(order = 5, type = Type.Ipv6Address)
     public Inet6Address dstIp;
 
-    public Ipv6Header(final int vtf, final int length, final byte nextHeader, final short hopLimit,
-            final Inet6Address srcIp, final Inet6Address dstIp) {
+    public Ipv6Header(final int vtf, final int payloadLength, final byte nextHeader,
+            final short hopLimit, final Inet6Address srcIp, final Inet6Address dstIp) {
         this.vtf = vtf;
-        this.length = length;
+        this.payloadLength = payloadLength;
         this.nextHeader = nextHeader;
         this.hopLimit = hopLimit;
         this.srcIp = srcIp;
diff --git a/staticlibs/device/com/android/net/module/util/structs/LlaOption.java b/staticlibs/device/com/android/net/module/util/structs/LlaOption.java
index 2cdeefb..fbaccab 100644
--- a/staticlibs/device/com/android/net/module/util/structs/LlaOption.java
+++ b/staticlibs/device/com/android/net/module/util/structs/LlaOption.java
@@ -36,14 +36,16 @@
  */
 public class LlaOption extends Struct {
     @Field(order = 0, type = Type.S8)
-    // 1 for Source Link-layer Address; 2 for Target Link-layer Address.
     public final byte type;
     @Field(order = 1, type = Type.S8)
     public final byte length; // Length in 8-byte units
     @Field(order = 2, type = Type.EUI48)
+    // Link layer address length and format varies on different link layers, which is not
+    // guaranteed to be a 6-byte MAC address. However, Struct only supports 6-byte MAC
+    // addresses type(EUI-48) for now.
     public final MacAddress linkLayerAddress;
 
-    public LlaOption(final byte type, final byte length, final MacAddress linkLayerAddress) {
+    LlaOption(final byte type, final byte length, final MacAddress linkLayerAddress) {
         this.type = type;
         this.length = length;
         this.linkLayerAddress = linkLayerAddress;
@@ -54,6 +56,6 @@
      */
     public static ByteBuffer build(final byte type, final MacAddress linkLayerAddress) {
         final LlaOption option = new LlaOption(type, (byte) 1 /* option len */, linkLayerAddress);
-        return ByteBuffer.wrap(option.writeToBytes(ByteOrder.nativeOrder()));
+        return ByteBuffer.wrap(option.writeToBytes(ByteOrder.BIG_ENDIAN));
     }
 }
diff --git a/staticlibs/device/com/android/net/module/util/structs/MtuOption.java b/staticlibs/device/com/android/net/module/util/structs/MtuOption.java
index a35b576..34bc21c 100644
--- a/staticlibs/device/com/android/net/module/util/structs/MtuOption.java
+++ b/staticlibs/device/com/android/net/module/util/structs/MtuOption.java
@@ -46,7 +46,7 @@
     @Field(order = 3, type = Type.U32)
     public final long mtu;
 
-    public MtuOption(final byte type, final byte length, final short reserved,
+    MtuOption(final byte type, final byte length, final short reserved,
             final long mtu) {
         this.type = type;
         this.length = length;
@@ -60,6 +60,6 @@
     public static ByteBuffer build(final long mtu) {
         final MtuOption option = new MtuOption((byte) ICMPV6_ND_OPTION_MTU,
                 (byte) 1 /* option len */, (short) 0 /* reserved */, mtu);
-        return ByteBuffer.wrap(option.writeToBytes(ByteOrder.nativeOrder()));
+        return ByteBuffer.wrap(option.writeToBytes(ByteOrder.BIG_ENDIAN));
     }
 }
diff --git a/staticlibs/device/com/android/net/module/util/structs/NaHeader.java b/staticlibs/device/com/android/net/module/util/structs/NaHeader.java
index 8101b06..571d67b 100644
--- a/staticlibs/device/com/android/net/module/util/structs/NaHeader.java
+++ b/staticlibs/device/com/android/net/module/util/structs/NaHeader.java
@@ -23,7 +23,7 @@
 import java.net.Inet6Address;
 
 /**
- * ICMPv6 Neighbor Advertisement header, follow [Icmpv6Header], as per
+ * ICMPv6 Neighbor Advertisement header, follow {@link Icmpv6Header}, as per
  * https://tools.ietf.org/html/rfc4861. This does not contain any option.
  *
  * 0                   1                   2                   3
diff --git a/staticlibs/device/com/android/net/module/util/structs/PrefixInformationOption.java b/staticlibs/device/com/android/net/module/util/structs/PrefixInformationOption.java
index 7dc0192..1bdee29 100644
--- a/staticlibs/device/com/android/net/module/util/structs/PrefixInformationOption.java
+++ b/staticlibs/device/com/android/net/module/util/structs/PrefixInformationOption.java
@@ -70,7 +70,7 @@
     @Field(order = 7, type = Type.ByteArray, arraysize = 16)
     public final byte[] prefix;
 
-    public PrefixInformationOption(final byte type, final byte length, final byte prefixLen,
+    PrefixInformationOption(final byte type, final byte length, final byte prefixLen,
             final byte flags, final long validLifetime, final long preferredLifetime,
             final int reserved, @NonNull final byte[] prefix) {
         this.type = type;
@@ -92,6 +92,6 @@
                 (byte) ICMPV6_ND_OPTION_PIO, (byte) 4 /* option len */,
                 (byte) prefix.getPrefixLength(), flags, validLifetime, preferredLifetime,
                 (int) 0, prefix.getRawAddress());
-        return ByteBuffer.wrap(option.writeToBytes(ByteOrder.nativeOrder()));
+        return ByteBuffer.wrap(option.writeToBytes(ByteOrder.BIG_ENDIAN));
     }
 }
diff --git a/staticlibs/device/com/android/net/module/util/structs/RdnssOption.java b/staticlibs/device/com/android/net/module/util/structs/RdnssOption.java
index de55e66..b7c2b0c 100644
--- a/staticlibs/device/com/android/net/module/util/structs/RdnssOption.java
+++ b/staticlibs/device/com/android/net/module/util/structs/RdnssOption.java
@@ -53,8 +53,7 @@
     @Field(order = 3, type = Type.U32)
     public final long lifetime;
 
-    public RdnssOption(final byte type, final byte length, final short reserved,
-            final long lifetime) {
+    RdnssOption(final byte type, final byte length, final short reserved, final long lifetime) {
         this.type = type;
         this.length = length;
         this.reserved = reserved;
@@ -79,6 +78,8 @@
 
     /**
      * Build a RDNSS option from the required specified String parameters.
+     *
+     * @throws IllegalArgumentException if {@code servers} does not contain only numeric addresses.
      */
     public static ByteBuffer build(final long lifetime, final String... servers) {
         final Inet6Address[] serverArray = new Inet6Address[servers.length];