diff options
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.java | 33 |
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) { |