Ip4Address: Update Self Assigned IP from 169.x.y.z to 169.254.x.y
 Update the prefix for self assigned IPs, so we can support more IPs when using HostLocationProvider.

 Dynamic Configuration of IPv4 Link-Local Addresses https://tools.ietf.org/html/rfc3927

Change-Id: I29931ee45f01a4c9d89784884ef27adb376f5efa
diff --git a/utils/misc/src/main/java/org/onlab/packet/IpAddress.java b/utils/misc/src/main/java/org/onlab/packet/IpAddress.java
index f208fe6..4f4701a 100644
--- a/utils/misc/src/main/java/org/onlab/packet/IpAddress.java
+++ b/utils/misc/src/main/java/org/onlab/packet/IpAddress.java
@@ -335,7 +335,7 @@
      * @return true if this address is self-assigned
      */
     public boolean isSelfAssigned() {
-        return isIp4() && octets[0] == (byte) 169;
+        return isIp4() && octets[0] == (byte) 169 && octets[1] == (byte) 254;
     }
 
     /**
diff --git a/utils/misc/src/test/java/org/onlab/packet/IpAddressTest.java b/utils/misc/src/test/java/org/onlab/packet/IpAddressTest.java
index f96f5b4..c063f7a 100644
--- a/utils/misc/src/test/java/org/onlab/packet/IpAddressTest.java
+++ b/utils/misc/src/test/java/org/onlab/packet/IpAddressTest.java
@@ -763,7 +763,7 @@
     @Test
     public void testIsSelfAssignedIpv4() {
         IpAddress normalIP = IpAddress.valueOf("10.0.0.1");
-        IpAddress selfAssignedIP = IpAddress.valueOf("169.1.2.3");
+        IpAddress selfAssignedIP = IpAddress.valueOf("169.254.2.3");
         assertFalse(normalIP.isSelfAssigned());
         assertTrue(selfAssignedIP.isSelfAssigned());
     }