Bug 6402: Convert src eid from binary IP to prefix
[lispflowmapping.git] / mappingservice / mapcache / src / main / java / org / opendaylight / lispflowmapping / mapcache / MultiTableMapCache.java
index 281f1a775ce994bfef32a7f6b1900bb1e19af3a7..f94a9f4776cbcccdfb22403da0b18c0c6d01e03e 100644 (file)
@@ -14,6 +14,7 @@ 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.lispflowmapping.lisp.util.LispAddressUtil;
 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;
@@ -98,8 +99,9 @@ public class MultiTableMapCache implements IMapCache {
         if (daoEntry != null) {
             // try SrcDst eid lookup
             ILispDAO srcDstDao = (ILispDAO) daoEntry.get(SubKeys.LCAF_SRCDST);
-            if (srcDstDao != null) {
-                Object mapping = getMappingLpmEid(srcEid, srcDstDao);
+            if (srcEid != null && srcDstDao != null) {
+                // make sure that srcEid is a prefix, not an IP and binary
+                Object mapping = getMappingLpmEid(LispAddressUtil.asIpPrefixBinaryEid(srcEid), srcDstDao);
                 if (mapping !=  null) {
                     return mapping;
                 }