Probe all interfaces that contains given IP
Change-Id: I150471a2031c214d5f08c76b974e7449e930b453
diff --git a/core/net/src/main/java/org/onosproject/net/host/impl/HostMonitor.java b/core/net/src/main/java/org/onosproject/net/host/impl/HostMonitor.java
index d85fb97..a3a3069 100644
--- a/core/net/src/main/java/org/onosproject/net/host/impl/HostMonitor.java
+++ b/core/net/src/main/java/org/onosproject/net/host/impl/HostMonitor.java
@@ -25,7 +25,6 @@
import org.onlab.packet.VlanId;
import org.onlab.packet.ndp.NeighborSolicitation;
import org.onlab.util.Timer;
-import org.onosproject.incubator.net.intf.Interface;
import org.onosproject.incubator.net.intf.InterfaceService;
import org.onosproject.net.ConnectPoint;
import org.onosproject.net.Host;
@@ -33,7 +32,6 @@
import org.onosproject.net.flow.DefaultTrafficTreatment;
import org.onosproject.net.flow.TrafficTreatment;
import org.onosproject.net.host.HostProvider;
-import org.onosproject.net.host.InterfaceIpAddress;
import org.onosproject.net.packet.DefaultOutboundPacket;
import org.onosproject.net.packet.OutboundPacket;
import org.onosproject.net.packet.PacketService;
@@ -187,34 +185,30 @@
* @param targetIp IP address to send the request for
*/
private void sendRequest(IpAddress targetIp) {
- Interface intf = interfaceService.getMatchingInterface(targetIp);
-
- if (intf == null) {
- return;
- }
-
- if (!edgePortService.isEdgePoint(intf.connectPoint())) {
- log.warn("Aborting attempt to send probe out non-edge port: {}", intf);
- return;
- }
-
- for (InterfaceIpAddress ia : intf.ipAddressesList()) {
- if (ia.subnetAddress().contains(targetIp)) {
- log.info("Sending probe for target:{} out of intf:{} vlan:{}",
- targetIp, intf.connectPoint(), intf.vlan());
- sendProbe(intf.connectPoint(), targetIp, ia.ipAddress(),
- intf.mac(), intf.vlan());
- // account for use-cases where tagged-vlan config is used
- if (!intf.vlanTagged().isEmpty()) {
- intf.vlanTagged().forEach(tag -> {
- log.info("Sending probe for target:{} out of intf:{} vlan:{}",
- targetIp, intf.connectPoint(), tag);
- sendProbe(intf.connectPoint(), targetIp, ia.ipAddress(),
- intf.mac(), tag);
- });
- }
+ interfaceService.getMatchingInterfaces(targetIp).forEach(intf -> {
+ if (!edgePortService.isEdgePoint(intf.connectPoint())) {
+ log.warn("Aborting attempt to send probe out non-edge port: {}", intf);
+ return;
}
- }
+
+ intf.ipAddressesList().stream()
+ .filter(ia -> ia.subnetAddress().contains(targetIp))
+ .forEach(ia -> {
+ log.info("Sending probe for target:{} out of intf:{} vlan:{}",
+ targetIp, intf.connectPoint(), intf.vlan());
+ sendProbe(intf.connectPoint(), targetIp, ia.ipAddress(),
+ intf.mac(), intf.vlan());
+ // account for use-cases where tagged-vlan config is used
+ if (!intf.vlanTagged().isEmpty()) {
+ intf.vlanTagged().forEach(tag -> {
+ log.info("Sending probe for target:{} out of intf:{} vlan:{}",
+ targetIp, intf.connectPoint(), tag);
+ sendProbe(intf.connectPoint(), targetIp, ia.ipAddress(),
+ intf.mac(), tag);
+ });
+ }
+ });
+ });
}
public void sendProbe(ConnectPoint connectPoint,