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