summaryrefslogtreecommitdiffstats
path: root/srv6/srv6-impl/src/main/java/io/fd/hc2vpp/srv6/util/function/xconnect/XConnectFunctionBinder.java
diff options
context:
space:
mode:
Diffstat (limited to 'srv6/srv6-impl/src/main/java/io/fd/hc2vpp/srv6/util/function/xconnect/XConnectFunctionBinder.java')
-rw-r--r--srv6/srv6-impl/src/main/java/io/fd/hc2vpp/srv6/util/function/xconnect/XConnectFunctionBinder.java33
1 files changed, 12 insertions, 21 deletions
diff --git a/srv6/srv6-impl/src/main/java/io/fd/hc2vpp/srv6/util/function/xconnect/XConnectFunctionBinder.java b/srv6/srv6-impl/src/main/java/io/fd/hc2vpp/srv6/util/function/xconnect/XConnectFunctionBinder.java
index 9f69c9041..eef5d9622 100644
--- a/srv6/srv6-impl/src/main/java/io/fd/hc2vpp/srv6/util/function/xconnect/XConnectFunctionBinder.java
+++ b/srv6/srv6-impl/src/main/java/io/fd/hc2vpp/srv6/util/function/xconnect/XConnectFunctionBinder.java
@@ -16,46 +16,37 @@
package io.fd.hc2vpp.srv6.util.function.xconnect;
-import static com.google.common.base.Preconditions.checkState;
import static java.lang.String.format;
-import com.google.common.collect.ImmutableMap;
import io.fd.hc2vpp.common.translate.util.AddressTranslator;
import io.fd.hc2vpp.common.translate.util.FutureJVppCustomizer;
import io.fd.hc2vpp.common.translate.util.NamingContext;
-import io.fd.hc2vpp.srv6.util.function.LocalSidFunctionBinder;
+import io.fd.hc2vpp.srv6.util.function.LocalSidFunctionReadBinder;
+import io.fd.hc2vpp.srv6.util.function.LocalSidFunctionWriteBinder;
import io.fd.hc2vpp.srv6.write.sid.request.XConnectLocalSidRequest;
import io.fd.honeycomb.translate.MappingContext;
import io.fd.vpp.jvpp.core.future.FutureJVppCore;
-import java.util.Map;
import javax.annotation.Nonnull;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.srv6.types.rev180301.EndDX2;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.srv6.types.rev180301.EndDX4;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.srv6.types.rev180301.EndDX6;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.srv6.types.rev180301.EndX;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.srv6.types.rev180301.Srv6EndpointType;
abstract class XConnectFunctionBinder extends FutureJVppCustomizer
- implements LocalSidFunctionBinder<XConnectLocalSidRequest>, AddressTranslator {
-
- private static final Map<Class<? extends Srv6EndpointType>, Integer>
- REGISTER = ImmutableMap.of(EndX.class, 2,
- EndDX2.class, 5,
- EndDX4.class, 7,
- EndDX6.class, 6);
+ implements LocalSidFunctionWriteBinder<XConnectLocalSidRequest>, LocalSidFunctionReadBinder, AddressTranslator {
private final NamingContext interfaceContext;
+ static final long DEFAULT_WEIGHT = 1L;
+ static final short DEFAULT_PATH_INDEX = 1;
XConnectFunctionBinder(@Nonnull final FutureJVppCore api, @Nonnull final NamingContext interfaceContext) {
super(api);
this.interfaceContext = interfaceContext;
- checkState(REGISTER.containsKey(getHandledFunctionType()), "Unsupported type of Local SID function %s",
- getHandledFunctionType());
}
- @Override
- public int getBehaviourFunctionType() {
- return REGISTER.get(getHandledFunctionType());
+ String getInterfaceName(final MappingContext ctx, final int index) {
+ return interfaceContext.getName(index, ctx);
+ }
+
+ protected int getVLanIndex(final MappingContext ctx, final String name) {
+ return interfaceContext.getIndex(name, ctx, () -> new IllegalArgumentException(
+ format("VLan with name %s not found", name)));
}
int getInterfaceIndex(final MappingContext ctx, final String name) {