Use the correct IPv6 source address when forwarding NDP requests
on external ports.

This fixes ONOS-1021

Also, a minor optimization when forwarding the ARP or NDP request
on external ports.

Change-Id: Ic745e1af1f0a0602751977726a850f48afe84262
diff --git a/core/net/src/main/java/org/onosproject/net/proxyarp/impl/ProxyArpManager.java b/core/net/src/main/java/org/onosproject/net/proxyarp/impl/ProxyArpManager.java
index 5369d2c..c2b5b0c 100644
--- a/core/net/src/main/java/org/onosproject/net/proxyarp/impl/ProxyArpManager.java
+++ b/core/net/src/main/java/org/onosproject/net/proxyarp/impl/ProxyArpManager.java
@@ -176,6 +176,7 @@
                             pa.vlan().equals(vlan)) {
                         matched = true;
                         sendTo(eth, pa.connectPoint());
+                        break;
                     }
                 }
             }
@@ -235,7 +236,7 @@
                 for (InterfaceIpAddress ia : addresses.ipAddresses()) {
                     if (ia.ipAddress().equals(targetAddress)) {
                         Ethernet ndpReply =
-                                buildNdpReply(targetAddress, addresses.mac(), eth);
+                            buildNdpReply(targetAddress, addresses.mac(), eth);
                         sendTo(ndpReply, inPort);
                     }
                 }
@@ -246,7 +247,7 @@
             // it could be a request from an internal host to an external
             // address. Forward it over to the correct ports.
             Ip6Address source =
-                    Ip6Address.valueOf(nsol.getTargetAddress());
+                    Ip6Address.valueOf(ipv6.getSourceAddress());
             Set<PortAddresses> sourceAddresses = findPortsInSubnet(source);
             boolean matched = false;
             for (PortAddresses pa : sourceAddresses) {
@@ -255,6 +256,7 @@
                             pa.vlan().equals(vlan)) {
                         matched = true;
                         sendTo(eth, pa.connectPoint());
+                        break;
                     }
                 }
             }