Bug 6309: Fix negative map-replies for non-IP EIDs 96/42796/1
authorFlorin Coras <fcoras@cisco.com>
Fri, 29 Jul 2016 16:38:53 +0000 (18:38 +0200)
committerFlorin Coras <fcoras@cisco.com>
Fri, 29 Jul 2016 16:38:53 +0000 (18:38 +0200)
Change-Id: I74cacf39ba0557a2793ac0b087b9e124d52d19eb
Signed-off-by: Florin Coras <fcoras@cisco.com>
mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/lisp/MapResolver.java

index b8e1872be8ee19a6a6f25d60b17282d5d4066daa..2162461331725fdb4556a5b8fb8d1ff5ac29d030 100644 (file)
@@ -27,6 +27,8 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.addres
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.ExplicitLocatorPath;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.SourceDestKey;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.explicit.locator.path.explicit.locator.path.Hop;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.binary.address.types.rev160504.Ipv4BinaryAfi;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.binary.address.types.rev160504.Ipv6BinaryAfi;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.MapRequest;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.Eid;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.list.EidItem;
@@ -112,7 +114,11 @@ public class MapResolver implements IMapResolverAsync {
         MappingRecordBuilder recordBuilder = new MappingRecordBuilder();
         recordBuilder.setAuthoritative(false);
         recordBuilder.setMapVersion((short) 0);
-        recordBuilder.setEid(mapService.getWidestNegativePrefix(eid));
+        if (eid.getAddressType().equals(Ipv4BinaryAfi.class) || eid.getAddressType().equals(Ipv6BinaryAfi.class)) {
+            recordBuilder.setEid(mapService.getWidestNegativePrefix(eid));
+        } else {
+            recordBuilder.setEid(eid);
+        }
         recordBuilder.setAction(Action.NativelyForward);
         if (authenticate && mapService.getAuthenticationKey(eid) != null) {
             recordBuilder.setRecordTtl(TTL_RLOC_TIMED_OUT);