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 a3b02a8..5273b87 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
@@ -104,6 +104,15 @@
     Optional<Boolean> disableInBand();
 
     /**
+     * Returns multicast snooping is enabled or not. If set to true, enable multicast
+     * snooping on the bridge.
+     * If it is not set, the multicast snooping is disabled.
+     *
+     * @return true if the multicast snooping is enabled, false otherwise
+     */
+    Optional<Boolean> mcastSnoopingEnable();
+
+    /**
      * Returns list of Control Protocol Versions supported on device.
      * @return List of Control Protocol Versions enabled on bridge
      */
@@ -178,6 +187,13 @@
         Builder disableInBand();
 
         /**
+         * Returns bridge description builder with mcast snooping enabled.
+         *
+         * @return bridge description builder
+         */
+        Builder mcastSnoopingEnable();
+
+        /**
          * Builds an immutable bridge description.
          *
          * @return bridge description
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 cc0b837..609c71b 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
@@ -41,6 +41,7 @@
     private final Optional<String> datapathType;
     private final Optional<List<ControlProtocolVersion>> controlProtocols;
     private final Optional<Boolean> disableInBand;
+    private final Optional<Boolean> mcastSnoopingEnable;
 
     /* Adds more configurations */
 
@@ -51,6 +52,7 @@
                                      Optional<String> datapathId,
                                      Optional<String> datapathType,
                                      Optional<Boolean> disableInBand,
+                                     Optional<Boolean> mcastSnoopingEnable,
                                      Optional<List<ControlProtocolVersion>> controlProtocols) {
         this.name = checkNotNull(name);
         this.controllers = controllers;
@@ -59,6 +61,7 @@
         this.datapathId = datapathId;
         this.datapathType = datapathType;
         this.disableInBand = disableInBand;
+        this.mcastSnoopingEnable = mcastSnoopingEnable;
         this.controlProtocols = controlProtocols;
     }
 
@@ -116,6 +119,11 @@
         return disableInBand;
     }
 
+    @Override
+    public Optional<Boolean> mcastSnoopingEnable() {
+        return mcastSnoopingEnable;
+    }
+
     /**
      * Creates and returns a new builder instance.
      *
@@ -135,6 +143,7 @@
         private Optional<String> datapathType = Optional.empty();
         private Optional<List<ControlProtocolVersion>> controlProtocols = Optional.empty();
         private Optional<Boolean> disableInBand = Optional.empty();
+        private Optional<Boolean> mcastSnoopingEnable = Optional.empty();
 
         private Builder() {
         }
@@ -147,6 +156,7 @@
                                                 datapathId,
                                                 datapathType,
                                                 disableInBand,
+                                                mcastSnoopingEnable,
                                                 controlProtocols);
         }
 
@@ -200,5 +210,11 @@
             this.disableInBand = Optional.of(Boolean.TRUE);
             return this;
         }
+
+        @Override
+        public BridgeDescription.Builder mcastSnoopingEnable() {
+            this.mcastSnoopingEnable = Optional.of(Boolean.TRUE);
+            return this;
+        }
     }
 }
