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