Adding openflow protocol set support in onos for device

Change-Id: Id796e54b536eda19d511a1978657abd6e149f117
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 1d5f550..cc0b837 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
@@ -39,6 +39,7 @@
     private final Optional<FailMode> failMode;
     private final Optional<String> datapathId;
     private final Optional<String> datapathType;
+    private final Optional<List<ControlProtocolVersion>> controlProtocols;
     private final Optional<Boolean> disableInBand;
 
     /* Adds more configurations */
@@ -49,7 +50,8 @@
                                      Optional<FailMode> failMode,
                                      Optional<String> datapathId,
                                      Optional<String> datapathType,
-                                     Optional<Boolean> disableInBand) {
+                                     Optional<Boolean> disableInBand,
+                                     Optional<List<ControlProtocolVersion>> controlProtocols) {
         this.name = checkNotNull(name);
         this.controllers = controllers;
         this.enableLocalController = enableLocalController;
@@ -57,6 +59,7 @@
         this.datapathId = datapathId;
         this.datapathType = datapathType;
         this.disableInBand = disableInBand;
+        this.controlProtocols = controlProtocols;
     }
 
     @Override
@@ -95,6 +98,11 @@
     }
 
     @Override
+    public Optional<List<ControlProtocolVersion>> controlProtocols() {
+        return controlProtocols;
+    }
+
+    @Override
     public Optional<DeviceId> deviceId() {
         if (datapathId.isPresent()) {
             return Optional.of(DeviceId.deviceId("of:" + datapathId.get()));
@@ -125,6 +133,7 @@
         private Optional<FailMode> failMode = Optional.empty();
         private Optional<String> datapathId = Optional.empty();
         private Optional<String> datapathType = Optional.empty();
+        private Optional<List<ControlProtocolVersion>> controlProtocols = Optional.empty();
         private Optional<Boolean> disableInBand = Optional.empty();
 
         private Builder() {
@@ -137,7 +146,8 @@
                                                 failMode,
                                                 datapathId,
                                                 datapathType,
-                                                disableInBand);
+                                                disableInBand,
+                                                controlProtocols);
         }
 
         @Override
@@ -180,6 +190,12 @@
         }
 
         @Override
+        public Builder controlProtocols(List<ControlProtocolVersion> controlProtocols) {
+            this.controlProtocols = Optional.ofNullable(controlProtocols);
+            return this;
+        }
+
+        @Override
         public Builder disableInBand() {
             this.disableInBand = Optional.of(Boolean.TRUE);
             return this;