- MapReplyBuilder builder = new MapReplyBuilder();
- builder.setEchoNonceEnabled(false);
- builder.setProbe(false);
- builder.setSecurityEnabled(false);
- builder.setNonce(request.getNonce());
- builder.setEidToLocatorRecord(new ArrayList<EidToLocatorRecord>());
- for (EidRecord eid : request.getEidRecord()) {
- EidToLocatorRecordBuilder recordBuilder = new EidToLocatorRecordBuilder();
- Entry<IMappingServiceKey, List<MappingServiceRLOCGroup>> mapping = DAOMappingUtil.getMapping(srcEid, eid, dao);
- recordBuilder.setRecordTtl(0);
- recordBuilder.setAction(Action.NoAction);
- recordBuilder.setAuthoritative(false);
- recordBuilder.setMapVersion((short) 0);
- recordBuilder.setMaskLength((short) mapping.getKey().getMask());
- recordBuilder.setLispAddressContainer(mapping.getKey().getEID());
- recordBuilder.setLocatorRecord(new ArrayList<LocatorRecord>());
- List<MappingServiceRLOCGroup> locators = mapping.getValue();
- if (locators != null && locators.size() > 0) {
- List<ItrRloc> itrRlocs = request.getItrRloc();
- addLocatorGroups(recordBuilder, locators, itrRlocs);
- if (itrRlocs != null && itrRlocs.size() > 0) {
- LispAddressContainer itrRloc = itrRlocs.get(0).getLispAddressContainer();
- MappingServiceSubscriberRLOC subscriberRloc = new MappingServiceSubscriberRLOC(itrRloc);
- HashSet<MappingServiceSubscriberRLOC> subscribers = getSubscribers(mapping.getKey().getEID(), mapping.getKey().getMask());
- if (subscribers == null) {
- subscribers = new HashSet<MappingServiceSubscriberRLOC>();
- } else if (subscribers.contains(subscriberRloc)) {
- /*
- * If there is an entry already for this
- * subscriberRloc, remove it, so that it gets the
- * new timestamp
- */
- subscribers.remove(subscriberRloc);
- }
- if (smr) {
- IMappingServiceKey key = MappingServiceKeyUtil.generateMappingServiceKey(mapping.getKey().getEID(),
- mapping.getKey().getMask());
- LOG.trace("Adding new subscriber: " + subscriberRloc.toString());
- subscribers.add(subscriberRloc);
- dao.put(key, new MappingEntry<HashSet<MappingServiceSubscriberRLOC>>(SUBSCRIBERS_SUBKEY, subscribers));
- }
- }
- } else {
- recordBuilder.setAction(Action.NativelyForward);
- if (shouldAuthenticate() && getPassword(eid.getLispAddressContainer(), eid.getMask()) != null) {
- recordBuilder.setRecordTtl(TTL_RLOC_TIMED_OUT);
- } else {
- recordBuilder.setRecordTtl(TTL_NO_RLOC_KNOWN);