VOL-4059 If multicast gem configuring for one UNI, the already created Multicast GEM and its InterworkingTP shouldn’t be created again.
Change-Id: I9574fb0f08053e441e7a60157f078a1ad3287b2a
diff --git a/internal/pkg/onuadaptercore/omci_ani_config.go b/internal/pkg/onuadaptercore/omci_ani_config.go
index 5701985..b6ca5e4 100644
--- a/internal/pkg/onuadaptercore/omci_ani_config.go
+++ b/internal/pkg/onuadaptercore/omci_ani_config.go
@@ -1323,7 +1323,7 @@
{
oFsm.handleOmciAniConfigDeleteResponseMessage(ctx, msg)
- } //SetResponseType
+ } //DeleteResponseType
default:
{
logger.Errorw(ctx, "uniPonAniConfigFsm - Rx OMCI unhandled MsgType",
@@ -1384,6 +1384,15 @@
logger.Debugw(ctx, "GemNWCtp create loop finished", log.Fields{"device-id": oFsm.deviceID})
_ = oFsm.pAdaptFsm.pFsm.Event(aniEvRxGemntcpsResp)
}
+func (oFsm *uniPonAniConfigFsm) hasMulticastGem(ctx context.Context) bool {
+ for _, gemPortAttribs := range oFsm.gemPortAttribsSlice {
+ if gemPortAttribs.isMulticast {
+ logger.Debugw(ctx, "Found multicast gem", log.Fields{"device-id": oFsm.deviceID})
+ return true
+ }
+ }
+ return false
+}
func (oFsm *uniPonAniConfigFsm) performCreatingGemIWs(ctx context.Context) {
// for all GemPorts of this T-Cont as given by the size of set gemPortAttribsSlice
@@ -1405,6 +1414,10 @@
"GalProfilePointer": galEthernetEID,
},
}
+ if oFsm.pUniTechProf.multicastConfiguredForOtherUniTps(ctx, oFsm.uniTpKey) {
+ logger.Debugw(ctx, "MulticastGemInterworkingTP already exist", log.Fields{"device-id": oFsm.deviceID, "multicast-gem-id": gemPortAttribs.multicastGemID})
+ continue
+ }
oFsm.mutexPLastTxMeInstance.Lock()
meInstance, err := oFsm.pOmciCC.sendCreateMulticastGemIWTPVar(context.TODO(), oFsm.pDeviceHandler.pOpenOnuAc.omciTimeout,
true, oFsm.pAdaptFsm.commChan, meParams)