summaryrefslogtreecommitdiffstats
path: root/routing/routing-impl/src/main/java/io/fd/hc2vpp/routing/write/Ipv6RouteCustomizer.java
diff options
context:
space:
mode:
Diffstat (limited to 'routing/routing-impl/src/main/java/io/fd/hc2vpp/routing/write/Ipv6RouteCustomizer.java')
-rw-r--r--routing/routing-impl/src/main/java/io/fd/hc2vpp/routing/write/Ipv6RouteCustomizer.java85
1 files changed, 43 insertions, 42 deletions
diff --git a/routing/routing-impl/src/main/java/io/fd/hc2vpp/routing/write/Ipv6RouteCustomizer.java b/routing/routing-impl/src/main/java/io/fd/hc2vpp/routing/write/Ipv6RouteCustomizer.java
index 9d784e693..e30c38fae 100644
--- a/routing/routing-impl/src/main/java/io/fd/hc2vpp/routing/write/Ipv6RouteCustomizer.java
+++ b/routing/routing-impl/src/main/java/io/fd/hc2vpp/routing/write/Ipv6RouteCustomizer.java
@@ -34,25 +34,23 @@ import io.fd.honeycomb.translate.write.WriteContext;
import io.fd.honeycomb.translate.write.WriteFailedException;
import io.fd.vpp.jvpp.core.dto.IpAddDelRoute;
import io.fd.vpp.jvpp.core.future.FutureJVppCore;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ipv6.unicast.routing.rev170917.routing.routing.instance.routing.protocols.routing.protocol._static.routes.Ipv6;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ipv6.unicast.routing.rev170917.routing.routing.instance.routing.protocols.routing.protocol._static.routes.ipv6.Route;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ipv6.unicast.routing.rev170917.routing.routing.instance.routing.protocols.routing.protocol._static.routes.ipv6.RouteKey;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ipv6.unicast.routing.rev170917.routing.routing.instance.routing.protocols.routing.protocol._static.routes.ipv6.route.next.hop.options.NextHopList;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ipv6.unicast.routing.rev170917.routing.routing.instance.routing.protocols.routing.protocol._static.routes.ipv6.route.next.hop.options.SimpleNextHop;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ipv6.unicast.routing.rev170917.routing.routing.instance.routing.protocols.routing.protocol._static.routes.ipv6.route.next.hop.options.SpecialNextHop;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ipv6.unicast.routing.rev170917.routing.routing.instance.routing.protocols.routing.protocol._static.routes.ipv6.route.next.hop.options.TableLookup;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ipv6.unicast.routing.rev170917.routing.routing.instance.routing.protocols.routing.protocol._static.routes.ipv6.route.next.hop.options.next.hop.list.next.hop.list.NextHop;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.routing.rev140524.routing.routing.instance.routing.protocols.RoutingProtocol;
-
-
+import java.util.Comparator;
+import java.util.List;
+import java.util.stream.Collectors;
+import javax.annotation.Nonnull;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ipv6.unicast.routing.rev180313.routing.control.plane.protocols.control.plane.protocol._static.routes.Ipv6;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ipv6.unicast.routing.rev180313.routing.control.plane.protocols.control.plane.protocol._static.routes.ipv6.Route;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ipv6.unicast.routing.rev180313.routing.control.plane.protocols.control.plane.protocol._static.routes.ipv6.RouteKey;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.routing.rev180313.next.hop.content.next.hop.options.NextHopList;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.routing.rev180313.next.hop.content.next.hop.options.SimpleNextHop;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.routing.rev180313.next.hop.content.next.hop.options.SpecialNextHop;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.routing.rev180313.next.hop.content.next.hop.options.TableLookupCase;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.routing.rev180313.next.hop.content.next.hop.options.next.hop.list.next.hop.list.NextHop;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.routing.rev180313.routing.control.plane.protocols.ControlPlaneProtocol;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import javax.annotation.Nonnull;
-import java.util.List;
-import java.util.stream.Collectors;
-
/**
* Customizer for handling write operations for {@link Ipv6} according to ietf-ipv6-unicast-routing.yang
*/
@@ -76,12 +74,12 @@ public class Ipv6RouteCustomizer extends FutureJVppCustomizer
*/
private final Ipv6RouteNamesFactory namesFactory;
- public Ipv6RouteCustomizer(@Nonnull final FutureJVppCore futureJVppCore,
- @Nonnull final NamingContext interfaceContext,
- @Nonnull final NamingContext routesContext,
- @Nonnull final NamingContext routingProtocolContext,
- @Nonnull final MultiNamingContext routesHopsContext,
- @Nonnull final VppClassifierContextManager classifierContextManager) {
+ Ipv6RouteCustomizer(@Nonnull final FutureJVppCore futureJVppCore,
+ @Nonnull final NamingContext interfaceContext,
+ @Nonnull final NamingContext routesContext,
+ @Nonnull final NamingContext routingProtocolContext,
+ @Nonnull final MultiNamingContext routesHopsContext,
+ @Nonnull final VppClassifierContextManager classifierContextManager) {
super(futureJVppCore);
this.routesContext = routesContext;
@@ -90,9 +88,11 @@ public class Ipv6RouteCustomizer extends FutureJVppCustomizer
SimpleHopRequestFactory.forContexts(classifierContextManager, interfaceContext, routingProtocolContext);
multipathHopRequestFactory = MultipathHopRequestFactory
.forContexts(classifierContextManager, interfaceContext, routingProtocolContext);
- specialNextHopRequestFactory = SpecialNextHopRequestFactory.forContexts(classifierContextManager, interfaceContext,
- routingProtocolContext);
- tableLookupRequestFactory = new TableLookupRequestFactory(classifierContextManager, interfaceContext, routingProtocolContext);
+ specialNextHopRequestFactory =
+ SpecialNextHopRequestFactory.forContexts(classifierContextManager, interfaceContext,
+ routingProtocolContext);
+ tableLookupRequestFactory =
+ new TableLookupRequestFactory(classifierContextManager, interfaceContext, routingProtocolContext);
namesFactory = new Ipv6RouteNamesFactory(interfaceContext, routingProtocolContext);
}
@@ -100,7 +100,7 @@ public class Ipv6RouteCustomizer extends FutureJVppCustomizer
public void writeCurrentAttributes(@Nonnull final InstanceIdentifier<Route> instanceIdentifier,
@Nonnull final Route route,
@Nonnull final WriteContext writeContext) throws WriteFailedException {
- final String parentProtocolName = instanceIdentifier.firstKeyOf(RoutingProtocol.class).getName();
+ final String parentProtocolName = instanceIdentifier.firstKeyOf(ControlPlaneProtocol.class).getName();
final String routeName = namesFactory.uniqueRouteName(parentProtocolName, route);
writeRoute(instanceIdentifier, parentProtocolName, routeName, route, writeContext, true);
@@ -112,7 +112,7 @@ public class Ipv6RouteCustomizer extends FutureJVppCustomizer
public void deleteCurrentAttributes(@Nonnull final InstanceIdentifier<Route> instanceIdentifier,
@Nonnull final Route route,
@Nonnull final WriteContext writeContext) throws WriteFailedException {
- final String parentProtocolName = instanceIdentifier.firstKeyOf(RoutingProtocol.class).getName();
+ final String parentProtocolName = instanceIdentifier.firstKeyOf(ControlPlaneProtocol.class).getName();
final String routeName = namesFactory.uniqueRouteName(parentProtocolName, route);
writeRoute(instanceIdentifier, parentProtocolName, routeName, route, writeContext, false);
routesContext.removeName(routeName, writeContext.getMappingContext());
@@ -124,12 +124,12 @@ public class Ipv6RouteCustomizer extends FutureJVppCustomizer
@Nonnull final Route route,
@Nonnull final WriteContext writeContext,
final boolean isAdd) throws WriteFailedException {
- if (route.getNextHopOptions() instanceof SimpleNextHop) {
+ if (route.getNextHop().getNextHopOptions() instanceof SimpleNextHop) {
writeRoute(
simpleHopRequestFactory.createIpv6SimpleHopRequest(isAdd, parentProtocolName, route,
writeContext.getMappingContext()),
identifier);
- } else if (route.getNextHopOptions() instanceof NextHopList) {
+ } else if (route.getNextHop().getNextHopOptions() instanceof NextHopList) {
final List<NextHop> createdHops =
writeMultihopRoute(identifier, parentProtocolName, route, writeContext, isAdd);
@@ -139,10 +139,12 @@ public class Ipv6RouteCustomizer extends FutureJVppCustomizer
} else {
removeMappingForEachHop(routeName, writeContext, createdHops);
}
- } else if (route.getNextHopOptions() instanceof SpecialNextHop) {
+ } else if (route.getNextHop().getNextHopOptions() instanceof SpecialNextHop) {
writeSpecialHopRoute(identifier, route, parentProtocolName, writeContext, isAdd);
- } else if (route.getNextHopOptions() instanceof TableLookup) {
- writeRoute(tableLookupRequestFactory.createV6TableLookupRouteRequest(isAdd, parentProtocolName, route, writeContext.getMappingContext()), identifier);
+ } else if (route.getNextHop().getNextHopOptions() instanceof TableLookupCase) {
+ writeRoute(tableLookupRequestFactory.createV6TableLookupRouteRequest(isAdd, parentProtocolName, route,
+ writeContext.getMappingContext()),
+ identifier);
} else {
throw new IllegalArgumentException("Unsupported next-hop type");
}
@@ -154,14 +156,13 @@ public class Ipv6RouteCustomizer extends FutureJVppCustomizer
final WriteContext writeContext, final boolean isAdd)
throws WriteFailedException {
// list of next hops
- final NextHopList hopList = NextHopList.class.cast(route.getNextHopOptions());
+ final NextHopList hopList = NextHopList.class.cast(route.getNextHop().getNextHopOptions());
final MappingContext mappingContext = writeContext.getMappingContext();
LOG.debug("Writing hop list {} for route {}", hopList, identifier);
// order hops to preserve order by ids(even that model is not ordered)
- final List<NextHop> orderedHops = hopList.getNextHopList().getNextHop()
- .stream()
- .sorted((left, right) -> (int) (left.getId() - right.getId()))
+ final List<NextHop> orderedHops = hopList.getNextHopList().getNextHop().stream()
+ .sorted(Comparator.comparing(NextHop::getIndex))
.collect(Collectors.toList());
for (NextHop hop : orderedHops) {
@@ -176,16 +177,16 @@ public class Ipv6RouteCustomizer extends FutureJVppCustomizer
return orderedHops;
}
-
private void writeSpecialHopRoute(final @Nonnull InstanceIdentifier<Route> identifier, final @Nonnull Route route,
- final @Nonnull String parentProtocolName, final @Nonnull WriteContext writeContext,
- final boolean isAdd)
+ final @Nonnull String parentProtocolName,
+ final @Nonnull WriteContext writeContext, final boolean isAdd)
throws WriteFailedException {
- final SpecialNextHop hop = SpecialNextHop.class.cast(route.getNextHopOptions());
+ final SpecialNextHop hop = SpecialNextHop.class.cast(route.getNextHop().getNextHopOptions());
final MappingContext mappingContext = writeContext.getMappingContext();
- final IpAddDelRoute request = specialNextHopRequestFactory
- .createIpv6SpecialHopRequest(isAdd, parentProtocolName, route, mappingContext, hop.getSpecialNextHop());
+ final IpAddDelRoute request =
+ specialNextHopRequestFactory.createIpv6SpecialHopRequest(isAdd, parentProtocolName, route, mappingContext,
+ hop.getSpecialNextHopEnum());
writeRoute(request, identifier);
}
@@ -206,7 +207,7 @@ public class Ipv6RouteCustomizer extends FutureJVppCustomizer
private void addMappingForEachHop(final @Nonnull String routeName, final @Nonnull WriteContext writeContext,
final List<NextHop> createdHops) {
createdHops.forEach(nextHop -> routesHopsContext.addChild(routeName,
- nextHop.getId().intValue(),
+ Integer.valueOf(nextHop.getIndex()),
namesFactory.uniqueRouteHopName(nextHop),
writeContext.getMappingContext()));
}