diff options
Diffstat (limited to 'nsh/impl/src/main/java/io/fd/hc2vpp/vppnsh/impl/config/NshMapWriterCustomizer.java')
-rwxr-xr-x | nsh/impl/src/main/java/io/fd/hc2vpp/vppnsh/impl/config/NshMapWriterCustomizer.java | 37 |
1 files changed, 21 insertions, 16 deletions
diff --git a/nsh/impl/src/main/java/io/fd/hc2vpp/vppnsh/impl/config/NshMapWriterCustomizer.java b/nsh/impl/src/main/java/io/fd/hc2vpp/vppnsh/impl/config/NshMapWriterCustomizer.java index 8b77ad66b..486655cd3 100755 --- a/nsh/impl/src/main/java/io/fd/hc2vpp/vppnsh/impl/config/NshMapWriterCustomizer.java +++ b/nsh/impl/src/main/java/io/fd/hc2vpp/vppnsh/impl/config/NshMapWriterCustomizer.java @@ -38,6 +38,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.nsh. import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.nsh.rev161214.VxlanGpe; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.nsh.rev161214.Vxlan4; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.nsh.rev161214.Vxlan6; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.nsh.rev161214.None; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.nsh.rev161214.vpp.nsh.nsh.maps.NshMap; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.nsh.rev161214.vpp.nsh.nsh.maps.NshMapKey; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; @@ -48,15 +49,15 @@ import org.slf4j.LoggerFactory; * Writer customizer responsible for NshMap create/delete. */ public class NshMapWriterCustomizer extends FutureJVppNshCustomizer - implements ListWriterCustomizer<NshMap, NshMapKey>, ByteDataTranslator, JvppReplyConsumer { +implements ListWriterCustomizer<NshMap, NshMapKey>, ByteDataTranslator, JvppReplyConsumer { private static final Logger LOG = LoggerFactory.getLogger(NshMapWriterCustomizer.class); private final NamingContext nshMapContext; private final NamingContext interfaceContext; public NshMapWriterCustomizer(@Nonnull final FutureJVppNsh futureJVppNsh, - @Nonnull final NamingContext nshMapContext, - @Nonnull final NamingContext interfaceContext) { + @Nonnull final NamingContext nshMapContext, + @Nonnull final NamingContext interfaceContext) { super(futureJVppNsh); this.nshMapContext = checkNotNull(nshMapContext, "nshMapContext should not be null"); this.interfaceContext = checkNotNull(interfaceContext, "interfaceContext should not be null"); @@ -64,8 +65,8 @@ public class NshMapWriterCustomizer extends FutureJVppNshCustomizer @Override public void writeCurrentAttributes(@Nonnull final InstanceIdentifier<NshMap> id, - @Nonnull final NshMap dataAfter, @Nonnull final WriteContext writeContext) - throws WriteFailedException { + @Nonnull final NshMap dataAfter, @Nonnull final WriteContext writeContext) + throws WriteFailedException { LOG.debug("Creating nsh map: iid={} dataAfter={}", id, dataAfter); final int newMapIndex = nshAddDelMap(true, id, dataAfter, ~0 /* value not present */, writeContext.getMappingContext()); @@ -77,15 +78,15 @@ public class NshMapWriterCustomizer extends FutureJVppNshCustomizer @Override public void updateCurrentAttributes(@Nonnull final InstanceIdentifier<NshMap> id, - @Nonnull final NshMap dataBefore, @Nonnull final NshMap dataAfter, - @Nonnull final WriteContext writeContext) throws WriteFailedException { + @Nonnull final NshMap dataBefore, @Nonnull final NshMap dataAfter, + @Nonnull final WriteContext writeContext) throws WriteFailedException { throw new UnsupportedOperationException("Nsh map update is not supported"); } @Override public void deleteCurrentAttributes(@Nonnull final InstanceIdentifier<NshMap> id, - @Nonnull final NshMap dataBefore, - @Nonnull final WriteContext writeContext) throws WriteFailedException { + @Nonnull final NshMap dataBefore, + @Nonnull final WriteContext writeContext) throws WriteFailedException { LOG.debug("Removing nsh map: iid={} dataBefore={}", id, dataBefore); final String mapName = dataBefore.getName(); checkState(nshMapContext.containsIndex(mapName, writeContext.getMappingContext()), @@ -100,8 +101,8 @@ public class NshMapWriterCustomizer extends FutureJVppNshCustomizer } private int nshAddDelMap(final boolean isAdd, @Nonnull final InstanceIdentifier<NshMap> id, - @Nonnull final NshMap map, final int mapId, final MappingContext ctx) - throws WriteFailedException { + @Nonnull final NshMap map, final int mapId, final MappingContext ctx) + throws WriteFailedException { final CompletionStage<NshAddDelMapReply> createNshMapReplyCompletionStage = getFutureJVppNsh().nshAddDelMap(getNshAddDelMapRequest(isAdd, mapId, map, ctx)); @@ -111,8 +112,8 @@ public class NshMapWriterCustomizer extends FutureJVppNshCustomizer } private NshAddDelMap getNshAddDelMapRequest(final boolean isAdd, final int mapIndex, - @Nonnull final NshMap map, - @Nonnull final MappingContext ctx) { + @Nonnull final NshMap map, + @Nonnull final MappingContext ctx) { final NshAddDelMap request = new NshAddDelMap(); request.isAdd = booleanToByte(isAdd); @@ -133,11 +134,15 @@ public class NshMapWriterCustomizer extends FutureJVppNshCustomizer request.nextNode = 3; } else if (map.getEncapType() == Vxlan6.class) { request.nextNode = 4; + } else if (map.getEncapType() == None.class) { + request.nextNode = 5; } - checkState(interfaceContext.containsIndex(map.getEncapIfName(), ctx), - "Mapping does not contains mapping for provider interface Name ".concat(map.getEncapIfName())); - request.swIfIndex = interfaceContext.getIndex(map.getEncapIfName(), ctx); + if (map.getEncapType() != None.class) { + checkState(interfaceContext.containsIndex(map.getEncapIfName(), ctx), + "Mapping does not contains mapping for provider interface Name ".concat(map.getEncapIfName())); + request.swIfIndex = interfaceContext.getIndex(map.getEncapIfName(), ctx); + } return request; } |