summaryrefslogtreecommitdiffstats
path: root/routing/routing-impl/src/main/java/io/fd/hc2vpp/routing/trait/Ipv6RoutePathParser.java
diff options
context:
space:
mode:
authorMichal Cmarada <michal.cmarada@pantheon.tech>2018-05-04 16:13:09 +0200
committerMichal Cmarada <michal.cmarada@pantheon.tech>2018-05-09 14:36:21 +0200
commit8f9fe3ca424abc56d212a96af4ec5750a29e7673 (patch)
treec3472885ef0fb57452b88b4ea76f2935f81ca39f /routing/routing-impl/src/main/java/io/fd/hc2vpp/routing/trait/Ipv6RoutePathParser.java
parentd5883157bff11ee89b95bc1abe7f62fca3509950 (diff)
HC2VPP-253 - Bump routing models
This patch updates (for support of SRv6 and MPLS) routing models to: - hc2vpp-ietf-routing@2018-03-13.yang (RFC 8349, https://tools.ietf.org/html/rfc8349) - hc2vpp-ietf-ipv4-unicast-routing@2018-03-13.yang (RFC 8349) - hc2vpp-ietf-ipv6-unicast-routing@2018-03-13.yang (RFC 8349) - hc2vpp-ietf-ipv6-router-advertisements@2018-03-13 (RFC 8349) - hc2vpp-ietf-routing-types@2017-12-04 (RFC 8294 ,https://tools.ietf.org/html/rfc8294) Due to odl bugs these models were changed, see HC2VPP-298 for more details. Significant changes in updated models: - Routing instance was removed, we used vpp-routing-instance as single instance before, which is no longer needed. - Routing-protocol and Routing-protocols were refactored to Control-plane-protocol/s. Control-protocol now uses type and name as key - Route Key was changed from id to ipPrefix - Next-hop and Next-Hop-list were refactored See attached routing_postman_collection.json for updated data structures and examples for both IPv4 and IPv6 routes. For router advertisements see routing_advertisments_postman_collection.json Another fixes in this patch: - fixes in MPLS module due to Routing model updates - fixes doc module due to changes in Routing model Change-Id: I33704a50061aef97dfbd73a7701ff6fe5274d6f0 Signed-off-by: Michal Cmarada <michal.cmarada@pantheon.tech>
Diffstat (limited to 'routing/routing-impl/src/main/java/io/fd/hc2vpp/routing/trait/Ipv6RoutePathParser.java')
-rw-r--r--routing/routing-impl/src/main/java/io/fd/hc2vpp/routing/trait/Ipv6RoutePathParser.java110
1 files changed, 59 insertions, 51 deletions
diff --git a/routing/routing-impl/src/main/java/io/fd/hc2vpp/routing/trait/Ipv6RoutePathParser.java b/routing/routing-impl/src/main/java/io/fd/hc2vpp/routing/trait/Ipv6RoutePathParser.java
index 1c7243ce8..27b5edf5d 100644
--- a/routing/routing-impl/src/main/java/io/fd/hc2vpp/routing/trait/Ipv6RoutePathParser.java
+++ b/routing/routing-impl/src/main/java/io/fd/hc2vpp/routing/trait/Ipv6RoutePathParser.java
@@ -16,26 +16,34 @@
package io.fd.hc2vpp.routing.trait;
+import static io.fd.hc2vpp.routing.trait.RouteMapper.isDefaultInterfaceIndex;
+
import io.fd.hc2vpp.common.translate.util.AddressTranslator;
import io.fd.hc2vpp.common.translate.util.MultiNamingContext;
import io.fd.hc2vpp.common.translate.util.NamingContext;
import io.fd.hc2vpp.routing.naming.Ipv6RouteNamesFactory;
import io.fd.honeycomb.translate.MappingContext;
import io.fd.vpp.jvpp.core.types.FibPath;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ipv6.unicast.routing.rev170917.routing.state.routing.instance.routing.protocols.routing.protocol._static.routes.ipv6.route.NextHopOptions;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ipv6.unicast.routing.rev170917.routing.state.routing.instance.routing.protocols.routing.protocol._static.routes.ipv6.route.next.hop.options.*;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ipv6.unicast.routing.rev170917.routing.state.routing.instance.routing.protocols.routing.protocol._static.routes.ipv6.route.next.hop.options.next.hop.list.NextHopList;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ipv6.unicast.routing.rev170917.routing.state.routing.instance.routing.protocols.routing.protocol._static.routes.ipv6.route.next.hop.options.next.hop.list.NextHopListBuilder;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ipv6.unicast.routing.rev170917.routing.state.routing.instance.routing.protocols.routing.protocol._static.routes.ipv6.route.next.hop.options.next.hop.list.next.hop.list.NextHopBuilder;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ipv6.unicast.routing.rev170917.routing.state.routing.instance.routing.protocols.routing.protocol._static.routes.ipv6.route.next.hop.options.table.lookup.TableLookupParamsBuilder;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.vpp.routing.rev170917.VniReference;
-
-
-import javax.annotation.Nonnull;
import java.util.List;
import java.util.stream.Collectors;
-
-import static io.fd.hc2vpp.routing.trait.RouteMapper.isDefaultInterfaceIndex;
+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.route.NextHop;
+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.next.hop.NextHop1;
+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.next.hop.NextHop1Builder;
+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.next.hop.SimpleNextHop1;
+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.next.hop.SimpleNextHop1Builder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.routing.rev180313.next.hop.content.NextHopOptions;
+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.NextHopListBuilder;
+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.SimpleNextHopBuilder;
+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.SpecialNextHopBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.routing.rev180313.next.hop.content.next.hop.options.TableLookupCaseBuilder;
+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.NextHopBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.vpp.ipv6.unicast.routing.rev180319.VppIpv6NextHopAugmentation;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.vpp.ipv6.unicast.routing.rev180319.VppIpv6NextHopAugmentationBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.vpp.routing.types.rev180406.VniReference;
public interface Ipv6RoutePathParser extends RouteMapper {
@@ -55,25 +63,23 @@ public interface Ipv6RoutePathParser extends RouteMapper {
}
static NextHopOptions tableLookup() {
- return new TableLookupBuilder()
- .setTableLookupParams(
- new TableLookupParamsBuilder()
- // TODO - https://jira.fd.io/browse/VPP-994
- .setSecondaryVrf(new VniReference(0L))
- .build()
- ).build();
+ return new TableLookupCaseBuilder()
+ // TODO - https://jira.fd.io/browse/VPP-994
+ .setSecondaryVrf(new VniReference(0L)).build();
}
static SpecialNextHop specialHop(final FibPath fibPath) {
return new SpecialNextHopBuilder()
- .setSpecialNextHop(INSTANCE.specialHopType(fibPath))
+ .setSpecialNextHopEnum(INSTANCE.specialHopType(fibPath))
.build();
}
static SimpleNextHop simpleHop(final FibPath path, final NamingContext interfaceContext,
final MappingContext mappingContext) {
return resolveInterfaceIfSpecified(new SimpleNextHopBuilder(), path.swIfIndex, interfaceContext, mappingContext)
- .setNextHop(AddressTranslator.INSTANCE.arrayToIpv6AddressNoZone(path.nextHop))
+ .addAugmentation(SimpleNextHop1.class, new SimpleNextHop1Builder()
+ .setNextHopAddress(AddressTranslator.INSTANCE.arrayToIpv6AddressNoZone(path.nextHop))
+ .build())
.build();
}
@@ -87,35 +93,33 @@ public interface Ipv6RoutePathParser extends RouteMapper {
return builder;
}
- static org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ipv6.unicast.routing.rev170917.routing.state.routing.instance.routing.protocols.routing.protocol._static.routes.ipv6.route.next.hop.options.NextHopList hopList(
- final String routeName,
- final List<FibPath> parsedHops,
- final NamingContext interfaceContext,
- final MultiNamingContext routeHopContext,
- final MappingContext mappingContext,
- final Ipv6RouteNamesFactory namesFactory) {
- return new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ipv6.unicast.routing.rev170917.routing.state.routing.instance.routing.protocols.routing.protocol._static.routes.ipv6.route.next.hop.options.NextHopListBuilder()
- .setNextHopList(
+ static NextHopList hopList(final String routeName, final List<FibPath> parsedHops,
+ final NamingContext interfaceContext, final MultiNamingContext routeHopContext,
+ final MappingContext mappingContext, final Ipv6RouteNamesFactory namesFactory) {
+ return new NextHopListBuilder()
+ .setNextHopList(
buildNextHopList(routeName, parsedHops, interfaceContext, routeHopContext, mappingContext,
namesFactory))
.build();
}
- static NextHopList buildNextHopList(final String routeName, final List<FibPath> parsedHops,
- final NamingContext interfaceContext,
- final MultiNamingContext routeHopContext,
- final MappingContext mappingContext,
- final Ipv6RouteNamesFactory namesFactory) {
- return new NextHopListBuilder().setNextHop(parsedHops.stream()
- .map(fibPath -> resolveInterfaceIfSpecified(new NextHopBuilder(), fibPath.swIfIndex, interfaceContext,
- mappingContext)
- .setId(findIdWithinRouteContext(routeName, routeHopContext, mappingContext, fibPath,
- namesFactory))
- .setWeight((short) fibPath.weight)
- .setAddress(AddressTranslator.INSTANCE.arrayToIpv6AddressNoZone(fibPath.nextHop))
+ static org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.routing.rev180313.next.hop.content.next.hop.options.next.hop.list.NextHopList buildNextHopList(
+ final String routeName, final List<FibPath> parsedHops, final NamingContext interfaceContext,
+ final MultiNamingContext routeHopContext, final MappingContext mappingContext,
+ final Ipv6RouteNamesFactory namesFactory) {
+
+ return new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.routing.rev180313.next.hop.content.next.hop.options.next.hop.list.NextHopListBuilder().setNextHop(parsedHops.stream()
+ .map(fibPath -> resolveInterfaceIfSpecified(new NextHopBuilder(), fibPath.swIfIndex,
+ interfaceContext, mappingContext)
+ .setIndex(String.valueOf(findIdWithinRouteContext(routeName, routeHopContext, mappingContext,
+ fibPath, namesFactory)))
+ .addAugmentation(NextHop1.class, new NextHop1Builder()
+ .setNextHopAddress(AddressTranslator.INSTANCE.arrayToIpv6AddressNoZone(fibPath.nextHop))
.build())
- .collect(Collectors.toList()))
- .build();
+ .addAugmentation(VppIpv6NextHopAugmentation.class,
+ new VppIpv6NextHopAugmentationBuilder().setWeight((short) fibPath.weight).build())
+ .build())
+ .collect(Collectors.toList())).build();
}
static NextHopBuilder resolveInterfaceIfSpecified(NextHopBuilder builder, final int index,
@@ -135,15 +139,19 @@ public interface Ipv6RoutePathParser extends RouteMapper {
.getChildIndex(routeName, namesFactory.uniqueRouteHopName(fibPath, mappingContext), mappingContext));
}
- default NextHopOptions resolveHopType(@Nonnull final String routeName,
- final List<FibPath> parsedHops,
- @Nonnull final NamingContext interfaceContext,
- @Nonnull final MultiNamingContext routeHopContext,
- @Nonnull final MappingContext mappingContext,
- @Nonnull final Ipv6RouteNamesFactory namesFactory) {
+ default NextHop resolveHopType(@Nonnull final String routeName,
+ final List<FibPath> parsedHops,
+ @Nonnull final NamingContext interfaceContext,
+ @Nonnull final MultiNamingContext routeHopContext,
+ @Nonnull final MappingContext mappingContext,
+ @Nonnull final Ipv6RouteNamesFactory namesFactory) {
+ 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.NextHopBuilder
+ nextHopBuilder = new 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.NextHopBuilder();
return parsedHops == null || parsedHops.isEmpty()
? null
- : resolveOption(routeName, parsedHops, interfaceContext, routeHopContext, mappingContext, namesFactory);
+ : nextHopBuilder.setNextHopOptions(resolveOption(routeName, parsedHops, interfaceContext,
+ routeHopContext, mappingContext,
+ namesFactory)).build();
}
}