diff --git a/core/api/src/main/java/org/onosproject/net/behaviour/BridgeDescription.java b/core/api/src/main/java/org/onosproject/net/behaviour/BridgeDescription.java
index a8c0832..5ab5c07 100644
--- a/core/api/src/main/java/org/onosproject/net/behaviour/BridgeDescription.java
+++ b/core/api/src/main/java/org/onosproject/net/behaviour/BridgeDescription.java
@@ -80,6 +80,13 @@
     Optional<String> datapathId();
 
     /**
+     * Returns OVSDB datapath Type of the bridge.
+     *
+     * @return datapath type
+     */
+    Optional<String> datapathType();
+
+    /**
      * Returns OpenFlow device ID. Valid only if OpenFlow controller is configured
      * for the bridge.
      *
@@ -141,6 +148,14 @@
         Builder datapathId(String datapathId);
 
         /**
+         * Returns bridge description builder with a given datapath type.
+         *
+         * @param datapathType datapath type
+         * @return bridge description builder
+         */
+        Builder datapathType(String datapathType);
+
+        /**
          * Returns bridge description builder with in-band control disabled.
          *
          * @return bridge description builder
diff --git a/core/api/src/main/java/org/onosproject/net/behaviour/DefaultBridgeDescription.java b/core/api/src/main/java/org/onosproject/net/behaviour/DefaultBridgeDescription.java
index f35b646..ef9c767 100644
--- a/core/api/src/main/java/org/onosproject/net/behaviour/DefaultBridgeDescription.java
+++ b/core/api/src/main/java/org/onosproject/net/behaviour/DefaultBridgeDescription.java
@@ -38,6 +38,7 @@
     private final boolean enableLocalController;
     private final Optional<FailMode> failMode;
     private final Optional<String> datapathId;
+    private final Optional<String> datapathType;
     private final Optional<Boolean> disableInBand;
 
     /* Adds more configurations */
@@ -47,12 +48,14 @@
                                      boolean enableLocalController,
                                      Optional<FailMode> failMode,
                                      Optional<String> datapathId,
+                                     Optional<String> datapathType,
                                      Optional<Boolean> disableInBand) {
         this.name = checkNotNull(name);
         this.controllers = controllers;
         this.enableLocalController = enableLocalController;
         this.failMode = failMode;
         this.datapathId = datapathId;
+        this.datapathType = datapathType;
         this.disableInBand = disableInBand;
     }
 
@@ -87,6 +90,11 @@
     }
 
     @Override
+    public Optional<String> datapathType() {
+        return datapathType;
+    }
+
+    @Override
     public Optional<DeviceId> deviceId() {
         if (datapathId.isPresent()) {
             return Optional.of(DeviceId.deviceId("of:" + datapathId.get()));
@@ -116,6 +124,7 @@
         private boolean enableLocalController = false;
         private Optional<FailMode> failMode = Optional.empty();
         private Optional<String> datapathId = Optional.empty();
+        private Optional<String> datapathType = Optional.empty();
         private Optional<Boolean> disableInBand = Optional.empty();
 
         private Builder() {
@@ -127,6 +136,7 @@
                                                 enableLocalController,
                                                 failMode,
                                                 datapathId,
+                                                datapathType,
                                                 disableInBand);
         }
 
@@ -164,6 +174,12 @@
         }
 
         @Override
+        public Builder datapathType(String datapathType) {
+            this.datapathType = Optional.ofNullable(datapathType);
+            return this;
+        }
+
+        @Override
         public Builder disableInBand() {
             this.disableInBand = Optional.of(Boolean.TRUE);
             return this;
