diff options
author | Jan Srnicek <jsrnicek@cisco.com> | 2017-09-28 13:31:17 +0200 |
---|---|---|
committer | Jan Srnicek <jsrnicek@cisco.com> | 2017-09-28 13:31:17 +0200 |
commit | 8c31963654d126fa1b670c3d10c0ee81f445166a (patch) | |
tree | 1492d8e3dddf11364d8844571a4579895cb34705 /routing/routing-impl/src/main/java/io/fd/hc2vpp/routing/write/factory/SpecialNextHopRequestFactory.java | |
parent | 1ccfb17154bf025ac320ffea3433cd62bedc221c (diff) |
HC2VPP-232 - Secondary table lookup support
Ietf models now contains case table-lookup to be able to define
lookup to secondary table. It must be separated to dedicated case
as combining secondary-vrf and other next hop types(simple,multi,special)
does not make sense, its either you define lookup to table,
or you specify next hop of some kind.
This patch works properly only for write,
as read is affected by VPP-994/VPP-995.
Read at this state can detect that route is using table lookup,
but can't detect table that is used for that lookup.
Also, HC2VPP-237 must be done in future
Change-Id: Ia6976b35c6c1712d8add60beea7b0edbc4536974
Signed-off-by: Jan Srnicek <jsrnicek@cisco.com>
Diffstat (limited to 'routing/routing-impl/src/main/java/io/fd/hc2vpp/routing/write/factory/SpecialNextHopRequestFactory.java')
-rw-r--r-- | routing/routing-impl/src/main/java/io/fd/hc2vpp/routing/write/factory/SpecialNextHopRequestFactory.java | 36 |
1 files changed, 11 insertions, 25 deletions
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 49e1bc1c5..10e0fc555 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,21 +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 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.routing.rev140524.SpecialNextHopGrouping; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.vpp.routing.rev161214.VniReference; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.vpp.routing.rev161214.VppRouteAttributes; + +import javax.annotation.Nonnull; + +import static com.google.common.base.Preconditions.checkNotNull; public class SpecialNextHopRequestFactory extends BasicHopRequestFactory implements RouteRequestProducer { @@ -38,7 +36,7 @@ public class SpecialNextHopRequestFactory extends BasicHopRequestFactory private SpecialNextHopRequestFactory(final VppClassifierContextManager classifierContextManager, final NamingContext interfaceContext, final NamingContext routingProtocolContext) { - super(classifierContextManager,interfaceContext,routingProtocolContext); + super(classifierContextManager, interfaceContext, routingProtocolContext); } public static SpecialNextHopRequestFactory forContexts( @@ -50,26 +48,20 @@ 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.rev140524.routing.routing.instance.routing.protocols.routing.protocol._static.routes.ipv4.Route route, + @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 MappingContext mappingContext, @Nonnull final SpecialNextHopGrouping.SpecialNextHop flagsVariant) { checkNotNull(route, "Route cannot be null"); checkNotNull(mappingContext, "Mapping Context cannot be null"); checkNotNull(flagsVariant, "Flags variant cannot be null"); - final int parentProtocolTableId = getRoutingProtocolContext().getIndex(parentProtocolName,mappingContext); - final byte secondaryTableId = Optional.ofNullable(route.getVppIpv4Route()) - .map(VppRouteAttributes::getSecondaryVrf) - .map(VniReference::getValue) - .map(Long::byteValue) - .orElse(DEFAULT_VNI); - - return resolveFlags(getSpecialHopRequest(add, route.getDestinationPrefix(), (byte) parentProtocolTableId, secondaryTableId), flagsVariant); + final int parentProtocolTableId = getRoutingProtocolContext().getIndex(parentProtocolName, mappingContext); + return resolveFlags(getSpecialHopRequest(add, route.getDestinationPrefix(), (byte) parentProtocolTableId, DEFAULT_VNI), flagsVariant); } 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.rev140525.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 route, @Nonnull final MappingContext mappingContext, @Nonnull final SpecialNextHopGrouping.SpecialNextHop flagsVariant) { @@ -77,14 +69,8 @@ public class SpecialNextHopRequestFactory extends BasicHopRequestFactory checkNotNull(mappingContext, "Mapping Context cannot be null"); checkNotNull(flagsVariant, "Flags variant cannot be null"); - final int parentProtocolTableId = getRoutingProtocolContext().getIndex(parentProtocolName,mappingContext); - final byte secondaryTableId = Optional.ofNullable(route.getVppIpv6Route()) - .map(VppRouteAttributes::getSecondaryVrf) - .map(VniReference::getValue) - .map(Long::byteValue) - .orElse(DEFAULT_VNI); - - return resolveFlags(getSpecialHopRequest(add, route.getDestinationPrefix(), (byte) parentProtocolTableId, secondaryTableId), flagsVariant); + final int parentProtocolTableId = getRoutingProtocolContext().getIndex(parentProtocolName, mappingContext); + return resolveFlags(getSpecialHopRequest(add, route.getDestinationPrefix(), (byte) parentProtocolTableId, DEFAULT_VNI), flagsVariant); } private IpAddDelRoute getSpecialHopRequest(final boolean isAdd, @Nonnull final Ipv6Prefix destinationAddress, |