Revert "[VOL-4518] remove flowKey and use only flowID for OLT and ONU flow cache since flowID's are unique"
This reverts commit d444598f453757cc0b9fb4ad7295dc1726a69c3f.
Change-Id: I449099e083d363db5834dc6c56330af3fd0ce921
diff --git a/internal/bbsim/devices/olt.go b/internal/bbsim/devices/olt.go
index 931bd6d..8520bf2 100644
--- a/internal/bbsim/devices/olt.go
+++ b/internal/bbsim/devices/olt.go
@@ -1032,8 +1032,10 @@
"PortNo": flow.PortNo,
}).Tracef("OLT receives FlowAdd")
+ flowKey := FlowKey{}
if !o.enablePerf {
- o.Flows.Store(flow.FlowId, *flow)
+ flowKey = FlowKey{ID: flow.FlowId, Direction: flow.FlowType}
+ olt.Flows.Store(flowKey, *flow)
}
if flow.AccessIntfId == -1 {
@@ -1092,8 +1094,9 @@
}
if !o.enablePerf {
+ onu.Flows = append(onu.Flows, flowKey)
// Generate event on first flow for ONU
- if len(onu.FlowIds) == 0 {
+ if len(onu.Flows) == 1 {
publishEvent("Flow-add-received", int32(onu.PonPortID), int32(onu.ID), onu.Sn())
}
}
@@ -1148,8 +1151,13 @@
olt.freeAllocId(flow)
if !o.enablePerf { // remove only if flow were stored
+ flowKey := FlowKey{
+ ID: flow.FlowId,
+ Direction: flow.FlowType,
+ }
+
// Check if flow exists
- storedFlowIntf, ok := o.Flows.Load(flow.FlowId)
+ storedFlowIntf, ok := o.Flows.Load(flowKey)
if !ok {
oltLogger.Errorf("Flow %v not found", flow)
return new(openolt.Empty), status.Errorf(codes.NotFound, "Flow not found")
@@ -1178,11 +1186,12 @@
}).Error("ONU-not-found")
return new(openolt.Empty), nil
}
+ onu.DeleteFlow(flowKey)
publishEvent("Flow-remove-received", int32(onu.PonPortID), int32(onu.ID), onu.Sn())
}
// delete from olt flows
- o.Flows.Delete(flow.FlowId)
+ o.Flows.Delete(flowKey)
}
if flow.AccessIntfId == -1 {