summaryrefslogtreecommitdiffstats
path: root/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/Ipv4LookupWriter.java
diff options
context:
space:
mode:
Diffstat (limited to 'mpls/impl/src/main/java/io/fd/hc2vpp/mpls/Ipv4LookupWriter.java')
-rw-r--r--mpls/impl/src/main/java/io/fd/hc2vpp/mpls/Ipv4LookupWriter.java29
1 files changed, 8 insertions, 21 deletions
diff --git a/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/Ipv4LookupWriter.java b/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/Ipv4LookupWriter.java
index 7ac164a96..94862c52b 100644
--- a/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/Ipv4LookupWriter.java
+++ b/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/Ipv4LookupWriter.java
@@ -25,8 +25,6 @@ import io.fd.vpp.jvpp.core.future.FutureJVppCore;
import javax.annotation.Nonnull;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.StaticLspConfig;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp.Config;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp_config.InSegment;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp_config.in.segment.type.MplsLabel;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.routing.mpls._static.lsps.StaticLsp;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.mpls.rev171120.LookupType;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.mpls.rev171120.StaticLspVppLookupAugmentation;
@@ -38,7 +36,7 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
*
* @see <a href="https://git.fd.io/vpp/tree/src/vnet/mpls/mpls.api">mpls_route_add_del</a> definition
*/
-final class Ipv4LookupWriter implements LspWriter {
+final class Ipv4LookupWriter implements LspWriter, MplsInSegmentTranslator {
private static final byte IPV4_PROTOCOL = (byte) LookupType.Ipv4.getIntValue();
private final FutureJVppCore vppApi;
@@ -55,8 +53,8 @@ final class Ipv4LookupWriter implements LspWriter {
request.mrIsAdd = booleanToByte(isAdd);
- translate(request, config);
- translate(request, config.getAugmentation(StaticLspVppLookupAugmentation.class));
+ translate(config.getInSegment(), request);
+ translate(config.getAugmentation(StaticLspVppLookupAugmentation.class), request);
// default values based on inspecting VPP's CLI and make test code
request.mrClassifyTableIndex = -1;
@@ -70,23 +68,12 @@ final class Ipv4LookupWriter implements LspWriter {
getReplyForWrite(vppApi.mplsRouteAddDel(request).toCompletableFuture(), id);
}
- private void translate(@Nonnull final MplsRouteAddDel request, @Nonnull final Config config) {
- final InSegment inSegment = config.getInSegment();
- checkArgument(inSegment != null, "Configuring ipv4 pop-and-lookup, but in-segment is missing.");
-
- checkArgument(inSegment.getType() instanceof MplsLabel, "Expecting mpls-label in-segment type, but %s given.",
- inSegment.getType());
- final Long label = ((MplsLabel) inSegment.getType()).getIncomingLabel().getValue();
- request.mrLabel = label.intValue();
- }
-
- private void translate(@Nonnull final MplsRouteAddDel request,
- @Nonnull final StaticLspVppLookupAugmentation vppLabelLookup) {
+ private void translate(@Nonnull final StaticLspVppLookupAugmentation vppLabelLookup,
+ @Nonnull final MplsRouteAddDel request) {
// IPv4 lookup should only happen if there is no more labels to process, so setting the EOS bit:
request.mrEos = 1;
- final Long lookupInTable = vppLabelLookup.getLabelLookup().getIp4LookupInTable();
- checkArgument(lookupInTable != null,
- "Configuring pop and ipv4 lookup, but ipv4 lookup table was not given");
- request.mrNextHopTableId = lookupInTable.intValue();
+ final Long lookupTable = vppLabelLookup.getLabelLookup().getIp4LookupInTable();
+ checkArgument(lookupTable != null, "Configuring pop and ipv4 lookup, but ipv4 lookup table was not given");
+ request.mrNextHopTableId = lookupTable.intValue();
}
}