From c78a0987efdced84b6439e1c490322b02fce3a3f Mon Sep 17 00:00:00 2001 From: Charles Chan Date: Wed, 9 Nov 2016 16:52:11 -0800 Subject: [PATCH] Carry more information in NextHop Also update the next-hop CLI to show more information Change-Id: Ia0f2c7b4a40b75513a4ecb4cc022e580e590d9f3 --- .../cli/net/NextHopsListCommand.java | 5 ++-- .../incubator/net/routing/NextHop.java | 26 +++++++++++++------ .../net/routing/impl/RouteManager.java | 2 +- 3 files changed, 21 insertions(+), 12 deletions(-) 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 d7d518995c..9d8bb91b56 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 @@ public class NextHopsListCommand extends AbstractShellCommand { 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 @@ public class NextHopsListCommand extends AbstractShellCommand { nextHops.forEach(nextHop -> { Collection 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 313b537ccd..024174255e 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 @@ package org.onosproject.incubator.net.routing; import org.onlab.packet.IpAddress; import org.onlab.packet.MacAddress; +import org.onosproject.net.ConnectPoint; import java.util.Objects; @@ -29,17 +30,17 @@ import static com.google.common.base.MoreObjects.toStringHelper; 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 @@ public class NextHop { * @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 @@ public class NextHop { 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 6669281c73..acca731903 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 @@ public class RouteManager implements ListenerService, @Override public Set 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()); }