Allow to query mapping value when receives MapRequest
Change-Id: Ic7893a397c2c16e219135a31516565d2f1323f50
diff --git a/providers/lisp/mapping/src/main/java/org/onosproject/provider/lisp/mapping/impl/LispMappingProvider.java b/providers/lisp/mapping/src/main/java/org/onosproject/provider/lisp/mapping/impl/LispMappingProvider.java
index b4fd841..a7ba95f 100644
--- a/providers/lisp/mapping/src/main/java/org/onosproject/provider/lisp/mapping/impl/LispMappingProvider.java
+++ b/providers/lisp/mapping/src/main/java/org/onosproject/provider/lisp/mapping/impl/LispMappingProvider.java
@@ -15,6 +15,7 @@
*/
package org.onosproject.provider.lisp.mapping.impl;
+import com.google.common.collect.Lists;
import org.apache.felix.scr.annotations.Activate;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Deactivate;
@@ -24,12 +25,14 @@
import org.onosproject.lisp.ctl.LispMessageListener;
import org.onosproject.lisp.ctl.LispRouterId;
import org.onosproject.lisp.ctl.LispRouterListener;
-import org.onosproject.lisp.msg.protocols.LispMapNotify;
+import org.onosproject.lisp.msg.protocols.LispEidRecord;
import org.onosproject.lisp.msg.protocols.LispMapRecord;
import org.onosproject.lisp.msg.protocols.LispMapRegister;
import org.onosproject.lisp.msg.protocols.LispMapReply;
+import org.onosproject.lisp.msg.protocols.LispMapRequest;
import org.onosproject.lisp.msg.protocols.LispMessage;
import org.onosproject.mapping.MappingEntry;
+import org.onosproject.mapping.MappingKey;
import org.onosproject.mapping.MappingProvider;
import org.onosproject.mapping.MappingProviderRegistry;
import org.onosproject.mapping.MappingProviderService;
@@ -39,6 +42,7 @@
import org.onosproject.net.provider.AbstractProvider;
import org.onosproject.net.provider.ProviderId;
import org.onosproject.provider.lisp.mapping.util.MappingEntryBuilder;
+import org.onosproject.provider.lisp.mapping.util.MappingKeyBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -143,8 +147,12 @@
switch (msg.getType()) {
case LISP_MAP_REQUEST:
- log.warn("LISP mapping query feature will be added when " +
- "provider service supports it.");
+ LispMapRequest request = (LispMapRequest) msg;
+ List<LispEidRecord> records = request.getEids();
+ List<MappingKey> keys = Lists.newArrayList();
+ records.forEach(r -> keys.add(new MappingKeyBuilder(deviceService,
+ deviceId, r.getPrefix()).build()));
+ keys.forEach(key -> providerService.mappingQueried(key));
break;
case LISP_MAP_REGISTER:
@@ -173,8 +181,8 @@
break;
case LISP_MAP_NOTIFY:
- LispMapNotify notify = (LispMapNotify) msg;
- processMappings(deviceId, notify.getMapRecords(), MAP_DATABASE);
+ // not take any action for map notify, and we've already
+ // store the mapping when receives map register message
break;
default: