[VOL-1639][BAL3.0 Brigade] trap flows and packet-in
[VOL-1640][BAL3.0 Brigade] packet-out

Change-Id: Id797226d4da0e34adfb6f1dbedcd3e662aabc3a5
diff --git a/agent/src/core.cc b/agent/src/core.cc
index 999601e..f6f9ab8 100644
--- a/agent/src/core.cc
+++ b/agent/src/core.cc
@@ -695,6 +695,56 @@
     return err;
 }
 
+uint64_t get_flow_status(uint16_t flow_id, uint16_t data_id) {
+    bcmos_errno err;
+    bcmolt_flow_key flow_key;
+    bcmolt_flow_cfg flow_cfg;
+
+    flow_key.flow_id = flow_id;
+
+    BCMOLT_CFG_INIT(&flow_cfg, flow, flow_key);
+
+    switch (data_id) {
+        case INTF_TYPE: //intf_type
+            BCMOLT_FIELD_SET_PRESENT(&flow_cfg.data, flow_cfg_data, ingress_intf);
+            err = bcmolt_cfg_get(dev_id, &flow_cfg.hdr);
+            if (err) {
+                BCM_LOG(ERROR, openolt_log_id,  "Failed to get intf_type\n");
+                return err;
+            }
+            return flow_cfg.data.ingress_intf.intf_type;
+        case INTF_ID: //intf_id
+            BCMOLT_FIELD_SET_PRESENT(&flow_cfg.data, flow_cfg_data, ingress_intf);
+            err = bcmolt_cfg_get(dev_id, &flow_cfg.hdr);
+            if (err) {
+                BCM_LOG(ERROR, openolt_log_id,  "Failed to get intf_id\n");
+                return err;
+            }
+            return flow_cfg.data.ingress_intf.intf_id;
+
+        case SVC_PORT_ID: //svc_port_id
+            BCMOLT_FIELD_SET_PRESENT(&flow_cfg.data, flow_cfg_data, svc_port_id);
+            err = bcmolt_cfg_get(dev_id, &flow_cfg.hdr);
+            if (err) {
+                BCM_LOG(ERROR, openolt_log_id,  "Failed to get svc_port_id\n");
+                return err;
+            }
+            return flow_cfg.data.svc_port_id;
+        case COOKIE: //cookie 
+            BCMOLT_FIELD_SET_PRESENT(&flow_cfg.data, flow_cfg_data, cookie);
+            err = bcmolt_cfg_get(dev_id, &flow_cfg.hdr);
+            if (err) {
+                BCM_LOG(ERROR, openolt_log_id,  "Failed to get cookie\n");
+                return err;
+            }
+            return flow_cfg.data.cookie;
+        default:
+            return BCM_ERR_INTERNAL;
+    }
+
+	 return err;
+}
+
 Status EnablePonIf_(uint32_t intf_id) {
     bcmos_errno err = BCM_ERR_OK; 
     bcmolt_pon_interface_cfg interface_obj;
@@ -1231,7 +1281,7 @@
     uint32_t ether_type = 0;
 
     BCM_LOG(INFO, openolt_log_id, "flow add - intf_id %d, onu_id %d, uni_id %d, port_no %u, flow_id %d, flow_type %s, \
-            gemport_id %d, network_intf_id %d, cookie %"PRIu64"\n", \
+gemport_id %d, network_intf_id %d, cookie %"PRIu64"\n", \
             access_intf_id, onu_id, uni_id, port_no, flow_id, flow_type.c_str(), gemport_id, network_intf_id, cookie);
 
     key.flow_id = flow_id;