Carry location of next hop in ResolvedRoute
Change-Id: I64ca6ecc5cfcffc3ed19621053b0ee266c4093ea
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 a362316..4c0f59e 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
@@ -23,8 +23,8 @@
import org.apache.felix.scr.annotations.ReferenceCardinality;
import org.apache.felix.scr.annotations.Service;
import org.onlab.packet.IpAddress;
-import org.onlab.packet.MacAddress;
import org.onosproject.event.ListenerService;
+import org.onosproject.incubator.net.routing.NextHopData;
import org.onosproject.incubator.net.routing.NextHop;
import org.onosproject.incubator.net.routing.ResolvedRoute;
import org.onosproject.incubator.net.routing.Route;
@@ -118,9 +118,12 @@
routeStore.getRouteTables().forEach(table -> {
Collection<Route> routes = routeStore.getRoutes(table);
if (routes != null) {
- routes.forEach(route ->
- l.post(new RouteEvent(RouteEvent.Type.ROUTE_UPDATED,
- new ResolvedRoute(route, routeStore.getNextHop(route.nextHop())))));
+ routes.forEach(route -> {
+ NextHopData nextHopData = routeStore.getNextHop(route.nextHop());
+ l.post(new RouteEvent(RouteEvent.Type.ROUTE_UPDATED,
+ new ResolvedRoute(route, nextHopData.mac(),
+ nextHopData.location())));
+ });
}
});
@@ -174,7 +177,7 @@
@Override
public Set<NextHop> getNextHops() {
return routeStore.getNextHops().entrySet().stream()
- .map(entry -> new NextHop(entry.getKey(), entry.getValue()))
+ .map(entry -> new NextHop(entry.getKey(), entry.getValue().mac()))
.collect(Collectors.toSet());
}
@@ -203,24 +206,24 @@
// Monitor the IP address for updates of the MAC address
hostService.startMonitoringIp(route.nextHop());
- MacAddress nextHopMac = routeStore.getNextHop(route.nextHop());
- if (nextHopMac == null) {
+ NextHopData nextHopData = routeStore.getNextHop(route.nextHop());
+ if (nextHopData == null) {
Set<Host> hosts = hostService.getHostsByIp(route.nextHop());
Optional<Host> host = hosts.stream().findFirst();
if (host.isPresent()) {
- nextHopMac = host.get().mac();
+ nextHopData = NextHopData.fromHost(host.get());
}
}
- if (nextHopMac != null) {
- routeStore.updateNextHop(route.nextHop(), nextHopMac);
+ if (nextHopData != null) {
+ routeStore.updateNextHop(route.nextHop(), nextHopData);
}
}
private void hostUpdated(Host host) {
synchronized (this) {
for (IpAddress ip : host.ipAddresses()) {
- routeStore.updateNextHop(ip, host.mac());
+ routeStore.updateNextHop(ip, NextHopData.fromHost(host));
}
}
}
@@ -228,7 +231,7 @@
private void hostRemoved(Host host) {
synchronized (this) {
for (IpAddress ip : host.ipAddresses()) {
- routeStore.removeNextHop(ip, host.mac());
+ routeStore.removeNextHop(ip, NextHopData.fromHost(host));
}
}
}