Learn target ip from IPv6 neighbor advertisement message

Change-Id: I3d27f4cd937548e9880bb242033358e57559656c
diff --git a/providers/host/src/main/java/org/onosproject/provider/host/impl/HostLocationProvider.java b/providers/host/src/main/java/org/onosproject/provider/host/impl/HostLocationProvider.java
index 227415e..16a8f24 100644
--- a/providers/host/src/main/java/org/onosproject/provider/host/impl/HostLocationProvider.java
+++ b/providers/host/src/main/java/org/onosproject/provider/host/impl/HostLocationProvider.java
@@ -585,20 +585,27 @@
                 if (pkt != null && pkt instanceof ICMP6) {
                     // Neighbor Discovery Protocol
                     pkt = pkt.getPayload();
-                    // RouterSolicitation, RouterAdvertisement
-                    if (pkt != null && (pkt instanceof RouterAdvertisement ||
-                            pkt instanceof RouterSolicitation)) {
-                        return;
-                    }
-                    if (pkt != null && (pkt instanceof NeighborSolicitation ||
-                            pkt instanceof NeighborAdvertisement)) {
-                        // Duplicate Address Detection
-                        if (ip.isZero()) {
+                    if (pkt != null) {
+                        // RouterSolicitation, RouterAdvertisement
+                        if (pkt instanceof RouterAdvertisement || pkt instanceof RouterSolicitation) {
                             return;
                         }
-                        // NeighborSolicitation, NeighborAdvertisement
-                        createOrUpdateHost(hid, srcMac, vlan, hloc, ip);
-                        return;
+                        if (pkt instanceof NeighborSolicitation || pkt instanceof NeighborAdvertisement) {
+                            // Duplicate Address Detection
+                            if (ip.isZero()) {
+                                return;
+                            }
+                            // NeighborSolicitation, NeighborAdvertisement
+                            createOrUpdateHost(hid, srcMac, vlan, hloc, ip);
+
+                            // Also learn from the target address of NeighborAdvertisement
+                            if (pkt instanceof NeighborAdvertisement) {
+                                NeighborAdvertisement na = (NeighborAdvertisement) pkt;
+                                Ip6Address targetAddr = Ip6Address.valueOf(na.getTargetAddress());
+                                createOrUpdateHost(hid, srcMac, vlan, hloc, targetAddr);
+                            }
+                            return;
+                        }
                     }
                 }