Carry more information in NextHop
Also update the next-hop CLI to show more information
Change-Id: Ia0f2c7b4a40b75513a4ecb4cc022e580e590d9f3
diff --git a/cli/src/main/java/org/onosproject/cli/net/NextHopsListCommand.java b/cli/src/main/java/org/onosproject/cli/net/NextHopsListCommand.java
index d7d5189..9d8bb91 100644
--- a/cli/src/main/java/org/onosproject/cli/net/NextHopsListCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/NextHopsListCommand.java
@@ -40,7 +40,7 @@
private static final String FORMAT_TABLE = "Table: %s";
private static final String FORMAT_TOTAL = " Total: %d";
- private static final String FORMAT = "ip=%s, mac=%s, numRoutes=%s";
+ private static final String FORMAT = "ip=%s, mac=%s, loc=%s, numRoutes=%s";
@Override
protected void execute() {
@@ -50,9 +50,8 @@
nextHops.forEach(nextHop -> {
Collection<Route> routes = service.getRoutesForNextHop(nextHop.ip());
- print(FORMAT, nextHop.ip(), nextHop.mac(), routes.size());
+ print(FORMAT, nextHop.ip(), nextHop.mac(), nextHop.location(), routes.size());
});
-
}
}
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/routing/NextHop.java b/incubator/api/src/main/java/org/onosproject/incubator/net/routing/NextHop.java
index 313b537..0241742 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/routing/NextHop.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/routing/NextHop.java
@@ -18,6 +18,7 @@
import org.onlab.packet.IpAddress;
import org.onlab.packet.MacAddress;
+import org.onosproject.net.ConnectPoint;
import java.util.Objects;
@@ -29,17 +30,17 @@
public class NextHop {
private final IpAddress ip;
- private final MacAddress mac;
+ private final NextHopData nextHopData;
/**
* Creates a new next hop.
*
* @param ip IP address
- * @param mac MAC address
+ * @param nextHopData Next hop data
*/
- public NextHop(IpAddress ip, MacAddress mac) {
+ public NextHop(IpAddress ip, NextHopData nextHopData) {
this.ip = ip;
- this.mac = mac;
+ this.nextHopData = nextHopData;
}
/**
@@ -57,12 +58,21 @@
* @return MAC address
*/
public MacAddress mac() {
- return mac;
+ return nextHopData.mac();
+ }
+
+ /**
+ * Returns the location of the next hop.
+ *
+ * @return Connect point
+ */
+ public ConnectPoint location() {
+ return nextHopData.location();
}
@Override
public int hashCode() {
- return Objects.hash(ip, mac);
+ return Objects.hash(ip, nextHopData);
}
@Override
@@ -78,14 +88,14 @@
NextHop that = (NextHop) other;
return Objects.equals(this.ip, that.ip) &&
- Objects.equals(this.mac, that.mac);
+ Objects.equals(this.nextHopData, that.nextHopData);
}
@Override
public String toString() {
return toStringHelper(this)
.add("ip", ip)
- .add("mac", mac)
+ .add("nextHopData", nextHopData)
.toString();
}
}
diff --git a/incubator/net/src/main/java/org/onosproject/incubator/net/routing/impl/RouteManager.java b/incubator/net/src/main/java/org/onosproject/incubator/net/routing/impl/RouteManager.java
index 6669281..acca731 100644
--- a/incubator/net/src/main/java/org/onosproject/incubator/net/routing/impl/RouteManager.java
+++ b/incubator/net/src/main/java/org/onosproject/incubator/net/routing/impl/RouteManager.java
@@ -177,7 +177,7 @@
@Override
public Set<NextHop> getNextHops() {
return routeStore.getNextHops().entrySet().stream()
- .map(entry -> new NextHop(entry.getKey(), entry.getValue().mac()))
+ .map(entry -> new NextHop(entry.getKey(), entry.getValue()))
.collect(Collectors.toSet());
}