Initial sketch of the virtual network constructs.

Change-Id: Ibcdafb9e56edb29fb37b80d7b0da321ad989c564
diff --git a/core/api/src/main/java/org/onosproject/net/Device.java b/core/api/src/main/java/org/onosproject/net/Device.java
index e36d762..8066a7a 100644
--- a/core/api/src/main/java/org/onosproject/net/Device.java
+++ b/core/api/src/main/java/org/onosproject/net/Device.java
@@ -26,7 +26,7 @@
      * Coarse classification of the type of the infrastructure device.
      */
     public enum Type {
-        SWITCH, ROUTER, ROADM, OTN, ROADM_OTN, FIREWALL, BALANCER, IPS, IDS, CONTROLLER, OTHER
+        SWITCH, ROUTER, ROADM, OTN, ROADM_OTN, FIREWALL, BALANCER, IPS, IDS, CONTROLLER, VIRTUAL, OTHER
     }
 
     /**
@@ -79,10 +79,4 @@
      */
     ChassisId chassisId();
 
-    // Device realizedBy(); ?
-
-    // ports are not provided directly, but rather via DeviceService.getPorts(Device device);
-
-    // Set<Behavior> behaviours(); // set of supported behaviours
-
 }
diff --git a/core/api/src/main/java/org/onosproject/net/Link.java b/core/api/src/main/java/org/onosproject/net/Link.java
index 2dc8eec..7541f75 100644
--- a/core/api/src/main/java/org/onosproject/net/Link.java
+++ b/core/api/src/main/java/org/onosproject/net/Link.java
@@ -51,7 +51,12 @@
         /**
          * Signifies that this link is realized by fiber (either single channel or WDM).
          */
-        OPTICAL
+        OPTICAL,
+
+        /**
+         * Signifies that this link is a virtual link or a pseudo-wire.
+         */
+        VIRTUAL
     }
 
     /**
diff --git a/core/api/src/main/java/org/onosproject/net/Port.java b/core/api/src/main/java/org/onosproject/net/Port.java
index 87d7535..d70b1e1 100644
--- a/core/api/src/main/java/org/onosproject/net/Port.java
+++ b/core/api/src/main/java/org/onosproject/net/Port.java
@@ -53,7 +53,12 @@
          * Signifies optical fiber-based WDM port (called W-port).
          * Optical Multiplexing Section (See ITU G.709).
          */
-        OMS
+        OMS,
+
+        /**
+         * Signifies virtual port.
+         */
+        VIRTUAL
     }
 
     /**
diff --git a/core/api/src/main/java/org/onosproject/net/behaviour/PortConfig.java b/core/api/src/main/java/org/onosproject/net/behaviour/PortConfig.java
index 464698e..7de2861 100644
--- a/core/api/src/main/java/org/onosproject/net/behaviour/PortConfig.java
+++ b/core/api/src/main/java/org/onosproject/net/behaviour/PortConfig.java
@@ -17,11 +17,12 @@
 
 import com.google.common.primitives.UnsignedInteger;
 import org.onosproject.net.device.PortDescription;
+import org.onosproject.net.driver.HandlerBehaviour;
 
 /**
  * Means to configure a logical port at the device.
  */
-public interface PortConfig {
+public interface PortConfig extends HandlerBehaviour {
 
     /**
      * Apply QoS configuration on a device.