VOL-1281 - Update OpenOLT protobufs to support per-interface device information

Updated DeviceInfo to provide a variable list of pools by interface and by type.

Change-Id: Idfcaa1736edb3f487f9e072b5be2ecccf91f019b
diff --git a/protos/openolt.proto b/protos/openolt.proto
index d357334..f6dd8cf 100644
--- a/protos/openolt.proto
+++ b/protos/openolt.proto
@@ -244,6 +244,11 @@
     string model = 2;
     string hardware_version = 3;
     string firmware_version = 4;
+
+    // Total number of pon intf ports on the device
+    fixed32 pon_ports = 12;
+
+    // If using global per-device technology profile. To be deprecated
     string technology = 5;
     fixed32 onu_id_start = 6;
     fixed32 onu_id_end = 7;
@@ -251,7 +256,39 @@
     fixed32 alloc_id_end = 9;
     fixed32 gemport_id_start = 10;
     fixed32 gemport_id_end = 11;
-    fixed32 pon_ports = 12;
+    fixed32 flow_id_start = 13;
+    fixed32 flow_id_end = 14;
+
+    message DeviceResourceRanges {
+
+        // List of 0 or more intf_ids that use the same technology and pools.
+        // If 0 intf_ids supplied, it implies ALL interfaces
+        repeated fixed32 intf_ids = 1;
+
+        // Technology profile for this pool
+        string technology = 2;
+
+        message Pool {
+            enum PoolType {
+                ONU_ID = 0;
+                ALLOC_ID = 1;
+                GEMPORT_ID = 2;
+                FLOW_ID = 3;
+            }
+
+            enum SharingType {
+                DEDICATED_PER_INTF = 0;
+                SHARED_BY_ALL_INTF = 1;
+            }
+
+            PoolType type = 1;
+	    SharingType sharing = 2;
+	    fixed32 start = 3; // lower bound on IDs allocated from this pool
+	    fixed32 end = 4; // upper bound on IDs allocated from this pool
+	}
+        repeated Pool ranges = 3;
+    }
+    repeated DeviceResourceRanges ranges = 15;
 }
 
 message Classifier {