Thomas Vachuska
Committed by Gerrit Code Review

Modified host discovery to suppress discovery of self-assigned IP addresses.

Change-Id: I40e7c20a6f5b76abe9d9481a135581431e8fcd9f
...@@ -289,7 +289,7 @@ public class HostLocationProvider extends AbstractProvider implements HostProvid ...@@ -289,7 +289,7 @@ public class HostLocationProvider extends AbstractProvider implements HostProvid
289 private void updateLocationIP(HostId hid, MacAddress mac, 289 private void updateLocationIP(HostId hid, MacAddress mac,
290 VlanId vlan, HostLocation hloc, 290 VlanId vlan, HostLocation hloc,
291 IpAddress ip) { 291 IpAddress ip) {
292 - HostDescription desc = ip.isZero() ? 292 + HostDescription desc = ip.isZero() || ip.isSelfAssigned() ?
293 new DefaultHostDescription(mac, vlan, hloc) : 293 new DefaultHostDescription(mac, vlan, hloc) :
294 new DefaultHostDescription(mac, vlan, hloc, ip); 294 new DefaultHostDescription(mac, vlan, hloc, ip);
295 try { 295 try {
......
...@@ -294,7 +294,7 @@ public class IpAddress implements Comparable<IpAddress> { ...@@ -294,7 +294,7 @@ public class IpAddress implements Comparable<IpAddress> {
294 /** 294 /**
295 * Check if this IP address is zero. 295 * Check if this IP address is zero.
296 * 296 *
297 - * @return true if this address is zero. 297 + * @return true if this address is zero
298 */ 298 */
299 public boolean isZero() { 299 public boolean isZero() {
300 for (byte b : octets) { 300 for (byte b : octets) {
...@@ -305,6 +305,15 @@ public class IpAddress implements Comparable<IpAddress> { ...@@ -305,6 +305,15 @@ public class IpAddress implements Comparable<IpAddress> {
305 return true; 305 return true;
306 } 306 }
307 307
308 + /**
309 + * Check if this IP address is self-assigned.
310 + *
311 + * @return true if this address is self-assigned
312 + */
313 + public boolean isSelfAssigned() {
314 + return isIp4() && octets[0] == (byte) 169;
315 + }
316 +
308 @Override 317 @Override
309 public int compareTo(IpAddress o) { 318 public int compareTo(IpAddress o) {
310 // Compare first the version 319 // Compare first the version
......
...@@ -758,6 +758,17 @@ public class IpAddressTest { ...@@ -758,6 +758,17 @@ public class IpAddressTest {
758 } 758 }
759 759
760 /** 760 /**
761 + * Tests if address is self-assigned for IPv4.
762 + */
763 + @Test
764 + public void testIsSelfAssignedIpv4() {
765 + IpAddress normalIP = IpAddress.valueOf("10.0.0.1");
766 + IpAddress selfAssignedIP = IpAddress.valueOf("169.1.2.3");
767 + assertFalse(normalIP.isSelfAssigned());
768 + assertTrue(selfAssignedIP.isSelfAssigned());
769 + }
770 +
771 + /**
761 * Tests comparison of {@link IpAddress} for IPv4. 772 * Tests comparison of {@link IpAddress} for IPv4.
762 */ 773 */
763 @Test 774 @Test
......