- if (oldMapping != null && MappingRecordUtil.isNegativeMapping(oldMapping)) {
- mapService.removeMapping(MappingOrigin.Southbound, oldMapping.getEid());
- oldMappingRemoved = true;
- }
-
- if (subscriptionService) {
- MappingRecord newMapping = merge
- ? getMappingRecord(mapService.getMapping(MappingOrigin.Southbound, eid)) : mapping;
-
- if (mappingChanged(oldMapping, newMapping)) {
- if (LOG.isDebugEnabled()) {
- LOG.debug("Mapping update occured for {} SMRs will be sent for its subscribers.",
- LispAddressStringifier.getString(mapping.getEid()));
- }
- subscribers = getSubscribers(eid);
- if (oldMapping != null && !oldMapping.getEid().equals(eid)) {
- subscribers = addParentSubscribers(eid, subscribers);
- }
- LoggingUtil.logSubscribers(LOG, eid, subscribers);
- handleSmr(eid, subscribers);
- if (oldMapping != null && oldMappingRemoved && !oldMapping.getEid().equals(eid)) {
- subscribers = getSubscribers(oldMapping.getEid());
- LoggingUtil.logSubscribers(LOG, oldMapping.getEid(), subscribers);
- handleSmr(oldMapping.getEid(), subscribers);
- }
+ if (merge) {
+ MappingRecord newMapping = getMappingRecord(mapService.getMapping(MappingOrigin.Southbound, eid));
+ if (MappingRecordUtil.mappingChanged(oldMapping, newMapping)) {
+ // If there is a SB mapping change with merge on, Map-Notify will be sent to ALL xTRs, not jus the
+ // one registering (merging is done in the MappingSystem code)