Add IT for mapping change events
[lispflowmapping.git] / mappingservice / lisp-proto / src / main / java / org / opendaylight / lispflowmapping / lisp / util / MapRequestUtil.java
index 065915d4f45718c2a7e720a46155f9ce8beb3545..304de4bed995d49dd0ac0929ee970c6784e072a9 100644 (file)
@@ -7,48 +7,71 @@
  */
 package org.opendaylight.lispflowmapping.lisp.util;
 
+import com.google.common.net.InetAddresses;
+
 import java.net.InetAddress;
 import java.net.UnknownHostException;
 import java.util.ArrayList;
 import java.util.Random;
 
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.Address;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.Ipv4;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.Ipv6;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.binary.address.types.rev160504.augmented.lisp.address.address.Ipv4Binary;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.binary.address.types.rev160504.augmented.lisp.address.address.Ipv6Binary;
 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.lispaddress.LispAddressContainer;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.lispaddress.lispaddresscontainer.Address;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.lispaddress.lispaddresscontainer.address.Ipv4;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.lispaddress.lispaddresscontainer.address.Ipv6;
+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.maprequest.ItrRloc;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.maprequest.ItrRlocBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.maprequest.SourceEidBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.maprequestnotification.MapRequestBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.rloc.container.Rloc;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public final class MapRequestUtil {
+    protected static final Logger LOG = LoggerFactory.getLogger(MapRequestUtil.class);
+
+    // Utility class, should not be instantiated
+    private MapRequestUtil() {
+    }
 
-public class MapRequestUtil {
     public static InetAddress selectItrRloc(MapRequest request) {
         if (request.getItrRloc() == null) {
             return null;
         }
         InetAddress selectedItrRloc = null;
         for (ItrRloc itr : request.getItrRloc()) {
-            Address addr = itr.getLispAddressContainer().getAddress();
-            if (addr instanceof Ipv4) {
+            Address addr = itr.getRloc().getAddress();
+            if (addr instanceof Ipv4Binary) {
                 try {
-                    selectedItrRloc = InetAddress.getByName(((Ipv4) addr).getIpv4Address().getIpv4Address().getValue());
+                    selectedItrRloc = InetAddress.getByAddress(((Ipv4Binary) addr).getIpv4Binary().getValue());
                 } catch (UnknownHostException e) {
+                    LOG.debug("Cannot convert Ipv6Binary to InetAddress", e);
                 }
                 break;
             }
-            if (addr instanceof Ipv6) {
+            if (addr instanceof Ipv6Binary) {
                 try {
-                    selectedItrRloc = InetAddress.getByName((((Ipv6) addr).getIpv6Address().getIpv6Address().getValue()));
+                    selectedItrRloc = InetAddress.getByAddress(((Ipv6Binary) addr).getIpv6Binary().getValue());
                 } catch (UnknownHostException e) {
+                    LOG.debug("Cannot convert Ipv6Binary to InetAddress", e);
                 }
                 break;
             }
+            if (addr instanceof Ipv4) {
+                selectedItrRloc = InetAddresses.forString(((Ipv4) addr).getIpv4().getValue());
+                break;
+            }
+            if (addr instanceof Ipv6) {
+                selectedItrRloc = InetAddresses.forString(((Ipv6) addr).getIpv6().getValue());
+                break;
+            }
         }
         return selectedItrRloc;
     }
 
-    public static MapRequestBuilder prepareSMR(LispAddressContainer srcEid, LispAddressContainer itrRloc) {
+    public static MapRequestBuilder prepareSMR(Eid srcEid, Rloc itrRloc) {
         MapRequestBuilder builder = new MapRequestBuilder();
         builder.setAuthoritative(false);
         builder.setMapDataPresent(false);
@@ -57,9 +80,9 @@ public class MapRequestUtil {
         builder.setSmr(true);
         builder.setSmrInvoked(false);
 
-        builder.setSourceEid(new SourceEidBuilder().setLispAddressContainer(srcEid).build());
+        builder.setSourceEid(new SourceEidBuilder().setEid(srcEid).build());
         builder.setItrRloc(new ArrayList<ItrRloc>());
-        builder.getItrRloc().add(new ItrRlocBuilder().setLispAddressContainer(itrRloc).build());
+        builder.getItrRloc().add(new ItrRlocBuilder().setRloc(itrRloc).build());
         builder.setMapReply(null);
         builder.setNonce(new Random().nextLong());