diff --git a/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/Constants.java b/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/Constants.java
index 0ff5fec..c0afe45 100644
--- a/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/Constants.java
+++ b/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/Constants.java
@@ -53,6 +53,7 @@
 
     // flow rule priority
     public static final int PRIORITY_SWITCHING_RULE = 30000;
+    public static final int PRIORITY_DHCP_RULE = 42000;
 
     // CLI item length
     public static final int CLI_ID_LENGTH = 30;
diff --git a/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/DefaultKubevirtPort.java b/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/DefaultKubevirtPort.java
index 4fe0125..992eb90 100644
--- a/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/DefaultKubevirtPort.java
+++ b/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/DefaultKubevirtPort.java
@@ -82,23 +82,34 @@
     }
 
     @Override
-    public KubevirtPort updatePortNumber(PortNumber portNumber) {
+    public KubevirtPort updateIpAddress(IpAddress updateIpAddress) {
         return new Builder()
                 .networkId(networkId)
                 .macAddress(macAddress)
-                .ipAddress(ipAddress)
+                .ipAddress(updateIpAddress)
                 .deviceId(deviceId)
                 .portNumber(portNumber)
                 .build();
     }
 
     @Override
-    public KubevirtPort updateDeviceId(DeviceId deviceId) {
+    public KubevirtPort updatePortNumber(PortNumber updatedPortNumber) {
         return new Builder()
                 .networkId(networkId)
                 .macAddress(macAddress)
                 .ipAddress(ipAddress)
                 .deviceId(deviceId)
+                .portNumber(updatedPortNumber)
+                .build();
+    }
+
+    @Override
+    public KubevirtPort updateDeviceId(DeviceId updatedDeviceId) {
+        return new Builder()
+                .networkId(networkId)
+                .macAddress(macAddress)
+                .ipAddress(ipAddress)
+                .deviceId(updatedDeviceId)
                 .portNumber(portNumber)
                 .build();
     }
@@ -161,7 +172,6 @@
         public KubevirtPort build() {
             checkArgument(networkId != null, NOT_NULL_MSG, "networkId");
             checkArgument(macAddress != null, NOT_NULL_MSG, "macAddress");
-            checkArgument(ipAddress != null, NOT_NULL_MSG, "ipAddress");
 
             return new DefaultKubevirtPort(networkId, macAddress, ipAddress,
                     deviceId, portNumber);
diff --git a/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/KubevirtNetworkAdminService.java b/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/KubevirtNetworkAdminService.java
index f0fa716..aeabd84 100644
--- a/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/KubevirtNetworkAdminService.java
+++ b/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/KubevirtNetworkAdminService.java
@@ -15,6 +15,8 @@
  */
 package org.onosproject.kubevirtnetworking.api;
 
+import org.onlab.packet.IpAddress;
+
 public interface KubevirtNetworkAdminService extends KubevirtNetworkService {
 
     /**
@@ -38,5 +40,21 @@
      */
     void removeNetwork(String networkId);
 
+    /**
+     * Allocate an IP address.
+     *
+     * @param networkId network identifier
+     * @return IP address
+     */
+    IpAddress allocateIp(String networkId);
+
+    /**
+     * Release the existing IP address.
+     *
+     * @param networkId network identifier
+     * @param ip IP address to be released
+     */
+    void releaseIp(String networkId, IpAddress ip);
+
     void clear();
 }
diff --git a/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/KubevirtPort.java b/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/KubevirtPort.java
index a7ae75e..850ac6f 100644
--- a/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/KubevirtPort.java
+++ b/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/KubevirtPort.java
@@ -61,20 +61,28 @@
     PortNumber portNumber();
 
     /**
-     * Returns new port instance with the given port number.
+     * Returns new port instance with the given IP address.
      *
-     * @param portNumber updated port number
+     * @param updatedIpAddress updated ip address
      * @return updated port
      */
-    KubevirtPort updatePortNumber(PortNumber portNumber);
+    KubevirtPort updateIpAddress(IpAddress updatedIpAddress);
+
+    /**
+     * Returns new port instance with the given port number.
+     *
+     * @param updatedPortNumber updated port number
+     * @return updated port
+     */
+    KubevirtPort updatePortNumber(PortNumber updatedPortNumber);
 
     /**
      * Returns new port instance with the given device ID.
      *
-     * @param deviceId device identifier
+     * @param updatedDeviceId device identifier
      * @return updated port
      */
-    KubevirtPort updateDeviceId(DeviceId deviceId);
+    KubevirtPort updateDeviceId(DeviceId updatedDeviceId);
 
     /**
      * Builder of new port.
