aboutsummaryrefslogtreecommitdiffstats
path: root/test/vpp_sub_interface.py
AgeCommit message (Expand)AuthorFilesLines
2019-08-20api: Cleanup APIs interface.apiJakub Grajciar1-2/+6
2019-03-29tests: test/vpp_l2.py fix missing name.Paul Vinciguerra1-1/+12
2019-03-15Revert "API: Cleanup APIs interface.api"Ole Trøan1-6/+2
2019-03-15API: Cleanup APIs interface.apiJakub Grajciar1-2/+6
2019-03-11vpp_papi_provider: Remove more wrapper functions.Ole Troan1-4/+5
2019-03-04test framework: Fix wrapper functions to match API message names.Ole Troan1-3/+3
2019-02-26VPP-1508 Python3 abstract classesPaul Vinciguerra1-5/+6
2018-06-25make test: fix broken interfaces #2Klement Sekera1-1/+7
2018-06-24Revert "Revert "make test: fix broken interfaces""Klement Sekera1-14/+11
2018-06-22Revert "make test: fix broken interfaces"Ole Troan1-11/+14
2018-06-22make test: fix broken interfacesKlement Sekera1-14/+11
2018-03-18Remove unnumbered configuration on interface deleteNeale Ranns1-0/+2
2017-08-01P2P EthernetPavel Kotucek1-0/+23
2017-06-21L2-VTR: add vtr testsEyal Bari1-35/+85
2016-11-24Remove postinit from make-test interfacesMatej Klotton1-14/+7
2016-11-22GRE tests and fixesNeale Ranns1-0/+3
2016-11-11Add IRB testMatej Klotton1-7/+8
2016-10-26refactor test frameworkKlement Sekera1-0/+143
pan> io.fd.honeycomb.translate.MappingContext; import io.fd.vpp.jvpp.core.dto.IpAddDelRoute; 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 java.util.Optional; import static com.google.common.base.Preconditions.checkNotNull; public class SpecialNextHopRequestFactory extends BasicHopRequestFactory implements RouteRequestProducer { private SpecialNextHopRequestFactory(final VppClassifierContextManager classifierContextManager, final NamingContext interfaceContext, final NamingContext routingProtocolContext) { super(classifierContextManager,interfaceContext,routingProtocolContext); } public static SpecialNextHopRequestFactory forContexts( @Nonnull final VppClassifierContextManager classifierContextManager, @Nonnull final NamingContext interfaceContext, @Nonnull final NamingContext routingProtocolContext) { return new SpecialNextHopRequestFactory(classifierContextManager, interfaceContext, routingProtocolContext); } 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 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); } 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 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.getVppIpv6Route()) .map(VppRouteAttributes::getSecondaryVrf) .map(VniReference::getValue) .map(Long::byteValue) .orElse(DEFAULT_VNI); return resolveFlags(getSpecialHopRequest(add, route.getDestinationPrefix(), (byte) parentProtocolTableId, secondaryTableId), flagsVariant); } private IpAddDelRoute getSpecialHopRequest(final boolean isAdd, @Nonnull final Ipv6Prefix destinationAddress, final byte primaryTableId, final byte secondaryTableId) { return flaglessAddDelRouteRequest(booleanToByte(isAdd), 0, null, DEFAULT_HOP_WEIGHT, BYTE_TRUE, ipv6AddressPrefixToArray(destinationAddress), extractPrefix(destinationAddress.getValue()), BYTE_FALSE, primaryTableId, secondaryTableId, DEFAULT_CLASSIFY_TABLE_INDEX, BYTE_FALSE); } private IpAddDelRoute getSpecialHopRequest(final boolean isAdd, @Nonnull final Ipv4Prefix destinationAddress, final byte primaryTableId, final byte secondaryTableId) { return flaglessAddDelRouteRequest(booleanToByte(isAdd), 0, null, DEFAULT_HOP_WEIGHT, BYTE_FALSE, ipv4AddressPrefixToArray(destinationAddress), extractPrefix(destinationAddress.getValue()), BYTE_FALSE, primaryTableId, secondaryTableId, DEFAULT_CLASSIFY_TABLE_INDEX, BYTE_FALSE); } private IpAddDelRoute resolveFlags(IpAddDelRoute request, final SpecialNextHopGrouping.SpecialNextHop flagsVariant) { switch (flagsVariant) { case Blackhole: return resolveAsBlackholeVariant(request); case Unreachable: return resolveAsUnreachableVariant(request); case Prohibit: return resolveAsProhibitedVariant(request); case Receive: return resolveAsReceiveVariant(request); default: throw new IllegalArgumentException("Unsupported type"); } } private IpAddDelRoute resolveAsBlackholeVariant(IpAddDelRoute request) { return bindFlags(request, true, false, false, false); } private IpAddDelRoute resolveAsReceiveVariant(IpAddDelRoute request) { return bindFlags(request, false, true, false, false); } private IpAddDelRoute resolveAsUnreachableVariant(IpAddDelRoute request) { return bindFlags(request, false, false, true, false); } private IpAddDelRoute resolveAsProhibitedVariant(IpAddDelRoute request) { return bindFlags(request, false, false, false, true); } private IpAddDelRoute bindFlags(IpAddDelRoute request, final boolean isDrop, final boolean isReceive, final boolean isUnreachable, final boolean isProhibited) { request.isDrop = booleanToByte(isDrop); request.isLocal = booleanToByte(isReceive); request.isUnreach = booleanToByte(isUnreachable); request.isProhibit = booleanToByte(isProhibited); return request; } }