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