import org.opendaylight.controller.sal.binding.api.BindingAwareConsumer;
import org.opendaylight.controller.sal.binding.api.NotificationListener;
import org.opendaylight.controller.sal.binding.api.NotificationService;
+import org.opendaylight.lispflowmapping.implementation.config.ConfigIni;
import org.opendaylight.lispflowmapping.implementation.dao.MappingServiceKey;
+import org.opendaylight.lispflowmapping.implementation.dao.MappingServiceKeyUtil;
import org.opendaylight.lispflowmapping.implementation.dao.MappingServiceNoMaskKey;
import org.opendaylight.lispflowmapping.implementation.lisp.MapResolver;
import org.opendaylight.lispflowmapping.implementation.lisp.MapServer;
+import org.opendaylight.lispflowmapping.implementation.serializer.LispMessage;
import org.opendaylight.lispflowmapping.implementation.util.LispAFIConvertor;
import org.opendaylight.lispflowmapping.implementation.util.LispNotificationHelper;
import org.opendaylight.lispflowmapping.interfaces.dao.ILispDAO;
import org.opendaylight.yang.gen.v1.lispflowmapping.rev131031.SendMapNotifyInputBuilder;
import org.opendaylight.yang.gen.v1.lispflowmapping.rev131031.SendMapReplyInputBuilder;
import org.opendaylight.yang.gen.v1.lispflowmapping.rev131031.SendMapRequestInputBuilder;
-import org.opendaylight.yang.gen.v1.lispflowmapping.rev131031.SetXtrPortInputBuilder;
-import org.opendaylight.yang.gen.v1.lispflowmapping.rev131031.ShouldListenOnXtrPortInputBuilder;
import org.opendaylight.yang.gen.v1.lispflowmapping.rev131031.lispaddress.LispAddressContainer;
import org.opendaylight.yang.gen.v1.lispflowmapping.rev131031.lispaddress.LispAddressContainerBuilder;
import org.opendaylight.yang.gen.v1.lispflowmapping.rev131031.lispaddress.lispaddresscontainer.Address;
import org.opendaylight.yang.gen.v1.lispflowmapping.rev131031.mapreplymessage.MapReplyBuilder;
import org.opendaylight.yang.gen.v1.lispflowmapping.rev131031.maprequestmessage.MapRequestBuilder;
import org.opendaylight.yang.gen.v1.lispflowmapping.rev131031.transportaddress.TransportAddress;
+import org.opendaylight.yang.gen.v1.lispflowmapping.rev131031.transportaddress.TransportAddressBuilder;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv6Address;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.PortNumber;
public class LispMappingService implements CommandProvider, IFlowMapping, BindingAwareConsumer, //
IMapRequestResultHandler, IMapNotifyHandler {
- protected static final Logger logger = LoggerFactory.getLogger(LispMappingService.class);
+ protected static final Logger LOG = LoggerFactory.getLogger(LispMappingService.class);
+ private static final ConfigIni configIni = new ConfigIni();
private ILispDAO lispDao = null;
private IMapResolverAsync mapResolver;
private IMapServerAsync mapServer;
private volatile boolean shouldIterateMask;
private volatile boolean shouldAuthenticate;
- private volatile boolean smr;
+ private volatile boolean smr = configIni.smrIsSet();
private ThreadLocal<MapReply> tlsMapReply = new ThreadLocal<MapReply>();
private ThreadLocal<MapNotify> tlsMapNotify = new ThreadLocal<MapNotify>();
private ThreadLocal<Pair<MapRequest, TransportAddress>> tlsMapRequest = new ThreadLocal<Pair<MapRequest, TransportAddress>>();
}
void setBindingAwareBroker(BindingAwareBroker bindingAwareBroker) {
- logger.trace("BindingAwareBroker set!");
+ LOG.trace("BindingAwareBroker set!");
BundleContext bundleContext = FrameworkUtil.getBundle(this.getClass()).getBundleContext();
bindingAwareBroker.registerConsumer(this, bundleContext);
}
void unsetBindingAwareBroker(BindingAwareBroker bindingAwareBroker) {
- logger.debug("BindingAwareBroker was unset in LispMappingService");
+ LOG.debug("BindingAwareBroker was unset in LispMappingService");
}
public void basicInit(ILispDAO dao) {
}
void setLispDao(ILispDAO dao) {
- logger.trace("LispDAO set in LispMappingService");
+ LOG.trace("LispDAO set in LispMappingService");
basicInit(dao);
}
void unsetLispDao(ILispDAO dao) {
- logger.trace("LispDAO was unset in LispMappingService");
+ LOG.trace("LispDAO was unset in LispMappingService");
mapServer = null;
mapResolver = null;
lispDao = null;
public void init() {
try {
registerWithOSGIConsole();
- logger.info("LISP (RFC6830) Mapping Service init finished");
- } catch (Throwable t) {
- logger.error(t.getStackTrace().toString());
+ LOG.info("LISP (RFC6830) Mapping Service init finished");
+ } catch (Exception e) {
+ LOG.error(e.getStackTrace().toString());
}
}
}
public void destroy() {
- logger.info("LISP (RFC6830) Mapping Service is destroyed!");
+ LOG.info("LISP (RFC6830) Mapping Service is destroyed!");
mapResolver = null;
mapServer = null;
}
public void _removeEid(final CommandInterpreter ci) {
- lispDao.remove(LispAFIConvertor.asIPAfiAddress(ci.nextArgument()));
+ LispAddressContainer eid = LispAFIConvertor.getIPContainer(ci.nextArgument());
+ lispDao.remove(MappingServiceKeyUtil.generateMappingServiceKey(eid));
}
public void _dumpAll(final CommandInterpreter ci) {
public String getHelp() {
StringBuffer help = new StringBuffer();
help.append("---LISP Mapping Service---\n");
- help.append("\t dumpAll - Dump all current EID -> RLOC mapping\n");
- help.append("\t removeEid - Remove a single LispIPv4Address Eid\n");
- help.append("\t setShouldOverwritingRloc(true/false) - set the map server's behaivior regarding existing RLOCs\n");
+ help.append("\t dumpAll - Dump all current EID -> RLOC mappings\n");
+ help.append("\t removeEid <EID> - Remove a single EID (/32 or /128)\n");
+ help.append("\t setShouldOverwriteRlocs <true|false> - Set the map server's behavior regarding existing RLOCs\n");
+ help.append("\t addDefaultPassword - Add \"password\" as default password for IPv4 EIDs");
return help.toString();
}
}
public void onSessionInitialized(ConsumerContext session) {
- logger.info("Lisp Consumer session initialized!");
+ LOG.info("Lisp Consumer session initialized!");
notificationService = session.getSALService(NotificationService.class);
registerNotificationListener(AddMapping.class, new MapRegisterNotificationHandler());
registerNotificationListener(RequestMapping.class, new MapRequestNotificationHandler());
public void onNotification(AddMapping mapRegisterNotification) {
MapNotify mapNotify = handleMapRegister(mapRegisterNotification.getMapRegister(), smr);
if (mapNotify != null) {
+ TransportAddressBuilder tab = new TransportAddressBuilder();
+ tab.setIpAddress(mapRegisterNotification.getTransportAddress().getIpAddress());
+ tab.setPort(new PortNumber(LispMessage.PORT_NUM));
SendMapNotifyInputBuilder smnib = new SendMapNotifyInputBuilder();
smnib.setMapNotify(new MapNotifyBuilder(mapNotify).build());
- smnib.setTransportAddress(mapRegisterNotification.getTransportAddress());
+ smnib.setTransportAddress(tab.build());
getLispSB().sendMapNotify(smnib.build());
} else {
- logger.warn("got null map notify");
+ LOG.warn("got null map notify");
}
}
smrib.setTransportAddress(mapRequestNotification.getTransportAddress());
getLispSB().sendMapReply(smrib.build());
} else {
- logger.warn("got null map reply");
+ LOG.warn("got null map reply");
}
}
}
}
public void handleSMR(MapRequest smr, LispAddressContainer subscriber) {
- logger.debug("Sending SMR to " + subscriber.toString());
+ LOG.debug("Sending SMR to " + subscriber.toString());
SendMapRequestInputBuilder smrib = new SendMapRequestInputBuilder();
smrib.setMapRequest(new MapRequestBuilder(smr).build());
smrib.setTransportAddress(LispNotificationHelper.getTransportAddressFromContainer(subscriber));
mapServer.setOverwrite(overwrite);
}
- @Override
- public void shouldListenOnXtrPort(boolean listenOnXtrPort) {
- getLispSB().shouldListenOnXtrPort(new ShouldListenOnXtrPortInputBuilder().setShouldListenOnXtrPort(listenOnXtrPort).build());
- }
-
- @Override
- public void setXtrPort(int port) {
- getLispSB().setXtrPort(new SetXtrPortInputBuilder().setXtrPort(new PortNumber(port)).build());
- }
-
}