VOL-1598 Add new group API in OpenOLT Driver

A new API method called PerformGroupOperation is added. This method
performs the corresponding group operation according to the command
field of the Group message. The method currently assumes fixed queue
QoS model. FlowAdd_ and FlowRemove_ are also updated accordingly.

Change-Id: I355f20c3b5b5df484e90082936b10386b5fdf67f
diff --git a/agent/common/core.h b/agent/common/core.h
index 4e79d2c..1b2b3dd 100644
--- a/agent/common/core.h
+++ b/agent/common/core.h
@@ -71,7 +71,8 @@
     ACTION_O_PBITS = 23,
     ACTION_I_VID = 24,
     ACTION_I_PBITS = 25,
-    STATE = 26
+    STATE = 26,
+    GROUP_ID = 27
 };
 
 enum AllocCfgAction {
@@ -122,7 +123,8 @@
                 uint32_t flow_id, const std::string flow_type,
                 int32_t alloc_id, int32_t network_intf_id,
                 int32_t gemport_id, const ::openolt::Classifier& classifier,
-                const ::openolt::Action& action, int32_t priority_value, uint64_t cookie);
+                const ::openolt::Action& action, int32_t priority_value,
+                uint64_t cookie, int32_t group_id);
 Status FlowRemove_(uint32_t flow_id, const std::string flow_type);
 Status Disable_();
 Status Reenable_();
@@ -131,6 +133,7 @@
 Status RemoveTrafficSchedulers_(const tech_profile::TrafficSchedulers *traffic_scheds);
 Status CreateTrafficQueues_(const tech_profile::TrafficQueues *traffic_queues);
 Status RemoveTrafficQueues_(const tech_profile::TrafficQueues *traffic_queues);
+Status PerformGroupOperation_(const openolt::Group *group_cfg);
 uint32_t GetPortNum_(uint32_t flow_id);
 int get_status_bcm_cli_quit(void);
 uint16_t get_dev_id(void);