Improves ping responder
Patch contains several bugfixes and improvements:
- Fixes sid retrieval when the destination leaf is down
- Fixes sid retrieval when ping goes through the spine
- Fixes MPLS deserializer
- Improves Ethernet toString
- Fixes ping to looback for dh host when bond sends to wrong leaf
Change-Id: I05963e74b2976e526826ffd377cadeb462ba0a8d
diff --git a/apps/segmentrouting/app/src/test/java/org/onosproject/segmentrouting/MockInterfaceService.java b/apps/segmentrouting/app/src/test/java/org/onosproject/segmentrouting/MockInterfaceService.java
index 17422d2..6e170b0 100644
--- a/apps/segmentrouting/app/src/test/java/org/onosproject/segmentrouting/MockInterfaceService.java
+++ b/apps/segmentrouting/app/src/test/java/org/onosproject/segmentrouting/MockInterfaceService.java
@@ -17,12 +17,17 @@
package org.onosproject.segmentrouting;
import com.google.common.collect.ImmutableSet;
+import org.onlab.packet.IpAddress;
+import org.onlab.packet.VlanId;
import org.onosproject.net.ConnectPoint;
import org.onosproject.net.intf.Interface;
import org.onosproject.net.intf.impl.InterfaceManager;
import java.util.Set;
import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import static java.util.stream.Collectors.toSet;
/**
* Mock Interface Service.
@@ -44,4 +49,37 @@
public Set<Interface> getInterfaces() {
return interfaces;
}
+
+ @Override
+ public Interface getMatchingInterface(IpAddress ip) {
+ return getMatchingInterfacesStream(ip).findFirst().orElse(null);
+ }
+
+ @Override
+ public Set<Interface> getMatchingInterfaces(IpAddress ip) {
+ return getMatchingInterfacesStream(ip).collect(toSet());
+ }
+
+ private Stream<Interface> getMatchingInterfacesStream(IpAddress ip) {
+ return interfaces.stream()
+ .filter(intf -> intf.ipAddressesList().stream()
+ .anyMatch(intfIp -> intfIp.subnetAddress().contains(ip)));
+ }
+
+ @Override
+ public boolean isConfigured(ConnectPoint connectPoint) {
+ Set<Interface> intfs = getInterfacesByPort(connectPoint);
+ if (intfs == null) {
+ return false;
+ }
+ for (Interface intf : intfs) {
+ if (!intf.ipAddressesList().isEmpty() || intf.vlan() != VlanId.NONE
+ || intf.vlanNative() != VlanId.NONE
+ || intf.vlanUntagged() != VlanId.NONE
+ || !intf.vlanTagged().isEmpty()) {
+ return true;
+ }
+ }
+ return false;
+ }
}