From: Lorand Jakab Date: Mon, 30 Nov 2015 23:09:26 +0000 (+0200) Subject: Migrate implementation/neutron/southbound to IETF YANG model X-Git-Tag: release/beryllium~69 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=54a0a75a2c0a6fa6a7cda4a66a7a2f475f9d3583;p=lispflowmapping.git Migrate implementation/neutron/southbound to IETF YANG model Change-Id: I2e7738f5c518a51c1a309d63854bfaced3d6375c Signed-off-by: Lorand Jakab Signed-off-by: Florin Coras --- diff --git a/artifacts/pom.xml b/artifacts/pom.xml index e58207adb..6df17f7b5 100644 --- a/artifacts/pom.xml +++ b/artifacts/pom.xml @@ -22,7 +22,6 @@ and is available at http://www.eclipse.org/legal/epl-v10.html mappingservice.api ${project.version} - ${project.groupId} mappingservice.lisp-proto ${project.version} - ${project.groupId} features-lispflowmapping diff --git a/distribution-karaf/pom.xml b/distribution-karaf/pom.xml index ad9e21be2..e84766918 100644 --- a/distribution-karaf/pom.xml +++ b/distribution-karaf/pom.xml @@ -26,8 +26,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html - - odl-lispflowmapping-models + odl-lispflowmapping-msmr diff --git a/features/pom.xml b/features/pom.xml index b2916bf56..00b91d5b5 100644 --- a/features/pom.xml +++ b/features/pom.xml @@ -89,7 +89,6 @@ and is available at http://www.eclipse.org/legal/epl-v10.html xml runtime - ${project.groupId} mappingservice.api ${project.version} - ${project.groupId} mappingservice.lisp-proto ${project.version} - diff --git a/features/src/main/features/features.xml b/features/src/main/features/features.xml index 6f87ec5c2..974746882 100644 --- a/features/src/main/features/features.xml +++ b/features/src/main/features/features.xml @@ -18,12 +18,9 @@ mvn:org.opendaylight.netconf/features-restconf/{{VERSION}}/xml/features mvn:org.opendaylight.controller/features-config/{{VERSION}}/xml/features - - odl-config-api diff --git a/mappingservice/implementation/pom.xml b/mappingservice/implementation/pom.xml index 8dfe73547..e8a3e7baf 100644 --- a/mappingservice/implementation/pom.xml +++ b/mappingservice/implementation/pom.xml @@ -35,4 +35,25 @@ org.eclipse.osgi + + + + + + maven-compiler-plugin + + + default-testCompile + test-compile + + testCompile + + + true + + + + + + diff --git a/mappingservice/implementation/src/main/java/org/opendaylight/controller/config/yang/config/lfm/mappingservice/shell/impl/MappingServiceShellModule.java b/mappingservice/implementation/src/main/java/org/opendaylight/controller/config/yang/config/lfm/mappingservice/shell/impl/MappingServiceShellModule.java deleted file mode 100644 index 33cc8ec61..000000000 --- a/mappingservice/implementation/src/main/java/org/opendaylight/controller/config/yang/config/lfm/mappingservice/shell/impl/MappingServiceShellModule.java +++ /dev/null @@ -1,29 +0,0 @@ -package org.opendaylight.controller.config.yang.config.lfm.mappingservice.shell.impl; - -import org.opendaylight.lispflowmapping.implementation.MappingServiceShell; - -public class MappingServiceShellModule extends org.opendaylight.controller.config.yang.config.lfm.mappingservice.shell.impl.AbstractMappingServiceShellModule { - private MappingServiceShell mappingServiceShell; - - public MappingServiceShellModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) { - super(identifier, dependencyResolver); - } - - public MappingServiceShellModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, org.opendaylight.controller.config.yang.config.lfm.mappingservice.shell.impl.MappingServiceShellModule oldModule, java.lang.AutoCloseable oldInstance) { - super(identifier, dependencyResolver, oldModule, oldInstance); - } - - @Override - public void customValidation() { - // add custom validation form module attributes here. - } - - @Override - public java.lang.AutoCloseable createInstance() { - mappingServiceShell = new MappingServiceShell(); - mappingServiceShell.setBindingAwareBroker(getBrokerDependency()); - mappingServiceShell.setMappingService(getMappingserviceDependency()); - return mappingServiceShell; - } - -} diff --git a/mappingservice/implementation/src/main/java/org/opendaylight/controller/config/yang/config/lfm/mappingservice/shell/impl/MappingServiceShellModuleFactory.java b/mappingservice/implementation/src/main/java/org/opendaylight/controller/config/yang/config/lfm/mappingservice/shell/impl/MappingServiceShellModuleFactory.java deleted file mode 100644 index eb8de026c..000000000 --- a/mappingservice/implementation/src/main/java/org/opendaylight/controller/config/yang/config/lfm/mappingservice/shell/impl/MappingServiceShellModuleFactory.java +++ /dev/null @@ -1,13 +0,0 @@ -/* -* Generated file -* -* Generated from: yang module name: mappingservice-shell-impl yang module local name: mappingservice-shell-impl -* Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator -* Generated at: Fri Sep 25 12:24:36 CEST 2015 -* -* Do not modify this file unless it is present under src/main directory -*/ -package org.opendaylight.controller.config.yang.config.lfm.mappingservice.shell.impl; -public class MappingServiceShellModuleFactory extends org.opendaylight.controller.config.yang.config.lfm.mappingservice.shell.impl.AbstractMappingServiceShellModuleFactory { - -} diff --git a/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/LispMappingService.java b/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/LispMappingService.java index 83e0a0bc1..b349d2193 100644 --- a/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/LispMappingService.java +++ b/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/LispMappingService.java @@ -29,21 +29,21 @@ import org.opendaylight.lispflowmapping.lisp.util.LispAddressStringifier; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.AddMapping; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.GotMapNotify; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.GotMapReply; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.LispProtoListener; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.MapNotify; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.MapRegister; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.MapReply; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.MapRequest; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.OdlLispProtoListener; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.RequestMapping; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.XtrReplyMapping; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.XtrRequestMapping; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.lispaddress.LispAddressContainer; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapnotifymessage.MapNotifyBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapreplymessage.MapReplyBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.maprequestmessage.MapRequestBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.transportaddress.TransportAddress; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.transportaddress.TransportAddressBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.sb.rev150904.LispSbService; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.rloc.container.Rloc; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.transport.address.TransportAddress; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.transport.address.TransportAddressBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.sb.rev150904.OdlLispSbService; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.sb.rev150904.SendMapNotifyInputBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.sb.rev150904.SendMapReplyInputBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.sb.rev150904.SendMapRequestInputBuilder; @@ -52,7 +52,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class LispMappingService implements IFlowMapping, BindingAwareProvider, IMapRequestResultHandler, - IMapNotifyHandler, LispProtoListener, AutoCloseable { + IMapNotifyHandler, OdlLispProtoListener, AutoCloseable { protected static final Logger LOG = LoggerFactory.getLogger(LispMappingService.class); private volatile boolean shouldAuthenticate = true; @@ -65,7 +65,7 @@ public class LispMappingService implements IFlowMapping, BindingAwareProvider, I private ThreadLocal tlsMapNotify = new ThreadLocal(); private ThreadLocal> tlsMapRequest = new ThreadLocal>(); - private LispSbService lispSB = null; + private OdlLispSbService lispSB = null; private IMapResolverAsync mapResolver; private IMapServerAsync mapServer; @@ -130,7 +130,7 @@ public class LispMappingService implements IFlowMapping, BindingAwareProvider, I public MapReply handleMapRequest(MapRequest request) { LOG.debug("DAO: Retrieving mapping for {}", - LispAddressStringifier.getString(request.getEidRecord().get(0).getLispAddressContainer())); + LispAddressStringifier.getString(request.getEidItem().get(0).getEid())); tlsMapReply.set(null); tlsMapRequest.set(null); @@ -150,7 +150,8 @@ public class LispMappingService implements IFlowMapping, BindingAwareProvider, I public MapNotify handleMapRegister(MapRegister mapRegister) { LOG.debug("DAO: Adding mapping for {}", - LispAddressStringifier.getString(mapRegister.getEidToLocatorRecord().get(0).getLispAddressContainer())); + LispAddressStringifier.getString(mapRegister.getMappingRecordItem().get(0) + .getMappingRecord().getEid())); tlsMapNotify.set(null); mapServer.handleMapRegister(mapRegister); @@ -160,7 +161,8 @@ public class LispMappingService implements IFlowMapping, BindingAwareProvider, I public MapNotify handleMapRegister(MapRegister mapRegister, boolean smr) { LOG.debug("DAO: Adding mapping for {}", - LispAddressStringifier.getString(mapRegister.getEidToLocatorRecord().get(0).getLispAddressContainer())); + LispAddressStringifier.getString(mapRegister.getMappingRecordItem().get(0) + .getMappingRecord().getEid())); tlsMapNotify.set(null); mapServer.handleMapRegister(mapRegister); @@ -227,9 +229,9 @@ public class LispMappingService implements IFlowMapping, BindingAwareProvider, I LOG.debug("Received XtrReplyMapping notification, ignoring"); } - private LispSbService getLispSB() { + private OdlLispSbService getLispSB() { if (lispSB == null) { - lispSB = session.getRpcService(LispSbService.class); + lispSB = session.getRpcService(OdlLispSbService.class); } return lispSB; } @@ -245,14 +247,14 @@ public class LispMappingService implements IFlowMapping, BindingAwareProvider, I } @Override - public void handleSMR(MapRequest smr, LispAddressContainer subscriber) { + public void handleSMR(MapRequest smr, Rloc subscriber) { LOG.debug("Sending SMR to {} with Source-EID {} and EID Record {}", LispAddressStringifier.getString(subscriber), - LispAddressStringifier.getString(smr.getSourceEid().getLispAddressContainer()), - LispAddressStringifier.getString(smr.getEidRecord().get(0).getLispAddressContainer())); + LispAddressStringifier.getString(smr.getSourceEid().getEid()), + LispAddressStringifier.getString(smr.getEidItem().get(0).getEid())); SendMapRequestInputBuilder smrib = new SendMapRequestInputBuilder(); smrib.setMapRequest(new MapRequestBuilder(smr).build()); - smrib.setTransportAddress(LispNotificationHelper.getTransportAddressFromContainer(subscriber)); + smrib.setTransportAddress(LispNotificationHelper.getTransportAddressFromRloc(subscriber)); getLispSB().sendMapRequest(smrib.build()); } diff --git a/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/MappingService.java b/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/MappingService.java index 9ce5f67c1..6d1937b35 100644 --- a/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/MappingService.java +++ b/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/MappingService.java @@ -7,7 +7,6 @@ */ package org.opendaylight.lispflowmapping.implementation; -import java.util.Arrays; import java.util.concurrent.Future; import org.opendaylight.controller.md.sal.binding.api.DataBroker; @@ -25,33 +24,36 @@ import org.opendaylight.lispflowmapping.implementation.util.DSBEInputUtil; import org.opendaylight.lispflowmapping.implementation.util.RPCInputConvertorUtil; import org.opendaylight.lispflowmapping.interfaces.dao.ILispDAO; import org.opendaylight.lispflowmapping.interfaces.mappingservice.IMappingService; -import org.opendaylight.lispflowmapping.lisp.util.MaskUtil; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eidtolocatorrecords.EidToLocatorRecord; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.lispaddress.LispAddressContainer; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.Eid; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping.record.container.MappingRecord; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.AddKeyInput; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.AddKeyInputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.AddKeysInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.AddMappingInput; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.AddMappingInputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.AddMappingsInput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.GetAllKeysOutput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.GetAllMappingsOutput; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.GetKeyInput; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.GetKeyInputBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.GetKeyOutput; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.GetKeyOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.GetKeysInput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.GetKeysOutput; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.GetMappingInput; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.GetMappingInputBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.GetMappingOutput; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.GetMappingOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.GetMappingsInput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.GetMappingsOutput; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.MappingOrigin; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.MappingserviceService; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.OdlMappingserviceService; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.RemoveKeyInput; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.RemoveKeyInputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.RemoveKeysInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.RemoveMappingInput; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.RemoveMappingInputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.RemoveMappingsInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.SiteId; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.UpdateKeyInput; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.UpdateKeyInputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.UpdateKeysInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.UpdateMappingInput; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.UpdateMappingInputBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.update.key.input.EidBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.UpdateMappingsInput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.mapping.authkey.container.MappingAuthkey; import org.opendaylight.yangtools.yang.common.RpcError; import org.opendaylight.yangtools.yang.common.RpcResult; import org.opendaylight.yangtools.yang.common.RpcResultBuilder; @@ -72,14 +74,14 @@ import com.google.common.util.concurrent.Futures; * @author Florin Coras * */ -public class MappingService implements MappingserviceService, IMappingService, BindingAwareProvider, AutoCloseable { +public class MappingService implements OdlMappingserviceService, IMappingService, BindingAwareProvider, AutoCloseable { protected static final Logger LOG = LoggerFactory.getLogger(MappingService.class); private static final String NOT_FOUND_TAG = "data-missing"; private static final String DATA_EXISTS_TAG = "data-exists"; private MappingSystem mappingSystem; private DataStoreBackEnd dsbe; - private RpcRegistration mappingServiceRpc; + private RpcRegistration mappingServiceRpc; private AuthenticationKeyDataListener keyListener; private MappingDataListener mappingListener; private ILispDAO dao; @@ -129,7 +131,7 @@ public class MappingService implements MappingserviceService, IMappingService, B public void initialize() { bindingAwareBroker.registerProvider(this); - mappingServiceRpc = rpcRegistry.addRpcImplementation(MappingserviceService.class, this); + mappingServiceRpc = rpcRegistry.addRpcImplementation(OdlMappingserviceService.class, this); dsbe = new DataStoreBackEnd(dataBroker); mappingSystem = new MappingSystem(dao, iterateMask, notificationPolicy, overwritePolicy); @@ -147,11 +149,7 @@ public class MappingService implements MappingserviceService, IMappingService, B RpcResultBuilder rpcResultBuilder; - // XXX: to remove once RPC API has been updated to remove explicit mask - input = new AddKeyInputBuilder(input).setLispAddressContainer( - MaskUtil.fixMask(input.getLispAddressContainer(), input.getMaskLength())).build(); - - String key = mappingSystem.getAuthenticationKey(input.getLispAddressContainer()); + MappingAuthkey key = mappingSystem.getAuthenticationKey(input.getEid()); if (key != null) { String message = "Key already exists! Please use update-key if you want to change it."; @@ -171,10 +169,6 @@ public class MappingService implements MappingserviceService, IMappingService, B Preconditions.checkNotNull(input, "add-mapping RPC input must be not null!"); LOG.trace("RPC received to add the following mapping: " + input.toString()); - // XXX: to remove once RPC API has been updated to remove explicit mask - input = new AddMappingInputBuilder(input).setLispAddressContainer( - MaskUtil.fixMask(input.getLispAddressContainer(), input.getMaskLength())).build(); - dsbe.addMapping(RPCInputConvertorUtil.toMapping(input)); RpcResultBuilder rpcResultBuilder; @@ -189,20 +183,16 @@ public class MappingService implements MappingserviceService, IMappingService, B Preconditions.checkNotNull(input, "get-key RPC input must be not null!"); LOG.trace("RPC received to get the following key: " + input.toString()); - // XXX: to remove once RPC API has been updated to remove explicit mask - input = new GetKeyInputBuilder(input).setLispAddressContainer( - MaskUtil.fixMask(input.getLispAddressContainer(), input.getMaskLength())).build(); - RpcResultBuilder rpcResultBuilder; - String key = mappingSystem.getAuthenticationKey(input.getLispAddressContainer()); + MappingAuthkey key = mappingSystem.getAuthenticationKey(input.getEid()); if (key == null) { String message = "Key was not found in the mapping database"; rpcResultBuilder = RpcResultBuilder.failed() .withError(RpcError.ErrorType.APPLICATION, NOT_FOUND_TAG, message); } else { - rpcResultBuilder = RpcResultBuilder.success(new GetKeyOutputBuilder().setAuthkey(key)); + rpcResultBuilder = RpcResultBuilder.success(new GetKeyOutputBuilder().setMappingAuthkey(key)); } return Futures.immediateFuture(rpcResultBuilder.build()); @@ -213,21 +203,16 @@ public class MappingService implements MappingserviceService, IMappingService, B Preconditions.checkNotNull(input, "get-mapping RPC input must be not null!"); LOG.trace("RPC received to get the following mapping: " + input.toString()); - // XXX: to remove once RPC API has been updated to remove explicit mask - input = new GetMappingInputBuilder(input).setLispAddressContainer( - MaskUtil.fixMask(input.getLispAddressContainer(), input.getMaskLength())).build(); - RpcResultBuilder rpcResultBuilder; - EidToLocatorRecord reply = (EidToLocatorRecord) mappingSystem.getMapping(input.getLispAddressContainer()); + MappingRecord reply = (MappingRecord) mappingSystem.getMapping(input.getEid()); if (reply == null) { String message = "No mapping was found in the mapping database"; rpcResultBuilder = RpcResultBuilder.failed() .withError(RpcError.ErrorType.APPLICATION, NOT_FOUND_TAG, message); } else { - rpcResultBuilder = RpcResultBuilder.success(new GetMappingOutputBuilder().setEidToLocatorRecord(Arrays - .asList(reply))); + rpcResultBuilder = RpcResultBuilder.success(new GetMappingOutputBuilder().setMappingRecord(reply)); } return Futures.immediateFuture(rpcResultBuilder.build()); @@ -238,10 +223,6 @@ public class MappingService implements MappingserviceService, IMappingService, B Preconditions.checkNotNull(input, "remove-key RPC input must be not null!"); LOG.trace("RPC received to remove the following key: " + input.toString()); - // XXX: to remove once RPC API has been updated to remove explicit mask - input = new RemoveKeyInputBuilder(input).setLispAddressContainer( - MaskUtil.fixMask(input.getLispAddressContainer(), input.getMaskLength())).build(); - RpcResultBuilder rpcResultBuilder; dsbe.removeAuthenticationKey(RPCInputConvertorUtil.toAuthenticationKey(input)); @@ -256,10 +237,6 @@ public class MappingService implements MappingserviceService, IMappingService, B Preconditions.checkNotNull(input, "remove-mapping RPC input must be not null!"); LOG.trace("RPC received to remove the following mapping: " + input.toString()); - // XXX: to remove once RPC API has been updated to remove explicit mask - input = new RemoveMappingInputBuilder(input).setLispAddressContainer( - MaskUtil.fixMask(input.getLispAddressContainer(), input.getMaskLength())).build(); - RpcResultBuilder rpcResultBuilder; dsbe.removeMapping(RPCInputConvertorUtil.toMapping(input)); @@ -274,15 +251,9 @@ public class MappingService implements MappingserviceService, IMappingService, B Preconditions.checkNotNull(input, "update-key RPC input must be not null!"); LOG.trace("RPC received to update the following key: " + input.toString()); - // XXX: to remove once RPC API has been updated to remove explicit mask - input = new UpdateKeyInputBuilder(input).setEid( - new EidBuilder(input.getEid()).setLispAddressContainer( - MaskUtil.fixMask(input.getEid().getLispAddressContainer(), input.getEid() - .getMaskLength())).build()).build(); - RpcResultBuilder rpcResultBuilder; - String key = mappingSystem.getAuthenticationKey(input.getEid().getLispAddressContainer()); + MappingAuthkey key = mappingSystem.getAuthenticationKey(input.getEid()); if (key == null) { String message = "Key doesn't exist! Please use add-key if you want to create a new authentication key."; @@ -302,10 +273,6 @@ public class MappingService implements MappingserviceService, IMappingService, B LOG.trace("RPC received to update the following mapping: " + input.toString()); Preconditions.checkNotNull(input, "update-mapping RPC input must be not null!"); - // XXX: to remove once RPC API has been updated to remove explicit mask - input = new UpdateMappingInputBuilder(input).setLispAddressContainer( - MaskUtil.fixMask(input.getLispAddressContainer(), input.getMaskLength())).build(); - RpcResultBuilder rpcResultBuilder; dsbe.updateMapping(RPCInputConvertorUtil.toMapping(input)); @@ -316,58 +283,131 @@ public class MappingService implements MappingserviceService, IMappingService, B } @Override - public void addMapping(MappingOrigin origin, LispAddressContainer key, SiteId siteId, Object data) { - dsbe.addMapping(DSBEInputUtil.toMapping(origin, key, siteId, (EidToLocatorRecord) data)); + public Future> removeKeys(RemoveKeysInput input) { + // TODO Auto-generated method stub + return null; + } + + @Override + public Future> removeMappings(RemoveMappingsInput input) { + // TODO Auto-generated method stub + return null; + } + + @Override + public Future> getKeys(GetKeysInput input) { + // TODO Auto-generated method stub + return null; + } + + @Override + public Future> addMappings(AddMappingsInput input) { + // TODO Auto-generated method stub + return null; + } + + @Override + public Future> updateKeys(UpdateKeysInput input) { + // TODO Auto-generated method stub + return null; + } + + @Override + public Future> removeAllMappings() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Future> removeAllKeys() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Future> getAllKeys() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Future> updateMappings(UpdateMappingsInput input) { + // TODO Auto-generated method stub + return null; + } + + @Override + public Future> addKeys(AddKeysInput input) { + // TODO Auto-generated method stub + return null; + } + + @Override + public Future> getAllMappings() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Future> getMappings( + GetMappingsInput input) { + // TODO Auto-generated method stub + return null; + } + + @Override + public void addMapping(MappingOrigin origin, Eid key, SiteId siteId, Object data) { + dsbe.addMapping(DSBEInputUtil.toMapping(origin, key, siteId, (MappingRecord) data)); mappingSystem.updateMappingRegistration(origin, key); } @Override - public Object getMapping(MappingOrigin origin, LispAddressContainer key) { + public Object getMapping(MappingOrigin origin, Eid key) { return mappingSystem.getMapping(origin, key); } @Override - public Object getMapping(LispAddressContainer key) { + public Object getMapping(Eid key) { return mappingSystem.getMapping(key); } @Override - public Object getMapping(LispAddressContainer srcKey, LispAddressContainer dstKey) { + public Object getMapping(Eid srcKey, Eid dstKey) { return mappingSystem.getMapping(srcKey, dstKey); } @Override - public void removeMapping(MappingOrigin origin, LispAddressContainer key) { + public void removeMapping(MappingOrigin origin, Eid key) { dsbe.removeMapping(DSBEInputUtil.toMapping(origin, key)); } @Override - public void addAuthenticationKey(LispAddressContainer key, String authKey) { + public void addAuthenticationKey(Eid key, MappingAuthkey authKey) { dsbe.addAuthenticationKey(DSBEInputUtil.toAuthenticationKey(key, authKey)); } @Override - public String getAuthenticationKey(LispAddressContainer key) { + public MappingAuthkey getAuthenticationKey(Eid key) { return mappingSystem.getAuthenticationKey(key); } @Override - public void removeAuthenticationKey(LispAddressContainer key) { + public void removeAuthenticationKey(Eid key) { dsbe.removeAuthenticationKey(DSBEInputUtil.toAuthenticationKey(key, null)); } @Override - public void addData(MappingOrigin origin, LispAddressContainer key, String subKey, Object data) { + public void addData(MappingOrigin origin, Eid key, String subKey, Object data) { mappingSystem.addData(origin, key, subKey, data); } @Override - public Object getData(MappingOrigin origin, LispAddressContainer key, String subKey) { + public Object getData(MappingOrigin origin, Eid key, String subKey) { return mappingSystem.getData(origin, key, subKey); } @Override - public void removeData(MappingOrigin origin, LispAddressContainer key, String subKey) { + public void removeData(MappingOrigin origin, Eid key, String subKey) { mappingSystem.removeData(origin, key, subKey); } diff --git a/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/MappingServiceShell.java b/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/MappingServiceShell.java index 9e74c73a9..a0743ee7e 100644 --- a/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/MappingServiceShell.java +++ b/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/MappingServiceShell.java @@ -12,10 +12,11 @@ import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderCo import org.opendaylight.controller.sal.binding.api.BindingAwareProvider; import org.opendaylight.lispflowmapping.interfaces.mappingservice.IMappingService; import org.opendaylight.lispflowmapping.interfaces.mappingservice.IMappingServiceShell; -import org.opendaylight.lispflowmapping.lisp.util.LispAFIConvertor; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.lispaddress.LispAddressContainer; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.lispaddress.lispaddresscontainer.address.ipv4.Ipv4AddressBuilder; +import org.opendaylight.lispflowmapping.lisp.util.LispAddressUtil; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Prefix; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.Eid; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.mapping.authkey.container.MappingAuthkey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.mapping.authkey.container.MappingAuthkeyBuilder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -48,9 +49,9 @@ public class MappingServiceShell implements IMappingServiceShell, BindingAwarePr @Override public void addDefaultKeyIPv4() { - LispAddressContainer address = LispAFIConvertor.toContainer( - new Ipv4AddressBuilder().setIpv4Address(new Ipv4Address("0.0.0.0")).setMask((short)0).build()); - mappingService.addAuthenticationKey(address, "password"); + Eid eid = LispAddressUtil.toEid(new Ipv4Prefix("0.0.0.0/0"), null); + MappingAuthkey key = new MappingAuthkeyBuilder().setKeyType(1).setKeyString("password").build(); + mappingService.addAuthenticationKey(eid, key); } @Override diff --git a/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/MappingSystem.java b/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/MappingSystem.java index d51d623c4..18fe24c09 100644 --- a/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/MappingSystem.java +++ b/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/MappingSystem.java @@ -20,11 +20,11 @@ import org.opendaylight.lispflowmapping.interfaces.dao.ILispDAO; import org.opendaylight.lispflowmapping.interfaces.mapcache.IMapCache; import org.opendaylight.lispflowmapping.interfaces.mapcache.IMappingSystem; import org.opendaylight.lispflowmapping.lisp.util.LispAddressStringifier; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eidtolocatorrecords.EidToLocatorRecordBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.lispaddress.LispAddressContainer; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.Eid; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.MappingOrigin; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.db.instance.AuthenticationKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.db.instance.Mapping; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.mapping.authkey.container.MappingAuthkey; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -92,16 +92,16 @@ public class MappingSystem implements IMappingSystem { tableMap.put(MappingOrigin.Southbound, smc); } - public void addMapping(MappingOrigin origin, LispAddressContainer key, Object value) { + public void addMapping(MappingOrigin origin, Eid key, Object value) { tableMap.get(origin).addMapping(key, value, overwrite); } - public void updateMappingRegistration(MappingOrigin origin, LispAddressContainer key) { + public void updateMappingRegistration(MappingOrigin origin, Eid key) { tableMap.get(origin).updateMappingRegistration(key); } @Override - public Object getMapping(LispAddressContainer src, LispAddressContainer dst) { + public Object getMapping(Eid src, Eid dst) { // NOTE: what follows is just a simple implementation of a lookup logic, it SHOULD be subject to future // improvements @@ -117,17 +117,17 @@ public class MappingSystem implements IMappingSystem { } @Override - public Object getMapping(LispAddressContainer dst) { - return getMapping((LispAddressContainer)null, dst); + public Object getMapping(Eid dst) { + return getMapping((Eid)null, dst); } @Override - public Object getMapping(MappingOrigin origin, LispAddressContainer key) { + public Object getMapping(MappingOrigin origin, Eid key) { return tableMap.get(origin).getMapping(null, key); } @Override - public void removeMapping(MappingOrigin origin, LispAddressContainer key) { + public void removeMapping(MappingOrigin origin, Eid key) { tableMap.get(origin).removeMapping(key, overwrite); if (notificationService) { // TODO @@ -135,39 +135,39 @@ public class MappingSystem implements IMappingSystem { } @Override - public void addAuthenticationKey(LispAddressContainer key, String authKey) { + public void addAuthenticationKey(Eid key, MappingAuthkey authKey) { LOG.debug("Adding authentication key '{}' for {}", key, LispAddressStringifier.getString(key)); smc.addAuthenticationKey(key, authKey); } @Override - public String getAuthenticationKey(LispAddressContainer key) { + public MappingAuthkey getAuthenticationKey(Eid key) { LOG.debug("Retrieving authentication key for {}", LispAddressStringifier.getString(key)); return smc.getAuthenticationKey(key); } @Override - public void removeAuthenticationKey(LispAddressContainer key) { + public void removeAuthenticationKey(Eid key) { LOG.debug("Removing authentication key for {}", LispAddressStringifier.getString(key)); smc.removeAuthenticationKey(key); } @Override - public void addData(MappingOrigin origin, LispAddressContainer key, String subKey, Object data) { + public void addData(MappingOrigin origin, Eid key, String subKey, Object data) { LOG.debug("Add data of class {} for key {} and subkey {}", data.getClass(), LispAddressStringifier.getString(key), subKey); tableMap.get(origin).addData(key, subKey, data); } @Override - public Object getData(MappingOrigin origin, LispAddressContainer key, String subKey) { + public Object getData(MappingOrigin origin, Eid key, String subKey) { LOG.debug("Retrieving data for key {} and subkey {}", LispAddressStringifier.getString(key), subKey); return tableMap.get(origin).getData(key, subKey); } @Override - public void removeData(MappingOrigin origin, LispAddressContainer key, String subKey) { + public void removeData(MappingOrigin origin, Eid key, String subKey) { LOG.debug("Removing data for key {} and subkey {}", LispAddressStringifier.getString(key), subKey); tableMap.get(origin).removeData(key, subKey); } @@ -183,12 +183,11 @@ public class MappingSystem implements IMappingSystem { LOG.info("Restoring {} mappings and {} keys from datastore into DAO", mappings.size(), authKeys.size()); for (Mapping mapping : mappings) { - addMapping(mapping.getOrigin(), mapping.getLispAddressContainer(), - new EidToLocatorRecordBuilder(mapping).build()); + addMapping(mapping.getOrigin(), mapping.getMappingRecord().getEid(), mapping.getMappingRecord()); } for (AuthenticationKey authKey : authKeys) { - addAuthenticationKey(authKey.getLispAddressContainer(), authKey.getAuthkey()); + addAuthenticationKey(authKey.getEid(), authKey.getMappingAuthkey()); } } diff --git a/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/lisp/MapResolver.java b/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/lisp/MapResolver.java index b35d172bc..eeaee4ed6 100644 --- a/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/lisp/MapResolver.java +++ b/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/lisp/MapResolver.java @@ -18,22 +18,25 @@ import org.opendaylight.lispflowmapping.interfaces.dao.SubscriberRLOC; import org.opendaylight.lispflowmapping.interfaces.lisp.IMapRequestResultHandler; import org.opendaylight.lispflowmapping.interfaces.lisp.IMapResolverAsync; import org.opendaylight.lispflowmapping.interfaces.mappingservice.IMappingService; -import org.opendaylight.lispflowmapping.lisp.util.LcafSourceDestHelper; -import org.opendaylight.lispflowmapping.lisp.util.LispAFIConvertor; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.EidToLocatorRecord.Action; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.LcafTrafficEngineeringAddress; +import org.opendaylight.lispflowmapping.lisp.util.LispAddressUtil; +import org.opendaylight.lispflowmapping.lisp.util.SourceDestKeyHelper; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.SimpleAddress; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.ExplicitLocatorPath; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.SourceDestKey; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.explicit.locator.path.explicit.locator.path.Hop; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.MapRequest; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eidrecords.EidRecord; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eidtolocatorrecords.EidToLocatorRecord; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eidtolocatorrecords.EidToLocatorRecordBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.lcaftrafficengineeringaddress.Hops; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.lispaddress.LispAddressContainer; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.lispaddress.lispaddresscontainer.address.LcafSourceDest; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.lispaddress.lispaddresscontainer.address.LcafTrafficEngineering; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.Eid; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.list.EidItem; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.locatorrecords.LocatorRecord; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.locatorrecords.LocatorRecordBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping.record.container.MappingRecord; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping.record.container.MappingRecord.Action; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping.record.container.MappingRecordBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping.record.list.MappingRecordItem; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping.record.list.MappingRecordItemBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapreplymessage.MapReplyBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.maprequest.ItrRloc; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.rloc.container.Rloc; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.MappingOrigin; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -63,43 +66,42 @@ public class MapResolver implements IMapResolverAsync { } public void handleMapRequest(MapRequest request) { - LispAddressContainer srcEid = null; + Eid srcEid = null; if (request.getSourceEid() != null) { - srcEid = request.getSourceEid().getLispAddressContainer(); + srcEid = request.getSourceEid().getEid(); } MapReplyBuilder replyBuilder = new MapReplyBuilder(); replyBuilder.setEchoNonceEnabled(false); replyBuilder.setProbe(false); replyBuilder.setSecurityEnabled(false); replyBuilder.setNonce(request.getNonce()); - replyBuilder.setEidToLocatorRecord(new ArrayList()); - for (EidRecord eidRecord : request.getEidRecord()) { - EidToLocatorRecord mapping = (EidToLocatorRecord) mapService.getMapping(srcEid, - eidRecord.getLispAddressContainer()); + replyBuilder.setMappingRecordItem(new ArrayList()); + for (EidItem eidRecord : request.getEidItem()) { + MappingRecord mapping = (MappingRecord) mapService.getMapping(srcEid, + eidRecord.getEid()); if (mapping != null) { List itrRlocs = request.getItrRloc(); if (itrRlocs != null && itrRlocs.size() != 0) { if (subscriptionService) { - updateSubscribers(itrRlocs.get(0).getLispAddressContainer(), mapping.getLispAddressContainer(), + updateSubscribers(itrRlocs.get(0).getRloc(), mapping.getEid(), srcEid); } mapping = updateLocators(mapping, itrRlocs); } - mapping = fixIfNotSDRequest(mapping, eidRecord.getLispAddressContainer()); + mapping = fixIfNotSDRequest(mapping, eidRecord.getEid()); } else { - mapping = getNegativeMapping(eidRecord.getLispAddressContainer(), eidRecord.getMask()); + mapping = getNegativeMapping(eidRecord.getEid()); } - replyBuilder.getEidToLocatorRecord().add(mapping); + replyBuilder.getMappingRecordItem().add(new MappingRecordItemBuilder().setMappingRecord(mapping).build()); } requestHandler.handleMapReply(replyBuilder.build()); } - private EidToLocatorRecord getNegativeMapping(LispAddressContainer eid, short mask) { - EidToLocatorRecordBuilder recordBuilder = new EidToLocatorRecordBuilder(); + private MappingRecord getNegativeMapping(Eid eid) { + MappingRecordBuilder recordBuilder = new MappingRecordBuilder(); recordBuilder.setAuthoritative(false); recordBuilder.setMapVersion((short) 0); - recordBuilder.setMaskLength(mask); - recordBuilder.setLispAddressContainer(eid); + recordBuilder.setEid(eid); recordBuilder.setAction(Action.NativelyForward); if (authenticate && mapService.getAuthenticationKey(eid) != null) { recordBuilder.setRecordTtl(TTL_RLOC_TIMED_OUT); @@ -109,8 +111,8 @@ public class MapResolver implements IMapResolverAsync { return recordBuilder.build(); } - private void updateSubscribers(LispAddressContainer itrRloc, LispAddressContainer dstEid, - LispAddressContainer srcEid) { + private void updateSubscribers(Rloc itrRloc, Eid dstEid, + Eid srcEid) { SubscriberRLOC subscriberRloc = new SubscriberRLOC(itrRloc, srcEid); Set subscribers = getSubscribers(dstEid); if (subscribers == null) { @@ -126,18 +128,18 @@ public class MapResolver implements IMapResolverAsync { } // Fixes mapping if request was for simple dst EID but the matched mapping is a SourceDest - private EidToLocatorRecord fixIfNotSDRequest(EidToLocatorRecord mapping, LispAddressContainer dstEid) { - if (mapping.getLispAddressContainer().getAddress() instanceof LcafSourceDest - && !(dstEid.getAddress() instanceof LcafSourceDest)) { - return new EidToLocatorRecordBuilder(mapping).setLispAddressContainer( - LcafSourceDestHelper.getDst(mapping.getLispAddressContainer())).build(); + private MappingRecord fixIfNotSDRequest(MappingRecord mapping, Eid dstEid) { + if (mapping.getEid().getAddress() instanceof SourceDestKey + && !(dstEid.getAddress() instanceof SourceDestKey)) { + return new MappingRecordBuilder(mapping).setEid( + SourceDestKeyHelper.getDst(mapping.getEid())).build(); } return mapping; } private boolean locatorsNeedFixing(List locatorRecords) { for (LocatorRecord record : locatorRecords) { - if (record.getLispAddressContainer().getAddress() instanceof LcafTrafficEngineering) { + if (record.getRloc().getAddress() instanceof ExplicitLocatorPath) { return true; } } @@ -145,7 +147,7 @@ public class MapResolver implements IMapResolverAsync { } // Process locators according to configured policy - private EidToLocatorRecord updateLocators(EidToLocatorRecord mapping, List itrRlocs) { + private MappingRecord updateLocators(MappingRecord mapping, List itrRlocs) { // no fixing if elpPolicy is default if (elpPolicy.equalsIgnoreCase("default")) { return mapping; @@ -158,28 +160,27 @@ public class MapResolver implements IMapResolverAsync { return mapping; } - EidToLocatorRecordBuilder recordBuilder = new EidToLocatorRecordBuilder(mapping); + MappingRecordBuilder recordBuilder = new MappingRecordBuilder(); recordBuilder.setLocatorRecord(new ArrayList()); try { for (LocatorRecord record : locatorRecords) { - LispAddressContainer container = record.getLispAddressContainer(); + Rloc container = record.getRloc(); // For non-ELP RLOCs, or when ELP policy is default, or itrRlocs is null, just add the locator and be // done - if ((!(container.getAddress() instanceof LcafTrafficEngineering)) + if ((!(container.getAddress() instanceof ExplicitLocatorPath)) || elpPolicy.equalsIgnoreCase("default") || itrRlocs == null) { recordBuilder.getLocatorRecord().add( new LocatorRecordBuilder().setLocalLocator(record.isLocalLocator()) .setRlocProbed(record.isRlocProbed()).setWeight(record.getWeight()) .setPriority(record.getPriority()).setMulticastWeight(record.getMulticastWeight()) .setMulticastPriority(record.getMulticastPriority()).setRouted(record.isRouted()) - .setLispAddressContainer(container).setName(record.getName()).build()); + .setRloc(container).setLocatorId(record.getLocatorId()).build()); continue; } - LcafTrafficEngineeringAddress teAddress = ((LcafTrafficEngineering) container.getAddress()) - .getLcafTrafficEngineeringAddr(); - LispAddressContainer nextHop = getNextELPHop(teAddress, itrRlocs); + ExplicitLocatorPath teAddress = ((ExplicitLocatorPath) container.getAddress()); + SimpleAddress nextHop = getNextELPHop(teAddress, itrRlocs); if (nextHop != null) { java.lang.Short priority = record.getPriority(); if (elpPolicy.equalsIgnoreCase("both")) { @@ -189,8 +190,8 @@ public class MapResolver implements IMapResolverAsync { .setPriority(record.getPriority()) .setMulticastWeight(record.getMulticastWeight()) .setMulticastPriority(record.getMulticastPriority()) - .setRouted(record.isRouted()).setLispAddressContainer(container) - .setName(record.getName()).build()); + .setRouted(record.isRouted()).setRloc(container) + .setLocatorId(record.getLocatorId()).build()); // Make the priority of the added simple locator lower so that ELP is used by default if // the xTR understands ELP. Exclude 255, since that means don't use for unicast forwarding // XXX Complex cases like several ELPs with different priorities are not handled @@ -204,7 +205,7 @@ public class MapResolver implements IMapResolverAsync { .setRlocProbed(record.isRlocProbed()).setWeight(record.getWeight()) .setPriority(priority).setMulticastWeight(record.getMulticastWeight()) .setMulticastPriority(record.getMulticastPriority()).setRouted(record.isRouted()) - .setLispAddressContainer(nextHop).setName(record.getName()).build()); + .setRloc(LispAddressUtil.toRloc(nextHop)).setLocatorId(record.getLocatorId()).build()); } } } catch (ClassCastException cce) { @@ -214,23 +215,21 @@ public class MapResolver implements IMapResolverAsync { return recordBuilder.build(); } - private LispAddressContainer getNextELPHop(LcafTrafficEngineeringAddress elp, List itrRlocs) { - LispAddressContainer nextHop = null; - List hops = elp.getHops(); + private SimpleAddress getNextELPHop(ExplicitLocatorPath elp, List itrRlocs) { + SimpleAddress nextHop = null; + List hops = elp.getExplicitLocatorPath().getHop(); if (hops != null && hops.size() > 0) { // By default we return the first hop - nextHop = LispAFIConvertor.toContainer(LispAFIConvertor.toAFIfromPrimitive(hops.get(0).getHop() - .getPrimitiveAddress())); - for (Hops hop : hops) { - LispAddressContainer hopContainer = LispAFIConvertor.toContainer(LispAFIConvertor - .toAFIfromPrimitive(hop.getHop().getPrimitiveAddress())); + nextHop = hops.get(0).getAddress(); + for (Hop hop : hops) { + SimpleAddress hopContainer = hop.getAddress(); for (ItrRloc itrRloc : itrRlocs) { - if (itrRloc.getLispAddressContainer().equals(hopContainer)) { + // XXX Need conversion + if (itrRloc.getRloc().equals(hopContainer)) { int i = hops.indexOf(hop); if (i < hops.size() - 1) { - nextHop = LispAFIConvertor.toContainer(LispAFIConvertor.toAFIfromPrimitive(hops.get(i + 1) - .getHop().getPrimitiveAddress())); + nextHop = hops.get(i + 1).getAddress(); return nextHop; } } @@ -242,11 +241,11 @@ public class MapResolver implements IMapResolverAsync { } @SuppressWarnings("unchecked") - private Set getSubscribers(LispAddressContainer address) { + private Set getSubscribers(Eid address) { return (Set) mapService.getData(MappingOrigin.Southbound, address, SubKeys.SUBSCRIBERS); } - private void addSubscribers(LispAddressContainer address, Set subscribers) { + private void addSubscribers(Eid address, Set subscribers) { mapService.addData(MappingOrigin.Southbound, address, SubKeys.SUBSCRIBERS, subscribers); } diff --git a/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/lisp/MapServer.java b/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/lisp/MapServer.java index 0a58cfdbe..06a16fa23 100644 --- a/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/lisp/MapServer.java +++ b/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/lisp/MapServer.java @@ -24,31 +24,32 @@ import org.opendaylight.lispflowmapping.interfaces.dao.SubscriberRLOC; import org.opendaylight.lispflowmapping.interfaces.lisp.IMapNotifyHandler; import org.opendaylight.lispflowmapping.interfaces.lisp.IMapServerAsync; import org.opendaylight.lispflowmapping.interfaces.mappingservice.IMappingService; -import org.opendaylight.lispflowmapping.lisp.util.LcafSourceDestHelper; -import org.opendaylight.lispflowmapping.lisp.util.LispAFIConvertor; +import org.opendaylight.lispflowmapping.lisp.util.LispAddressUtil; import org.opendaylight.lispflowmapping.lisp.util.MapNotifyBuilderHelper; import org.opendaylight.lispflowmapping.lisp.util.MapRequestUtil; -import org.opendaylight.lispflowmapping.lisp.util.MaskUtil; +import org.opendaylight.lispflowmapping.lisp.util.SourceDestKeyHelper; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.SourceDestKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.MapRegister; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eidrecords.EidRecord; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eidrecords.EidRecordBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eidtolocatorrecords.EidToLocatorRecord; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eidtolocatorrecords.EidToLocatorRecordBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.lispaddress.LispAddressContainer; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.lispaddress.lispaddresscontainer.address.LcafSourceDest; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.Eid; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.list.EidItem; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.list.EidItemBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapnotifymessage.MapNotifyBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping.record.container.MappingRecord; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping.record.container.MappingRecordBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping.record.list.MappingRecordItem; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.maprequestnotification.MapRequestBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.MappingChange; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.MappingChanged; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.MappingOrigin; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.MappingserviceListener; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.OdlMappingserviceListener; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.SiteId; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.mapping.authkey.container.MappingAuthkey; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.google.common.base.Preconditions; -public class MapServer implements IMapServerAsync, MappingserviceListener { +public class MapServer implements IMapServerAsync, OdlMappingserviceListener { protected static final Logger LOG = LoggerFactory.getLogger(MapServer.class); private IMappingService mapService; @@ -88,23 +89,26 @@ public class MapServer implements IMapServerAsync, MappingserviceListener { public void handleMapRegister(MapRegister mapRegister) { boolean failed = false; String password = null; - for (EidToLocatorRecord record : mapRegister.getEidToLocatorRecord()) { + for (MappingRecordItem record : mapRegister.getMappingRecordItem()) { + MappingRecord mapping = record.getMappingRecord(); if (authenticate) { - password = mapService.getAuthenticationKey(record.getLispAddressContainer()); + MappingAuthkey authkey = mapService.getAuthenticationKey(mapping.getEid()); + if (authkey != null) { + password = authkey.getKeyString(); + } if (!LispAuthenticationUtil.validate(mapRegister, password)) { LOG.warn("Authentication failed"); failed = true; break; } } - EidToLocatorRecord oldMapping = (EidToLocatorRecord) mapService.getMapping(MappingOrigin.Southbound, - record.getLispAddressContainer()); - mapService.addMapping(MappingOrigin.Southbound, record.getLispAddressContainer(), getSiteId(mapRegister), - record); - if (subscriptionService && !record.equals(oldMapping)) { - LOG.debug("Sending SMRs for subscribers of {}", record.getLispAddressContainer()); - Set subscribers = getSubscribers(record.getLispAddressContainer()); - sendSmrs(record, subscribers); + MappingRecord oldMapping = (MappingRecord) mapService.getMapping(MappingOrigin.Southbound, + mapping.getEid()); + mapService.addMapping(MappingOrigin.Southbound, mapping.getEid(), getSiteId(mapRegister), mapping); + if (subscriptionService && !mapping.equals(oldMapping)) { + LOG.debug("Sending SMRs for subscribers of {}", mapping.getEid()); + Set subscribers = getSubscribers(mapping.getEid()); + sendSmrs(mapping, subscribers); } } if (!failed) { @@ -128,37 +132,34 @@ public class MapServer implements IMapServerAsync, MappingserviceListener { @Override public void onMappingChanged(MappingChanged notification) { if (subscriptionService) { - sendSmrs(new EidToLocatorRecordBuilder(notification.getMapping()).build(), getSubscribers(notification - .getMapping().getLispAddressContainer())); - if (notification.getChange().equals(MappingChange.Removed)) { - removeSubscribers(notification.getMapping().getLispAddressContainer()); + sendSmrs(notification.getMappingRecord(), getSubscribers(notification.getMappingRecord().getEid())); + if (notification.getChangeType().equals(MappingChange.Removed)) { + removeSubscribers(notification.getMappingRecord().getEid()); } } } - private void sendSmrs(EidToLocatorRecord record, Set subscribers) { - LispAddressContainer eid = record.getLispAddressContainer(); + private void sendSmrs(MappingRecord record, Set subscribers) { + Eid eid = record.getEid(); handleSmr(record, subscribers, notifyHandler); // For SrcDst LCAF also send SMRs to Dst prefix - if (eid.getAddress() instanceof LcafSourceDest) { - LispAddressContainer dstAddr = LispAFIConvertor.toContainer(LcafSourceDestHelper.getDstAfi(eid)); - short dstMask = LcafSourceDestHelper.getDstMask(eid); + if (eid.getAddress() instanceof SourceDestKey) { + Eid dstAddr = SourceDestKeyHelper.getDst(eid); subscribers = getSubscribers(dstAddr); - EidToLocatorRecord newRecord = new EidToLocatorRecordBuilder().setAction(record.getAction()) + MappingRecord newRecord = new MappingRecordBuilder().setAction(record.getAction()) .setAuthoritative(record.isAuthoritative()).setLocatorRecord(record.getLocatorRecord()) .setMapVersion(record.getMapVersion()).setRecordTtl(record.getRecordTtl()) - .setLispAddressContainer(dstAddr).setMaskLength(dstMask).build(); + .setEid(dstAddr).build(); handleSmr(newRecord, subscribers, notifyHandler); } } - private void handleSmr(EidToLocatorRecord record, Set subscribers, IMapNotifyHandler callback) { + private void handleSmr(MappingRecord record, Set subscribers, IMapNotifyHandler callback) { if (subscribers == null) { return; } - MapRequestBuilder mrb = MapRequestUtil.prepareSMR(record.getLispAddressContainer(), - LispAFIConvertor.toContainer(getLocalAddress())); + MapRequestBuilder mrb = MapRequestUtil.prepareSMR(record.getEid(), LispAddressUtil.toRloc(getLocalAddress())); LOG.trace("Built SMR packet: " + mrb.build().toString()); for (SubscriberRLOC subscriber : subscribers) { if (subscriber.timedOut()) { @@ -168,31 +169,27 @@ public class MapServer implements IMapServerAsync, MappingserviceListener { try { // The address stored in the SMR's EID record is used as Source EID in the SMR-invoked Map-Request. // To ensure consistent behavior it is set to the value used to originally request a given mapping - mrb.setEidRecord(new ArrayList()); - mrb.getEidRecord() - .add(new EidRecordBuilder() - .setMask( - (short) MaskUtil.getMaxMask(LispAFIConvertor.toAFI(subscriber.getSrcEid()))) - .setLispAddressContainer(subscriber.getSrcEid()).build()); + mrb.setEidItem(new ArrayList()); + mrb.getEidItem().add(new EidItemBuilder().setEid(subscriber.getSrcEid()).build()); callback.handleSMR(mrb.build(), subscriber.getSrcRloc()); } catch (Exception e) { LOG.error("Errors encountered while handling SMR:" + ExceptionUtils.getStackTrace(e)); } } } - addSubscribers(record.getLispAddressContainer(), subscribers); + addSubscribers(record.getEid(), subscribers); } @SuppressWarnings("unchecked") - private Set getSubscribers(LispAddressContainer address) { + private Set getSubscribers(Eid address) { return (Set) mapService.getData(MappingOrigin.Southbound, address, SubKeys.SUBSCRIBERS); } - private void removeSubscribers(LispAddressContainer address) { + private void removeSubscribers(Eid address) { mapService.removeData(MappingOrigin.Southbound, address, SubKeys.SUBSCRIBERS); } - private void addSubscribers(LispAddressContainer address, Set subscribers) { + private void addSubscribers(Eid address, Set subscribers) { mapService.addData(MappingOrigin.Southbound, address, SubKeys.SUBSCRIBERS, subscribers); } diff --git a/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/mapcache/FlatMapCache.java b/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/mapcache/FlatMapCache.java index b9281497f..560373a88 100644 --- a/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/mapcache/FlatMapCache.java +++ b/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/mapcache/FlatMapCache.java @@ -15,7 +15,8 @@ import org.opendaylight.lispflowmapping.interfaces.dao.IRowVisitor; import org.opendaylight.lispflowmapping.interfaces.dao.MappingEntry; import org.opendaylight.lispflowmapping.interfaces.dao.SubKeys; import org.opendaylight.lispflowmapping.interfaces.mapcache.IMapCache; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.lispaddress.LispAddressContainer; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.Eid; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.mapping.authkey.container.MappingAuthkey; /** * Flat key implementation of a map-cache. As the name suggests, no longest prefix matching is done for IP addresses @@ -33,13 +34,13 @@ public class FlatMapCache implements IMapCache { } @Override - public void addMapping(LispAddressContainer key, Object data, boolean shouldOverwrite) { + public void addMapping(Eid key, Object data, boolean shouldOverwrite) { dao.put(key, new MappingEntry<>(SubKeys.REGDATE, new Date(System.currentTimeMillis()))); dao.put(key, new MappingEntry<>(SubKeys.RECORD, data)); } @Override - public Object getMapping(LispAddressContainer srcKey, LispAddressContainer dstKey) { + public Object getMapping(Eid srcKey, Eid dstKey) { if (dstKey == null) { return null; } @@ -47,49 +48,49 @@ public class FlatMapCache implements IMapCache { } @Override - public void removeMapping(LispAddressContainer key, boolean overwrite) { + public void removeMapping(Eid key, boolean overwrite) { dao.removeSpecific(key, SubKeys.RECORD); } @Override - public void addAuthenticationKey(LispAddressContainer key, String authKey) { + public void addAuthenticationKey(Eid key, MappingAuthkey authKey) { dao.put(key, new MappingEntry<>(SubKeys.AUTH_KEY, authKey)); } @Override - public String getAuthenticationKey(LispAddressContainer key) { + public MappingAuthkey getAuthenticationKey(Eid key) { Object data = dao.getSpecific(key, SubKeys.AUTH_KEY); - if (data instanceof String) { - return (String) data; + if (data instanceof MappingAuthkey) { + return (MappingAuthkey) data; } else { return null; } } @Override - public void removeAuthenticationKey(LispAddressContainer key) { + public void removeAuthenticationKey(Eid key) { dao.removeSpecific(key, SubKeys.AUTH_KEY); } @Override - public void updateMappingRegistration(LispAddressContainer key) { + public void updateMappingRegistration(Eid key) { if (dao.get(key) != null) { dao.put(key, new MappingEntry<>(SubKeys.REGDATE, new Date(System.currentTimeMillis()))); } } @Override - public void addData(LispAddressContainer key, String subKey, Object data) { + public void addData(Eid key, String subKey, Object data) { dao.put(key, new MappingEntry<>(subKey, data)); } @Override - public Object getData(LispAddressContainer key, String subKey) { + public Object getData(Eid key, String subKey) { return dao.getSpecific(key, subKey); } @Override - public void removeData(LispAddressContainer key, String subKey) { + public void removeData(Eid key, String subKey) { dao.removeSpecific(key, subKey); } diff --git a/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/mapcache/MultiTableMapCache.java b/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/mapcache/MultiTableMapCache.java index 0f329921d..922ae0e94 100644 --- a/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/mapcache/MultiTableMapCache.java +++ b/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/mapcache/MultiTableMapCache.java @@ -16,11 +16,11 @@ import org.opendaylight.lispflowmapping.interfaces.dao.IRowVisitor; import org.opendaylight.lispflowmapping.interfaces.dao.MappingEntry; import org.opendaylight.lispflowmapping.interfaces.dao.SubKeys; import org.opendaylight.lispflowmapping.interfaces.mapcache.IMapCache; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.lispaddress.LispAddressContainer; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.lispaddress.lispaddresscontainer.address.LcafSourceDest; -import org.opendaylight.lispflowmapping.lisp.util.LcafSourceDestHelper; -import org.opendaylight.lispflowmapping.lisp.util.LispAFIConvertor; import org.opendaylight.lispflowmapping.lisp.util.MaskUtil; +import org.opendaylight.lispflowmapping.lisp.util.SourceDestKeyHelper; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.SourceDestKey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.Eid; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.mapping.authkey.container.MappingAuthkey; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -40,10 +40,10 @@ public class MultiTableMapCache implements IMapCache { this.dao = dao; } - public void addMapping(LispAddressContainer key, Object value, boolean shouldOverwrite) { - LispAddressContainer eid = MaskUtil.normalize(key); - if (eid.getAddress() instanceof LcafSourceDest) { - LispAddressContainer srcKey = LcafSourceDestHelper.getSrc(eid); + public void addMapping(Eid key, Object value, boolean shouldOverwrite) { + Eid eid = MaskUtil.normalize(key); + if (eid.getAddress() instanceof SourceDestKey) { + Eid srcKey = SourceDestKeyHelper.getSrc(eid); ILispDAO srcDstDao = getOrInstantiateSDInnerDao(eid, dao); srcDstDao.put(srcKey, new MappingEntry<>(SubKeys.REGDATE, new Date(System.currentTimeMillis()))); srcDstDao.put(srcKey, new MappingEntry<>(SubKeys.RECORD, value)); @@ -55,10 +55,10 @@ public class MultiTableMapCache implements IMapCache { // Method returns the DAO entry (hash) corresponding to either the longest prefix match of eid, if eid is maskable, // or the exact match otherwise. eid must be a 'simple' address - private Map getDaoEntryBest(LispAddressContainer eid, ILispDAO dao) { - if (MaskUtil.isMaskable(eid)) { - LispAddressContainer key; - short mask = MaskUtil.getMaskForAddress(eid); + private Map getDaoEntryBest(Eid eid, ILispDAO dao) { + if (MaskUtil.isMaskable(eid.getAddress())) { + Eid key; + short mask = MaskUtil.getMaskForAddress(eid.getAddress()); while (mask > 0) { key = MaskUtil.normalize(eid, mask); mask--; @@ -78,8 +78,7 @@ public class MultiTableMapCache implements IMapCache { } } - private Object getMappingExactSD(LispAddressContainer srcEid, LispAddressContainer dstEid, - ILispDAO dao) { + private Object getMappingExactSD(Eid srcEid, Eid dstEid, ILispDAO dao) { Map daoEntry = dao.get(dstEid); if (daoEntry != null) { // try SrcDst eid lookup @@ -94,7 +93,7 @@ public class MultiTableMapCache implements IMapCache { } // Returns the mapping corresponding to the longest prefix match for eid. eid must be a simple (maskable or not) address - private Object getMappingLpmEid(LispAddressContainer eid, ILispDAO dao) { + private Object getMappingLpmEid(Eid eid, ILispDAO dao) { if (eid == null) { return null; } @@ -108,7 +107,7 @@ public class MultiTableMapCache implements IMapCache { // Returns a mapping corresponding to either the longest prefix match for both dstEid and srcEid, // if a SourceDest mapping exists, or to dstEid - private Object getMappingLpmSD(LispAddressContainer srcEid, LispAddressContainer dstEid, ILispDAO dao) { + private Object getMappingLpmSD(Eid srcEid, Eid dstEid, ILispDAO dao) { Map daoEntry = getDaoEntryBest(dstEid, dao); if (daoEntry != null) { // try SrcDst eid lookup @@ -126,15 +125,15 @@ public class MultiTableMapCache implements IMapCache { return null; } - public Object getMapping(LispAddressContainer srcEid, LispAddressContainer dstEid) { + public Object getMapping(Eid srcEid, Eid dstEid) { if (dstEid == null) { return null; } // a map-request for an actual SrcDst LCAF, ignore src eid - if (dstEid.getAddress() instanceof LcafSourceDest) { - LispAddressContainer srcAddr = LcafSourceDestHelper.getSrc(dstEid); - LispAddressContainer dstAddr = LcafSourceDestHelper.getDst(dstEid); + if (dstEid.getAddress() instanceof SourceDestKey) { + Eid srcAddr = SourceDestKeyHelper.getSrc(dstEid); + Eid dstAddr = SourceDestKeyHelper.getDst(dstEid); return getMappingLpmSD(srcAddr, dstAddr, dao); } @@ -142,12 +141,12 @@ public class MultiTableMapCache implements IMapCache { return getMappingLpmSD(srcEid, dstEid, dao); } - public void removeMapping(LispAddressContainer eid, boolean overwrite) { + public void removeMapping(Eid eid, boolean overwrite) { eid = MaskUtil.normalize(eid); - if (eid.getAddress() instanceof LcafSourceDest) { + if (eid.getAddress() instanceof SourceDestKey) { ILispDAO db = getSDInnerDao(eid, dao); if (db != null) { - db.removeSpecific(LcafSourceDestHelper.getSrc(eid), + db.removeSpecific(SourceDestKeyHelper.getSrc(eid), SubKeys.RECORD); } } else { @@ -155,43 +154,43 @@ public class MultiTableMapCache implements IMapCache { } } - public void addAuthenticationKey(LispAddressContainer eid, String key) { + public void addAuthenticationKey(Eid eid, MappingAuthkey key) { eid = MaskUtil.normalize(eid); - if (eid.getAddress() instanceof LcafSourceDest) { + if (eid.getAddress() instanceof SourceDestKey) { ILispDAO srcDstDao = getOrInstantiateSDInnerDao(eid, dao); - srcDstDao.put(LcafSourceDestHelper.getSrc(eid), new MappingEntry(SubKeys.AUTH_KEY, key)); + srcDstDao.put(SourceDestKeyHelper.getSrc(eid), new MappingEntry<>(SubKeys.AUTH_KEY, key)); } else { - dao.put(eid, new MappingEntry(SubKeys.AUTH_KEY, key)); + dao.put(eid, new MappingEntry<>(SubKeys.AUTH_KEY, key)); } } - private String getAuthKeyLpm(LispAddressContainer prefix, ILispDAO db) { - short maskLength = MaskUtil.getMaskForAddress(prefix); + private MappingAuthkey getAuthKeyLpm(Eid prefix, ILispDAO db) { + short maskLength = MaskUtil.getMaskForAddress(prefix.getAddress()); while (maskLength >= 0) { - LispAddressContainer key = MaskUtil.normalize(prefix, maskLength); + Eid key = MaskUtil.normalize(prefix, maskLength); Object password = db.getSpecific(key, SubKeys.AUTH_KEY); - if (password != null && password instanceof String) { - return (String) password; + if (password != null && password instanceof MappingAuthkey) { + return (MappingAuthkey) password; } maskLength -= 1; } return null; } - public String getAuthenticationKey(LispAddressContainer eid) { - if (MaskUtil.isMaskable(LispAFIConvertor.toAFI(eid))) { + public MappingAuthkey getAuthenticationKey(Eid eid) { + if (MaskUtil.isMaskable(eid.getAddress())) { return getAuthKeyLpm(eid, dao); - } else if (eid.getAddress() instanceof LcafSourceDest) { + } else if (eid.getAddress() instanceof SourceDestKey) { // NOTE: this is an exact match, not a longest prefix match ILispDAO srcDstDao = getSDInnerDao(eid, dao); if (srcDstDao != null) { - return getAuthKeyLpm(LcafSourceDestHelper.getSrc(eid), srcDstDao); + return getAuthKeyLpm(SourceDestKeyHelper.getSrc(eid), srcDstDao); } return null; } else { Object password = dao.getSpecific(eid, SubKeys.AUTH_KEY); - if (password != null && password instanceof String) { - return (String) password; + if (password != null && password instanceof MappingAuthkey) { + return (MappingAuthkey) password; } else { LOG.warn("Failed to find password!"); return null; @@ -199,9 +198,9 @@ public class MultiTableMapCache implements IMapCache { } } - public void removeAuthenticationKey(LispAddressContainer eid) { + public void removeAuthenticationKey(Eid eid) { eid = MaskUtil.normalize(eid); - if (eid.getAddress() instanceof LcafSourceDest) { + if (eid.getAddress() instanceof SourceDestKey) { ILispDAO srcDstDao = getSDInnerDao(eid, dao); if (srcDstDao != null) { srcDstDao.removeSpecific(eid, SubKeys.AUTH_KEY); @@ -213,8 +212,8 @@ public class MultiTableMapCache implements IMapCache { // SrcDst LCAFs are stored in a 2-tier DAO with dst having priority over src. // This method returns the DAO associated to a dst or creates it if it doesn't exist. - private ILispDAO getOrInstantiateSDInnerDao(LispAddressContainer address, ILispDAO dao) { - LispAddressContainer dstKey = LcafSourceDestHelper.getDst(address); + private ILispDAO getOrInstantiateSDInnerDao(Eid address, ILispDAO dao) { + Eid dstKey = SourceDestKeyHelper.getDst(address); ILispDAO srcDstDao = (ILispDAO) dao.getSpecific(dstKey, SubKeys.LCAF_SRCDST); if (srcDstDao == null) { // inserts nested table for source @@ -225,8 +224,8 @@ public class MultiTableMapCache implements IMapCache { // SrcDst LCAFs are stored in a 2-tier DAO with dst having priority over src. // This method returns the DAO associated to dst or null if it doesn't exist. - private ILispDAO getSDInnerDao(LispAddressContainer address, ILispDAO dao) { - return (ILispDAO) dao.getSpecific(LcafSourceDestHelper.getDst(address), SubKeys.LCAF_SRCDST); + private ILispDAO getSDInnerDao(Eid address, ILispDAO dao) { + return (ILispDAO) dao.getSpecific(SourceDestKeyHelper.getDst(address), SubKeys.LCAF_SRCDST); } public String printMappings() { @@ -269,38 +268,38 @@ public class MultiTableMapCache implements IMapCache { } @Override - public void updateMappingRegistration(LispAddressContainer key) { + public void updateMappingRegistration(Eid key) { } @Override - public void addData(LispAddressContainer key, String subKey, Object data) { + public void addData(Eid key, String subKey, Object data) { key = MaskUtil.normalize(key); - if (key.getAddress() instanceof LcafSourceDest) { + if (key.getAddress() instanceof SourceDestKey) { ILispDAO srcDstDao = getOrInstantiateSDInnerDao(key, dao); - srcDstDao.put(LcafSourceDestHelper.getSrc(key), new MappingEntry(subKey, data)); + srcDstDao.put(SourceDestKeyHelper.getSrc(key), new MappingEntry(subKey, data)); } else { dao.put(key, new MappingEntry(subKey, data)); } } @Override - public Object getData(LispAddressContainer eid, String subKey) { - if (eid.getAddress() instanceof LcafSourceDest) { + public Object getData(Eid eid, String subKey) { + if (eid.getAddress() instanceof SourceDestKey) { ILispDAO srcDstDao = getSDInnerDao(eid, dao); - return srcDstDao.getSpecific(LcafSourceDestHelper.getSrc(eid), subKey); + return srcDstDao.getSpecific(SourceDestKeyHelper.getSrc(eid), subKey); } else { return dao.getSpecific(eid, subKey); } } @Override - public void removeData(LispAddressContainer key, String subKey) { + public void removeData(Eid key, String subKey) { key = MaskUtil.normalize(key); - if (key.getAddress() instanceof LcafSourceDest) { + if (key.getAddress() instanceof SourceDestKey) { ILispDAO db = getSDInnerDao(key, dao); if (db != null) { - db.removeSpecific(LcafSourceDestHelper.getSrc(key), subKey); + db.removeSpecific(SourceDestKeyHelper.getSrc(key), subKey); } } else { dao.removeSpecific(key, subKey); diff --git a/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/mapcache/SimpleMapCache.java b/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/mapcache/SimpleMapCache.java index 62f46678b..35ec9892d 100644 --- a/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/mapcache/SimpleMapCache.java +++ b/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/mapcache/SimpleMapCache.java @@ -17,9 +17,9 @@ import org.opendaylight.lispflowmapping.interfaces.dao.IRowVisitor; import org.opendaylight.lispflowmapping.interfaces.dao.MappingEntry; import org.opendaylight.lispflowmapping.interfaces.dao.SubKeys; import org.opendaylight.lispflowmapping.interfaces.mapcache.IMapCache; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.lispaddress.LispAddressContainer; -import org.opendaylight.lispflowmapping.lisp.util.LispAFIConvertor; import org.opendaylight.lispflowmapping.lisp.util.MaskUtil; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.Eid; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.mapping.authkey.container.MappingAuthkey; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -38,18 +38,18 @@ public class SimpleMapCache implements IMapCache { this.dao = dao; } - public void addMapping(LispAddressContainer key, Object value, boolean shouldOverwrite) { - LispAddressContainer eid = MaskUtil.normalize(key); + public void addMapping(Eid key, Object value, boolean shouldOverwrite) { + Eid eid = MaskUtil.normalize(key); dao.put(eid, new MappingEntry<>(SubKeys.REGDATE, new Date(System.currentTimeMillis()))); dao.put(eid, new MappingEntry<>(SubKeys.RECORD, value)); } // Method returns the DAO entry (hash) corresponding to either the longest prefix match of eid, if eid is maskable, // or the exact match otherwise. eid must be a 'simple' address - private Map getDaoEntryBest(LispAddressContainer key, ILispDAO dao) { - if (MaskUtil.isMaskable(key)) { - LispAddressContainer lookupKey; - short mask = MaskUtil.getMaskForAddress(key); + private Map getDaoEntryBest(Eid key, ILispDAO dao) { + if (MaskUtil.isMaskable(key.getAddress())) { + Eid lookupKey; + short mask = MaskUtil.getMaskForAddress(key.getAddress()); while (mask > 0) { lookupKey = MaskUtil.normalize(key, mask); mask--; @@ -66,23 +66,23 @@ public class SimpleMapCache implements IMapCache { // Method returns the DAO entry (hash) corresponding to either the longest prefix match of eid, if eid is maskable, // or the exact match otherwise. eid must be a 'simple' address - private SimpleImmutableEntry> getDaoPairEntryBest(LispAddressContainer key, ILispDAO dao) { - if (MaskUtil.isMaskable(key)) { - LispAddressContainer lookupKey; - short mask = MaskUtil.getMaskForAddress(key); + private SimpleImmutableEntry> getDaoPairEntryBest(Eid key, ILispDAO dao) { + if (MaskUtil.isMaskable(key.getAddress())) { + Eid lookupKey; + short mask = MaskUtil.getMaskForAddress(key.getAddress()); while (mask > 0) { lookupKey = MaskUtil.normalize(key, mask); mask--; Map entry = dao.get(lookupKey); if (entry != null) { - return new SimpleImmutableEntry>(lookupKey, entry); + return new SimpleImmutableEntry>(lookupKey, entry); } } return null; } else { Map entry = dao.get(key); if (entry != null) { - return new SimpleImmutableEntry>(key, entry); + return new SimpleImmutableEntry>(key, entry); } else { return null; } @@ -91,7 +91,7 @@ public class SimpleMapCache implements IMapCache { // Returns the mapping corresponding to the longest prefix match for eid. eid must be a simple (maskable or not) // address - private Object getMappingLpmEid(LispAddressContainer eid, ILispDAO dao) { + private Object getMappingLpmEid(Eid eid, ILispDAO dao) { Map daoEntry = getDaoEntryBest(eid, dao); if (daoEntry != null) { return daoEntry.get(SubKeys.RECORD); @@ -102,53 +102,53 @@ public class SimpleMapCache implements IMapCache { // Returns the matched key and mapping corresponding to the longest prefix match for eid. eid must be a simple // (maskable or not) address - private SimpleImmutableEntry getMappingPairLpmEid(LispAddressContainer eid, ILispDAO dao) { - SimpleImmutableEntry> daoEntry = getDaoPairEntryBest(eid, dao); + private SimpleImmutableEntry getMappingPairLpmEid(Eid eid, ILispDAO dao) { + SimpleImmutableEntry> daoEntry = getDaoPairEntryBest(eid, dao); if (daoEntry != null) { - return new SimpleImmutableEntry(daoEntry.getKey(), daoEntry.getValue().get( + return new SimpleImmutableEntry(daoEntry.getKey(), daoEntry.getValue().get( SubKeys.RECORD)); } else { return null; } } - public Object getMapping(LispAddressContainer srcEid, LispAddressContainer dstEid) { + public Object getMapping(Eid srcEid, Eid dstEid) { if (dstEid == null) { return null; } return getMappingLpmEid(dstEid, dao); } - public void removeMapping(LispAddressContainer eid, boolean overwrite) { + public void removeMapping(Eid eid, boolean overwrite) { eid = MaskUtil.normalize(eid); dao.removeSpecific(eid, SubKeys.RECORD); } - public void addAuthenticationKey(LispAddressContainer eid, String key) { + public void addAuthenticationKey(Eid eid, MappingAuthkey key) { eid = MaskUtil.normalize(eid); - dao.put(eid, new MappingEntry(SubKeys.AUTH_KEY, key)); + dao.put(eid, new MappingEntry<>(SubKeys.AUTH_KEY, key)); } - private String getAuthKeyLpm(LispAddressContainer prefix, ILispDAO db) { - short maskLength = MaskUtil.getMaskForAddress(prefix); + private MappingAuthkey getAuthKeyLpm(Eid prefix, ILispDAO db) { + short maskLength = MaskUtil.getMaskForAddress(prefix.getAddress()); while (maskLength >= 0) { - LispAddressContainer key = MaskUtil.normalize(prefix, maskLength); + Eid key = MaskUtil.normalize(prefix, maskLength); Object password = db.getSpecific(key, SubKeys.AUTH_KEY); - if (password != null && password instanceof String) { - return (String) password; + if (password != null && password instanceof MappingAuthkey) { + return (MappingAuthkey) password; } maskLength -= 1; } return null; } - public String getAuthenticationKey(LispAddressContainer eid) { - if (MaskUtil.isMaskable(LispAFIConvertor.toAFI(eid))) { + public MappingAuthkey getAuthenticationKey(Eid eid) { + if (MaskUtil.isMaskable(eid.getAddress())) { return getAuthKeyLpm(eid, dao); } else { Object password = dao.getSpecific(eid, SubKeys.AUTH_KEY); - if (password != null && password instanceof String) { - return (String) password; + if (password != null && password instanceof MappingAuthkey) { + return (MappingAuthkey) password; } else { LOG.warn("Failed to find password!"); return null; @@ -156,7 +156,7 @@ public class SimpleMapCache implements IMapCache { } } - public void removeAuthenticationKey(LispAddressContainer eid) { + public void removeAuthenticationKey(Eid eid) { eid = MaskUtil.normalize(eid); dao.removeSpecific(eid, SubKeys.AUTH_KEY); } @@ -181,7 +181,7 @@ public class SimpleMapCache implements IMapCache { } @Override - public void updateMappingRegistration(LispAddressContainer key) { + public void updateMappingRegistration(Eid key) { Map daoEntry = getDaoEntryBest(key, dao); if (daoEntry != null) { dao.put(key, new MappingEntry<>(SubKeys.REGDATE, new Date(System.currentTimeMillis()))); @@ -189,18 +189,18 @@ public class SimpleMapCache implements IMapCache { } @Override - public void addData(LispAddressContainer key, String subKey, Object data) { - LispAddressContainer normKey = MaskUtil.normalize(key); + public void addData(Eid key, String subKey, Object data) { + Eid normKey = MaskUtil.normalize(key); dao.put(normKey, new MappingEntry<>(subKey, data)); } @Override - public Object getData(LispAddressContainer key, String subKey) { + public Object getData(Eid key, String subKey) { return dao.getSpecific(key, subKey); } @Override - public void removeData(LispAddressContainer key, String subKey) { + public void removeData(Eid key, String subKey) { dao.removeSpecific(key, subKey); } } diff --git a/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/mdsal/AuthenticationKeyDataListener.java b/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/mdsal/AuthenticationKeyDataListener.java index 11c24cb4d..1e1f90ab0 100644 --- a/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/mdsal/AuthenticationKeyDataListener.java +++ b/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/mdsal/AuthenticationKeyDataListener.java @@ -15,7 +15,7 @@ import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent; import org.opendaylight.lispflowmapping.interfaces.mapcache.IMappingSystem; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.MappingDatabase; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.db.instance.AuthenticationKey; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.mapping.database.InstanceId; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.mapping.database.VirtualNetworkIdentifier; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.slf4j.Logger; @@ -34,7 +34,7 @@ public class AuthenticationKeyDataListener extends AbstractDataListener { public AuthenticationKeyDataListener(DataBroker broker, IMappingSystem mapSystem) { setBroker(broker); setMappingSystem(mapSystem); - setPath(InstanceIdentifier.create(MappingDatabase.class).child(InstanceId.class) + setPath(InstanceIdentifier.create(MappingDatabase.class).child(VirtualNetworkIdentifier.class) .child(AuthenticationKey.class)); LOG.trace("Registering AuthenticationKey listener."); registerDataChangeListener(); @@ -54,7 +54,7 @@ public class AuthenticationKeyDataListener extends AbstractDataListener { LOG.trace("Key: {}", entry.getKey()); LOG.trace("Value: {}", authkey); - mapSystem.addAuthenticationKey(authkey.getLispAddressContainer(), authkey.getAuthkey()); + mapSystem.addAuthenticationKey(authkey.getEid(), authkey.getMappingAuthkey()); } } @@ -68,7 +68,7 @@ public class AuthenticationKeyDataListener extends AbstractDataListener { LOG.trace("Key: {}", entry.getKey()); LOG.trace("Value: {}", authkey); - mapSystem.addAuthenticationKey(authkey.getLispAddressContainer(), authkey.getAuthkey()); + mapSystem.addAuthenticationKey(authkey.getEid(), authkey.getMappingAuthkey()); } } @@ -83,7 +83,7 @@ public class AuthenticationKeyDataListener extends AbstractDataListener { LOG.trace("Key: {}", entry); LOG.trace("Value: {}", authkey); - mapSystem.removeAuthenticationKey(authkey.getLispAddressContainer()); + mapSystem.removeAuthenticationKey(authkey.getEid()); } } } diff --git a/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/mdsal/DataStoreBackEnd.java b/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/mdsal/DataStoreBackEnd.java index 51ba251a2..5435a4edc 100644 --- a/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/mdsal/DataStoreBackEnd.java +++ b/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/mdsal/DataStoreBackEnd.java @@ -21,7 +21,7 @@ import org.opendaylight.lispflowmapping.lisp.util.LispAddressStringifier; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.MappingDatabase; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.db.instance.AuthenticationKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.db.instance.Mapping; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.mapping.database.InstanceId; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.mapping.database.VirtualNetworkIdentifier; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -45,41 +45,41 @@ public class DataStoreBackEnd { } public void addAuthenticationKey(AuthenticationKey authenticationKey) { - LOG.debug("MD-SAL: Adding authentication key '{}' for {}", authenticationKey.getAuthkey(), - LispAddressStringifier.getString(authenticationKey.getLispAddressContainer())); + LOG.debug("MD-SAL: Adding authentication key '{}' for {}", authenticationKey.getMappingAuthkey().getKeyString(), + LispAddressStringifier.getString(authenticationKey.getEid())); InstanceIdentifier path = InstanceIdentifierUtil - .createAuthenticationKeyIid(authenticationKey.getLispAddressContainer()); + .createAuthenticationKeyIid(authenticationKey.getEid()); writePutTransaction(path, authenticationKey, LogicalDatastoreType.CONFIGURATION, "Adding authentication key to config datastrore failed"); } public void addMapping(Mapping mapping) { LOG.debug("MD-SAL: Adding mapping for {}", - LispAddressStringifier.getString(mapping.getLispAddressContainer())); + LispAddressStringifier.getString(mapping.getMappingRecord().getEid())); InstanceIdentifier path = InstanceIdentifierUtil - .createMappingIid(mapping.getLispAddressContainer(), mapping.getOrigin()); + .createMappingIid(mapping.getMappingRecord().getEid(), mapping.getOrigin()); writePutTransaction(path, mapping, LogicalDatastoreType.CONFIGURATION, "Adding mapping to config datastrore failed"); } public void removeAuthenticationKey(AuthenticationKey authenticationKey) { LOG.debug("MD-SAL: Removing authentication key for {}", - LispAddressStringifier.getString(authenticationKey.getLispAddressContainer())); + LispAddressStringifier.getString(authenticationKey.getEid())); InstanceIdentifier path = InstanceIdentifierUtil - .createAuthenticationKeyIid(authenticationKey.getLispAddressContainer()); + .createAuthenticationKeyIid(authenticationKey.getEid()); deleteTransaction(path, LogicalDatastoreType.CONFIGURATION, "Deleting authentication key from config datastrore failed"); } public void removeMapping(Mapping mapping) { LOG.debug("MD-SAL: Removing mapping for {}", - LispAddressStringifier.getString(mapping.getLispAddressContainer())); + LispAddressStringifier.getString(mapping.getMappingRecord().getEid())); InstanceIdentifier path = InstanceIdentifierUtil - .createMappingIid(mapping.getLispAddressContainer(), mapping.getOrigin()); + .createMappingIid(mapping.getMappingRecord().getEid(), mapping.getOrigin()); deleteTransaction(path, LogicalDatastoreType.CONFIGURATION, "Deleting mapping from config datastrore failed"); } @@ -92,21 +92,21 @@ public class DataStoreBackEnd { public void updateAuthenticationKey(AuthenticationKey authenticationKey) { LOG.debug("MD-SAL: Updating authentication key for {} with '{}'", - LispAddressStringifier.getString(authenticationKey.getLispAddressContainer()), - authenticationKey.getAuthkey()); + LispAddressStringifier.getString(authenticationKey.getEid()), + authenticationKey.getMappingAuthkey().getKeyString()); InstanceIdentifier path = InstanceIdentifierUtil - .createAuthenticationKeyIid(authenticationKey.getLispAddressContainer()); + .createAuthenticationKeyIid(authenticationKey.getEid()); writePutTransaction(path, authenticationKey, LogicalDatastoreType.CONFIGURATION, "Updating authentication key in config datastrore failed"); } public void updateMapping(Mapping mapping) { LOG.debug("MD-SAL: Updating mapping for {}", - LispAddressStringifier.getString(mapping.getLispAddressContainer())); + LispAddressStringifier.getString(mapping.getMappingRecord().getEid())); InstanceIdentifier path = InstanceIdentifierUtil - .createMappingIid(mapping.getLispAddressContainer(), mapping.getOrigin()); + .createMappingIid(mapping.getMappingRecord().getEid(), mapping.getOrigin()); writePutTransaction(path, mapping, LogicalDatastoreType.CONFIGURATION, "Updating mapping in config datastrore failed"); } @@ -118,7 +118,7 @@ public class DataStoreBackEnd { MappingDatabase mdb = readTransaction(path, LogicalDatastoreType.CONFIGURATION); if (mdb != null) { - for (InstanceId id : mdb.getInstanceId()) { + for (VirtualNetworkIdentifier id : mdb.getVirtualNetworkIdentifier()) { List ms = id.getMapping(); if (ms != null) { mappings.addAll(ms); @@ -136,7 +136,7 @@ public class DataStoreBackEnd { MappingDatabase mdb = readTransaction(path, LogicalDatastoreType.CONFIGURATION); if (mdb != null) { - for (InstanceId id : mdb.getInstanceId()) { + for (VirtualNetworkIdentifier id : mdb.getVirtualNetworkIdentifier()) { List keys = id.getAuthenticationKey(); if (keys != null) { authKeys.addAll(keys); diff --git a/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/mdsal/MappingDataListener.java b/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/mdsal/MappingDataListener.java index 60d834070..d3c070063 100644 --- a/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/mdsal/MappingDataListener.java +++ b/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/mdsal/MappingDataListener.java @@ -15,11 +15,10 @@ import org.opendaylight.controller.md.sal.binding.api.NotificationPublishService import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent; import org.opendaylight.lispflowmapping.implementation.util.MSNotificationInputUtil; import org.opendaylight.lispflowmapping.interfaces.mapcache.IMappingSystem; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eidtolocatorrecords.EidToLocatorRecordBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.MappingChange; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.MappingDatabase; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.db.instance.Mapping; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.mapping.database.InstanceId; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.mapping.database.VirtualNetworkIdentifier; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.slf4j.Logger; @@ -41,7 +40,7 @@ public class MappingDataListener extends AbstractDataListener { setBroker(broker); setMappingSystem(msmr); setNotificationProviderService(nps); - setPath(InstanceIdentifier.create(MappingDatabase.class).child(InstanceId.class) + setPath(InstanceIdentifier.create(MappingDatabase.class).child(VirtualNetworkIdentifier.class) .child(Mapping.class)); LOG.trace("Registering Mapping listener."); registerDataChangeListener(); @@ -65,8 +64,8 @@ public class MappingDataListener extends AbstractDataListener { LOG.trace("Key: {}", entry.getKey()); LOG.trace("Value: {}", mapping); - mapSystem.addMapping(mapping.getOrigin(), mapping.getLispAddressContainer(), - new EidToLocatorRecordBuilder(mapping).build()); + mapSystem.addMapping(mapping.getOrigin(), mapping.getMappingRecord().getEid(), + mapping.getMappingRecord()); } } @@ -80,8 +79,8 @@ public class MappingDataListener extends AbstractDataListener { LOG.trace("Key: {}", entry.getKey()); LOG.trace("Value: {}", entry.getValue()); - mapSystem.addMapping(mapping.getOrigin(), mapping.getLispAddressContainer(), - new EidToLocatorRecordBuilder(mapping).build()); + mapSystem.addMapping(mapping.getOrigin(), mapping.getMappingRecord().getEid(), + mapping.getMappingRecord()); try { notificationPublishService.putNotification(MSNotificationInputUtil.toMappingChanged(mapping, MappingChange.Updated)); } catch (InterruptedException e) { @@ -101,7 +100,7 @@ public class MappingDataListener extends AbstractDataListener { LOG.trace("Key: {}", entry); LOG.trace("Value: {}", dataObject); - mapSystem.removeMapping(mapping.getOrigin(), mapping.getLispAddressContainer()); + mapSystem.removeMapping(mapping.getOrigin(), mapping.getMappingRecord().getEid()); try { notificationPublishService.putNotification(MSNotificationInputUtil.toMappingChanged(mapping, MappingChange.Removed)); } catch (InterruptedException e) { diff --git a/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/util/DSBEInputUtil.java b/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/util/DSBEInputUtil.java index aa19f91d6..3d86d34c9 100644 --- a/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/util/DSBEInputUtil.java +++ b/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/util/DSBEInputUtil.java @@ -12,9 +12,8 @@ import java.util.Arrays; import java.util.List; import org.opendaylight.lispflowmapping.lisp.util.LispAddressStringifier; -import org.opendaylight.lispflowmapping.lisp.util.MaskUtil; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eidtolocatorrecords.EidToLocatorRecord; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.lispaddress.LispAddressContainer; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.Eid; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping.record.container.MappingRecord; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.EidUri; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.MappingOrigin; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.SiteId; @@ -22,34 +21,31 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev15090 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.db.instance.AuthenticationKeyBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.db.instance.Mapping; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.db.instance.MappingBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.mapping.authkey.container.MappingAuthkey; /** * @author Florin Coras * */ public class DSBEInputUtil { - public static Mapping toMapping(MappingOrigin origin, LispAddressContainer key, SiteId siteId, - EidToLocatorRecord record) { + public static Mapping toMapping(MappingOrigin origin, Eid key, SiteId siteId, MappingRecord record) { List siteIds = (siteId != null) ? Arrays.asList(siteId) : null; - return new MappingBuilder(record).setEid(new EidUri(LispAddressStringifier.getURIString(key))) - .setOrigin(origin).setSiteId(siteIds).build(); + return new MappingBuilder().setEidUri(new EidUri(LispAddressStringifier.getURIString(key))) + .setOrigin(origin).setSiteId(siteIds).setMappingRecord(record).build(); } - public static Mapping toMapping(MappingOrigin origin, LispAddressContainer key) { + public static Mapping toMapping(MappingOrigin origin, Eid key) { MappingBuilder mb = new MappingBuilder(); - mb.setEid(new EidUri(LispAddressStringifier.getURIString(key))); + mb.setEidUri(new EidUri(LispAddressStringifier.getURIString(key))); mb.setOrigin(origin); - mb.setMaskLength(MaskUtil.getMaskForAddress(key)); - mb.setLispAddressContainer(key); return mb.build(); } - public static AuthenticationKey toAuthenticationKey(LispAddressContainer key, String authKey) { + public static AuthenticationKey toAuthenticationKey(Eid key, MappingAuthkey authKey) { AuthenticationKeyBuilder akb = new AuthenticationKeyBuilder(); - akb.setEid(new EidUri(LispAddressStringifier.getURIString(key))); - akb.setLispAddressContainer(key); - akb.setMaskLength(MaskUtil.getMaskForAddress(key)); - akb.setAuthkey(authKey); + akb.setEidUri(new EidUri(LispAddressStringifier.getURIString(key))); + akb.setEid(key); + akb.setMappingAuthkey(authKey); return akb.build(); } } diff --git a/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/util/InstanceIdentifierUtil.java b/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/util/InstanceIdentifierUtil.java index 79eeee841..1c513f1e9 100644 --- a/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/util/InstanceIdentifierUtil.java +++ b/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/util/InstanceIdentifierUtil.java @@ -8,19 +8,19 @@ package org.opendaylight.lispflowmapping.implementation.util; import org.opendaylight.lispflowmapping.lisp.util.LispAddressStringifier; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.Address; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.InstanceId; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.Eid; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.EidUri; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.IidUri; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.VniUri; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.MappingDatabase; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.MappingOrigin; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.db.instance.AuthenticationKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.db.instance.AuthenticationKeyKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.db.instance.Mapping; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.db.instance.MappingKey; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.lispaddress.LispAddressContainer; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.lispaddress.lispaddresscontainer.Address; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.lispaddress.lispaddresscontainer.address.LcafSegment; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.mapping.database.InstanceId; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.mapping.database.InstanceIdKey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.mapping.database.VirtualNetworkIdentifier; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.mapping.database.VirtualNetworkIdentifierKey; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import com.google.common.base.Preconditions; @@ -33,33 +33,33 @@ import com.google.common.base.Preconditions; * */ public class InstanceIdentifierUtil { - public static InstanceIdentifier createAuthenticationKeyIid(LispAddressContainer eid) { + public static InstanceIdentifier createAuthenticationKeyIid(Eid eid) { Preconditions.checkNotNull(eid, "Key needs and EID entry!"); - InstanceIdKey iidKey = new InstanceIdKey(new IidUri(Long.toString(getLispInstanceId(eid)))); + VirtualNetworkIdentifierKey vniKey = new VirtualNetworkIdentifierKey(new VniUri(Long.toString(getLispInstanceId(eid)))); AuthenticationKeyKey authKeyKey = new AuthenticationKeyKey(new EidUri(getURIAddressString(eid))); return InstanceIdentifier.create(MappingDatabase.class) - .child(InstanceId.class, iidKey).child(AuthenticationKey.class, authKeyKey); + .child(VirtualNetworkIdentifier.class, vniKey).child(AuthenticationKey.class, authKeyKey); } - public static InstanceIdentifier createMappingIid(LispAddressContainer eid, MappingOrigin orig) { + public static InstanceIdentifier createMappingIid(Eid eid, MappingOrigin orig) { Preconditions.checkNotNull(eid, "Mapping needs an EID entry!"); - InstanceIdKey iidKey = new InstanceIdKey(new IidUri(Long.toString(getLispInstanceId(eid)))); + VirtualNetworkIdentifierKey vniKey = new VirtualNetworkIdentifierKey(new VniUri(Long.toString(getLispInstanceId(eid)))); MappingKey eidKey = new MappingKey(new EidUri(getURIAddressString(eid)), orig); return InstanceIdentifier.create(MappingDatabase.class) - .child(InstanceId.class, iidKey).child(Mapping.class, eidKey); + .child(VirtualNetworkIdentifier.class, vniKey).child(Mapping.class, eidKey); } - private static long getLispInstanceId(LispAddressContainer container) { - Address eid = container.getAddress(); - if (eid instanceof LcafSegment) { - return ((LcafSegment) eid).getLcafSegmentAddr().getInstanceId(); + private static long getLispInstanceId(Eid eid) { + Address address = eid.getAddress(); + if (address instanceof InstanceId) { + return ((InstanceId) address).getInstanceId().getIid().getValue(); } return 0L; } - private static String getURIAddressString(LispAddressContainer container) { - return LispAddressStringifier.getURIString(container); + private static String getURIAddressString(Eid eid) { + return LispAddressStringifier.getURIString(eid); } } diff --git a/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/util/LispNotificationHelper.java b/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/util/LispNotificationHelper.java index e7d2b3197..4bfe82fdc 100644 --- a/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/util/LispNotificationHelper.java +++ b/mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/util/LispNotificationHelper.java @@ -13,20 +13,13 @@ import java.util.ArrayList; import java.util.List; import org.opendaylight.lispflowmapping.lisp.type.LispMessage; -import org.opendaylight.lispflowmapping.lisp.util.LispAFIConvertor; import org.opendaylight.lispflowmapping.lisp.util.LispAddressStringifier; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.AddMapping; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.EidToLocatorRecord; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.LcafApplicationDataAddress; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.LispAFIAddress; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.LispDistinguishedNameAddress; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.lispaddress.LispAddressContainer; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.lispaddress.lispaddresscontainer.address.distinguishedname.DistinguishedName; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.lispaddress.lispaddresscontainer.address.lcafkeyvalue.LcafKeyValueAddressAddr; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.lispsimpleaddress.PrimitiveAddress; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping.record.container.MappingRecord; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapregisternotification.MapRegister; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.transportaddress.TransportAddress; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.transportaddress.TransportAddressBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.rloc.container.Rloc; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.transport.address.TransportAddress; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.transport.address.TransportAddressBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.EidUri; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.MappingOrigin; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.SiteId; @@ -34,21 +27,28 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev15090 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.db.instance.MappingBuilder; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddressBuilder; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.PortNumber; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.SimpleAddress; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.Address; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.ApplicationData; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.DistinguishedName; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.Ipv4; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.Ipv6; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.KeyValueAddress; public class LispNotificationHelper { - public static TransportAddress getTransportAddressFromContainer(LispAddressContainer container) { + public static TransportAddress getTransportAddressFromRloc(Rloc rloc) { TransportAddressBuilder tab = new TransportAddressBuilder(); - LispAFIAddress address = LispAFIConvertor.toAFI(container); - if (address instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.lispaddress.lispaddresscontainer.address.ipv4.Ipv4Address) { - tab.setIpAddress(IpAddressBuilder.getDefaultInstance(((org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.lispaddress.lispaddresscontainer.address.ipv4.Ipv4Address) address).getIpv4Address().getValue())); + Address address = rloc.getAddress(); + if (address instanceof Ipv4) { + tab.setIpAddress(IpAddressBuilder.getDefaultInstance(((Ipv4) address).getIpv4().getValue())); tab.setPort(new PortNumber(LispMessage.PORT_NUM)); - } else if (address instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.lispaddress.lispaddresscontainer.address.ipv6.Ipv6Address) { - tab.setIpAddress(IpAddressBuilder.getDefaultInstance(((org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.lispaddress.lispaddresscontainer.address.ipv6.Ipv6Address) address).getIpv6Address().getValue())); + } else if (address instanceof Ipv6) { + tab.setIpAddress(IpAddressBuilder.getDefaultInstance(((Ipv6) address).getIpv6().getValue())); tab.setPort(new PortNumber(LispMessage.PORT_NUM)); - } else if (address instanceof LcafKeyValueAddressAddr) { - PrimitiveAddress primitiveAddress = ((LcafKeyValueAddressAddr) address).getValue().getPrimitiveAddress(); - if (primitiveAddress instanceof LispDistinguishedNameAddress) { - String value = ((LispDistinguishedNameAddress) primitiveAddress).getDistinguishedName(); + } else if (address instanceof KeyValueAddress) { + SimpleAddress sa = ((KeyValueAddress) address).getKeyValueAddress().getValue(); + if (sa.getDistinguishedNameType() != null) { + String value = sa.getDistinguishedNameType().getValue(); String ip = value.split(":")[0]; int port = Integer.valueOf(value.split(":")[1]); tab.setIpAddress(IpAddressBuilder.getDefaultInstance(ip)); @@ -56,17 +56,16 @@ public class LispNotificationHelper { } } else if (address instanceof DistinguishedName) { DistinguishedName dname = (DistinguishedName) address; - String value = dname.getDistinguishedName(); + String value = dname.getDistinguishedName().getValue(); String ip = value.split(":")[0]; int port = Integer.valueOf(value.split(":")[1]); tab.setIpAddress(IpAddressBuilder.getDefaultInstance(ip)); tab.setPort(new PortNumber(port)); - } else if (address instanceof LcafApplicationDataAddress) { - LcafApplicationDataAddress appData = (LcafApplicationDataAddress) address; - tab.setIpAddress(IpAddressBuilder.getDefaultInstance(((org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.lispsimpleaddress.primitiveaddress.Ipv4) appData.getAddress().getPrimitiveAddress()).getIpv4Address() - .getIpv4Address().getValue())); - tab.setPort(new PortNumber(appData.getLocalPortLow())); + } else if (address instanceof ApplicationData) { + ApplicationData appData = (ApplicationData) address; + tab.setIpAddress(appData.getApplicationData().getAddress().getIpAddress()); + tab.setPort(new PortNumber(appData.getApplicationData().getLocalPortLow())); } return tab.build(); } @@ -82,20 +81,14 @@ public class LispNotificationHelper { public static List getMapping(AddMapping mapRegisterNotification) { List mappings = new ArrayList(); - for (int i=0; i()); - EidToLocatorRecordBuilder etlrBuilder = new EidToLocatorRecordBuilder(); + mapNotifyBuilder.setMappingRecordItem(new ArrayList()); + MappingRecordBuilder etlrBuilder = new MappingRecordBuilder(); etlrBuilder.setLocatorRecord(new ArrayList()); - etlrBuilder.setLispAddressContainer(LispAFIConvertor.getIPContainer("1.1.1.1")); + etlrBuilder.setEid(LispAddressUtil.asIpv4PrefixEid("1.1.1.1/32")); etlrBuilder.setRecordTtl(55); - mapNotifyBuilder.getEidToLocatorRecord().add(etlrBuilder.build()); + mapNotifyBuilder.getMappingRecordItem().add( + new MappingRecordItemBuilder().setMappingRecord(etlrBuilder.build()).build()); ArrayAssert.assertEquals(new byte[0], LispAuthenticationUtil.createAuthenticationData(mapNotifyBuilder.build(), "password")); } diff --git a/mappingservice/implementation/src/test/java/org/opendaylight/lispflowmapping/implementation/lisp/MapResolverTest.java b/mappingservice/implementation/src/test/java/org/opendaylight/lispflowmapping/implementation/lisp/MapResolverTest.java index f6fd64771..5f74e2569 100644 --- a/mappingservice/implementation/src/test/java/org/opendaylight/lispflowmapping/implementation/lisp/MapResolverTest.java +++ b/mappingservice/implementation/src/test/java/org/opendaylight/lispflowmapping/implementation/lisp/MapResolverTest.java @@ -22,21 +22,22 @@ import org.opendaylight.lispflowmapping.implementation.MappingService; import org.opendaylight.lispflowmapping.implementation.MappingSystem; import org.opendaylight.lispflowmapping.interfaces.dao.ILispDAO; import org.opendaylight.lispflowmapping.interfaces.dao.SubKeys; -import org.opendaylight.lispflowmapping.lisp.util.LispAFIConvertor; +import org.opendaylight.lispflowmapping.lisp.util.LispAddressUtil; import org.opendaylight.lispflowmapping.tools.junit.BaseTestCase; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.EidToLocatorRecord.Action; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.MapReply; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.MapRequest; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eidrecords.EidRecord; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eidrecords.EidRecordBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eidtolocatorrecords.EidToLocatorRecord; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eidtolocatorrecords.EidToLocatorRecordBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.lispaddress.LispAddressContainer; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.Eid; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.list.EidItem; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.list.EidItemBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.locatorrecords.LocatorRecord; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.locatorrecords.LocatorRecordBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping.record.container.MappingRecord; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping.record.container.MappingRecord.Action; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping.record.container.MappingRecordBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.maprequest.ItrRloc; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.maprequest.SourceEidBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.maprequestnotification.MapRequestBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.rloc.container.Rloc; public class MapResolverTest extends BaseTestCase { @@ -45,10 +46,10 @@ public class MapResolverTest extends BaseTestCase { private ILispDAO dao; private MappingService mapService; private MapRequestBuilder mapRequest; - private LispAddressContainer v4Address; - private LispAddressContainer v6Address; + private Eid v4Address; + private Eid v6Address; - private HashMap> daoResults; + private HashMap> daoResults; @Override @Before @@ -70,24 +71,22 @@ public class MapResolverTest extends BaseTestCase { testedMapResolver.basicInit(); mapRequest = new MapRequestBuilder(); - v4Address = LispAFIConvertor.asIPv4Address("1.2.3.4"); - v6Address = LispAFIConvertor.asIPv6Address("0:0:0:0:0:0:0:1"); - daoResults = new HashMap>(); + v4Address = LispAddressUtil.asIpv4PrefixEid("1.2.3.4/32"); + v6Address = LispAddressUtil.asIpv6PrefixEid("0:0:0:0:0:0:0:1/128"); + daoResults = new HashMap>(); } @Test public void handleMapRequest__ReplyWithSingleLocator() throws Exception { mapRequest = getDefaultMapRequestBuilder(); - mapRequest.getEidRecord().add( - new EidRecordBuilder().setMask((short) 32) - .setLispAddressContainer(LispAFIConvertor.asIPv4Address("1.2.3.4")).build()); + mapRequest.getEidItem().add(new EidItemBuilder().setEid(v4Address).build()); - EidToLocatorRecordBuilder record = getDefaultEidToLocatorBuilder(); - record.setLispAddressContainer(v4Address); + MappingRecordBuilder record = getDefaultMappingRecordBuilder(); + record.setEid(v4Address); LocatorRecordBuilder locator = getDefaultLocatorBuilder(); locator.setLocalLocator(false); - locator.setLispAddressContainer(LispAFIConvertor.asIPv4Address("4.3.2.1")); + locator.setRloc(LispAddressUtil.asIpv4Rloc("4.3.2.1")); locator.setRouted(true); locator.setMulticastPriority((short) 5); locator.setWeight((short) 17); @@ -97,9 +96,9 @@ public class MapResolverTest extends BaseTestCase { MapReply mapReply = testedMapResolver.handleMapRequest(mapRequest.build()); - EidToLocatorRecord eidToLocators = mapReply.getEidToLocatorRecord().get(0); + MappingRecord eidToLocators = mapReply.getMappingRecordItem().get(0).getMappingRecord(); assertEquals(1, eidToLocators.getLocatorRecord().size()); - LocatorRecord resultLocator = mapReply.getEidToLocatorRecord().get(0).getLocatorRecord().get(0); + LocatorRecord resultLocator = mapReply.getMappingRecordItem().get(0).getMappingRecord().getLocatorRecord().get(0); assertEquals(locator.isLocalLocator(), resultLocator.isLocalLocator()); assertEquals(locator.isRouted(), resultLocator.isRouted()); assertEquals(locator.getMulticastPriority(), resultLocator.getMulticastPriority()); @@ -107,31 +106,29 @@ public class MapResolverTest extends BaseTestCase { assertEquals(locator.getPriority(), resultLocator.getPriority()); assertEquals(locator.getWeight(), resultLocator.getWeight()); - assertLocator(LispAFIConvertor.asIPv4Address("4.3.2.1"), eidToLocators.getLocatorRecord().get(0)); + assertLocator(LispAddressUtil.asIpv4Rloc("4.3.2.1"), eidToLocators.getLocatorRecord().get(0)); } @Test public void handleMapRequest__VerifyBasicFields() throws Exception { mapRequest = getDefaultMapRequestBuilder(); - mapRequest.getEidRecord().add( - new EidRecordBuilder().setMask((short) 32).setLispAddressContainer(v4Address).build()); + mapRequest.getEidItem().add(new EidItemBuilder().setEid(v4Address).build()); - EidToLocatorRecordBuilder record = getDefaultEidToLocatorBuilder(); - record.setLispAddressContainer(v4Address); + MappingRecordBuilder record = getDefaultMappingRecordBuilder(); + record.setEid(v4Address); record.setRecordTtl(100); record.setAuthoritative(true); LocatorRecordBuilder locator = getDefaultLocatorBuilder(); - locator.setLispAddressContainer(LispAFIConvertor.asIPv4Address("4.3.2.1")); + locator.setRloc(LispAddressUtil.asIpv4Rloc("4.3.2.1")); record.getLocatorRecord().add(locator.build()); prepareMapping(record.build()); MapReply mapReply = testedMapResolver.handleMapRequest(mapRequest.build()); assertEquals(mapRequest.getNonce(), mapReply.getNonce()); - EidToLocatorRecord eidToLocators = mapReply.getEidToLocatorRecord().get(0); - assertEquals((byte) 32, eidToLocators.getMaskLength().byteValue()); - assertEquals(v4Address, eidToLocators.getLispAddressContainer()); + MappingRecord eidToLocators = mapReply.getMappingRecordItem().get(0).getMappingRecord(); + assertEquals(v4Address, eidToLocators.getEid()); assertEquals(record.isAuthoritative(), eidToLocators.isAuthoritative()); assertEquals(record.getAction(), eidToLocators.getAction()); assertEquals(record.getRecordTtl(), eidToLocators.getRecordTtl()); @@ -140,15 +137,13 @@ public class MapResolverTest extends BaseTestCase { @Test public void handleMapRequest__VerifyMask() throws Exception { mapRequest = getDefaultMapRequestBuilder(); - mapRequest.getEidRecord().add( - new EidRecordBuilder().setMask((short) 32).setLispAddressContainer(v4Address).build()); + mapRequest.getEidItem().add(new EidItemBuilder().setEid(v4Address).build()); - EidToLocatorRecordBuilder record = getDefaultEidToLocatorBuilder(); - record.setLispAddressContainer(LispAFIConvertor.asIPv4Prefix("1.2.3.0", 24)); - record.setMaskLength((short) 24); + MappingRecordBuilder record = getDefaultMappingRecordBuilder(); + record.setEid(LispAddressUtil.asIpv4PrefixEid("1.2.3.0/24")); LocatorRecordBuilder locator = getDefaultLocatorBuilder(); - locator.setLispAddressContainer(LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress("4.3.2.1"))); + locator.setRloc(LispAddressUtil.asIpv4Rloc("4.3.2.1")); record.getLocatorRecord().add(locator.build()); prepareMapping(record.build()); @@ -156,23 +151,20 @@ public class MapResolverTest extends BaseTestCase { MapReply mapReply = testedMapResolver.handleMapRequest(mr); assertEquals(mr.getNonce(), mapReply.getNonce()); - EidToLocatorRecord eidToLocators = mapReply.getEidToLocatorRecord().get(0); - assertEquals((byte) 24, eidToLocators.getMaskLength().byteValue()); - assertEquals(LispAFIConvertor.asIPv4Prefix("1.2.3.0", 24), eidToLocators.getLispAddressContainer()); + MappingRecord eidToLocators = mapReply.getMappingRecordItem().get(0).getMappingRecord(); + assertEquals(LispAddressUtil.asIpv4PrefixEid("1.2.3.0/24"), eidToLocators.getEid()); } @Test public void handleMapRequest__VerifyMaskIPv6() throws Exception { mapRequest = getDefaultMapRequestBuilder(); - mapRequest.getEidRecord().add( - new EidRecordBuilder().setMask((short) 128).setLispAddressContainer(v6Address).build()); + mapRequest.getEidItem().add(new EidItemBuilder().setEid(v6Address).build()); - EidToLocatorRecordBuilder record = getDefaultEidToLocatorBuilder(); - record.setLispAddressContainer(LispAFIConvertor.toContainer(LispAFIConvertor.asIPv6AfiAddress("0:0:0:0:0:0:0:0"))); - record.setMaskLength((short) 128); + MappingRecordBuilder record = getDefaultMappingRecordBuilder(); + record.setEid(LispAddressUtil.asIpv6PrefixEid("0:0:0:0:0:0:0:0/128")); LocatorRecordBuilder locator = getDefaultLocatorBuilder(); - locator.setLispAddressContainer(LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress("4.3.2.1"))); + locator.setRloc(LispAddressUtil.asIpv4Rloc("4.3.2.1")); record.getLocatorRecord().add(locator.build()); prepareMapping(record.build()); @@ -181,51 +173,48 @@ public class MapResolverTest extends BaseTestCase { MapReply mapReply = testedMapResolver.handleMapRequest(mr); assertEquals(mr.getNonce(), mapReply.getNonce()); - EidToLocatorRecord eidToLocators = mapReply.getEidToLocatorRecord().get(0); - assertEquals((byte) 128, eidToLocators.getMaskLength().byteValue()); - assertEquals(v6Address, eidToLocators.getLispAddressContainer()); + MappingRecord eidToLocators = mapReply.getMappingRecordItem().get(0).getMappingRecord(); + assertEquals(v6Address, eidToLocators.getEid()); } @Test public void handleMapRequest__VerifyMaskIPv6NoMatch() throws Exception { mapRequest = getDefaultMapRequestBuilder(); - mapRequest.getEidRecord().add( - new EidRecordBuilder().setMask((short) 128).setLispAddressContainer(v6Address).build()); + mapRequest.getEidItem().add(new EidItemBuilder().setEid(v6Address).build()); - EidToLocatorRecordBuilder record = getDefaultEidToLocatorBuilder(); - record.setLispAddressContainer(LispAFIConvertor.asIPv6Prefix("0:1:0:0:0:0:0:1", 112)); - record.setMaskLength((short) 112); + MappingRecordBuilder record = getDefaultMappingRecordBuilder(); + record.setEid(LispAddressUtil.asIpv6PrefixEid("0:1:0:0:0:0:0:1/112")); LocatorRecordBuilder locator = getDefaultLocatorBuilder(); - locator.setLispAddressContainer(LispAFIConvertor.asIPv4Address("4.3.2.1")); + locator.setRloc(LispAddressUtil.asIpv4Rloc("4.3.2.1")); record.getLocatorRecord().add(locator.build()); prepareMapping(record.build()); MapRequest mr = mapRequest.build(); MapReply mapReply = testedMapResolver.handleMapRequest(mr); - EidToLocatorRecord eidToLocators = mapReply.getEidToLocatorRecord().get(0); + MappingRecord eidToLocators = mapReply.getMappingRecordItem().get(0).getMappingRecord(); assertEquals(null, eidToLocators.getLocatorRecord()); } @Test - public void handleMapRequest_VerifyNativelyForwardAutherized() { + public void handleMapRequest_VerifyNativelyForwardAuthorized() { MapRequest mr = getDefaultMapRequest(); - Map result = new HashMap(); + Map result = new HashMap(); result.put(SubKeys.RECORD, null); MapReply mapReply = getNativelyForwardMapReply(mr, result); - EidToLocatorRecord eidToLocators = mapReply.getEidToLocatorRecord().get(0); + MappingRecord eidToLocators = mapReply.getMappingRecordItem().get(0).getMappingRecord(); assertEquals(1, eidToLocators.getRecordTtl().intValue()); assertEquals(Action.NativelyForward, eidToLocators.getAction()); } - private MapReply getNativelyForwardMapReply(MapRequest mr, Map result) { - allowing(dao).get(wany(LispAddressContainer.class)); + private MapReply getNativelyForwardMapReply(MapRequest mr, Map result) { + allowing(dao).get(wany(Eid.class)); ret(result); - allowing(dao).getSpecific(wany(LispAddressContainer.class), with(SubKeys.AUTH_KEY)); + allowing(dao).getSpecific(wany(Eid.class), with(SubKeys.AUTH_KEY)); ret("pass"); MapReply mapReply = testedMapResolver.handleMapRequest(mr); return mapReply; @@ -233,8 +222,7 @@ public class MapResolverTest extends BaseTestCase { private MapRequest getDefaultMapRequest() { mapRequest = getDefaultMapRequestBuilder(); - mapRequest.getEidRecord().add( - new EidRecordBuilder().setMask((short) 32).setLispAddressContainer(v4Address).build()); + mapRequest.getEidItem().add(new EidItemBuilder().setEid(v4Address).build()); MapRequest mr = mapRequest.build(); return mr; } @@ -242,15 +230,13 @@ public class MapResolverTest extends BaseTestCase { @Test public void handleMapRequest__VerifyMaskNoMatch() throws Exception { mapRequest = getDefaultMapRequestBuilder(); - mapRequest.getEidRecord().add( - new EidRecordBuilder().setMask((short) 32).setLispAddressContainer(v4Address).build()); + mapRequest.getEidItem().add(new EidItemBuilder().setEid(v4Address).build()); - EidToLocatorRecordBuilder record = getDefaultEidToLocatorBuilder(); - record.setLispAddressContainer(LispAFIConvertor.asIPv4Prefix("1.2.4.0", 24)); - record.setMaskLength((short) 24); + MappingRecordBuilder record = getDefaultMappingRecordBuilder(); + record.setEid(LispAddressUtil.asIpv4PrefixEid("1.2.4.0/24")); LocatorRecordBuilder locator = getDefaultLocatorBuilder(); - locator.setLispAddressContainer(LispAFIConvertor.asIPv4Address("4.3.2.1")); + locator.setRloc(LispAddressUtil.asIpv4Rloc("4.3.2.1")); record.getLocatorRecord().add(locator.build()); prepareMapping(record.build()); @@ -258,7 +244,7 @@ public class MapResolverTest extends BaseTestCase { MapReply mapReply = testedMapResolver.handleMapRequest(mr); - EidToLocatorRecord eidToLocators = mapReply.getEidToLocatorRecord().get(0); + MappingRecord eidToLocators = mapReply.getMappingRecordItem().get(0).getMappingRecord(); assertEquals(null, eidToLocators.getLocatorRecord()); } @@ -266,93 +252,87 @@ public class MapResolverTest extends BaseTestCase { public void handleMapRequest__ReplyWithMultipleLocators() throws Exception { mapRequest = getDefaultMapRequestBuilder(); - mapRequest.getEidRecord().add( - new EidRecordBuilder().setMask((short) 32).setLispAddressContainer(v4Address).build()); + mapRequest.getEidItem().add(new EidItemBuilder().setEid(v4Address).build()); - EidToLocatorRecordBuilder record = getDefaultEidToLocatorBuilder(); - record.setLispAddressContainer(v4Address); + MappingRecordBuilder record = getDefaultMappingRecordBuilder(); + record.setEid(v4Address); LocatorRecordBuilder locator = getDefaultLocatorBuilder(); - locator.setLispAddressContainer(LispAFIConvertor.asIPv4Address("4.3.2.1")); + locator.setRloc(LispAddressUtil.asIpv4Rloc("4.3.2.1")); record.getLocatorRecord().add(locator.build()); locator = getDefaultLocatorBuilder(); - locator.setLispAddressContainer(LispAFIConvertor.asIPv6Address("0:0:0:0:0:0:0:1")); + locator.setRloc(LispAddressUtil.asIpv6Rloc("0:0:0:0:0:0:0:1")); record.getLocatorRecord().add(locator.build()); locator = getDefaultLocatorBuilder(); - locator.setLispAddressContainer(LispAFIConvertor.asIPv4Address("1.8.2.7")); + locator.setRloc(LispAddressUtil.asIpv4Rloc("1.8.2.7")); record.getLocatorRecord().add(locator.build()); prepareMapping(record.build()); MapReply mapReply = testedMapResolver.handleMapRequest(mapRequest.build()); - EidToLocatorRecord eidToLocators = mapReply.getEidToLocatorRecord().get(0); + MappingRecord eidToLocators = mapReply.getMappingRecordItem().get(0).getMappingRecord(); assertEquals(3, eidToLocators.getLocatorRecord().size()); - assertLocator(LispAFIConvertor.asIPv4Address("4.3.2.1"), eidToLocators.getLocatorRecord().get(0)); - assertLocator(LispAFIConvertor.asIPv6Address("0:0:0:0:0:0:0:1"), eidToLocators.getLocatorRecord().get(1)); - assertLocator(LispAFIConvertor.asIPv4Address("1.8.2.7"), eidToLocators.getLocatorRecord().get(2)); + assertLocator(LispAddressUtil.asIpv4Rloc("4.3.2.1"), eidToLocators.getLocatorRecord().get(0)); + assertLocator(LispAddressUtil.asIpv6Rloc("0:0:0:0:0:0:0:1"), eidToLocators.getLocatorRecord().get(1)); + assertLocator(LispAddressUtil.asIpv4Rloc("1.8.2.7"), eidToLocators.getLocatorRecord().get(2)); } @Test public void handleMapRequest__MultipleEIDs() throws Exception { mapRequest = getDefaultMapRequestBuilder(); - mapRequest.getEidRecord().add( - new EidRecordBuilder().setMask((short) 32).setLispAddressContainer(v4Address).build()); - mapRequest.getEidRecord().add( - new EidRecordBuilder().setMask((short) 128).setLispAddressContainer(v6Address).build()); + mapRequest.getEidItem().add(new EidItemBuilder().setEid(v4Address).build()); + mapRequest.getEidItem().add(new EidItemBuilder().setEid(v6Address).build()); - EidToLocatorRecordBuilder record1 = getDefaultEidToLocatorBuilder(); - record1.setLispAddressContainer(v4Address); + MappingRecordBuilder record1 = getDefaultMappingRecordBuilder(); + record1.setEid(v4Address); record1.setRecordTtl(100); LocatorRecordBuilder locator1 = getDefaultLocatorBuilder(); - locator1.setLispAddressContainer(LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress("4.3.2.1"))); + locator1.setRloc(LispAddressUtil.asIpv4Rloc("4.3.2.1")); record1.getLocatorRecord().add(locator1.build()); - EidToLocatorRecordBuilder record2 = getDefaultEidToLocatorBuilder(); - record2.setLispAddressContainer(v6Address); - record2.setMaskLength((short) 128); + MappingRecordBuilder record2 = getDefaultMappingRecordBuilder(); + record2.setEid(v6Address); record2.setRecordTtl(100); LocatorRecordBuilder locator2 = getDefaultLocatorBuilder(); - locator2.setLispAddressContainer(LispAFIConvertor.toContainer(LispAFIConvertor.asIPv6AfiAddress("0:0:0:0:0:0:0:1"))); + locator2.setRloc(LispAddressUtil.asIpv6Rloc("0:0:0:0:0:0:0:1")); record2.getLocatorRecord().add(locator2.build()); prepareMapping(record1.build(), record2.build()); MapReply mapReply = testedMapResolver.handleMapRequest(mapRequest.build()); - EidToLocatorRecord eidToLocators1 = mapReply.getEidToLocatorRecord().get(0); + MappingRecord eidToLocators1 = mapReply.getMappingRecordItem().get(0).getMappingRecord(); assertEquals(1, eidToLocators1.getLocatorRecord().size()); - assertLocator(LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress("4.3.2.1")), eidToLocators1 - .getLocatorRecord().get(0)); + assertLocator(LispAddressUtil.asIpv4Rloc("4.3.2.1"), eidToLocators1.getLocatorRecord().get(0)); - EidToLocatorRecord eidToLocators2 = mapReply.getEidToLocatorRecord().get(1); + MappingRecord eidToLocators2 = mapReply.getMappingRecordItem().get(1).getMappingRecord(); assertEquals(1, eidToLocators2.getLocatorRecord().size()); - assertLocator(LispAFIConvertor.toContainer(LispAFIConvertor.asIPv6AfiAddress("0:0:0:0:0:0:0:1")), eidToLocators2 - .getLocatorRecord().get(0)); + assertLocator(LispAddressUtil.asIpv6Rloc("0:0:0:0:0:0:0:1"), eidToLocators2.getLocatorRecord().get(0)); } - private void assertLocator(LispAddressContainer expectedAddress, LocatorRecord locatorRecord) { - assertEquals(expectedAddress, locatorRecord.getLispAddressContainer()); + private void assertLocator(Rloc expectedAddress, LocatorRecord locatorRecord) { + assertEquals(expectedAddress, locatorRecord.getRloc()); Assert.assertTrue(locatorRecord.isRouted()); } - private Map prepareMapping(EidToLocatorRecord... records) { + private Map prepareMapping(MappingRecord... records) { if (records.length > 0) { - for (EidToLocatorRecord eidToLocatorRecord : records) { - Map result = new HashMap(); + for (MappingRecord eidToLocatorRecord : records) { + Map result = new HashMap(); result.put(SubKeys.RECORD, eidToLocatorRecord); - daoResults.put(eidToLocatorRecord.getLispAddressContainer(), result); + daoResults.put(eidToLocatorRecord.getEid(), result); } } - ValueSaverAction daoGetSaverAction = new ValueSaverAction() { + ValueSaverAction daoGetSaverAction = new ValueSaverAction() { @Override - protected boolean validate(LispAddressContainer value) { + protected boolean validate(Eid value) { return true; } @@ -364,7 +344,7 @@ public class MapResolverTest extends BaseTestCase { allowing(dao).get(with(daoGetSaverAction)); will(daoGetSaverAction); - allowing(dao).getSpecific(wany(LispAddressContainer.class), with(SubKeys.AUTH_KEY)); + allowing(dao).getSpecific(wany(Eid.class), with(SubKeys.AUTH_KEY)); return daoResults.get(v4Address); } @@ -372,7 +352,7 @@ public class MapResolverTest extends BaseTestCase { private MapRequestBuilder getDefaultMapRequestBuilder() { MapRequestBuilder mrBuilder = new MapRequestBuilder(); mrBuilder.setAuthoritative(false); - mrBuilder.setEidRecord(new ArrayList()); + mrBuilder.setEidItem(new ArrayList()); mrBuilder.setItrRloc(new ArrayList()); mrBuilder.setMapDataPresent(true); mrBuilder.setNonce((long) 0); @@ -380,18 +360,16 @@ public class MapResolverTest extends BaseTestCase { mrBuilder.setProbe(false); mrBuilder.setSmr(false); mrBuilder.setSmrInvoked(true); - mrBuilder.setSourceEid(new SourceEidBuilder().setLispAddressContainer( - LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress("127.0.0.1"))).build()); + mrBuilder.setSourceEid(new SourceEidBuilder().setEid(LispAddressUtil.asIpv4Eid("127.0.0.1")).build()); return mrBuilder; } - private EidToLocatorRecordBuilder getDefaultEidToLocatorBuilder() { - EidToLocatorRecordBuilder builder = new EidToLocatorRecordBuilder(); + private MappingRecordBuilder getDefaultMappingRecordBuilder() { + MappingRecordBuilder builder = new MappingRecordBuilder(); builder.setAction(Action.NoAction); builder.setAuthoritative(false); builder.setLocatorRecord(new ArrayList()); builder.setMapVersion((short) 0); - builder.setMaskLength((short) 32); builder.setRecordTtl(60); return builder; } diff --git a/mappingservice/implementation/src/test/java/org/opendaylight/lispflowmapping/implementation/lisp/MapServerTest.java b/mappingservice/implementation/src/test/java/org/opendaylight/lispflowmapping/implementation/lisp/MapServerTest.java index 824012697..f797a6743 100644 --- a/mappingservice/implementation/src/test/java/org/opendaylight/lispflowmapping/implementation/lisp/MapServerTest.java +++ b/mappingservice/implementation/src/test/java/org/opendaylight/lispflowmapping/implementation/lisp/MapServerTest.java @@ -24,21 +24,27 @@ import org.opendaylight.lispflowmapping.implementation.mdsal.DataStoreBackEnd; import org.opendaylight.lispflowmapping.interfaces.dao.ILispDAO; import org.opendaylight.lispflowmapping.interfaces.dao.MappingEntry; import org.opendaylight.lispflowmapping.interfaces.dao.SubKeys; -import org.opendaylight.lispflowmapping.lisp.util.LispAFIConvertor; +import org.opendaylight.lispflowmapping.lisp.util.LispAddressUtil; import org.opendaylight.lispflowmapping.lisp.util.MaskUtil; import org.opendaylight.lispflowmapping.lisp.serializer.MapRegisterSerializer; import org.opendaylight.lispflowmapping.tools.junit.BaseTestCase; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.EidToLocatorRecord.Action; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.LispAFIAddress; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.NoAddressAfi; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.SimpleAddressBuilder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.Address; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.NoAddressBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.MapNotify; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.MapRegister; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eidtolocatorrecords.EidToLocatorRecord; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eidtolocatorrecords.EidToLocatorRecordBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.lispaddress.LispAddressContainer; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.lispaddress.lispaddresscontainer.address.no.NoAddressBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.Eid; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.EidBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.locatorrecords.LocatorRecord; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.locatorrecords.LocatorRecordBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping.record.container.MappingRecord; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping.record.container.MappingRecord.Action; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping.record.container.MappingRecordBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping.record.list.MappingRecordItem; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping.record.list.MappingRecordItemBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapregisternotification.MapRegisterBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.rloc.container.Rloc; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.MappingOrigin; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.db.instance.Mapping; @@ -51,12 +57,12 @@ public class MapServerTest extends BaseTestCase { private MappingSystem mapSystem; private MapRegisterBuilder mapRegisterBuilder; - private LispAddressContainer eid; - private LispAddressContainer rloc; + private Eid eid; + private Rloc rloc; private ValueSaverAction[]> mappingEntriesSaver; private MapRegister mapRegisterWithAuthentication; - private String eidIpv4String = "10.31.0.5"; - private String eidIpv6String = "1:1:1:1:1:1:1:0"; + private String eidIpv4String = "10.31.0.5/32"; + private String eidIpv6String = "1:1:1:1:1:1:1:0/128"; @Override @Before @@ -84,15 +90,15 @@ public class MapServerTest extends BaseTestCase { mapRegisterBuilder = new MapRegisterBuilder(); mapRegisterBuilder.setKeyId((short) 0); mapRegisterBuilder.setAuthenticationData(new byte[0]); - eid = LispAFIConvertor.asIPv4Address(eidIpv4String); - rloc = LispAFIConvertor.asIPv4Address("192.168.136.10"); - EidToLocatorRecordBuilder recordBuilder = new EidToLocatorRecordBuilder(); - recordBuilder.setLispAddressContainer(eid).setMaskLength((short) 32); + eid = LispAddressUtil.asIpv4PrefixEid(eidIpv4String); + rloc = LispAddressUtil.asIpv4Rloc("192.168.136.10"); + MappingRecordBuilder recordBuilder = new MappingRecordBuilder(); + recordBuilder.setEid(eid); recordBuilder.setLocatorRecord(new ArrayList()); - recordBuilder.getLocatorRecord().add(new LocatorRecordBuilder().setLispAddressContainer(rloc).build()); + recordBuilder.getLocatorRecord().add(new LocatorRecordBuilder().setRloc(rloc).build()); recordBuilder.setAction(Action.NoAction).setMapVersion((short) 0).setAuthoritative(false).setRecordTtl(60).setMaskLength((short) 32); - mapRegisterBuilder.setEidToLocatorRecord(new ArrayList()); - mapRegisterBuilder.getEidToLocatorRecord().add(recordBuilder.build()); + mapRegisterBuilder.setMappingRecordItem(new ArrayList()); + mapRegisterBuilder.getMappingRecordItem().add(new MappingRecordItemBuilder().setMappingRecord(recordBuilder.build()).build()); mapRegisterWithAuthentication = MapRegisterSerializer.getInstance().deserialize(hexToByteBuffer("38 00 01 01 FF BB " // + "00 00 00 00 00 00 00 01 00 14 2c 61 b9 c9 9a 20 " // @@ -113,21 +119,22 @@ public class MapServerTest extends BaseTestCase { MappingEntry[] entries = mappingEntriesSaver.lastValue; assertEquals(1, entries.length); assertEquals(SubKeys.RECORD, entries[0].getKey()); - assertEquals(rloc, ((EidToLocatorRecord) entries[0].getValue()) - .getLocatorRecord().get(0).getLispAddressContainer()); + assertEquals(rloc, ((MappingRecord) entries[0].getValue()).getLocatorRecord().get(0).getRloc()); } @Test public void handleMapRegisterIpv4__ValidNotifyEchoesRegister() throws Exception { - mapRegisterBuilder.getEidToLocatorRecord().add( - getDefaultEidToLocatorBuilder().setLispAddressContainer(LispAFIConvertor.toContainer(new NoAddressBuilder().build())).build()); + mapRegisterBuilder.getMappingRecordItem().add(new MappingRecordItemBuilder().setMappingRecord( + getDefaultMappingRecordBuilder().setEid(new EidBuilder().setAddressType(NoAddressAfi.class).setAddress( + (Address) new NoAddressBuilder().setNoAddress(true).build()).build()).build()).build()); mapRegisterBuilder.setWantMapNotify(true); addDefaultPutAndGetExpectations(eid); - addDefaultPutAndGetExpectations(LispAFIConvertor.toContainer(new NoAddressBuilder().build())); + addDefaultPutAndGetExpectations(new EidBuilder().setAddressType(NoAddressAfi.class).setAddress( + (Address) new NoAddressBuilder().setNoAddress(true).build()).build()); MapRegister mr = mapRegisterBuilder.build(); MapNotify mapNotify = testedMapServer.handleMapRegister(mr); - assertEquals(mr.getEidToLocatorRecord(), mapNotify.getEidToLocatorRecord()); + assertEquals(mr.getMappingRecordItem(), mapNotify.getMappingRecordItem()); ArrayAssert.assertEquals(mr.getAuthenticationData(), mapNotify.getAuthenticationData()); assertEquals(mr.getKeyId(), mapNotify.getKeyId()); assertEquals(mr.getNonce(), mapNotify.getNonce()); @@ -137,24 +144,24 @@ public class MapServerTest extends BaseTestCase { public void handleMapRegisterIpv4__CloneNotOwnYouClown() throws Exception { mapRegisterBuilder = getDefaultMapRegisterBuilder(); mapRegisterBuilder.setWantMapNotify(true); - EidToLocatorRecordBuilder eidToLocatorBuilder = getDefaultEidToLocatorBuilder(); + MappingRecordBuilder eidToLocatorBuilder = getDefaultMappingRecordBuilder(); eidToLocatorBuilder.setMaskLength((short) 32); - eid = LispAFIConvertor.asIPv4Address("0.0.0.1"); - eidToLocatorBuilder.setLispAddressContainer(eid); + eid = LispAddressUtil.asIpv4PrefixEid("0.0.0.1/32"); + eidToLocatorBuilder.setEid(eid); LocatorRecordBuilder locatorBuilder = getDefaultLocatorBuilder(); - locatorBuilder.setLispAddressContainer(LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress("0.0.0.2"))); + locatorBuilder.setRloc(LispAddressUtil.asIpv4Rloc("0.0.0.2")); locatorBuilder.setPriority((short) 55); eidToLocatorBuilder.getLocatorRecord().add(locatorBuilder.build()); - mapRegisterBuilder.getEidToLocatorRecord().add(eidToLocatorBuilder.build()); + mapRegisterBuilder.getMappingRecordItem().add(new MappingRecordItemBuilder().setMappingRecord(eidToLocatorBuilder.build()).build()); addDefaultPutAndGetExpectations(eid); MapNotify mapNotify = testedMapServer.handleMapRegister(mapRegisterBuilder.build()); - EidToLocatorRecord actualEidToLocator = mapNotify.getEidToLocatorRecord().get(0); - assertEquals(eid, actualEidToLocator.getLispAddressContainer()); + MappingRecord actualEidToLocator = mapNotify.getMappingRecordItem().get(0).getMappingRecord(); + assertEquals(eid, actualEidToLocator.getEid()); assertEquals((byte) 55, actualEidToLocator.getLocatorRecord().get(0).getPriority().byteValue()); } @@ -162,23 +169,23 @@ public class MapServerTest extends BaseTestCase { @Test public void handleMapRegisterIpv4__ValidMask() throws Exception { int mask = 16; - LispAddressContainer newEid = LispAFIConvertor.asIPv4Prefix(eidIpv4String, mask); + Eid newEid = LispAddressUtil.asIpv4PrefixEid(eidIpv4String + "/" + mask); mapRegisterBuilder = getDefaultMapRegisterBuilder(); - EidToLocatorRecordBuilder recordBuilder = getDefaultEidToLocatorBuilder(); - recordBuilder.setLispAddressContainer(newEid).setMaskLength((short) mask); + MappingRecordBuilder recordBuilder = getDefaultMappingRecordBuilder(); + recordBuilder.setEid(newEid).setMaskLength((short) mask); LocatorRecordBuilder locator = getDefaultLocatorBuilder(); - locator.setLispAddressContainer(rloc); + locator.setRloc(rloc); recordBuilder.getLocatorRecord().add(locator.build()); - mapRegisterBuilder.getEidToLocatorRecord().add(recordBuilder.build()); + mapRegisterBuilder.getMappingRecordItem().add(new MappingRecordItemBuilder().setMappingRecord(recordBuilder.build()).build()); mapRegisterBuilder.setWantMapNotify(true); MapRegister mr = mapRegisterBuilder.build(); addDefaultPutAndGetExpectations(newEid); MapNotify mapNotify = testedMapServer.handleMapRegister(mr); - assertEquals(newEid, mapNotify.getEidToLocatorRecord().get(0).getLispAddressContainer()); + assertEquals(newEid, mapNotify.getMappingRecordItem().get(0).getMappingRecord().getEid()); ArrayAssert.assertEquals(mr.getAuthenticationData(), mapNotify.getAuthenticationData()); - assertEquals(mr.getEidToLocatorRecord(), mapNotify.getEidToLocatorRecord()); + assertEquals(mr.getMappingRecordItem(), mapNotify.getMappingRecordItem()); assertEquals(mr.getKeyId(), mapNotify.getKeyId()); assertEquals(mr.getNonce(), mapNotify.getNonce()); } @@ -187,13 +194,13 @@ public class MapServerTest extends BaseTestCase { public void handleMapRegister__NonMaskable() throws Exception { int mask = 16; mapRegisterBuilder = getDefaultMapRegisterBuilder(); - LispAddressContainer addr = LispAFIConvertor.toContainer(LispAFIConvertor.asMacAfiAddress("01:01:01:01:01:01")); - EidToLocatorRecordBuilder recordBuilder = getDefaultEidToLocatorBuilder(); + Eid addr = LispAddressUtil.asMacEid("01:01:01:01:01:01"); + MappingRecordBuilder recordBuilder = getDefaultMappingRecordBuilder(); LocatorRecordBuilder locatorBuilder = getDefaultLocatorBuilder(); - locatorBuilder.setLispAddressContainer(rloc); - recordBuilder.setLispAddressContainer(addr).setMaskLength((short) mask); + locatorBuilder.setRloc(rloc); + recordBuilder.setEid(addr).setMaskLength((short) mask); recordBuilder.getLocatorRecord().add(locatorBuilder.build()); - mapRegisterBuilder.getEidToLocatorRecord().add(recordBuilder.build()); + mapRegisterBuilder.getMappingRecordItem().add(new MappingRecordItemBuilder().setMappingRecord(recordBuilder.build()).build()); mapRegisterBuilder.setWantMapNotify(true); addDefaultPutAndGetExpectations(addr); @@ -201,9 +208,9 @@ public class MapServerTest extends BaseTestCase { MapRegister mapRegister = mapRegisterBuilder.build(); MapNotify mapNotify = testedMapServer.handleMapRegister(mapRegister); - assertEquals(addr, mapNotify.getEidToLocatorRecord().get(0).getLispAddressContainer()); + assertEquals(addr, mapNotify.getMappingRecordItem().get(0).getMappingRecord().getEid()); ArrayAssert.assertEquals(mapRegister.getAuthenticationData(), mapNotify.getAuthenticationData()); - assertEquals(mapRegister.getEidToLocatorRecord(), mapNotify.getEidToLocatorRecord()); + assertEquals(mapRegister.getMappingRecordItem(), mapNotify.getMappingRecordItem()); assertEquals(mapRegister.getKeyId(), mapNotify.getKeyId()); assertEquals(mapRegister.getNonce(), mapNotify.getNonce()); } @@ -212,13 +219,13 @@ public class MapServerTest extends BaseTestCase { public void handleMapRegister__ZeroMask() throws Exception { int mask = 0; mapRegisterBuilder = getDefaultMapRegisterBuilder(); - LispAddressContainer addr = LispAFIConvertor.toContainer(LispAFIConvertor.asMacAfiAddress("01:01:01:01:01:01")); - EidToLocatorRecordBuilder recordBuilder = getDefaultEidToLocatorBuilder(); + Eid addr = LispAddressUtil.asMacEid("01:01:01:01:01:01"); + MappingRecordBuilder recordBuilder = getDefaultMappingRecordBuilder(); LocatorRecordBuilder locatorBuilder = getDefaultLocatorBuilder(); - locatorBuilder.setLispAddressContainer(rloc); - recordBuilder.setLispAddressContainer(addr).setMaskLength((short) mask); + locatorBuilder.setRloc(rloc); + recordBuilder.setEid(addr).setMaskLength((short) mask); recordBuilder.getLocatorRecord().add(locatorBuilder.build()); - mapRegisterBuilder.getEidToLocatorRecord().add(recordBuilder.build()); + mapRegisterBuilder.getMappingRecordItem().add(new MappingRecordItemBuilder().setMappingRecord(recordBuilder.build()).build()); mapRegisterBuilder.setWantMapNotify(true); addDefaultPutAndGetExpectations(addr); @@ -226,9 +233,9 @@ public class MapServerTest extends BaseTestCase { MapRegister mapRegister = mapRegisterBuilder.build(); MapNotify mapNotify = testedMapServer.handleMapRegister(mapRegister); - assertEquals(addr, mapNotify.getEidToLocatorRecord().get(0).getLispAddressContainer()); + assertEquals(addr, mapNotify.getMappingRecordItem().get(0).getMappingRecord().getEid()); ArrayAssert.assertEquals(mapRegister.getAuthenticationData(), mapNotify.getAuthenticationData()); - assertEquals(mapRegister.getEidToLocatorRecord(), mapNotify.getEidToLocatorRecord()); + assertEquals(mapRegister.getMappingRecordItem(), mapNotify.getMappingRecordItem()); assertEquals(mapRegister.getKeyId(), mapNotify.getKeyId()); assertEquals(mapRegister.getNonce(), mapNotify.getNonce()); } @@ -236,23 +243,23 @@ public class MapServerTest extends BaseTestCase { @Test public void handleMapRegisterIPv4__ZeroMask() throws Exception { int mask = 0; - LispAddressContainer newEid = LispAFIConvertor.asIPv4Prefix(eidIpv4String, mask); + Eid newEid = LispAddressUtil.asIpv4PrefixEid(eidIpv4String + "/" + mask); mapRegisterBuilder = getDefaultMapRegisterBuilder(); - EidToLocatorRecordBuilder recordBuilder = getDefaultEidToLocatorBuilder(); - recordBuilder.setLispAddressContainer(newEid).setMaskLength((short) mask); + MappingRecordBuilder recordBuilder = getDefaultMappingRecordBuilder(); + recordBuilder.setEid(newEid).setMaskLength((short) mask); LocatorRecordBuilder locator = getDefaultLocatorBuilder(); - locator.setLispAddressContainer(rloc); + locator.setRloc(rloc); recordBuilder.getLocatorRecord().add(locator.build()); - mapRegisterBuilder.getEidToLocatorRecord().add(recordBuilder.build()); + mapRegisterBuilder.getMappingRecordItem().add(new MappingRecordItemBuilder().setMappingRecord(recordBuilder.build()).build()); mapRegisterBuilder.setWantMapNotify(true); MapRegister mr = mapRegisterBuilder.build(); addDefaultPutAndGetExpectations(newEid); MapNotify mapNotify = testedMapServer.handleMapRegister(mr); - assertEquals(newEid, mapNotify.getEidToLocatorRecord().get(0).getLispAddressContainer()); + assertEquals(newEid, mapNotify.getMappingRecordItem().get(0).getMappingRecord().getEid()); ArrayAssert.assertEquals(mr.getAuthenticationData(), mapNotify.getAuthenticationData()); - assertEquals(mr.getEidToLocatorRecord(), mapNotify.getEidToLocatorRecord()); + assertEquals(mr.getMappingRecordItem(), mapNotify.getMappingRecordItem()); assertEquals(mr.getKeyId(), mapNotify.getKeyId()); assertEquals(mr.getNonce(), mapNotify.getNonce()); } @@ -261,21 +268,21 @@ public class MapServerTest extends BaseTestCase { public void handleMapRegisterIpv4__ValidMask32() throws Exception { int mask = 32; mapRegisterBuilder = getDefaultMapRegisterBuilder(); - EidToLocatorRecordBuilder recordBuilder = getDefaultEidToLocatorBuilder(); - recordBuilder.setLispAddressContainer(eid).setMaskLength((short) mask); + MappingRecordBuilder recordBuilder = getDefaultMappingRecordBuilder(); + recordBuilder.setEid(eid).setMaskLength((short) mask); LocatorRecordBuilder locator = getDefaultLocatorBuilder(); - locator.setLispAddressContainer(rloc); + locator.setRloc(rloc); recordBuilder.getLocatorRecord().add(locator.build()); - mapRegisterBuilder.getEidToLocatorRecord().add(recordBuilder.build()); + mapRegisterBuilder.getMappingRecordItem().add(new MappingRecordItemBuilder().setMappingRecord(recordBuilder.build()).build()); mapRegisterBuilder.setWantMapNotify(true); MapRegister mr = mapRegisterBuilder.build(); addDefaultPutAndGetExpectations(eid); MapNotify mapNotify = testedMapServer.handleMapRegister(mr); - assertEquals(eid, mapNotify.getEidToLocatorRecord().get(0).getLispAddressContainer()); + assertEquals(eid, mapNotify.getMappingRecordItem().get(0).getMappingRecord().getEid()); ArrayAssert.assertEquals(mr.getAuthenticationData(), mapNotify.getAuthenticationData()); - assertEquals(mr.getEidToLocatorRecord(), mapNotify.getEidToLocatorRecord()); + assertEquals(mr.getMappingRecordItem(), mapNotify.getMappingRecordItem()); assertEquals(mr.getKeyId(), mapNotify.getKeyId()); assertEquals(mr.getNonce(), mapNotify.getNonce()); } @@ -284,13 +291,13 @@ public class MapServerTest extends BaseTestCase { public void handleMapRegisterIpv6__ValidMask96() throws Exception { int mask = 96; mapRegisterBuilder = getDefaultMapRegisterBuilder(); - LispAddressContainer addr = LispAFIConvertor.asIPv6Prefix(eidIpv6String, mask); - EidToLocatorRecordBuilder recordBuilder = getDefaultEidToLocatorBuilder(); + Eid addr = LispAddressUtil.asIpv6PrefixEid(eidIpv6String + "/" + mask); + MappingRecordBuilder recordBuilder = getDefaultMappingRecordBuilder(); LocatorRecordBuilder locatorBuilder = getDefaultLocatorBuilder(); - locatorBuilder.setLispAddressContainer(rloc); - recordBuilder.setLispAddressContainer(addr).setMaskLength((short) mask); + locatorBuilder.setRloc(rloc); + recordBuilder.setEid(addr).setMaskLength((short) mask); recordBuilder.getLocatorRecord().add(locatorBuilder.build()); - mapRegisterBuilder.getEidToLocatorRecord().add(recordBuilder.build()); + mapRegisterBuilder.getMappingRecordItem().add(new MappingRecordItemBuilder().setMappingRecord(recordBuilder.build()).build()); mapRegisterBuilder.setWantMapNotify(true); addDefaultPutAndGetExpectations(addr); @@ -298,9 +305,9 @@ public class MapServerTest extends BaseTestCase { MapRegister mapRegister = mapRegisterBuilder.build(); MapNotify mapNotify = testedMapServer.handleMapRegister(mapRegister); - assertEquals(addr, mapNotify.getEidToLocatorRecord().get(0).getLispAddressContainer()); + assertEquals(addr, mapNotify.getMappingRecordItem().get(0).getMappingRecord().getEid()); ArrayAssert.assertEquals(mapRegister.getAuthenticationData(), mapNotify.getAuthenticationData()); - assertEquals(mapRegister.getEidToLocatorRecord(), mapNotify.getEidToLocatorRecord()); + assertEquals(mapRegister.getMappingRecordItem(), mapNotify.getMappingRecordItem()); assertEquals(mapRegister.getKeyId(), mapNotify.getKeyId()); assertEquals(mapRegister.getNonce(), mapNotify.getNonce()); } @@ -309,13 +316,13 @@ public class MapServerTest extends BaseTestCase { public void handleMapRegisterIpv6__ZeroMask() throws Exception { int mask = 0; mapRegisterBuilder = getDefaultMapRegisterBuilder(); - LispAddressContainer addr = LispAFIConvertor.asIPv6Prefix(eidIpv6String, mask); - EidToLocatorRecordBuilder recordBuilder = getDefaultEidToLocatorBuilder(); + Eid addr = LispAddressUtil.asIpv6PrefixEid(eidIpv6String + "/" + mask); + MappingRecordBuilder recordBuilder = getDefaultMappingRecordBuilder(); LocatorRecordBuilder locatorBuilder = getDefaultLocatorBuilder(); - locatorBuilder.setLispAddressContainer(rloc); - recordBuilder.setLispAddressContainer(addr).setMaskLength((short) mask); + locatorBuilder.setRloc(rloc); + recordBuilder.setEid(addr).setMaskLength((short) mask); recordBuilder.getLocatorRecord().add(locatorBuilder.build()); - mapRegisterBuilder.getEidToLocatorRecord().add(recordBuilder.build()); + mapRegisterBuilder.getMappingRecordItem().add(new MappingRecordItemBuilder().setMappingRecord(recordBuilder.build()).build()); mapRegisterBuilder.setWantMapNotify(true); addDefaultPutAndGetExpectations(addr); @@ -323,9 +330,9 @@ public class MapServerTest extends BaseTestCase { MapRegister mapRegister = mapRegisterBuilder.build(); MapNotify mapNotify = testedMapServer.handleMapRegister(mapRegister); - assertEquals(addr, mapNotify.getEidToLocatorRecord().get(0).getLispAddressContainer()); + assertEquals(addr, mapNotify.getMappingRecordItem().get(0).getMappingRecord().getEid()); ArrayAssert.assertEquals(mapRegister.getAuthenticationData(), mapNotify.getAuthenticationData()); - assertEquals(mapRegister.getEidToLocatorRecord(), mapNotify.getEidToLocatorRecord()); + assertEquals(mapRegister.getMappingRecordItem(), mapNotify.getMappingRecordItem()); assertEquals(mapRegister.getKeyId(), mapNotify.getKeyId()); assertEquals(mapRegister.getNonce(), mapNotify.getNonce()); } @@ -334,13 +341,13 @@ public class MapServerTest extends BaseTestCase { public void handleMapRegisterIpv6__ValidMask48() throws Exception { int mask = 48; mapRegisterBuilder = getDefaultMapRegisterBuilder(); - LispAddressContainer addr = LispAFIConvertor.asIPv6Prefix(eidIpv6String, mask); - EidToLocatorRecordBuilder recordBuilder = getDefaultEidToLocatorBuilder(); + Eid addr = LispAddressUtil.asIpv6PrefixEid(eidIpv6String +"/" + mask); + MappingRecordBuilder recordBuilder = getDefaultMappingRecordBuilder(); LocatorRecordBuilder locatorBuilder = getDefaultLocatorBuilder(); - locatorBuilder.setLispAddressContainer(rloc); - recordBuilder.setLispAddressContainer(addr).setMaskLength((short) mask); + locatorBuilder.setRloc(rloc); + recordBuilder.setEid(addr).setMaskLength((short) mask); recordBuilder.getLocatorRecord().add(locatorBuilder.build()); - mapRegisterBuilder.getEidToLocatorRecord().add(recordBuilder.build()); + mapRegisterBuilder.getMappingRecordItem().add(new MappingRecordItemBuilder().setMappingRecord(recordBuilder.build()).build()); mapRegisterBuilder.setWantMapNotify(true); addDefaultPutAndGetExpectations(addr); @@ -348,9 +355,9 @@ public class MapServerTest extends BaseTestCase { MapRegister mapRegister = mapRegisterBuilder.build(); MapNotify mapNotify = testedMapServer.handleMapRegister(mapRegister); - assertEquals(addr, mapNotify.getEidToLocatorRecord().get(0).getLispAddressContainer()); + assertEquals(addr, mapNotify.getMappingRecordItem().get(0).getMappingRecord().getEid()); ArrayAssert.assertEquals(mapRegister.getAuthenticationData(), mapNotify.getAuthenticationData()); - assertEquals(mapRegister.getEidToLocatorRecord(), mapNotify.getEidToLocatorRecord()); + assertEquals(mapRegister.getMappingRecordItem(), mapNotify.getMappingRecordItem()); assertEquals(mapRegister.getKeyId(), mapNotify.getKeyId()); assertEquals(mapRegister.getNonce(), mapNotify.getNonce()); } @@ -359,13 +366,13 @@ public class MapServerTest extends BaseTestCase { public void handleMapRegisterIpv6__ValidMask128() throws Exception { int mask = 128; mapRegisterBuilder = getDefaultMapRegisterBuilder(); - LispAddressContainer addr = LispAFIConvertor.asIPv6Address(eidIpv6String); - EidToLocatorRecordBuilder recordBuilder = getDefaultEidToLocatorBuilder(); + Eid addr = LispAddressUtil.asIpv6PrefixEid(eidIpv6String); + MappingRecordBuilder recordBuilder = getDefaultMappingRecordBuilder(); LocatorRecordBuilder locatorBuilder = getDefaultLocatorBuilder(); - locatorBuilder.setLispAddressContainer(rloc); - recordBuilder.setLispAddressContainer(addr).setMaskLength((short) mask); + locatorBuilder.setRloc(rloc); + recordBuilder.setEid(addr).setMaskLength((short) mask); recordBuilder.getLocatorRecord().add(locatorBuilder.build()); - mapRegisterBuilder.getEidToLocatorRecord().add(recordBuilder.build()); + mapRegisterBuilder.getMappingRecordItem().add(new MappingRecordItemBuilder().setMappingRecord(recordBuilder.build()).build()); mapRegisterBuilder.setWantMapNotify(true); addDefaultPutAndGetExpectations(addr); @@ -373,9 +380,9 @@ public class MapServerTest extends BaseTestCase { MapRegister mapRegister = mapRegisterBuilder.build(); MapNotify mapNotify = testedMapServer.handleMapRegister(mapRegister); - assertEquals(addr, mapNotify.getEidToLocatorRecord().get(0).getLispAddressContainer()); + assertEquals(addr, mapNotify.getMappingRecordItem().get(0).getMappingRecord().getEid()); ArrayAssert.assertEquals(mapRegister.getAuthenticationData(), mapNotify.getAuthenticationData()); - assertEquals(mapRegister.getEidToLocatorRecord(), mapNotify.getEidToLocatorRecord()); + assertEquals(mapRegister.getMappingRecordItem(), mapNotify.getMappingRecordItem()); assertEquals(mapRegister.getKeyId(), mapNotify.getKeyId()); assertEquals(mapRegister.getNonce(), mapNotify.getNonce()); } @@ -384,17 +391,17 @@ public class MapServerTest extends BaseTestCase { public void handleMapRegisterIPV4AndIpv6__ValidMask96() throws Exception { int mask = 96; mapRegisterBuilder = getDefaultMapRegisterBuilder(); - EidToLocatorRecordBuilder recordBuilder0 = getDefaultEidToLocatorBuilder(); - recordBuilder0.setLispAddressContainer(eid).setMaskLength((short) 32); - LispAddressContainer addr = LispAFIConvertor.asIPv6Prefix(eidIpv6String, mask); - EidToLocatorRecordBuilder recordBuilder1 = getDefaultEidToLocatorBuilder(); + MappingRecordBuilder recordBuilder0 = getDefaultMappingRecordBuilder(); + recordBuilder0.setEid(eid).setMaskLength((short) 32); + Eid addr = LispAddressUtil.asIpv6PrefixEid(eidIpv6String + "/" + mask); + MappingRecordBuilder recordBuilder1 = getDefaultMappingRecordBuilder(); LocatorRecordBuilder locatorBuilder = getDefaultLocatorBuilder(); - locatorBuilder.setLispAddressContainer(rloc); - locatorBuilder.setLispAddressContainer(rloc); - recordBuilder1.setLispAddressContainer(addr).setMaskLength((short) mask); + locatorBuilder.setRloc(rloc); + locatorBuilder.setRloc(rloc); + recordBuilder1.setEid(addr).setMaskLength((short) mask); recordBuilder1.getLocatorRecord().add(locatorBuilder.build()); - mapRegisterBuilder.getEidToLocatorRecord().add(recordBuilder0.build()); - mapRegisterBuilder.getEidToLocatorRecord().add(recordBuilder1.build()); + mapRegisterBuilder.getMappingRecordItem().add(new MappingRecordItemBuilder().setMappingRecord(recordBuilder0.build()).build()); + mapRegisterBuilder.getMappingRecordItem().add(new MappingRecordItemBuilder().setMappingRecord(recordBuilder1.build()).build()); mapRegisterBuilder.setWantMapNotify(true); addDefaultPutAndGetExpectations(eid); @@ -403,10 +410,10 @@ public class MapServerTest extends BaseTestCase { MapRegister mapRegister = mapRegisterBuilder.build(); MapNotify mapNotify = testedMapServer.handleMapRegister(mapRegister); - assertEquals(eid, mapNotify.getEidToLocatorRecord().get(0).getLispAddressContainer()); - assertEquals(addr, mapNotify.getEidToLocatorRecord().get(1).getLispAddressContainer()); + assertEquals(eid, mapNotify.getMappingRecordItem().get(0).getMappingRecord().getEid()); + assertEquals(addr, mapNotify.getMappingRecordItem().get(1).getMappingRecord().getEid()); ArrayAssert.assertEquals(mapRegister.getAuthenticationData(), mapNotify.getAuthenticationData()); - assertEquals(mapRegister.getEidToLocatorRecord(), mapNotify.getEidToLocatorRecord()); + assertEquals(mapRegister.getMappingRecordItem(), mapNotify.getMappingRecordItem()); assertEquals(mapRegister.getKeyId(), mapNotify.getKeyId()); assertEquals(mapRegister.getNonce(), mapNotify.getNonce()); } @@ -416,18 +423,18 @@ public class MapServerTest extends BaseTestCase { addDefaultPutAndGetExpectations(eid); mapRegisterBuilder = getDefaultMapRegisterBuilder(); - LispAddressContainer rloc0 = rloc; - LispAddressContainer rloc1 = LispAFIConvertor.asIPv6Address("0:0:0:0:0:0:0:7"); - EidToLocatorRecordBuilder recordBuilder = getDefaultEidToLocatorBuilder(); - recordBuilder.setLispAddressContainer(eid); + Rloc rloc0 = rloc; + Rloc rloc1 = LispAddressUtil.asIpv6Rloc("0:0:0:0:0:0:0:7"); + MappingRecordBuilder recordBuilder = getDefaultMappingRecordBuilder(); + recordBuilder.setEid(eid); LocatorRecordBuilder locatorBuilder1 = getDefaultLocatorBuilder(); - locatorBuilder1.setLispAddressContainer(rloc0); + locatorBuilder1.setRloc(rloc0); LocatorRecordBuilder locatorBuilder2 = getDefaultLocatorBuilder(); - locatorBuilder2.setLispAddressContainer(rloc1); + locatorBuilder2.setRloc(rloc1); recordBuilder.getLocatorRecord().add(locatorBuilder1.build()); recordBuilder.getLocatorRecord().add(locatorBuilder2.build()); - mapRegisterBuilder.getEidToLocatorRecord().add(recordBuilder.build()); + mapRegisterBuilder.getMappingRecordItem().add(new MappingRecordItemBuilder().setMappingRecord(recordBuilder.build()).build()); testedMapServer.handleMapRegister(mapRegisterBuilder.build()); @@ -435,10 +442,10 @@ public class MapServerTest extends BaseTestCase { assertEquals(1, entries.length); assertEquals(SubKeys.RECORD, entries[0].getKey()); - assertEquals(rloc0, ((EidToLocatorRecord) entries[0].getValue()).getLocatorRecord() - .get(0).getLispAddressContainer()); - assertEquals(rloc1, ((EidToLocatorRecord) entries[0].getValue()).getLocatorRecord() - .get(1).getLispAddressContainer()); + assertEquals(rloc0, ((MappingRecord) entries[0].getValue()).getLocatorRecord() + .get(0).getRloc()); + assertEquals(rloc1, ((MappingRecord) entries[0].getValue()).getLocatorRecord() + .get(1).getRloc()); } @@ -447,33 +454,31 @@ public class MapServerTest extends BaseTestCase { addDefaultPutAndGetExpectations(eid); mapRegisterBuilder = getDefaultMapRegisterBuilder(); - LispAddressContainer rloc0 = rloc; + Rloc rloc0 = rloc; // LispAFIAddress rloc1 = - // LispAFIConvertor.asIPv6AfiAddress("0:0:0:0:0:0:0:7"); + // LispAddressUtil.asIPv6AfiAddress("0:0:0:0:0:0:0:7"); String subkey = "bla"; - LispAFIAddress rloc1 = LispAFIConvertor - .asKeyValue(subkey, LispAFIConvertor.toPrimitive(LispAFIConvertor.asIPv6AfiAddress("0:0:0:0:0:0:0:7"))); - EidToLocatorRecordBuilder recordBuilder = getDefaultEidToLocatorBuilder(); - recordBuilder.setLispAddressContainer(eid); + Rloc rloc1 = LispAddressUtil.asKeyValueAddress(subkey, SimpleAddressBuilder.getDefaultInstance("0:0:0:0:0:0:0:7")); + MappingRecordBuilder recordBuilder = getDefaultMappingRecordBuilder(); + recordBuilder.setEid(eid); LocatorRecordBuilder locatorBuilder1 = getDefaultLocatorBuilder(); - locatorBuilder1.setLispAddressContainer(rloc0); + locatorBuilder1.setRloc(rloc0); LocatorRecordBuilder locatorBuilder2 = getDefaultLocatorBuilder(); - locatorBuilder2.setLispAddressContainer(LispAFIConvertor.toContainer(rloc1)); + locatorBuilder2.setRloc(rloc1); recordBuilder.getLocatorRecord().add(locatorBuilder1.build()); recordBuilder.getLocatorRecord().add(locatorBuilder2.build()); - mapRegisterBuilder.getEidToLocatorRecord().add(recordBuilder.build()); + mapRegisterBuilder.getMappingRecordItem().add(new MappingRecordItemBuilder().setMappingRecord(recordBuilder.build()).build()); testedMapServer.handleMapRegister(mapRegisterBuilder.build()); MappingEntry[] entries = mappingEntriesSaver.lastValue; assertEquals(1, entries.length); - EidToLocatorRecord storedMapping = (EidToLocatorRecord) entries[0].getValue(); + MappingRecord storedMapping = (MappingRecord) entries[0].getValue(); assertEquals(2, storedMapping.getLocatorRecord().size()); assertEquals(SubKeys.RECORD, entries[0].getKey()); - assertEquals(rloc0, storedMapping.getLocatorRecord().get(0).getLispAddressContainer()); - assertEquals(LispAFIConvertor.toContainer(rloc1), storedMapping.getLocatorRecord().get(1) - .getLispAddressContainer()); + assertEquals(rloc0, storedMapping.getLocatorRecord().get(0).getRloc()); + assertEquals(rloc1, storedMapping.getLocatorRecord().get(1).getRloc()); } @@ -487,8 +492,7 @@ public class MapServerTest extends BaseTestCase { assertEquals(1, entries.length); assertEquals(SubKeys.RECORD, entries[0].getKey()); - assertEquals(rloc, ((EidToLocatorRecord) entries[0].getValue()).getLocatorRecord() - .get(0).getLispAddressContainer()); + assertEquals(rloc, ((MappingRecord) entries[0].getValue()).getLocatorRecord().get(0).getRloc()); } // @Test @@ -505,18 +509,18 @@ public class MapServerTest extends BaseTestCase { // // assertEquals(String.valueOf(hc), entries[0].getKey()); // assertEquals(rloc, ((EidToLocatorRecord) entries[0].getValue()).getLocatorRecord() -// .get(0).getLispAddressContainer()); +// .get(0).getEid()); // } private void addEidToLocatorRecord() { - EidToLocatorRecordBuilder recordBuilder = getDefaultEidToLocatorBuilder(); - recordBuilder.setLispAddressContainer(eid); + MappingRecordBuilder recordBuilder = getDefaultMappingRecordBuilder(); + recordBuilder.setEid(eid); LocatorRecordBuilder locatorBuilder = getDefaultLocatorBuilder(); - locatorBuilder.setLispAddressContainer(rloc); + locatorBuilder.setRloc(rloc); recordBuilder.getLocatorRecord().add(locatorBuilder.build()); mapRegisterBuilder = getDefaultMapRegisterBuilder(); - mapRegisterBuilder.getEidToLocatorRecord().add(recordBuilder.build()); + mapRegisterBuilder.getMappingRecordItem().add(new MappingRecordItemBuilder().setMappingRecord(recordBuilder.build()).build()); testedMapServer.handleMapRegister(mapRegisterBuilder.build()); } @@ -525,40 +529,40 @@ public class MapServerTest extends BaseTestCase { public void handleMapRegister__MultipleEIDs() throws Exception { addDefaultPutAndGetExpectations(eid); - LispAddressContainer rloc1 = LispAFIConvertor.asIPv6Address("0:0:0:0:0:0:0:7"); + Rloc rloc1 = LispAddressUtil.asIpv6Rloc("0:0:0:0:0:0:0:7"); mapRegisterBuilder = getDefaultMapRegisterBuilder(); - EidToLocatorRecordBuilder etlrBuilder = getDefaultEidToLocatorBuilder(); - etlrBuilder.getLocatorRecord().add(getDefaultLocatorBuilder().setLispAddressContainer(rloc1).build()); + MappingRecordBuilder etlrBuilder = getDefaultMappingRecordBuilder(); + etlrBuilder.getLocatorRecord().add(getDefaultLocatorBuilder().setRloc(rloc1).build()); mapRegisterBuilder.setWantMapNotify(true); - etlrBuilder.setLispAddressContainer(eid); + etlrBuilder.setEid(eid); - EidToLocatorRecordBuilder etlr2Builder = getDefaultEidToLocatorBuilder(); - LispAddressContainer address = LispAFIConvertor.asIPv4Address("1.1.1.1"); - etlr2Builder.setLispAddressContainer(address); + MappingRecordBuilder etlr2Builder = getDefaultMappingRecordBuilder(); + Eid address = LispAddressUtil.asIpv4PrefixEid("1.1.1.1"); + etlr2Builder.setEid(address); etlr2Builder.setMaskLength((short) 32); int recordTtl = 5; etlr2Builder.setRecordTtl(recordTtl); etlr2Builder.getLocatorRecord().add( getDefaultLocatorBuilder().setPriority((short) 10) - .setLispAddressContainer(LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress("2.2.2.2"))).build()); - mapRegisterBuilder.getEidToLocatorRecord().add(etlrBuilder.build()); - mapRegisterBuilder.getEidToLocatorRecord().add(etlr2Builder.build()); + .setRloc(LispAddressUtil.asIpv4Rloc("2.2.2.2")).build()); + mapRegisterBuilder.getMappingRecordItem().add(new MappingRecordItemBuilder().setMappingRecord(etlrBuilder.build()).build()); + mapRegisterBuilder.getMappingRecordItem().add(new MappingRecordItemBuilder().setMappingRecord(etlr2Builder.build()).build()); addDefaultPutAndGetExpectations(address); MapNotify mapNotify = testedMapServer.handleMapRegister(mapRegisterBuilder.build()); - assertEquals(rloc1, mapNotify.getEidToLocatorRecord().get(0).getLocatorRecord().get(0) - .getLispAddressContainer()); - assertEquals(LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress("2.2.2.2")), mapNotify.getEidToLocatorRecord().get(1) - .getLocatorRecord().get(0).getLispAddressContainer()); - assertEquals(address, mapNotify.getEidToLocatorRecord().get(1).getLispAddressContainer()); - assertEquals(recordTtl, mapNotify.getEidToLocatorRecord().get(1).getRecordTtl().intValue()); + assertEquals(rloc1, mapNotify.getMappingRecordItem().get(0).getMappingRecord().getLocatorRecord().get(0) + .getRloc()); + assertEquals(LispAddressUtil.asIpv4Rloc("2.2.2.2"), mapNotify.getMappingRecordItem().get(1).getMappingRecord() + .getLocatorRecord().get(0).getRloc()); + assertEquals(address, mapNotify.getMappingRecordItem().get(1).getMappingRecord().getEid()); + assertEquals(recordTtl, mapNotify.getMappingRecordItem().get(1).getMappingRecord().getRecordTtl().intValue()); } @Test public void handleMapRegisterIpv4__CheckWrongPassword() throws Exception { - addGetExpectations(LispAFIConvertor.asIPv4Address("153.16.254.1"), 0, 31, "bla"); + addGetExpectations(LispAddressUtil.asIpv4PrefixEid("153.16.254.1"), 0, 31, "bla"); MapNotify mapNotify = testedMapServer.handleMapRegister(mapRegisterWithAuthentication); assertEquals(null, mapNotify); } @@ -566,10 +570,10 @@ public class MapServerTest extends BaseTestCase { @Test public void handleMapRegisterIpv4__CheckNoPasswordAndThenPassword() throws Exception { - addGetExpectations(LispAFIConvertor.asIPv4Address("153.16.254.1"), 0, 25, "password"); - addPutExpectations(LispAFIConvertor.asIPv4Address("153.16.254.1")); + addGetExpectations(LispAddressUtil.asIpv4PrefixEid("153.16.254.1"), 0, 25, "password"); + addPutExpectations(LispAddressUtil.asIpv4PrefixEid("153.16.254.1")); MapNotify mapNotify = testedMapServer.handleMapRegister(mapRegisterWithAuthentication); - assertEquals(mapRegisterWithAuthentication.getEidToLocatorRecord(), mapNotify.getEidToLocatorRecord()); + assertEquals(mapRegisterWithAuthentication.getMappingRecordItem(), mapNotify.getMappingRecordItem()); assertEquals(mapRegisterWithAuthentication.getKeyId(), mapNotify.getKeyId()); assertEquals(mapRegisterWithAuthentication.getNonce(), mapNotify.getNonce()); } @@ -577,7 +581,7 @@ public class MapServerTest extends BaseTestCase { @Test public void handleMapRegisterIpv4__CheckNoPassword() throws Exception { - addGetExpectations(LispAFIConvertor.asIPv4Address("153.16.254.1"), 30, 0, "password"); + addGetExpectations(LispAddressUtil.asIpv4PrefixEid("153.16.254.1/32"), 30, 0, "password"); MapNotify mapNotify = testedMapServer.handleMapRegister(mapRegisterWithAuthentication); assertEquals(null, mapNotify); } @@ -585,44 +589,39 @@ public class MapServerTest extends BaseTestCase { @Test public void handleMapRegisterIpv4__CheckNoreturn() throws Exception { - addGetExpectations(LispAFIConvertor.asIPv4Address("153.16.254.1")); + addGetExpectations(LispAddressUtil.asIpv4PrefixEid("153.16.254.1/32")); MapNotify mapNotify = testedMapServer.handleMapRegister(mapRegisterWithAuthentication); assertEquals(mapNotify, null); } - private void addDefaultPutAndGetExpectations(LispAddressContainer addr) { + private void addDefaultPutAndGetExpectations(Eid addr) { addPutExpectations(addr); addGetExpectations(addr); } - private void addGetExpectations(LispAddressContainer address) { - addGetExpectations(address, 0, 0, SubKeys.AUTH_KEY); - } - - private EidToLocatorRecord toEidToLocatorRecord(Mapping record) { - return new EidToLocatorRecordBuilder( - (org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.EidToLocatorRecord) record) - .build(); + private void addGetExpectations(Eid address) { + addGetExpectations(address, 0, 0, SubKeys.AUTH_KEY); } private void prepareDsbe() { ValueSaverAction dsbeAddMappingSaverAction = new ValueSaverAction() { @Override public Object invoke(Invocation invocation) throws Throwable { - mapSystem.addMapping(lastValue.getOrigin(), lastValue.getLispAddressContainer(), (Object) toEidToLocatorRecord(lastValue)); + mapSystem.addMapping(lastValue.getOrigin(), lastValue.getMappingRecord().getEid(), + (Object) lastValue.getMappingRecord()); return null; } }; oneOf(dsbe).addMapping(with(dsbeAddMappingSaverAction)); will(dsbeAddMappingSaverAction); } - private void addPutExpectations(LispAddressContainer address) { + private void addPutExpectations(Eid address) { // needed for mapping-service addMapping prepareDsbe(); exactly(2).of(dao).put(weq(address), with(mappingEntriesSaver)); } - private void addGetExpectations(LispAddressContainer address, int withoutPassword, int withPassword, String password) { + private void addGetExpectations(Eid address, int withoutPassword, int withPassword, String password) { if (withoutPassword > 0) { String result = null; result = null; @@ -635,8 +634,8 @@ public class MapServerTest extends BaseTestCase { allowing(dao).getSpecific(with(address), with(SubKeys.AUTH_KEY)); ret(result); } - for (int i = MaskUtil.getMaskForAddress(address); i >= 0; i--) { - LispAddressContainer addr = MaskUtil.normalize(address, (short) i); + for (int i = MaskUtil.getMaskForAddress(address.getAddress()); i >= 0; i--) { + Eid addr = MaskUtil.normalize(address, (short) i); allowing(dao).getSpecific(with(addr), with(SubKeys.AUTH_KEY)); ret(null); // check if mapping exists before insertion allowing(dao).get(with(addr));will(returnValue(null)); @@ -644,27 +643,19 @@ public class MapServerTest extends BaseTestCase { } - private LispAddressContainer getDefaultKey() { - return getKey(32); - } - - private LispAddressContainer getKey(int mask) { - return MaskUtil.normalize(eid, (short)mask); - } - private MapRegisterBuilder getDefaultMapRegisterBuilder() { MapRegisterBuilder mrb = new MapRegisterBuilder(); mrb.setKeyId((short) 0); mrb.setNonce((long) 0); mrb.setWantMapNotify(false); mrb.setProxyMapReply(false); - mrb.setEidToLocatorRecord(new ArrayList()); + mrb.setMappingRecordItem(new ArrayList()); mrb.setAuthenticationData(new byte[0]); return mrb; } - private EidToLocatorRecordBuilder getDefaultEidToLocatorBuilder() { - EidToLocatorRecordBuilder builder = new EidToLocatorRecordBuilder(); + private MappingRecordBuilder getDefaultMappingRecordBuilder() { + MappingRecordBuilder builder = new MappingRecordBuilder(); builder.setAction(Action.NoAction); builder.setAuthoritative(false); builder.setLocatorRecord(new ArrayList()); diff --git a/mappingservice/implementation/src/test/java/org/opendaylight/lispflowmapping/implementation/lisp/MappingServiceTest.java b/mappingservice/implementation/src/test/java/org/opendaylight/lispflowmapping/implementation/lisp/MappingServiceTest.java index e5db74c40..82bac8fbc 100644 --- a/mappingservice/implementation/src/test/java/org/opendaylight/lispflowmapping/implementation/lisp/MappingServiceTest.java +++ b/mappingservice/implementation/src/test/java/org/opendaylight/lispflowmapping/implementation/lisp/MappingServiceTest.java @@ -21,12 +21,14 @@ import org.opendaylight.lispflowmapping.implementation.mdsal.DataStoreBackEnd; import org.opendaylight.lispflowmapping.interfaces.dao.ILispDAO; import org.opendaylight.lispflowmapping.interfaces.dao.MappingEntry; import org.opendaylight.lispflowmapping.interfaces.dao.SubKeys; -import org.opendaylight.lispflowmapping.lisp.util.LispAFIConvertor; +import org.opendaylight.lispflowmapping.lisp.util.LispAddressUtil; import org.opendaylight.lispflowmapping.lisp.util.MaskUtil; import org.opendaylight.lispflowmapping.tools.junit.BaseTestCase; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.lispaddress.LispAddressContainer; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.Eid; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.MappingOrigin; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.db.instance.AuthenticationKey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.mapping.authkey.container.MappingAuthkey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.mapping.authkey.container.MappingAuthkeyBuilder; /** * @@ -40,7 +42,7 @@ public class MappingServiceTest extends BaseTestCase { private DataStoreBackEnd dsbe; private MappingSystem mapSystem; - private LispAddressContainer eid; + private Eid eid; private String eidIpv4String = "10.31.0.5"; @Override @@ -61,17 +63,17 @@ public class MappingServiceTest extends BaseTestCase { inject(mapService, "dsbe", dsbe); inject(mapService, "mappingSystem", mapSystem); - eid = LispAFIConvertor.asIPv4Address(eidIpv4String); + eid = LispAddressUtil.asIpv4PrefixEid(eidIpv4String + "/32"); } @SuppressWarnings("unchecked") @Test public void handleAddAuthenticationKey() throws Exception { - String authKey = "pass"; - MappingEntry keyMappingEntry = new MappingEntry(SubKeys.AUTH_KEY, authKey); - LispAddressContainer key = getDefaultKey(); - MappingEntry[] authKeys =(MappingEntry[]) (Arrays.asList(keyMappingEntry).toArray()); + MappingAuthkey authKey = new MappingAuthkeyBuilder().setKeyType(1).setKeyString("pass").build(); + MappingEntry keyMappingEntry = new MappingEntry<>(SubKeys.AUTH_KEY, authKey); + Eid key = getDefaultKey(); + MappingEntry[] authKeys =(MappingEntry[]) (Arrays.asList(keyMappingEntry).toArray()); addDsbeAddKeyExpectation(); oneOf(dao).put(weq(key), weq(authKeys)); mapService.addAuthenticationKey(eid, authKey); @@ -79,7 +81,7 @@ public class MappingServiceTest extends BaseTestCase { @Test public void handleGetAuthenticationKey() throws Exception { - LispAddressContainer key = getDefaultKey(); + Eid key = getDefaultKey(); oneOf(dao).getSpecific(weq(key), with(SubKeys.AUTH_KEY)); ret("password"); assertEquals("password", mapService.getAuthenticationKey(eid)); @@ -88,8 +90,8 @@ public class MappingServiceTest extends BaseTestCase { @Test public void handleGetAuthenticationKeyNoIteration() throws Exception { mapSystem.setIterateMask(false); - LispAddressContainer key = getDefaultKey(); - LispAddressContainer passKey = getKey(30); + Eid key = getDefaultKey(); + Eid passKey = getKey(30); oneOf(dao).getSpecific(weq(key), with(SubKeys.AUTH_KEY)); allowing(dao).getSpecific(weq(passKey), with(SubKeys.AUTH_KEY)); ret("password"); @@ -98,25 +100,26 @@ public class MappingServiceTest extends BaseTestCase { @Test public void handleRemoveAuthenticationKey() throws Exception { - LispAddressContainer key = getDefaultKey(); + Eid key = getDefaultKey(); addDsbeRemoveKeyExpectation(); oneOf(dao).removeSpecific(weq(key), with(SubKeys.AUTH_KEY)); mapService.removeAuthenticationKey(eid); } - private LispAddressContainer getDefaultKey() { + private Eid getDefaultKey() { return getKey(32); } - private LispAddressContainer getKey(int mask) { - return MaskUtil.normalize(eid, (short)mask); + private Eid getKey(int mask) { + Eid key = LispAddressUtil.asIpv4PrefixEid(eidIpv4String + "/" + Integer.toString(mask)); + return MaskUtil.normalize(key, (short) mask); } private void addDsbeAddKeyExpectation() { ValueSaverAction dsbeAddKeySaverAction = new ValueSaverAction() { @Override public Object invoke(Invocation invocation) throws Throwable { - mapSystem.addAuthenticationKey(lastValue.getLispAddressContainer(), lastValue.getAuthkey()); + mapSystem.addAuthenticationKey(lastValue.getEid(), lastValue.getMappingAuthkey()); return null; } }; @@ -127,7 +130,7 @@ public class MappingServiceTest extends BaseTestCase { ValueSaverAction dsbeRemoveKeySaverAction = new ValueSaverAction() { @Override public Object invoke(Invocation invocation) throws Throwable { - mapSystem.removeAuthenticationKey(lastValue.getLispAddressContainer()); + mapSystem.removeAuthenticationKey(lastValue.getEid()); return null; } }; diff --git a/mappingservice/lisp-proto/src/main/java/org/opendaylight/lispflowmapping/lisp/util/LispAddressUtil.java b/mappingservice/lisp-proto/src/main/java/org/opendaylight/lispflowmapping/lisp/util/LispAddressUtil.java index f9a5a8747..bf7332642 100644 --- a/mappingservice/lisp-proto/src/main/java/org/opendaylight/lispflowmapping/lisp/util/LispAddressUtil.java +++ b/mappingservice/lisp-proto/src/main/java/org/opendaylight/lispflowmapping/lisp/util/LispAddressUtil.java @@ -10,6 +10,8 @@ package org.opendaylight.lispflowmapping.lisp.util; import java.net.Inet4Address; import java.net.Inet6Address; import java.net.InetAddress; +import java.util.ArrayList; +import java.util.List; import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException; @@ -22,6 +24,7 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types. import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.AsNumberAfi; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.DistinguishedNameAfi; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.DistinguishedNameType; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.ExplicitLocatorPathLcaf; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.InstanceIdType; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.Ipv4Afi; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.Ipv4PrefixAfi; @@ -33,6 +36,7 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.addres import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.SimpleAddress; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.SourceDestKeyLcaf; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.Address; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.DistinguishedNameBuilder; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.Ipv4Builder; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.Ipv4PrefixBuilder; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.Ipv6Builder; @@ -41,12 +45,18 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.addres import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.MacBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.Eid; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.EidBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.locatorrecords.LocatorRecord; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.locatorrecords.LocatorRecordBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.rloc.container.Rloc; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.rloc.container.RlocBuilder; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.key.value.address.KeyValueAddressBuilder; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.source.dest.key.SourceDestKey; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.source.dest.key.SourceDestKeyBuilder; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.explicit.locator.path.ExplicitLocatorPathBuilder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.explicit.locator.path.explicit.locator.path.Hop; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.explicit.locator.path.explicit.locator.path.Hop.LrsBits; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.explicit.locator.path.explicit.locator.path.HopBuilder; public class LispAddressUtil { private static Pattern IP4_PATTERN = null; @@ -219,10 +229,17 @@ public class LispAddressUtil { EidBuilder builder = new EidBuilder(); builder.setAddress(addressFromIpPrefix(prefix)); builder.setAddressType(addressTypeFromIpPrefix(prefix)); - builder.setVirtualNetworkId(new InstanceIdType(Long.valueOf(vni))); + // XXX getMapping rcp fails if set to 0 + //builder.setVirtualNetworkId(new InstanceIdType(Long.valueOf(vni))); return builder.build(); } + public static Eid toIpPrefixEid(IpAddress addr, int vni) { + int mask = addressTypeFromIpAddress(addr) == Ipv4Afi.class ? 32 : 128; + IpPrefix prefix = asIpPrefix(addr.getValue().toString(), mask); + return toEid(prefix, vni); + } + public static Eid asIpv4PrefixEid(String prefix) { return toEid(new Ipv4Prefix(prefix), null); } @@ -316,6 +333,22 @@ public class LispAddressUtil { return toEid(new MacAddress(address), null); } + public static Eid toEid(DistinguishedNameType dn, InstanceIdType vni) { + EidBuilder builder = new EidBuilder(); + builder.setAddressType(DistinguishedNameAfi.class); + builder.setVirtualNetworkId(vni); + builder.setAddress((Address) new DistinguishedNameBuilder().setDistinguishedName(dn).build()); + return builder.build(); + } + + public static Eid asDistinguishedNameEid(String address, long vni) { + return toEid(new MacAddress(address), new InstanceIdType(vni)); + } + + public static Eid asDistinguishedNameEid(String address) { + return toEid(new DistinguishedNameType(address), null); + } + public static Rloc asKeyValueAddress(String key, SimpleAddress value) { KeyValueAddressBuilder kvab = new KeyValueAddressBuilder(); kvab.setKey(new SimpleAddress(new DistinguishedNameType(key))); @@ -364,4 +397,36 @@ public class LispAddressUtil { .setSourceDestKey(sd).build()); return builder.build(); } + + public static Rloc asTeLcafRloc(List hopList) { + RlocBuilder teBuilder = new RlocBuilder(); + org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.ExplicitLocatorPathBuilder elpBuilder = + new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.ExplicitLocatorPathBuilder(); + ExplicitLocatorPathBuilder teAddrBuilder = new ExplicitLocatorPathBuilder(); + teAddrBuilder.setHop(new ArrayList()); + for (IpAddress hop : hopList) { + HopBuilder hopBuilder = new HopBuilder(); + hopBuilder.setAddress(new SimpleAddress(hop)); + hopBuilder.setHopId("Hop " + teAddrBuilder.getHop().size()); + hopBuilder.setLrsBits(new LrsBits(false, false, false)); + teAddrBuilder.getHop().add(hopBuilder.build()); + } + + elpBuilder.setExplicitLocatorPath(teAddrBuilder.build()); + teBuilder.setAddress(elpBuilder.build()); + teBuilder.setAddressType(ExplicitLocatorPathLcaf.class); + return teBuilder.build(); + } + + public static List asLocatorRecords(List locators) { + List locatorRecords = new ArrayList(); + for (Rloc locator : locators) { + LocatorRecordBuilder locatorBuilder = new LocatorRecordBuilder(); + locatorBuilder.setLocalLocator(false).setRlocProbed(false).setWeight((short) 1).setPriority((short) 1) + .setMulticastWeight((short) 1).setMulticastPriority((short) 1).setRouted(true) + .setRloc(locator).setLocatorId("SFC_LISP").build(); + locatorRecords.add(locatorBuilder.build()); + } + return locatorRecords; + } } diff --git a/mappingservice/neutron/src/main/java/org/opendaylight/lispflowmapping/neutron/ILispNeutronService.java b/mappingservice/neutron/src/main/java/org/opendaylight/lispflowmapping/neutron/ILispNeutronService.java index 3896fa706..3cd754d9b 100644 --- a/mappingservice/neutron/src/main/java/org/opendaylight/lispflowmapping/neutron/ILispNeutronService.java +++ b/mappingservice/neutron/src/main/java/org/opendaylight/lispflowmapping/neutron/ILispNeutronService.java @@ -9,12 +9,12 @@ package org.opendaylight.lispflowmapping.neutron; import org.opendaylight.lispflowmapping.interfaces.lisp.IFlowMapping; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.MappingserviceService; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.OdlMappingserviceService; public interface ILispNeutronService { public IFlowMapping getMappingService(); - public MappingserviceService getMappingDbService(); + public OdlMappingserviceService getMappingDbService(); } diff --git a/mappingservice/neutron/src/main/java/org/opendaylight/lispflowmapping/neutron/LispNeutronPortHandler.java b/mappingservice/neutron/src/main/java/org/opendaylight/lispflowmapping/neutron/LispNeutronPortHandler.java index e34dad458..80570f933 100644 --- a/mappingservice/neutron/src/main/java/org/opendaylight/lispflowmapping/neutron/LispNeutronPortHandler.java +++ b/mappingservice/neutron/src/main/java/org/opendaylight/lispflowmapping/neutron/LispNeutronPortHandler.java @@ -13,17 +13,16 @@ import java.util.List; import java.util.concurrent.Future; import org.apache.commons.lang3.exception.ExceptionUtils; -import org.opendaylight.lispflowmapping.lisp.util.LispAFIConvertor; +import org.opendaylight.lispflowmapping.lisp.util.LispAddressUtil; import org.opendaylight.neutron.spi.INeutronPortAware; import org.opendaylight.neutron.spi.NeutronPort; import org.opendaylight.neutron.spi.Neutron_IPs; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.LispAFIAddress; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eidtolocatorrecords.EidToLocatorRecord; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.lispaddress.LispAddressContainer; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.Eid; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.locatorrecords.LocatorRecord; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping.record.container.MappingRecord; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.GetMappingInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.GetMappingOutput; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.MappingserviceService; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.OdlMappingserviceService; import org.opendaylight.yangtools.yang.common.RpcResult; /** @@ -67,13 +66,13 @@ public class LispNeutronPortHandler extends LispNeutronService implements + port.toString()); return; } - LispAFIAddress hostAddress = LispAFIConvertor.asDistinguishedNameAddress(port.getBindinghostID()); + Eid hostAddress = LispAddressUtil.asDistinguishedNameEid(port.getBindinghostID()); - EidToLocatorRecord eidRecord; + MappingRecord eidRecord; List hostLocRecords; - GetMappingInput input = LispUtil.buildGetMappingInput(LispAFIConvertor.toContainer(hostAddress), (short) 0); + GetMappingInput input = LispUtil.buildGetMappingInput(hostAddress); try { - MappingserviceService lfmdb = lispNeutronService.getMappingDbService(); + OdlMappingserviceService lfmdb = lispNeutronService.getMappingDbService(); if (lfmdb == null) { LOG.debug("lfmdb is null!!!"); return; @@ -84,7 +83,7 @@ public class LispNeutronPortHandler extends LispNeutronService implements // TODO for now only selecting the first EidToLocatorRecord from the // Host_ID mapping - eidRecord = output.getEidToLocatorRecord().get(0); + eidRecord = output.getMappingRecord(); hostLocRecords = eidRecord.getLocatorRecord(); LOG.debug("hostLocRecords is : {}",hostLocRecords); @@ -97,15 +96,15 @@ public class LispNeutronPortHandler extends LispNeutronService implements List fixedIPs = port.getFixedIPs(); if (fixedIPs != null && fixedIPs.size() > 0) { - LispAddressContainer eidAddress; + Eid eidAddress; for (Neutron_IPs ip : fixedIPs) { // TODO Add check/support for IPv6. // Get subnet for this port, based on v4 or v6 decide address // iana code. - eidAddress = LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress(ip.getIpAddress())); - lispNeutronService.getMappingDbService().addMapping(LispUtil.buildAddMappingInput(eidAddress, hostLocRecords, 32)); + eidAddress = LispAddressUtil.asIpv4PrefixEid(ip.getIpAddress() + "/32"); + lispNeutronService.getMappingDbService().addMapping(LispUtil.buildAddMappingInput(eidAddress, hostLocRecords)); } } @@ -181,7 +180,7 @@ public class LispNeutronPortHandler extends LispNeutronService implements List fixedIPs = port.getFixedIPs(); if (fixedIPs != null && fixedIPs.size() > 0) { - LispAddressContainer eidAddress; + Eid eidAddress; for (Neutron_IPs ip : fixedIPs) { @@ -189,8 +188,8 @@ public class LispNeutronPortHandler extends LispNeutronService implements // Get subnet for this port, based on v4 or v6 decide address // iana code. - eidAddress = LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress(ip.getIpAddress())); - lispNeutronService.getMappingDbService().removeMapping(LispUtil.buildRemoveMappingInput(eidAddress,32)); + eidAddress = LispAddressUtil.asIpv4PrefixEid(ip.getIpAddress() + "/32"); + lispNeutronService.getMappingDbService().removeMapping(LispUtil.buildRemoveMappingInput(eidAddress)); LOG.info("Neutron Port mapping deleted from lisp: " + " Port Fixed IP: " + ip + "Port host IP: "); diff --git a/mappingservice/neutron/src/main/java/org/opendaylight/lispflowmapping/neutron/LispNeutronService.java b/mappingservice/neutron/src/main/java/org/opendaylight/lispflowmapping/neutron/LispNeutronService.java index b8cf243db..599cbc1df 100644 --- a/mappingservice/neutron/src/main/java/org/opendaylight/lispflowmapping/neutron/LispNeutronService.java +++ b/mappingservice/neutron/src/main/java/org/opendaylight/lispflowmapping/neutron/LispNeutronService.java @@ -16,14 +16,14 @@ import org.opendaylight.controller.sal.binding.api.BindingAwareProvider; import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry; import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext; import org.opendaylight.lispflowmapping.interfaces.lisp.IFlowMapping; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.MappingserviceService; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.OdlMappingserviceService; public class LispNeutronService implements ILispNeutronService, BindingAwareProvider { protected static final Logger LOG = LoggerFactory.getLogger(LispNeutronService.class); private IFlowMapping mappingService; - private MappingserviceService lfmDbService; + private OdlMappingserviceService lfmDbService; private static ILispNeutronService neutronService; @@ -46,7 +46,7 @@ public class LispNeutronService implements ILispNeutronService, BindingAwareProv return this.mappingService; } - public MappingserviceService getMappingDbService() { + public OdlMappingserviceService getMappingDbService() { return this.lfmDbService; } @@ -64,7 +64,7 @@ public class LispNeutronService implements ILispNeutronService, BindingAwareProv public void onSessionInitiated(ProviderContext session) { LOG.debug("LFMDBSERVICE IS BEING FILLED! SESSION INITIATED"); RpcProviderRegistry rpcRegistry = session.getSALService(RpcProviderRegistry.class); - lfmDbService = rpcRegistry.getRpcService(MappingserviceService.class); + lfmDbService = rpcRegistry.getRpcService(OdlMappingserviceService.class); LOG.debug("LFMDBSERVICE was FILLED! SESSION INITIATED"); } diff --git a/mappingservice/neutron/src/main/java/org/opendaylight/lispflowmapping/neutron/LispNeutronSubnetHandler.java b/mappingservice/neutron/src/main/java/org/opendaylight/lispflowmapping/neutron/LispNeutronSubnetHandler.java index 4af588250..191fa3b4e 100644 --- a/mappingservice/neutron/src/main/java/org/opendaylight/lispflowmapping/neutron/LispNeutronSubnetHandler.java +++ b/mappingservice/neutron/src/main/java/org/opendaylight/lispflowmapping/neutron/LispNeutronSubnetHandler.java @@ -11,13 +11,10 @@ package org.opendaylight.lispflowmapping.neutron; import java.net.HttpURLConnection; import org.apache.commons.lang3.exception.ExceptionUtils; -import org.apache.commons.net.util.SubnetUtils; -import org.apache.commons.net.util.SubnetUtils.SubnetInfo; -import org.opendaylight.lispflowmapping.lisp.util.LispAFIConvertor; +import org.opendaylight.lispflowmapping.lisp.util.LispAddressUtil; import org.opendaylight.neutron.spi.INeutronSubnetAware; import org.opendaylight.neutron.spi.NeutronSubnet; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.LispAFIAddress; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.lispaddress.LispAddressContainer; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.Eid; /** * Lisp Service implementation of NeutronSubnetAware API Creation of a new @@ -61,23 +58,18 @@ public class LispNeutronSubnetHandler extends LispNeutronService implements + subnet.getName() + " Subnet Cidr: " + subnet.getCidr()); LOG.debug("Lisp Neutron Subnet: " + subnet.toString()); - int masklen = Integer.parseInt(subnet.getCidr().split("/")[1]); - SubnetUtils util = new SubnetUtils(subnet.getCidr()); - SubnetInfo info = util.getInfo(); - // Determine the IANA code for the subnet IP version // Default is set to IPv4 for neutron subnets - LispAFIAddress lispAddress = LispAFIConvertor.asIPAfiAddress(info.getNetworkAddress()); - LispAddressContainer addressContainer = LispAFIConvertor.toContainer(lispAddress); + Eid eid = LispAddressUtil.asIpv4PrefixEid(subnet.getCidr()); try { - lispNeutronService.getMappingDbService().addKey((LispUtil.buildAddKeyInput(addressContainer,subnet.getNetworkUUID(), masklen))); + lispNeutronService.getMappingDbService().addKey(LispUtil.buildAddKeyInput(eid, subnet.getNetworkUUID())); LOG.debug("Neutron Subnet Added to MapServer : Subnet name: " + subnet.getName() + " EID Prefix: " - + addressContainer.toString() + " Key: " + + subnet.getCidr() + " Key: " + subnet.getNetworkUUID()); } catch (Exception e) { LOG.error("Adding new subnet to lisp service mapping service failed. Subnet : " @@ -147,23 +139,18 @@ public class LispNeutronSubnetHandler extends LispNeutronService implements + "Key: " + subnet.getNetworkUUID()); LOG.debug("Lisp Neutron Subnet: " + subnet.toString()); - int masklen = Integer.parseInt(subnet.getCidr().split("/")[1]); - SubnetUtils util = new SubnetUtils(subnet.getCidr()); - SubnetInfo info = util.getInfo(); - // Determine the IANA code for the subnet IP version // Default is set to IPv4 for neutron subnets - LispAFIAddress lispAddress = LispAFIConvertor.asIPAfiAddress(info.getNetworkAddress()); - LispAddressContainer addressContainer = LispAFIConvertor.toContainer(lispAddress); + Eid eid = LispAddressUtil.asIpv4PrefixEid(subnet.getCidr()); try { - lispNeutronService.getMappingDbService().removeKey(LispUtil.buildRemoveKeyInput(addressContainer, masklen)); + lispNeutronService.getMappingDbService().removeKey(LispUtil.buildRemoveKeyInput(eid)); LOG.debug("Neutron Subnet Deleted from MapServer : Subnet name: " + subnet.getName() + " Eid Prefix: " - + addressContainer.toString() + " Key: " + + subnet.getCidr() + " Key: " + subnet.getNetworkUUID()); } catch (Exception e) { LOG.error("Deleting subnet's EID prefix from mapping service failed + Subnet: " diff --git a/mappingservice/neutron/src/main/java/org/opendaylight/lispflowmapping/neutron/LispUtil.java b/mappingservice/neutron/src/main/java/org/opendaylight/lispflowmapping/neutron/LispUtil.java index 55fd6aadf..d4835f324 100644 --- a/mappingservice/neutron/src/main/java/org/opendaylight/lispflowmapping/neutron/LispUtil.java +++ b/mappingservice/neutron/src/main/java/org/opendaylight/lispflowmapping/neutron/LispUtil.java @@ -10,9 +10,10 @@ package org.opendaylight.lispflowmapping.neutron; import java.util.List; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.EidToLocatorRecord.Action; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.lispaddress.LispAddressContainer; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.Eid; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.locatorrecords.LocatorRecord; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping.record.container.MappingRecord.Action; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping.record.container.MappingRecordBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.AddKeyInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.AddKeyInputBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.AddMappingInput; @@ -23,6 +24,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev15090 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.RemoveKeyInputBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.RemoveMappingInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.RemoveMappingInputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.mapping.authkey.container.MappingAuthkeyBuilder; /** * LispUtil class has util functions for building inputs for LISP service RPCs. @@ -36,35 +38,39 @@ public class LispUtil { // private static final Logger LOG = LoggerFactory.getLogger(LispUtil.class); - public static AddMappingInput buildAddMappingInput(LispAddressContainer eid, List locators, int mask) { - AddMappingInputBuilder mib = new AddMappingInputBuilder(); + public static AddMappingInput buildAddMappingInput(Eid eid, List locators) { + MappingRecordBuilder mrb = new MappingRecordBuilder(); - mib.setAction(Action.NoAction).setAuthoritative(true).setLispAddressContainer(eid) - .setLocatorRecord(locators).setMapVersion((short) 0).setMaskLength((short) mask) + mrb.setAction(Action.NoAction).setAuthoritative(true).setEid(eid) + .setLocatorRecord(locators).setMapVersion((short) 0) .setRecordTtl(1440); + + AddMappingInputBuilder mib = new AddMappingInputBuilder(); + mib.setMappingRecord(mrb.build()); + return mib.build(); } - public static AddKeyInput buildAddKeyInput(LispAddressContainer eid, String net, int mask) { + public static AddKeyInput buildAddKeyInput(Eid eid, String net) { AddKeyInputBuilder kib = new AddKeyInputBuilder(); - kib.setLispAddressContainer(eid).setAuthkey(net).setMaskLength((short)mask).setKeyType(1); + kib.setEid(eid).setMappingAuthkey(new MappingAuthkeyBuilder().setKeyString(net).setKeyType(1).build()); return kib.build(); } - public static GetMappingInput buildGetMappingInput(LispAddressContainer eid, short mask) { - return new GetMappingInputBuilder().setLispAddressContainer(eid).setMaskLength(mask).build(); + public static GetMappingInput buildGetMappingInput(Eid eid) { + return new GetMappingInputBuilder().setEid(eid).build(); } - public static RemoveMappingInput buildRemoveMappingInput(LispAddressContainer eid, int mask) { + public static RemoveMappingInput buildRemoveMappingInput(Eid eid) { RemoveMappingInputBuilder rmib = new RemoveMappingInputBuilder(); - rmib.setLispAddressContainer(eid).setMaskLength((short)mask); + rmib.setEid(eid); return rmib.build(); } - public static RemoveKeyInput buildRemoveKeyInput(LispAddressContainer eid, int mask) { + public static RemoveKeyInput buildRemoveKeyInput(Eid eid) { RemoveKeyInputBuilder kib = new RemoveKeyInputBuilder(); - kib.setLispAddressContainer(eid).setMaskLength((short)mask); + kib.setEid(eid); return kib.build(); } -} \ No newline at end of file +} diff --git a/mappingservice/pom.xml b/mappingservice/pom.xml index aaee63b15..413f85c24 100644 --- a/mappingservice/pom.xml +++ b/mappingservice/pom.xml @@ -18,13 +18,11 @@ lisp-proto api - diff --git a/mappingservice/southbound/src/main/java/org/opendaylight/controller/config/yang/config/lfm_mappingservice_sb/impl/LfmMappingServiceSbModuleFactory.java b/mappingservice/southbound/src/main/java/org/opendaylight/controller/config/yang/config/lfm_mappingservice_sb/impl/LfmMappingServiceSbModuleFactory.java deleted file mode 100644 index 2473a6937..000000000 --- a/mappingservice/southbound/src/main/java/org/opendaylight/controller/config/yang/config/lfm_mappingservice_sb/impl/LfmMappingServiceSbModuleFactory.java +++ /dev/null @@ -1,13 +0,0 @@ -/* -* Generated file -* -* Generated from: yang module name: lfm-mappingservice-sb-impl yang module local name: lfm-mappingservice-sb -* Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator -* Generated at: Mon May 11 18:08:47 PDT 2015 -* -* Do not modify this file unless it is present under src/main directory -*/ -package org.opendaylight.controller.config.yang.config.lfm_mappingservice_sb.impl; -public class LfmMappingServiceSbModuleFactory extends org.opendaylight.controller.config.yang.config.lfm_mappingservice_sb.impl.AbstractLfmMappingServiceSbModuleFactory { - -} diff --git a/mappingservice/southbound/src/main/java/org/opendaylight/controller/config/yang/config/lfm_mappingservice_sb/impl/LfmMappingServiceSbModule.java b/mappingservice/southbound/src/main/java/org/opendaylight/controller/config/yang/config/lisp_sb/impl/LfmMappingServiceSbModule.java similarity index 69% rename from mappingservice/southbound/src/main/java/org/opendaylight/controller/config/yang/config/lfm_mappingservice_sb/impl/LfmMappingServiceSbModule.java rename to mappingservice/southbound/src/main/java/org/opendaylight/controller/config/yang/config/lisp_sb/impl/LfmMappingServiceSbModule.java index ec4f7c6c0..fe2d48cc1 100644 --- a/mappingservice/southbound/src/main/java/org/opendaylight/controller/config/yang/config/lfm_mappingservice_sb/impl/LfmMappingServiceSbModule.java +++ b/mappingservice/southbound/src/main/java/org/opendaylight/controller/config/yang/config/lisp_sb/impl/LfmMappingServiceSbModule.java @@ -1,18 +1,10 @@ -/* - * Copyright (c) 2015 Cisco Systems, Inc. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ - -package org.opendaylight.controller.config.yang.config.lfm_mappingservice_sb.impl; +package org.opendaylight.controller.config.yang.config.lisp_sb.impl; import org.opendaylight.lispflowmapping.southbound.LispSouthboundPlugin; -import org.slf4j.LoggerFactory; import org.slf4j.Logger; +import org.slf4j.LoggerFactory; -public class LfmMappingServiceSbModule extends org.opendaylight.controller.config.yang.config.lfm_mappingservice_sb.impl.AbstractLfmMappingServiceSbModule { +public class LfmMappingServiceSbModule extends org.opendaylight.controller.config.yang.config.lisp_sb.impl.AbstractLfmMappingServiceSbModule { private final static Logger LOG = LoggerFactory.getLogger(LfmMappingServiceSbModule.class); private LispSouthboundPlugin sbPlugin; @@ -20,7 +12,7 @@ public class LfmMappingServiceSbModule extends org.opendaylight.controller.confi super(identifier, dependencyResolver); } - public LfmMappingServiceSbModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, org.opendaylight.controller.config.yang.config.lfm_mappingservice_sb.impl.LfmMappingServiceSbModule oldModule, java.lang.AutoCloseable oldInstance) { + public LfmMappingServiceSbModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, org.opendaylight.controller.config.yang.config.lisp_sb.impl.LfmMappingServiceSbModule oldModule, java.lang.AutoCloseable oldInstance) { super(identifier, dependencyResolver, oldModule, oldInstance); } diff --git a/mappingservice/southbound/src/main/java/org/opendaylight/controller/config/yang/config/lisp_sb/impl/LfmMappingServiceSbModuleFactory.java b/mappingservice/southbound/src/main/java/org/opendaylight/controller/config/yang/config/lisp_sb/impl/LfmMappingServiceSbModuleFactory.java new file mode 100644 index 000000000..48c1467cb --- /dev/null +++ b/mappingservice/southbound/src/main/java/org/opendaylight/controller/config/yang/config/lisp_sb/impl/LfmMappingServiceSbModuleFactory.java @@ -0,0 +1,13 @@ +/* +* Generated file +* +* Generated from: yang module name: odl-lisp-sb-impl yang module local name: lisp-sb-impl +* Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator +* Generated at: Fri Nov 27 12:37:22 EET 2015 +* +* Do not modify this file unless it is present under src/main directory +*/ +package org.opendaylight.controller.config.yang.config.lisp_sb.impl; +public class LfmMappingServiceSbModuleFactory extends org.opendaylight.controller.config.yang.config.lisp_sb.impl.AbstractLfmMappingServiceSbModuleFactory { + +} diff --git a/mappingservice/southbound/src/main/java/org/opendaylight/lispflowmapping/southbound/LispSouthboundPlugin.java b/mappingservice/southbound/src/main/java/org/opendaylight/lispflowmapping/southbound/LispSouthboundPlugin.java index e6ffffebd..aab88c66c 100644 --- a/mappingservice/southbound/src/main/java/org/opendaylight/lispflowmapping/southbound/LispSouthboundPlugin.java +++ b/mappingservice/southbound/src/main/java/org/opendaylight/lispflowmapping/southbound/LispSouthboundPlugin.java @@ -29,8 +29,8 @@ import org.opendaylight.lispflowmapping.southbound.lisp.LispSouthboundService; import org.opendaylight.lispflowmapping.southbound.lisp.LispXtrSouthboundService; import org.opendaylight.lispflowmapping.type.sbplugin.IConfigLispSouthboundPlugin; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.MessageType; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.transportaddress.TransportAddress; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.sb.rev150904.LispSbService; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.transport.address.TransportAddress; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.sb.rev150904.OdlLispSbService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -51,7 +51,7 @@ public class LispSouthboundPlugin implements IConfigLispSouthboundPlugin, AutoCl private volatile String bindingAddress = null; private volatile int xtrPort = LispMessage.XTR_PORT_NUM; private volatile boolean listenOnXtrPort = false; - private BindingAwareBroker.RpcRegistration sbRpcRegistration; + private BindingAwareBroker.RpcRegistration sbRpcRegistration; private DatagramSocket xtrSocket; private LispSouthboundStats statistics = new LispSouthboundStats(); @@ -59,7 +59,7 @@ public class LispSouthboundPlugin implements IConfigLispSouthboundPlugin, AutoCl LOG.info("LISP (RFC6830) southbound plugin is initializing..."); final LispSouthboundRPC sbRpcHandler = new LispSouthboundRPC(this); - sbRpcRegistration = rpcRegistry.addRpcImplementation(LispSbService.class, sbRpcHandler); + sbRpcRegistration = rpcRegistry.addRpcImplementation(OdlLispSbService.class, sbRpcHandler); broker.registerProvider(this); synchronized (startLock) { diff --git a/mappingservice/southbound/src/main/java/org/opendaylight/lispflowmapping/southbound/LispSouthboundRPC.java b/mappingservice/southbound/src/main/java/org/opendaylight/lispflowmapping/southbound/LispSouthboundRPC.java index 97fea9f9d..e313626b7 100644 --- a/mappingservice/southbound/src/main/java/org/opendaylight/lispflowmapping/southbound/LispSouthboundRPC.java +++ b/mappingservice/southbound/src/main/java/org/opendaylight/lispflowmapping/southbound/LispSouthboundRPC.java @@ -20,7 +20,7 @@ import org.opendaylight.lispflowmapping.lisp.serializer.MapRequestSerializer; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.MessageType; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.sb.rev150904.GetStatsOutput; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.sb.rev150904.GetStatsOutputBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.sb.rev150904.LispSbService; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.sb.rev150904.OdlLispSbService; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.sb.rev150904.SendMapNotifyInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.sb.rev150904.SendMapRegisterInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.sb.rev150904.SendMapReplyInput; @@ -44,7 +44,7 @@ import com.google.common.util.concurrent.Futures; * @author Lorand Jakab (lojakab@cisco.com) */ -public class LispSouthboundRPC implements LispSbService { +public class LispSouthboundRPC implements OdlLispSbService { protected static final Logger LOG = LoggerFactory.getLogger(LispSouthboundRPC.class); diff --git a/mappingservice/southbound/src/main/java/org/opendaylight/lispflowmapping/southbound/LispSouthboundStats.java b/mappingservice/southbound/src/main/java/org/opendaylight/lispflowmapping/southbound/LispSouthboundStats.java index 1a8d17f6a..7f4281d88 100644 --- a/mappingservice/southbound/src/main/java/org/opendaylight/lispflowmapping/southbound/LispSouthboundStats.java +++ b/mappingservice/southbound/src/main/java/org/opendaylight/lispflowmapping/southbound/LispSouthboundStats.java @@ -84,4 +84,4 @@ public class LispSouthboundStats { } return max; } -} \ No newline at end of file +} diff --git a/mappingservice/southbound/src/main/java/org/opendaylight/lispflowmapping/southbound/lisp/LispSouthboundService.java b/mappingservice/southbound/src/main/java/org/opendaylight/lispflowmapping/southbound/lisp/LispSouthboundService.java index bf13edbd1..f6f21a5e8 100644 --- a/mappingservice/southbound/src/main/java/org/opendaylight/lispflowmapping/southbound/lisp/LispSouthboundService.java +++ b/mappingservice/southbound/src/main/java/org/opendaylight/lispflowmapping/southbound/lisp/LispSouthboundService.java @@ -34,7 +34,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.Ma import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.MapRequest; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.MapReply; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.RequestMappingBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.transportaddress.TransportAddressBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.transport.address.TransportAddressBuilder; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.PortNumber; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/mappingservice/southbound/src/main/java/org/opendaylight/lispflowmapping/southbound/lisp/LispXtrSouthboundService.java b/mappingservice/southbound/src/main/java/org/opendaylight/lispflowmapping/southbound/lisp/LispXtrSouthboundService.java index 41108193e..2d20ea8ac 100644 --- a/mappingservice/southbound/src/main/java/org/opendaylight/lispflowmapping/southbound/lisp/LispXtrSouthboundService.java +++ b/mappingservice/southbound/src/main/java/org/opendaylight/lispflowmapping/southbound/lisp/LispXtrSouthboundService.java @@ -25,7 +25,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.Ma import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.MapRequest; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.XtrReplyMappingBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.XtrRequestMappingBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.transportaddress.TransportAddressBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.transport.address.TransportAddressBuilder; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.PortNumber; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/mappingservice/southbound/src/main/java/org/opendaylight/lispflowmapping/southbound/util/LispNotificationHelper.java b/mappingservice/southbound/src/main/java/org/opendaylight/lispflowmapping/southbound/util/LispNotificationHelper.java index bb7979252..06afae348 100644 --- a/mappingservice/southbound/src/main/java/org/opendaylight/lispflowmapping/southbound/util/LispNotificationHelper.java +++ b/mappingservice/southbound/src/main/java/org/opendaylight/lispflowmapping/southbound/util/LispNotificationHelper.java @@ -26,7 +26,7 @@ public class LispNotificationHelper { public static MapRegister convertMapRegister( org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.MapRegister mapRegister) { return new MapRegisterBuilder().setAuthenticationData(mapRegister.getAuthenticationData()) - .setEidToLocatorRecord(mapRegister.getEidToLocatorRecord()).setKeyId(mapRegister.getKeyId()) + .setMappingRecordItem(mapRegister.getMappingRecordItem()).setKeyId(mapRegister.getKeyId()) .setNonce(mapRegister.getNonce()).setProxyMapReply(mapRegister.isProxyMapReply()) .setWantMapNotify(mapRegister.isWantMapNotify()).setXtrSiteIdPresent(mapRegister.isXtrSiteIdPresent()) .setXtrId(mapRegister.getXtrId()).setSiteId(mapRegister.getSiteId()).build(); @@ -35,7 +35,7 @@ public class LispNotificationHelper { public static MapNotify convertMapNotify( org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.MapNotify mapNotify) { return new MapNotifyBuilder().setAuthenticationData(mapNotify.getAuthenticationData()) - .setEidToLocatorRecord(mapNotify.getEidToLocatorRecord()).setKeyId(mapNotify.getKeyId()) + .setMappingRecordItem(mapNotify.getMappingRecordItem()).setKeyId(mapNotify.getKeyId()) .setNonce(mapNotify.getNonce()).setXtrSiteIdPresent(mapNotify.isXtrSiteIdPresent()) .setXtrId(mapNotify.getXtrId()).setSiteId(mapNotify.getSiteId()).build(); } @@ -43,7 +43,7 @@ public class LispNotificationHelper { public static MapRequest convertMapRequest( org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.MapRequest mapRequest) { return new MapRequestBuilder().setAuthoritative(mapRequest.isAuthoritative()) - .setEidRecord(mapRequest.getEidRecord()).setItrRloc(mapRequest.getItrRloc()) + .setEidItem(mapRequest.getEidItem()).setItrRloc(mapRequest.getItrRloc()) .setMapDataPresent(mapRequest.isMapDataPresent()).setMapReply(mapRequest.getMapReply()) .setNonce(mapRequest.getNonce()).setPitr(mapRequest.isPitr()).setProbe(mapRequest.isProbe()) .setSmr(mapRequest.isSmr()).setSmrInvoked(mapRequest.isSmrInvoked()) @@ -53,7 +53,7 @@ public class LispNotificationHelper { public static MapReply convertMapReply( org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.MapReply mapReply) { return new MapReplyBuilder().setEchoNonceEnabled(mapReply.isEchoNonceEnabled()) - .setEidToLocatorRecord(mapReply.getEidToLocatorRecord()).setNonce(mapReply.getNonce()) + .setMappingRecordItem(mapReply.getMappingRecordItem()).setNonce(mapReply.getNonce()) .setProbe(mapReply.isProbe()).setSecurityEnabled(mapReply.isSecurityEnabled()).build(); } diff --git a/mappingservice/southbound/src/test/java/org/opendaylight/lispflowmapping/southbound/lisp/LispSouthboundServiceTest.java b/mappingservice/southbound/src/test/java/org/opendaylight/lispflowmapping/southbound/lisp/LispSouthboundServiceTest.java index dc05fd61e..7faf4cfdc 100644 --- a/mappingservice/southbound/src/test/java/org/opendaylight/lispflowmapping/southbound/lisp/LispSouthboundServiceTest.java +++ b/mappingservice/southbound/src/test/java/org/opendaylight/lispflowmapping/southbound/lisp/LispSouthboundServiceTest.java @@ -19,7 +19,6 @@ import java.util.Arrays; import java.util.List; import junitx.framework.ArrayAssert; -import junitx.framework.Assert; import org.apache.commons.lang3.ArrayUtils; import org.jmock.api.Invocation; @@ -27,28 +26,35 @@ import org.junit.Before; import org.junit.Ignore; import org.junit.Test; import org.opendaylight.controller.md.sal.binding.api.NotificationPublishService; -import org.opendaylight.lispflowmapping.lisp.type.AddressFamilyNumberEnum; import org.opendaylight.lispflowmapping.lisp.type.LispMessage; import org.opendaylight.lispflowmapping.lisp.type.LispMessageEnum; import org.opendaylight.lispflowmapping.lisp.util.ByteUtil; -import org.opendaylight.lispflowmapping.lisp.util.LispAFIConvertor; +import org.opendaylight.lispflowmapping.lisp.util.LispAddressUtil; import org.opendaylight.lispflowmapping.lisp.util.MapNotifyBuilderHelper; +import org.opendaylight.lispflowmapping.lisp.util.MaskUtil; import org.opendaylight.lispflowmapping.lisp.serializer.MapNotifySerializer; import org.opendaylight.lispflowmapping.lisp.serializer.MapReplySerializer; import org.opendaylight.lispflowmapping.southbound.lisp.exception.LispMalformedPacketException; import org.opendaylight.lispflowmapping.tools.junit.BaseTestCase; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana.afn.safi.rev130704.AddressFamily; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.Ipv4Afi; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.Ipv4PrefixAfi; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.Ipv6PrefixAfi; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.Ipv6Prefix; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.AddMapping; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.EidToLocatorRecord.Action; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.MapRegister; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.MapRequest; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.RequestMapping; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eidrecords.EidRecord; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eidtolocatorrecords.EidToLocatorRecord; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eidtolocatorrecords.EidToLocatorRecordBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.lispaddress.LispAddressContainer; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.Eid; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.list.EidItem; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.locatorrecords.LocatorRecord; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.locatorrecords.LocatorRecordBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapnotifymessage.MapNotifyBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping.record.container.MappingRecord; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping.record.container.MappingRecord.Action; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping.record.container.MappingRecordBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping.record.list.MappingRecordItem; +import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping.record.list.MappingRecordItemBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapreplymessage.MapReplyBuilder; import org.opendaylight.yangtools.yang.binding.Notification; @@ -63,7 +69,7 @@ public class LispSouthboundServiceTest extends BaseTestCase { // private ValueSaverAction mapRequestSaver; private MapNotifyBuilder mapNotifyBuilder; private MapReplyBuilder mapReplyBuilder; - private EidToLocatorRecordBuilder eidToLocatorBuilder; + private MappingRecordBuilder mappingRecordBuilder; private interface MapReplyIpv4SingleLocatorPos { int RECORD_COUNT = 3; @@ -116,20 +122,20 @@ public class LispSouthboundServiceTest extends BaseTestCase { + "0050 2a cd 39 c8 d6 08 00 01 01 02 03 04 00 01 c0 a8 88 0a 00 20 " // + "0060 00 01 01 02 03 04")); mapReplyBuilder = new MapReplyBuilder(); - mapReplyBuilder.setEidToLocatorRecord(new ArrayList()); + mapReplyBuilder.setMappingRecordItem(new ArrayList()); mapReplyBuilder.setNonce((long) 0); mapReplyBuilder.setEchoNonceEnabled(false); mapReplyBuilder.setProbe(true); mapReplyBuilder.setSecurityEnabled(true); - eidToLocatorBuilder = new EidToLocatorRecordBuilder(); + mappingRecordBuilder = new MappingRecordBuilder(); String ip = "0.0.0.0"; - eidToLocatorBuilder.setLispAddressContainer(LispAFIConvertor.asIPv4Prefix(ip, 0)); - eidToLocatorBuilder.setLocatorRecord(new ArrayList()); - eidToLocatorBuilder.setRecordTtl(10); - eidToLocatorBuilder.setMapVersion((short) 0); - eidToLocatorBuilder.setMaskLength((short) 0); - eidToLocatorBuilder.setAction(Action.NativelyForward); - eidToLocatorBuilder.setAuthoritative(false); + mappingRecordBuilder.setEid(LispAddressUtil.asIpv4PrefixEid(ip + "/0")); + mappingRecordBuilder.setLocatorRecord(new ArrayList()); + mappingRecordBuilder.setRecordTtl(10); + mappingRecordBuilder.setMapVersion((short) 0); + mappingRecordBuilder.setMaskLength((short) 0); + mappingRecordBuilder.setAction(Action.NativelyForward); + mappingRecordBuilder.setAuthoritative(false); // eidToLocatorBuilder.setPrefix(new LispIpv4Address(0)); // mapReply.addEidToLocator(eidToLocatorBuilder); @@ -226,12 +232,12 @@ public class LispSouthboundServiceTest extends BaseTestCase { handleMapRegisterPacket(mapRegisterPacket); - List eidRecords = lastMapRegister().getEidToLocatorRecord(); + List eidRecords = lastMapRegister().getMappingRecordItem(); assertEquals(1, eidRecords.size()); - EidToLocatorRecord eidRecord = eidRecords.get(0); + MappingRecord eidRecord = eidRecords.get(0).getMappingRecord(); assertEquals(2, eidRecord.getLocatorRecord().size()); - assertEquals(LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress("10.1.0.110")), eidRecord.getLocatorRecord().get(0).getLispAddressContainer()); - assertEquals(LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress("192.168.136.51")), eidRecord.getLocatorRecord().get(1).getLispAddressContainer()); + assertEquals(LispAddressUtil.asIpv4Rloc("10.1.0.110"), eidRecord.getLocatorRecord().get(0).getRloc()); + assertEquals(LispAddressUtil.asIpv4Rloc("192.168.136.51"), eidRecord.getLocatorRecord().get(1).getRloc()); } @Test @@ -261,12 +267,12 @@ public class LispSouthboundServiceTest extends BaseTestCase { handleMapRegisterPacket(mapRegisterPacket); - EidToLocatorRecord eidToLocatorRecord = lastMapRegister().getEidToLocatorRecord().get(0); - assertEquals(LispAFIConvertor.asIPv6Address("2610:d0:ffff:192:0:0:0:1"), eidToLocatorRecord.getLispAddressContainer()); - assertEquals(AddressFamilyNumberEnum.IP6, - AddressFamilyNumberEnum.valueOf(LispAFIConvertor.toAFI(eidToLocatorRecord.getLispAddressContainer()).getAfi())); + MappingRecord eidToLocatorRecord = lastMapRegister().getMappingRecordItem().get(0).getMappingRecord(); + assertEquals("2610:d0:ffff:192:0:0:0:1/128", + ((Ipv6Prefix) eidToLocatorRecord.getEid().getAddress()).getIpv6Prefix().getValue()); + assertEquals(Ipv6PrefixAfi.class, eidToLocatorRecord.getEid().getAddressType()); - assertEquals(LispAFIConvertor.asIPAfiAddress("10.0.58.156"), LispAFIConvertor.toAFI(eidToLocatorRecord.getLocatorRecord().get(0).getLispAddressContainer())); + assertEquals(LispAddressUtil.asIpv4Rloc("10.0.58.156"), eidToLocatorRecord.getLocatorRecord().get(0).getRloc()); } @Test @@ -274,11 +280,11 @@ public class LispSouthboundServiceTest extends BaseTestCase { oneOf(nps).putNotification(with(lispNotificationSaver)); handleMapRegisterPacket(mapRegisterPacket); - EidToLocatorRecord eidToLocator = lastMapRegister().getEidToLocatorRecord().get(0); - assertEquals(LispAFIConvertor.asIPv4Address("153.16.254.1"), eidToLocator.getLispAddressContainer()); + MappingRecord eidToLocator = lastMapRegister().getMappingRecordItem().get(0).getMappingRecord(); + assertEquals(LispAddressUtil.asIpv4PrefixEid("153.16.254.1/32"), eidToLocator.getEid()); assertEquals(1, eidToLocator.getLocatorRecord().size()); - assertEquals(LispAFIConvertor.asIPAfiAddress("192.168.136.10"), LispAFIConvertor.toAFI(eidToLocator.getLocatorRecord().get(0).getLispAddressContainer())); + assertEquals(LispAddressUtil.asIpv4Rloc("192.168.136.10"), eidToLocator.getLocatorRecord().get(0).getRloc()); } @Test @@ -361,10 +367,11 @@ public class LispSouthboundServiceTest extends BaseTestCase { } private DatagramPacket lastMapNotifyPacket() { - if (mapNotifyBuilder.getEidToLocatorRecord() == null) { - mapNotifyBuilder.setEidToLocatorRecord(new ArrayList()); + if (mapNotifyBuilder.getMappingRecordItem() == null) { + mapNotifyBuilder.setMappingRecordItem(new ArrayList()); } - mapNotifyBuilder.getEidToLocatorRecord().add(eidToLocatorBuilder.build()); + mapNotifyBuilder.getMappingRecordItem().add(new MappingRecordItemBuilder().setMappingRecord( + mappingRecordBuilder.build()).build()); mapNotifyBuilder.setNonce((long) 0); mapNotifyBuilder.setKeyId((short) 0); mapNotifyBuilder.setAuthenticationData(new byte[0]); @@ -409,16 +416,12 @@ public class LispSouthboundServiceTest extends BaseTestCase { public void mapRequest__VerifyBasicFields() throws Exception { oneOf(nps).putNotification(with(lispNotificationSaver)); handleMapRequestAsByteArray(mapRequestPacket); - List eids = lastMapRequest().getEidRecord(); + List eids = lastMapRequest().getEidItem(); assertEquals(1, eids.size()); - LispAddressContainer lispAddress = eids.get(0).getLispAddressContainer(); - assertTrue(LispAFIConvertor.toAFI(lispAddress) instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.lispaddress.lispaddresscontainer.address.ipv4.Ipv4Address); - assertEquals(LispAFIConvertor.asIPv4Address("1.2.3.4"), lispAddress); - assertEquals((byte) 0x20, eids.get(0).getMask().byteValue()); + Eid lispAddress = eids.get(0).getEid(); + assertEquals(Ipv4PrefixAfi.class, lispAddress.getAddressType()); + assertEquals(LispAddressUtil.asIpv4PrefixEid("1.2.3.4/32"), lispAddress); assertEquals(0x3d8d2acd39c8d608L, lastMapRequest().getNonce().longValue()); - // assertEquals(AddressFamilyNumberEnum.RESERVED, - // AddressFamilyNumberEnum.valueOf(LispAFIToContainerConvertorFactory.toAFI( - // lastMapRequest().getSourceEid().getLispAddressContainer()).getAfi())); } @Test @@ -451,8 +454,8 @@ public class LispSouthboundServiceTest extends BaseTestCase { // ret(mapReply); handleMapRequestAsByteArray(mapRequestPacket); - assertEquals(LispAFIConvertor.asIPv6AfiAddress("2610:d0:ffff:192:0:0:0:1"), LispAFIConvertor.toAFI(lastMapRequest().getSourceEid().getLispAddressContainer())); - assertEquals(LispAFIConvertor.asIPv6Address("2610:d0:ffff:192:0:0:0:2"), lastMapRequest().getEidRecord().get(0).getLispAddressContainer()); + assertEquals(LispAddressUtil.asIpv6Eid("2610:d0:ffff:192:0:0:0:1"), lastMapRequest().getSourceEid().getEid()); + assertEquals(LispAddressUtil.asIpv6PrefixEid("2610:d0:ffff:192:0:0:0:2/128"), lastMapRequest().getEidItem().get(0).getEid()); } @Ignore @@ -501,14 +504,14 @@ public class LispSouthboundServiceTest extends BaseTestCase { // ret(mapReply); handleMapRequestAsByteArray(mapRequestPacket); - Assert.assertNotEquals(AddressFamilyNumberEnum.IP, LispAFIConvertor.toAFI(lastMapRequest().getSourceEid().getLispAddressContainer())); + assertEquals(Ipv4Afi.class, lastMapRequest().getSourceEid().getEid().getAddressType()); } @Test @Ignore public void mapReply__VerifyBasicIPv4Fields() throws Exception { - eidToLocatorBuilder.setMaskLength((short) 0x20).setLispAddressContainer(LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress("10.0.20.200"))); + mappingRecordBuilder.setEid(LispAddressUtil.asIpv4PrefixEid("10.0.20.200/32")); mapReplyBuilder.setNonce(0x3d8d2acd39c8d608L); stubHandleRequest(); @@ -524,15 +527,15 @@ public class LispSouthboundServiceTest extends BaseTestCase { byte expectedRecordCount = (byte) 1; assertEquals(expectedRecordCount, result[MapReplyIpv4SingleLocatorPos.RECORD_COUNT]); - assertEquals(eidToLocatorBuilder.getMaskLength().byteValue(), result[MapReplyIpv4SingleLocatorPos.EID_MASK_LEN]); - assertEquals(AddressFamilyNumberEnum.IP.getIanaCode(), ByteUtil.getShort(result, MapReplyIpv4SingleLocatorPos.AFI_TYPE)); + assertEquals(MaskUtil.getMaskForAddress(mappingRecordBuilder.getEid().getAddress()), result[MapReplyIpv4SingleLocatorPos.EID_MASK_LEN]); + assertEquals(AddressFamily.IpV4.getIntValue(), ByteUtil.getInt(result, MapReplyIpv4SingleLocatorPos.AFI_TYPE)); assertEquals(0x0a0014c8, ByteUtil.getInt(result, MapReplyIpv4SingleLocatorPos.EID_PREFIX)); } @Test @Ignore public void mapReply__VerifyBasicIPv6() throws Exception { - eidToLocatorBuilder.setMaskLength((short) 0x80).setLispAddressContainer(LispAFIConvertor.toContainer(LispAFIConvertor.asIPv6AfiAddress("0:0:0:0:0:0:0:1"))); + mappingRecordBuilder.setEid(LispAddressUtil.asIpv6PrefixEid("0:0:0:0:0:0:0:1/128")); stubHandleRequest(); @@ -543,8 +546,8 @@ public class LispSouthboundServiceTest extends BaseTestCase { byte expectedRecordCount = (byte) 1; assertEquals(expectedRecordCount, result[MapReplyIpv4SingleLocatorPos.RECORD_COUNT]); - assertEquals(eidToLocatorBuilder.getMaskLength().byteValue(), result[MapReplyIpv4SingleLocatorPos.EID_MASK_LEN]); - assertEquals(AddressFamilyNumberEnum.IP6.getIanaCode(), ByteUtil.getShort(result, MapReplyIpv4SingleLocatorPos.AFI_TYPE)); + assertEquals(MaskUtil.getMaskForAddress(mappingRecordBuilder.getEid().getAddress()), result[MapReplyIpv4SingleLocatorPos.EID_MASK_LEN]); + assertEquals(AddressFamily.IpV6.getIntValue(), ByteUtil.getInt(result, MapReplyIpv4SingleLocatorPos.AFI_TYPE)); byte[] expectedIpv6 = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 }; ArrayAssert.assertEquals(expectedIpv6, Arrays.copyOfRange(result, 24, 40)); @@ -553,9 +556,9 @@ public class LispSouthboundServiceTest extends BaseTestCase { @Test @Ignore public void mapReply__VerifyIPv6EidAndLocator() throws Exception { - eidToLocatorBuilder.setLispAddressContainer(LispAFIConvertor.toContainer(LispAFIConvertor.asIPv6AfiAddress("0:0:0:0:0:0:0:1"))); - eidToLocatorBuilder.getLocatorRecord().add( - new LocatorRecordBuilder().setLispAddressContainer(LispAFIConvertor.toContainer(LispAFIConvertor.asIPv6AfiAddress("0:0:0:0:0:0:0:2"))).build()); + mappingRecordBuilder.setEid(LispAddressUtil.asIpv6PrefixEid("0:0:0:0:0:0:0:1/128")); + mappingRecordBuilder.getLocatorRecord().add( + new LocatorRecordBuilder().setRloc(LispAddressUtil.asIpv6Rloc("0:0:0:0:0:0:0:2")).build()); stubHandleRequest(); @@ -581,9 +584,9 @@ public class LispSouthboundServiceTest extends BaseTestCase { @Test @Ignore public void mapReply__WithNonRoutableSingleLocator() throws Exception { - eidToLocatorBuilder.setMaskLength((short) 0x20).setLispAddressContainer(LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress("10.0.20.200"))); - eidToLocatorBuilder.getLocatorRecord().add( - new LocatorRecordBuilder().setRouted(false).setLispAddressContainer(LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress("4.3.2.1"))).build()); + mappingRecordBuilder.setEid(LispAddressUtil.asIpv4PrefixEid("10.0.20.200/32")); + mappingRecordBuilder.getLocatorRecord().add( + new LocatorRecordBuilder().setRouted(false).setRloc(LispAddressUtil.asIpv4Rloc("4.3.2.1")).build()); stubHandleRequest(); byte[] result = handleMapRequestAsByteArray(mapRequestPacket); @@ -593,10 +596,9 @@ public class LispSouthboundServiceTest extends BaseTestCase { @Test @Ignore public void mapReply__WithSingleLocator() throws Exception { - eidToLocatorBuilder.setMaskLength((short) 0x20)// - .setLispAddressContainer(LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress("10.0.20.200"))); - eidToLocatorBuilder.getLocatorRecord().add( - new LocatorRecordBuilder().setRouted(true).setLispAddressContainer(LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress("4.3.2.1"))).build()); + mappingRecordBuilder.setEid(LispAddressUtil.asIpv4PrefixEid("10.0.20.200/32")); + mappingRecordBuilder.getLocatorRecord().add( + new LocatorRecordBuilder().setRouted(true).setRloc(LispAddressUtil.asIpv4Rloc("4.3.2.1")).build()); stubHandleRequest(); byte[] result = handleMapRequestAsByteArray(mapRequestPacket); @@ -605,7 +607,7 @@ public class LispSouthboundServiceTest extends BaseTestCase { byte expectedLocCount = 1; assertEquals(expectedLocCount, result[MapReplyIpv4SingleLocatorPos.LOCATOR_COUNT]); - assertEquals(AddressFamilyNumberEnum.IP.getIanaCode(), ByteUtil.getShort(result, MapReplyIpv4SingleLocatorPos.LOC_AFI)); + assertEquals(AddressFamily.IpV4.getIntValue(), ByteUtil.getInt(result, MapReplyIpv4SingleLocatorPos.LOC_AFI)); assertEquals(0x04030201, ByteUtil.getInt(result, MapReplyIpv4SingleLocatorPos.LOCATOR)); assertEquals(0x01, result[MapReplyIpv4SingleLocatorPos.LOCATOR_RBIT] & 0x01); @@ -614,10 +616,10 @@ public class LispSouthboundServiceTest extends BaseTestCase { @Test @Ignore public void mapReply__WithMultipleLocator() throws Exception { - eidToLocatorBuilder.getLocatorRecord().add( - new LocatorRecordBuilder().setRouted(true).setLispAddressContainer(LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress("4.3.2.1"))).build()); - eidToLocatorBuilder.getLocatorRecord().add( - new LocatorRecordBuilder().setRouted(true).setLispAddressContainer(LispAFIConvertor.toContainer(LispAFIConvertor.asIPv6AfiAddress("0:0:0:0:0:0:0:1"))).build()); + mappingRecordBuilder.getLocatorRecord().add( + new LocatorRecordBuilder().setRouted(true).setRloc(LispAddressUtil.asIpv4Rloc("4.3.2.1")).build()); + mappingRecordBuilder.getLocatorRecord().add( + new LocatorRecordBuilder().setRouted(true).setRloc(LispAddressUtil.asIpv6Rloc("0:0:0:0:0:0:0:1")).build()); stubHandleRequest(); byte[] result = handleMapRequestAsByteArray(mapRequestPacket); @@ -625,11 +627,11 @@ public class LispSouthboundServiceTest extends BaseTestCase { assertEquals(2, result[MapReplyIpv4SingleLocatorPos.LOCATOR_COUNT]); - assertEquals(AddressFamilyNumberEnum.IP.getIanaCode(), ByteUtil.getShort(result, MapReplyIpv4SingleLocatorPos.LOC_AFI)); + assertEquals(AddressFamily.IpV4.getIntValue(), ByteUtil.getInt(result, MapReplyIpv4SingleLocatorPos.LOC_AFI)); assertEquals(0x04030201, ByteUtil.getInt(result, MapReplyIpv4SingleLocatorPos.LOCATOR)); assertEquals(0x01, result[MapReplyIpv4SingleLocatorPos.LOCATOR_RBIT] & 0x01); - assertEquals(AddressFamilyNumberEnum.IP6.getIanaCode(), ByteUtil.getShort(result, MapReplyIpv4SecondLocatorPos.LOC_AFI)); + assertEquals(AddressFamily.IpV6.getIntValue(), ByteUtil.getInt(result, MapReplyIpv4SecondLocatorPos.LOC_AFI)); byte[] expectedIpv6Rloc = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 }; ArrayAssert.assertEquals(expectedIpv6Rloc,