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;
                     }
                 }
             }
