VOL-3419: Replicate voltha flows in openolt agent
Pass the following additional information in the Flow message for agent to replicate the flow
- voltha flow_id
- symmetric voltha_flow_id (where applicable)
- flag to indicate whether the flow is to be replicated
- when flow is to be replicated, the pbit to gemport map
- Bump major version to 4.0.0 since this change is NOT backward compatible

This will enable the agent to do the flow replication if necessary.

Change-Id: I9e3d43b5b24721e352ccd8a2011b4ad0a83eaf69
diff --git a/protos/voltha_protos/openolt.proto b/protos/voltha_protos/openolt.proto
index 08e0a39..b647b4a 100644
--- a/protos/voltha_protos/openolt.proto
+++ b/protos/voltha_protos/openolt.proto
@@ -447,11 +447,16 @@
     sfixed32 access_intf_id = 1;
     sfixed32 onu_id = 2;
     sfixed32 uni_id = 11;
-    fixed32 flow_id = 3;
-    string flow_type = 4;	// upstream, downstream, broadcast, multicast
+
+    fixed64 flow_id = 3; // voltha flow-id. 0 is not a valid flow_id
+    fixed64 symmetric_flow_id = 18; // symmetric voltha flow-id, if applicable. All data path flows generally have a symmetric flow,
+                                    // but trap-to-controller flows do not have a symmetric flow
+                                    // Broadcom BAL requires that symmetric flows use the same BAL flow-id
+
+    string flow_type = 4; // upstream, downstream, broadcast, multicast
     sfixed32 alloc_id = 10;
     sfixed32 network_intf_id = 5;
-    sfixed32 gemport_id = 6;
+    sfixed32 gemport_id = 6; // When 'replicate_flow' field is true, this field is obsolete.
     Classifier classifier = 7;
     Action action = 8;
     sfixed32 priority = 9;
@@ -459,6 +464,10 @@
     fixed32 port_no = 13; // must be provided for any flow with trap_to_host action. Returned in PacketIndication
     fixed32 group_id = 14;
     fixed32 tech_profile_id = 15;
+
+    bool replicate_flow = 16; // When this field is true, use pbitToGemPortID to know which p-bit needs to be classfied to which gem port.
+    map<fixed32, fixed32> pbit_to_gemport = 17; // Map of p-bit to gem port ID
+
 }
 
 message SerialNumber {