diff options
Diffstat (limited to 'routing/routing-impl/src/main/java/io/fd/hc2vpp/routing/write/factory')
4 files changed, 101 insertions, 79 deletions
diff --git a/routing/routing-impl/src/main/java/io/fd/hc2vpp/routing/write/factory/MultipathHopRequestFactory.java b/routing/routing-impl/src/main/java/io/fd/hc2vpp/routing/write/factory/MultipathHopRequestFactory.java index bad51478d..62e4f4525 100644 --- a/routing/routing-impl/src/main/java/io/fd/hc2vpp/routing/write/factory/MultipathHopRequestFactory.java +++ b/routing/routing-impl/src/main/java/io/fd/hc2vpp/routing/write/factory/MultipathHopRequestFactory.java @@ -22,16 +22,20 @@ import io.fd.hc2vpp.routing.write.trait.RouteRequestProducer; import io.fd.hc2vpp.vpp.classifier.context.VppClassifierContextManager; import io.fd.honeycomb.translate.MappingContext; import io.fd.vpp.jvpp.core.dto.IpAddDelRoute; +import javax.annotation.Nonnull; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Prefix; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Address; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Prefix; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ipv4.unicast.routing.rev170917.routing.routing.instance.routing.protocols.routing.protocol._static.routes.ipv4.route.VppIpv4Route; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ipv4.unicast.routing.rev170917.routing.routing.instance.routing.protocols.routing.protocol._static.routes.ipv4.route.next.hop.options.next.hop.list.next.hop.list.NextHop; -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.VppIpv6Route; - -import javax.annotation.Nonnull; - +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ipv4.unicast.routing.rev180313.routing.control.plane.protocols.control.plane.protocol._static.routes.ipv4.Route; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ipv4.unicast.routing.rev180313.routing.control.plane.protocols.control.plane.protocol._static.routes.ipv4.route.next.hop.NextHop1; +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.vpp.ipv4.unicast.routing.rev180319.VppIpv4NextHopAugmentation; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.vpp.ipv4.unicast.routing.rev180319.VppIpv4RouteAttributesAugmentation; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.vpp.ipv4.unicast.routing.rev180319.routing.control.plane.protocols.control.plane.protocol._static.routes.ipv4.route.VppIpv4Route; +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.VppIpv6RouteAttributesAugmentation; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.vpp.ipv6.unicast.routing.rev180319.routing.control.plane.protocols.control.plane.protocol._static.routes.ipv6.route.VppIpv6Route; /** * Factory for creating requests to create route with multiple hops @@ -53,10 +57,12 @@ public class MultipathHopRequestFactory extends BasicHopRequestFactory implement public IpAddDelRoute createIpv4MultipathHopRequest(final boolean add, @Nonnull final String parentProtocolName, - @Nonnull final org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ipv4.unicast.routing.rev170917.routing.routing.instance.routing.protocols.routing.protocol._static.routes.ipv4.Route route, + @Nonnull final Route route, @Nonnull final NextHop hop, @Nonnull final MappingContext mappingContext) { - final VppIpv4Route routingAttributes = route.getVppIpv4Route(); + + final VppIpv4Route routingAttributes = route.getAugmentation(VppIpv4RouteAttributesAugmentation.class) != null ? + route.getAugmentation(VppIpv4RouteAttributesAugmentation.class).getVppIpv4Route() : null; final int nextHopInterfaceIndex = getInterfaceNamingContext().getIndex(hop.getOutgoingInterface(), mappingContext); @@ -66,8 +72,8 @@ public class MultipathHopRequestFactory extends BasicHopRequestFactory implement return getMultipathHopRequest(add, route.getDestinationPrefix(), nextHopInterfaceIndex, - hop.getAddress(), - hop.getWeight().byteValue(), + hop.getAugmentation(NextHop1.class).getNextHopAddress(), + hop.getAugmentation(VppIpv4NextHopAugmentation.class).getWeight().byteValue(), getRoutingProtocolContext().getIndex(parentProtocolName, mappingContext), DEFAULT_VNI, classifyTableIndex(routingAttributes.getClassifyTable(), getVppClassifierContextManager(), @@ -77,8 +83,8 @@ public class MultipathHopRequestFactory extends BasicHopRequestFactory implement return getMultipathHopRequest(add, route.getDestinationPrefix(), nextHopInterfaceIndex, - hop.getAddress(), - hop.getWeight().byteValue(), + hop.getAugmentation(NextHop1.class).getNextHopAddress(), + hop.getAugmentation(VppIpv4NextHopAugmentation.class).getWeight().byteValue(), getRoutingProtocolContext().getIndex(parentProtocolName, mappingContext), DEFAULT_VNI, 0, @@ -88,10 +94,11 @@ public class MultipathHopRequestFactory extends BasicHopRequestFactory implement public IpAddDelRoute createIpv6MultipathHopRequest(final boolean add, @Nonnull final String parentProtocolName, - @Nonnull final 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 route, - @Nonnull final 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 hop, + @Nonnull final 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 route, + @Nonnull final NextHop hop, @Nonnull final MappingContext mappingContext) { - final VppIpv6Route routingAttributes = route.getVppIpv6Route(); + final VppIpv6Route routingAttributes = route.getAugmentation(VppIpv6RouteAttributesAugmentation.class) != null ? + route.getAugmentation(VppIpv6RouteAttributesAugmentation.class).getVppIpv6Route() : null; final int nextHopInterfaceIndex = getInterfaceNamingContext().getIndex(hop.getOutgoingInterface(), mappingContext); @@ -101,8 +108,8 @@ public class MultipathHopRequestFactory extends BasicHopRequestFactory implement return getMultipathHopRequest(add, route.getDestinationPrefix(), nextHopInterfaceIndex, - hop.getAddress(), - hop.getWeight().byteValue(), + hop.getAugmentation(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.class).getNextHopAddress(), + hop.getAugmentation(VppIpv6NextHopAugmentation.class).getWeight().byteValue(), getRoutingProtocolContext().getIndex(parentProtocolName, mappingContext), DEFAULT_VNI, classifyTableIndex(routingAttributes.getClassifyTable(), getVppClassifierContextManager(), @@ -112,8 +119,8 @@ public class MultipathHopRequestFactory extends BasicHopRequestFactory implement return getMultipathHopRequest(add, route.getDestinationPrefix(), nextHopInterfaceIndex, - hop.getAddress(), - hop.getWeight().byteValue(), + hop.getAugmentation(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.class).getNextHopAddress(), + hop.getAugmentation(VppIpv6NextHopAugmentation.class).getWeight().byteValue(), getRoutingProtocolContext().getIndex(parentProtocolName, mappingContext), DEFAULT_VNI, 0, diff --git a/routing/routing-impl/src/main/java/io/fd/hc2vpp/routing/write/factory/SimpleHopRequestFactory.java b/routing/routing-impl/src/main/java/io/fd/hc2vpp/routing/write/factory/SimpleHopRequestFactory.java index 6e404923f..079c953a3 100644 --- a/routing/routing-impl/src/main/java/io/fd/hc2vpp/routing/write/factory/SimpleHopRequestFactory.java +++ b/routing/routing-impl/src/main/java/io/fd/hc2vpp/routing/write/factory/SimpleHopRequestFactory.java @@ -22,17 +22,18 @@ import io.fd.hc2vpp.routing.write.trait.RouteRequestProducer; import io.fd.hc2vpp.vpp.classifier.context.VppClassifierContextManager; import io.fd.honeycomb.translate.MappingContext; import io.fd.vpp.jvpp.core.dto.IpAddDelRoute; - import javax.annotation.Nonnull; - import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Prefix; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Address; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Prefix; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ipv4.unicast.routing.rev170917.routing.routing.instance.routing.protocols.routing.protocol._static.routes.ipv4.route.VppIpv4Route; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ipv4.unicast.routing.rev170917.routing.routing.instance.routing.protocols.routing.protocol._static.routes.ipv4.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.VppIpv6Route; - +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ipv4.unicast.routing.rev180313.routing.control.plane.protocols.control.plane.protocol._static.routes.ipv4.Route; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ipv4.unicast.routing.rev180313.routing.control.plane.protocols.control.plane.protocol._static.routes.ipv4.route.next.hop.SimpleNextHop1; +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.vpp.ipv4.unicast.routing.rev180319.VppIpv4RouteAttributesAugmentation; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.vpp.ipv4.unicast.routing.rev180319.routing.control.plane.protocols.control.plane.protocol._static.routes.ipv4.route.VppIpv4Route; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.vpp.ipv6.unicast.routing.rev180319.VppIpv6RouteAttributesAugmentation; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.vpp.ipv6.unicast.routing.rev180319.routing.control.plane.protocols.control.plane.protocol._static.routes.ipv6.route.VppIpv6Route; /** * Factory for creating requests to create route with hop simple hop @@ -54,31 +55,35 @@ public class SimpleHopRequestFactory extends BasicHopRequestFactory implements R public IpAddDelRoute createIpv4SimpleHopRequest(final boolean add, @Nonnull final String parentProtocolName, - @Nonnull final org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ipv4.unicast.routing.rev170917.routing.routing.instance.routing.protocols.routing.protocol._static.routes.ipv4.Route route, + @Nonnull final Route route, @Nonnull final MappingContext mappingContext) { + SimpleNextHop simpleNextHop = (SimpleNextHop) route.getNextHop().getNextHopOptions(); + SimpleNextHop1 hop = simpleNextHop.getAugmentation(SimpleNextHop1.class); - final SimpleNextHop hop = SimpleNextHop.class.cast(route.getNextHopOptions()); - final VppIpv4Route routingAttributes = route.getVppIpv4Route(); final int nextHopInterfaceIndex = - getInterfaceNamingContext().getIndex(hop.getOutgoingInterface(), mappingContext); + getInterfaceNamingContext().getIndex(simpleNextHop.getOutgoingInterface(), mappingContext); + + final VppIpv4Route routingAttributes = + route.getAugmentation(VppIpv4RouteAttributesAugmentation.class) != null ? + route.getAugmentation(VppIpv4RouteAttributesAugmentation.class).getVppIpv4Route() : null; if (routingAttributes != null && classifyTablePresent(routingAttributes.getClassifyTable(), getVppClassifierContextManager(), mappingContext)) { return getSimpleHopRequest(add, - route.getDestinationPrefix(), - nextHopInterfaceIndex, - hop.getNextHop(), - getRoutingProtocolContext().getIndex(parentProtocolName, mappingContext), - DEFAULT_VNI, - classifyTableIndex(routingAttributes.getClassifyTable(), getVppClassifierContextManager(), - mappingContext), - true); + route.getDestinationPrefix(), + nextHopInterfaceIndex, + hop.getNextHopAddress(), + getRoutingProtocolContext().getIndex(parentProtocolName, mappingContext), + DEFAULT_VNI, + classifyTableIndex(routingAttributes.getClassifyTable(), + getVppClassifierContextManager(), mappingContext), + true); } else { return getSimpleHopRequest(add, route.getDestinationPrefix(), nextHopInterfaceIndex, - hop.getNextHop(), + hop.getNextHopAddress(), getRoutingProtocolContext().getIndex(parentProtocolName, mappingContext), DEFAULT_VNI, 0, @@ -88,15 +93,17 @@ public class SimpleHopRequestFactory extends BasicHopRequestFactory implements R public IpAddDelRoute createIpv6SimpleHopRequest(final boolean add, @Nonnull final String parentProtocolName, - @Nonnull final 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 route, + @Nonnull final 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 route, @Nonnull final MappingContext mappingContext) { - final 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 - hop = - (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) route - .getNextHopOptions(); - final VppIpv6Route routingAttributes = route.getVppIpv6Route(); + SimpleNextHop simpleNextHop = (SimpleNextHop) route.getNextHop().getNextHopOptions(); + final 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 + hop = simpleNextHop.getAugmentation(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.class); final int nextHopInterfaceIndex = - getInterfaceNamingContext().getIndex(hop.getOutgoingInterface(), mappingContext); + getInterfaceNamingContext().getIndex(simpleNextHop.getOutgoingInterface(), mappingContext); + + VppIpv6Route routingAttributes = + route.getAugmentation(VppIpv6RouteAttributesAugmentation.class) != null ? route.getAugmentation( + VppIpv6RouteAttributesAugmentation.class).getVppIpv6Route() : null; if (routingAttributes != null && classifyTablePresent(routingAttributes.getClassifyTable(), getVppClassifierContextManager(), @@ -104,7 +111,7 @@ public class SimpleHopRequestFactory extends BasicHopRequestFactory implements R return getSimpleHopRequest(add, route.getDestinationPrefix(), nextHopInterfaceIndex, - hop.getNextHop(), + hop.getNextHopAddress(), getRoutingProtocolContext().getIndex(parentProtocolName, mappingContext), DEFAULT_VNI, classifyTableIndex(routingAttributes.getClassifyTable(), getVppClassifierContextManager(), @@ -114,7 +121,7 @@ public class SimpleHopRequestFactory extends BasicHopRequestFactory implements R return getSimpleHopRequest(add, route.getDestinationPrefix(), nextHopInterfaceIndex, - hop.getNextHop(), + hop.getNextHopAddress(), getRoutingProtocolContext().getIndex(parentProtocolName, mappingContext), DEFAULT_VNI, 0, diff --git a/routing/routing-impl/src/main/java/io/fd/hc2vpp/routing/write/factory/SpecialNextHopRequestFactory.java b/routing/routing-impl/src/main/java/io/fd/hc2vpp/routing/write/factory/SpecialNextHopRequestFactory.java index 10e0fc555..85b998204 100644 --- a/routing/routing-impl/src/main/java/io/fd/hc2vpp/routing/write/factory/SpecialNextHopRequestFactory.java +++ b/routing/routing-impl/src/main/java/io/fd/hc2vpp/routing/write/factory/SpecialNextHopRequestFactory.java @@ -16,19 +16,19 @@ package io.fd.hc2vpp.routing.write.factory; +import static com.google.common.base.Preconditions.checkNotNull; + import io.fd.hc2vpp.common.translate.util.NamingContext; import io.fd.hc2vpp.routing.write.factory.base.BasicHopRequestFactory; import io.fd.hc2vpp.routing.write.trait.RouteRequestProducer; import io.fd.hc2vpp.vpp.classifier.context.VppClassifierContextManager; import io.fd.honeycomb.translate.MappingContext; import io.fd.vpp.jvpp.core.dto.IpAddDelRoute; +import javax.annotation.Nonnull; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Prefix; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Prefix; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.routing.rev140524.SpecialNextHopGrouping; - -import javax.annotation.Nonnull; - -import static com.google.common.base.Preconditions.checkNotNull; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ipv4.unicast.routing.rev180313.routing.control.plane.protocols.control.plane.protocol._static.routes.ipv4.Route; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.routing.rev180313.SpecialNextHop; public class SpecialNextHopRequestFactory extends BasicHopRequestFactory implements RouteRequestProducer { @@ -48,9 +48,9 @@ public class SpecialNextHopRequestFactory extends BasicHopRequestFactory public IpAddDelRoute createIpv4SpecialHopRequest(final boolean add, @Nonnull final String parentProtocolName, - @Nonnull final org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ipv4.unicast.routing.rev170917.routing.routing.instance.routing.protocols.routing.protocol._static.routes.ipv4.Route route, + @Nonnull final Route route, @Nonnull final MappingContext mappingContext, - @Nonnull final SpecialNextHopGrouping.SpecialNextHop flagsVariant) { + @Nonnull final SpecialNextHop.SpecialNextHopEnum flagsVariant) { checkNotNull(route, "Route cannot be null"); checkNotNull(mappingContext, "Mapping Context cannot be null"); checkNotNull(flagsVariant, "Flags variant cannot be null"); @@ -61,9 +61,9 @@ public class SpecialNextHopRequestFactory extends BasicHopRequestFactory public IpAddDelRoute createIpv6SpecialHopRequest(final boolean add, @Nonnull final String parentProtocolName, - @Nonnull final 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 route, + @Nonnull final 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 route, @Nonnull final MappingContext mappingContext, - @Nonnull final SpecialNextHopGrouping.SpecialNextHop flagsVariant) { + @Nonnull final SpecialNextHop.SpecialNextHopEnum flagsVariant) { checkNotNull(route, "Route cannot be null"); checkNotNull(mappingContext, "Mapping Context cannot be null"); @@ -89,7 +89,7 @@ public class SpecialNextHopRequestFactory extends BasicHopRequestFactory } private IpAddDelRoute resolveFlags(IpAddDelRoute request, - final SpecialNextHopGrouping.SpecialNextHop flagsVariant) { + final SpecialNextHop.SpecialNextHopEnum flagsVariant) { switch (flagsVariant) { case Blackhole: return resolveAsBlackholeVariant(request); diff --git a/routing/routing-impl/src/main/java/io/fd/hc2vpp/routing/write/factory/TableLookupRequestFactory.java b/routing/routing-impl/src/main/java/io/fd/hc2vpp/routing/write/factory/TableLookupRequestFactory.java index 231ffcaf4..8a11adc8f 100644 --- a/routing/routing-impl/src/main/java/io/fd/hc2vpp/routing/write/factory/TableLookupRequestFactory.java +++ b/routing/routing-impl/src/main/java/io/fd/hc2vpp/routing/write/factory/TableLookupRequestFactory.java @@ -22,16 +22,19 @@ import io.fd.hc2vpp.routing.write.trait.RouteRequestProducer; import io.fd.hc2vpp.vpp.classifier.context.VppClassifierContextManager; import io.fd.honeycomb.translate.MappingContext; import io.fd.vpp.jvpp.core.dto.IpAddDelRoute; +import java.util.Optional; +import javax.annotation.Nonnull; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Prefix; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Prefix; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ipv4.unicast.routing.rev170917.routing.routing.instance.routing.protocols.routing.protocol._static.routes.ipv4.route.next.hop.options.TableLookup; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ipv4.unicast.routing.rev170917.routing.routing.instance.routing.protocols.routing.protocol._static.routes.ipv4.route.next.hop.options.table.lookup.TableLookupParams; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.vpp.routing.rev170917.VniReference; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.vpp.routing.rev170917.VppRouteAttributes; - - -import javax.annotation.Nonnull; -import java.util.Optional; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ipv4.unicast.routing.rev180313.routing.control.plane.protocols.control.plane.protocol._static.routes.ipv4.Route; +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.TableLookupCase; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.vpp.ipv4.unicast.routing.rev180319.VppIpv4RouteAttributesAugmentation; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.vpp.ipv4.unicast.routing.rev180319.routing.control.plane.protocols.control.plane.protocol._static.routes.ipv4.route.VppIpv4Route; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.vpp.ipv6.unicast.routing.rev180319.VppIpv6RouteAttributesAugmentation; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.vpp.ipv6.unicast.routing.rev180319.routing.control.plane.protocols.control.plane.protocol._static.routes.ipv6.route.VppIpv6Route; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.vpp.routing.rev180319.VppRouteAttributes; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.vpp.routing.types.rev180406.VniReference; public class TableLookupRequestFactory extends BasicHopRequestFactory implements RouteRequestProducer { @@ -46,23 +49,26 @@ public class TableLookupRequestFactory extends BasicHopRequestFactory implements public IpAddDelRoute createV4TableLookupRouteRequest(final boolean add, @Nonnull final String parentProtocolName, - @Nonnull final org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ipv4.unicast.routing.rev170917.routing.routing.instance.routing.protocols.routing.protocol._static.routes.ipv4.Route route, + @Nonnull final Route route, @Nonnull final MappingContext mappingContext) { final Ipv4Prefix prefix = route.getDestinationPrefix(); final byte[] destinationAddress = ipv4AddressPrefixToArray(prefix); final byte destinationPrefix = extractPrefix(prefix); final int primaryTableId = getRoutingProtocolContext().getIndex(parentProtocolName, mappingContext); - final byte secondaryTableId = Optional.ofNullable(route.getNextHopOptions()) - .filter(nextHopOptions -> nextHopOptions instanceof TableLookup) - .map(TableLookup.class::cast) - .map(TableLookup::getTableLookupParams) - .map(TableLookupParams::getSecondaryVrf) + final byte secondaryTableId = Optional.ofNullable(route.getNextHop().getNextHopOptions()) + .filter(nextHopOptions -> nextHopOptions instanceof TableLookupCase) + .map(TableLookupCase.class::cast) + .map(TableLookupCase::getSecondaryVrf) .map(VniReference::getValue) .map(Long::byteValue) .orElseThrow(() -> new IllegalArgumentException("Table lookup option not specified correctly")); - final Optional<String> optClassifyTable = Optional.ofNullable(route.getVppIpv4Route()) + VppIpv4Route vppIpv4Route = + route.getAugmentation(VppIpv4RouteAttributesAugmentation.class) != null ? route.getAugmentation( + VppIpv4RouteAttributesAugmentation.class).getVppIpv4Route() : null; + + final Optional<String> optClassifyTable = Optional.ofNullable(vppIpv4Route) .map(VppRouteAttributes::getClassifyTable); final byte classifyTableSet = booleanToByte(optClassifyTable.isPresent()); final byte classifyTableIndex = optClassifyTable.map(tableName -> classifyTableIndex(tableName, getVppClassifierContextManager(), mappingContext)) @@ -75,23 +81,25 @@ public class TableLookupRequestFactory extends BasicHopRequestFactory implements public IpAddDelRoute createV6TableLookupRouteRequest(final boolean add, @Nonnull final String parentProtocolName, - @Nonnull final 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 route, + @Nonnull final 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 route, @Nonnull final MappingContext mappingContext) { final Ipv6Prefix prefix = route.getDestinationPrefix(); final byte[] destinationAddress = ipv6AddressPrefixToArray(prefix); final byte destinationPrefix = extractPrefix(prefix); final int primaryTableId = getRoutingProtocolContext().getIndex(parentProtocolName, mappingContext); - final byte secondaryTableId = Optional.ofNullable(route.getNextHopOptions()) - .filter(nextHopOptions -> nextHopOptions instanceof 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) - .map(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.class::cast) - .map(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::getTableLookupParams) - .map(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.table.lookup.TableLookupParams::getSecondaryVrf) + final byte secondaryTableId = Optional.ofNullable(route.getNextHop().getNextHopOptions()) + .filter(nextHopOptions -> nextHopOptions instanceof TableLookupCase) + .map(TableLookupCase.class::cast) + .map(TableLookupCase::getSecondaryVrf) .map(VniReference::getValue) .map(Long::byteValue) .orElseThrow(() -> new IllegalArgumentException("Table lookup option not specified correctly")); - final Optional<String> optClassifyTable = Optional.ofNullable(route.getVppIpv6Route()) + VppIpv6Route vppIpv6Route = route.getAugmentation(VppIpv6RouteAttributesAugmentation.class) != null + ? route.getAugmentation(VppIpv6RouteAttributesAugmentation.class).getVppIpv6Route() : null; + + final Optional<String> optClassifyTable = Optional.ofNullable(vppIpv6Route) .map(VppRouteAttributes::getClassifyTable); final byte classifyTableSet = booleanToByte(optClassifyTable.isPresent()); final byte classifyTableIndex = optClassifyTable.map(tableName -> classifyTableIndex(tableName, getVppClassifierContextManager(), mappingContext)) |