[VOL-5535] uni port addition before nni-port fix for multi-nni
Change-Id: I49feeb7cf3812fbbeb4840c3b4d1c3505bdd5ff0
Signed-off-by: Akash Reddy Kankanala <akash.kankanala@radisys.com>
diff --git a/internal/pkg/application/application.go b/internal/pkg/application/application.go
index 9836cea..d424492 100644
--- a/internal/pkg/application/application.go
+++ b/internal/pkg/application/application.go
@@ -396,7 +396,7 @@
}
// pushFlowsForUnis to send port-up-indication for uni ports.
-func (d *VoltDevice) pushFlowsForUnis(cntx context.Context) {
+func (d *VoltDevice) pushFlowsForUnis(cntx context.Context, nniPort string) {
logger.Info(ctx, "NNI Discovered, Sending Port UP Ind for UNIs")
d.Ports.Range(func(key, value interface{}) bool {
port := key.(string)
@@ -416,7 +416,10 @@
for _, vpv := range vnets.([]*VoltPortVnet) {
vpv.VpvLock.Lock()
- vpv.PortUpInd(cntx, d, port, "", false)
+ if ok, serviceNni := vpv.IsServiceActivated(cntx); ok && (nniPort == serviceNni) {
+ logger.Infow(cntx, "sending PortUpInd for Unis after nni discovery", log.Fields{"activeNni": serviceNni, "uniport": port})
+ vpv.PortUpInd(cntx, d, port, serviceNni, false)
+ }
vpv.VpvLock.Unlock()
}
return true
@@ -993,9 +996,11 @@
p := d.AddPort(portName, id)
va.PortsDisc.Store(portName, p)
va.portLock.Unlock()
- nni, _ := va.GetNniPort(device)
- if nni == portName {
- d.pushFlowsForUnis(cntx)
+ for _, nniPort := range d.NniPort {
+ if nniPort == portName {
+ logger.Debugw(cntx, "NNI Port discovered. Triggering port up for UNIs", log.Fields{"Device": device, "PortName": portName, "NNIPort": nniPort})
+ d.pushFlowsForUnis(cntx, portName)
+ }
}
} else {
va.portLock.Unlock()