Action redesign: use the new ActionInfo Genius classes
[netvirt.git] / vpnservice / ipv6service / impl / src / main / java / org / opendaylight / netvirt / ipv6service / VirtualPort.java
index 03a0bf3f5408f10912c29285f944b5766fb62470..39ae9f2d06580fa68745dc48cdca9cd69a67fef9 100644 (file)
@@ -8,10 +8,12 @@
 
 package org.opendaylight.netvirt.ipv6service;
 
+import io.netty.util.Timeout;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import org.opendaylight.netvirt.ipv6service.utils.Ipv6Constants;
+import org.opendaylight.netvirt.ipv6service.utils.Ipv6PeriodicTimer;
 import org.opendaylight.netvirt.ipv6service.utils.Ipv6ServiceUtils;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Address;
@@ -29,7 +31,10 @@ public class VirtualPort  {
     private String    dpId;
     private String    deviceOwner;
     private Long      ofPort;
+    private Boolean   serviceBindingStatus;
     private HashMap<Uuid, SubnetInfo> snetInfo;
+    private Ipv6PeriodicTimer periodicTimer;
+    private Timeout periodicTimeout;
 
     // associated router if any
     private VirtualRouter router = null;
@@ -39,10 +44,11 @@ public class VirtualPort  {
     /**
      * Logger instance.
      */
-    static final Logger logger = LoggerFactory.getLogger(VirtualPort.class);
+    static final Logger LOG = LoggerFactory.getLogger(VirtualPort.class);
 
     public VirtualPort() {
         snetInfo = new HashMap<Uuid, SubnetInfo>();
+        serviceBindingStatus = Boolean.FALSE;
     }
 
     public Uuid getIntfUUID() {
@@ -85,7 +91,7 @@ public class VirtualPort  {
     public void setSubnet(Uuid snetID, VirtualSubnet subnet) {
         SubnetInfo subnetInfo = snetInfo.get(snetID);
         if (subnetInfo == null) {
-            logger.info("Subnet {} not associated with the virtual port {}",
+            LOG.info("Subnet {} not associated with the virtual port {}",
                 snetID, intfUUID);
             return;
         }
@@ -125,6 +131,16 @@ public class VirtualPort  {
         return ipv6AddrList;
     }
 
+    public List<Ipv6Address> getIpv6AddressesWithoutLLA() {
+        List<Ipv6Address> ipv6AddrList = new ArrayList<>();
+        for (SubnetInfo subnetInfo : snetInfo.values()) {
+            if (subnetInfo.getIpAddr().getIpv6Address() instanceof Ipv6Address) {
+                ipv6AddrList.add(subnetInfo.getIpAddr().getIpv6Address());
+            }
+        }
+        return ipv6AddrList;
+    }
+
     public String getMacAddress() {
         return macAddress;
     }
@@ -177,6 +193,14 @@ public class VirtualPort  {
         return ofPort;
     }
 
+    public void setServiceBindingStatus(Boolean status) {
+        this.serviceBindingStatus = status;
+    }
+
+    public Boolean getServiceBindingStatus() {
+        return serviceBindingStatus;
+    }
+
     public void removeSelf() {
         if (routerIntfFlag == true) {
             if (router != null) {
@@ -198,6 +222,26 @@ public class VirtualPort  {
                 + ofPort + " routerFlag=" + routerIntfFlag + " dpId=" + dpId + "]";
     }
 
+    public void setPeriodicTimer() {
+        periodicTimer = new Ipv6PeriodicTimer(intfUUID);
+    }
+
+    public Ipv6PeriodicTimer getPeriodicTimer() {
+        return periodicTimer;
+    }
+
+    public void setPeriodicTimeout(Timeout timeout) {
+        periodicTimeout = timeout;
+    }
+
+    public void resetPeriodicTimeout() {
+        periodicTimeout = null;
+    }
+
+    public Timeout getPeriodicTimeout() {
+        return periodicTimeout;
+    }
+
     private class SubnetInfo {
         private Uuid      subnetID;
         private IpAddress ipAddr;