diff options
author | Michal Cmarada <michal.cmarada@pantheon.tech> | 2018-06-15 13:10:53 +0200 |
---|---|---|
committer | Marek Gradzki <mgradzki@cisco.com> | 2018-06-19 18:56:27 +0000 |
commit | a0884f2792c31a3a93fb1654ceea754b6c612920 (patch) | |
tree | 7eff9ff4f745a6ca116ebbf6884d178a508b9303 /srv6/srv6-impl/src/main/java/io/fd/hc2vpp/srv6/util/function/xconnect/EndXFunctionBinder.java | |
parent | 3edc384ac6cbeb68d36dbb4a51aa027c3bd3257d (diff) |
HC2VPP-288 - add readers for SRv6 module
Changes:
- add locator context to map locator name to locator IPv6Prefix
- add readers for SRv6 module
- implements reading of local sids and their end functions.
- implements support for FIB table management (HC2VPP-345)
Change-Id: Ib04402539a0b6666c5a1d0b4e1b5b5e08ccbf67b
Signed-off-by: Michal Cmarada <michal.cmarada@pantheon.tech>
Diffstat (limited to 'srv6/srv6-impl/src/main/java/io/fd/hc2vpp/srv6/util/function/xconnect/EndXFunctionBinder.java')
-rw-r--r-- | srv6/srv6-impl/src/main/java/io/fd/hc2vpp/srv6/util/function/xconnect/EndXFunctionBinder.java | 38 |
1 files changed, 37 insertions, 1 deletions
diff --git a/srv6/srv6-impl/src/main/java/io/fd/hc2vpp/srv6/util/function/xconnect/EndXFunctionBinder.java b/srv6/srv6-impl/src/main/java/io/fd/hc2vpp/srv6/util/function/xconnect/EndXFunctionBinder.java index 0b3af395c..e153bd5f8 100644 --- a/srv6/srv6-impl/src/main/java/io/fd/hc2vpp/srv6/util/function/xconnect/EndXFunctionBinder.java +++ b/srv6/srv6-impl/src/main/java/io/fd/hc2vpp/srv6/util/function/xconnect/EndXFunctionBinder.java @@ -19,17 +19,29 @@ package io.fd.hc2vpp.srv6.util.function.xconnect; import com.google.common.base.Preconditions; import io.fd.hc2vpp.common.translate.util.NamingContext; import io.fd.hc2vpp.srv6.write.sid.request.XConnectLocalSidRequest; +import io.fd.honeycomb.translate.read.ReadContext; import io.fd.honeycomb.translate.write.WriteContext; +import io.fd.vpp.jvpp.core.dto.SrLocalsidsDetails; import io.fd.vpp.jvpp.core.future.FutureJVppCore; +import java.util.Collections; import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6AddressNoZone; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.srv6._static.rev180301.multi.paths.v6.PathsBuilder; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.srv6._static.rev180301.multi.paths.v6.paths.Path; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.srv6._static.rev180301.multi.paths.v6.paths.PathBuilder; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.srv6._static.rev180301.srv6._static.cfg.Sid; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.srv6._static.rev180301.srv6._static.cfg.SidBuilder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.srv6._static.rev180301.srv6.sid.config.EndXBuilder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.srv6.base.rev180301.PathAttrsCmn; +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; public class EndXFunctionBinder extends XConnectFunctionBinder { + private static final int END_X_FUNCTION_VALUE = 2; + public EndXFunctionBinder(@Nonnull FutureJVppCore api, @Nonnull NamingContext interfaceContext) { super(api, interfaceContext); } @@ -53,9 +65,33 @@ public class EndXFunctionBinder extends XConnectFunctionBinder { return request; } + @Override + public void translateFromDump(@Nonnull SrLocalsidsDetails data, @Nonnull ReadContext ctx, + @Nonnull final SidBuilder builder) { + Ipv6AddressNoZone ipv6AddressNoZone = arrayToIpv6AddressNoZone(data.xconnectNhAddr6); + String interfaceName = getInterfaceName(ctx.getMappingContext(), data.xconnectIfaceOrVrfTable); + EndXBuilder endX = new EndXBuilder() + // TODO(HC2VPP-335): currently vpp allows to configure only one next hop + // therefore setting path index, role and weight to constants + .setPaths(new PathsBuilder().setPath(Collections.singletonList( + new PathBuilder() + .setNextHop(ipv6AddressNoZone) + .setInterface(interfaceName) + .setPathIndex(DEFAULT_PATH_INDEX) + .setWeight(DEFAULT_WEIGHT) + .setRole(PathAttrsCmn.Role.PRIMARY) + .build())).build()); + builder.setEndX(endX.build()); + } + @Nonnull @Override public Class<? extends Srv6EndpointType> getHandledFunctionType() { - return org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.srv6.types.rev180301.EndX.class; + return EndX.class; + } + + @Override + public int getBehaviourFunctionType() { + return END_X_FUNCTION_VALUE; } } |