[VOL-4692] BBSIM: OMCI extended message set - support get requests
Change-Id: I41f139558df5913cccab3ba3b8f7eb147e72ebbd
diff --git a/internal/common/omci/get.go b/internal/common/omci/get.go
index 6d83495..71d7d87 100644
--- a/internal/common/omci/get.go
+++ b/internal/common/omci/get.go
@@ -54,47 +54,53 @@
return nil, err
}
omciLogger.WithFields(log.Fields{
+ "DeviceIdent": omciMsg.DeviceIdentifier,
"EntityClass": msgObj.EntityClass,
"EntityInstance": msgObj.EntityInstance,
"AttributeMask": fmt.Sprintf("%x", msgObj.AttributeMask),
}).Trace("received-omci-get-request")
var response *omci.GetResponse
+
+ isExtended := false
+ if omciMsg.DeviceIdentifier == omci.ExtendedIdent {
+ isExtended = true
+ }
switch msgObj.EntityClass {
case me.Onu2GClassID:
- response = createOnu2gResponse(msgObj.AttributeMask, msgObj.EntityInstance)
+ response = createOnu2gResponse(isExtended, msgObj.AttributeMask, msgObj.EntityInstance)
case me.OnuGClassID:
- response = createOnugResponse(msgObj.AttributeMask, msgObj.EntityInstance, onuSn)
+ response = createOnugResponse(isExtended, msgObj.AttributeMask, msgObj.EntityInstance, onuSn)
case me.SoftwareImageClassID:
- response = createSoftwareImageResponse(msgObj.AttributeMask, msgObj.EntityInstance,
+ response = createSoftwareImageResponse(isExtended, msgObj.AttributeMask, msgObj.EntityInstance,
activeImageEntityId, committedImageEntityId, standbyImageVersion, activeImageVersion, committedImageVersion)
case me.IpHostConfigDataClassID:
- response = createIpHostResponse(msgObj.AttributeMask, msgObj.EntityInstance)
+ response = createIpHostResponse(isExtended, msgObj.AttributeMask, msgObj.EntityInstance)
case me.VoipConfigDataClassID:
- response = createVoipConfigDataResponse(msgObj.AttributeMask, msgObj.EntityInstance)
+ response = createVoipConfigDataResponse(isExtended, msgObj.AttributeMask, msgObj.EntityInstance)
case me.UniGClassID:
- response = createUnigResponse(msgObj.AttributeMask, msgObj.EntityInstance, onuDown)
+ response = createUnigResponse(isExtended, msgObj.AttributeMask, msgObj.EntityInstance, onuDown)
case me.PhysicalPathTerminationPointEthernetUniClassID:
- response = createPptpEthernetResponse(msgObj.AttributeMask, msgObj.EntityInstance, onuDown)
+ response = createPptpEthernetResponse(isExtended, msgObj.AttributeMask, msgObj.EntityInstance, onuDown)
case me.PhysicalPathTerminationPointPotsUniClassID:
- response = createPptpPotsResponse(msgObj.AttributeMask, msgObj.EntityInstance, onuDown)
+ response = createPptpPotsResponse(isExtended, msgObj.AttributeMask, msgObj.EntityInstance, onuDown)
case me.AniGClassID:
- response = createAnigResponse(msgObj.AttributeMask, msgObj.EntityInstance)
+ response = createAnigResponse(isExtended, msgObj.AttributeMask, msgObj.EntityInstance)
case me.OnuDataClassID:
- response = createOnuDataResponse(msgObj.AttributeMask, msgObj.EntityInstance, mds)
+ response = createOnuDataResponse(isExtended, msgObj.AttributeMask, msgObj.EntityInstance, mds)
case me.EthernetFramePerformanceMonitoringHistoryDataUpstreamClassID:
- response = createEthernetFramePerformanceMonitoringHistoryDataUpstreamResponse(msgObj.AttributeMask, msgObj.EntityInstance)
+ response = createEthernetFramePerformanceMonitoringHistoryDataUpstreamResponse(isExtended, msgObj.AttributeMask, msgObj.EntityInstance)
case me.EthernetFramePerformanceMonitoringHistoryDataDownstreamClassID:
- response = createEthernetFramePerformanceMonitoringHistoryDataDownstreamResponse(msgObj.AttributeMask, msgObj.EntityInstance)
+ response = createEthernetFramePerformanceMonitoringHistoryDataDownstreamResponse(isExtended, msgObj.AttributeMask, msgObj.EntityInstance)
case me.EthernetPerformanceMonitoringHistoryDataClassID:
- response = createEthernetPerformanceMonitoringHistoryDataResponse(msgObj.AttributeMask, msgObj.EntityInstance)
+ response = createEthernetPerformanceMonitoringHistoryDataResponse(isExtended, msgObj.AttributeMask, msgObj.EntityInstance)
case me.FecPerformanceMonitoringHistoryDataClassID:
- response = createFecPerformanceMonitoringHistoryDataResponse(msgObj.AttributeMask, msgObj.EntityInstance)
+ response = createFecPerformanceMonitoringHistoryDataResponse(isExtended, msgObj.AttributeMask, msgObj.EntityInstance)
case me.GemPortNetworkCtpPerformanceMonitoringHistoryDataClassID:
- response = createGemPortNetworkCtpPerformanceMonitoringHistoryData(msgObj.AttributeMask, msgObj.EntityInstance)
+ response = createGemPortNetworkCtpPerformanceMonitoringHistoryData(isExtended, msgObj.AttributeMask, msgObj.EntityInstance)
case me.EthernetFrameExtendedPmClassID,
me.EthernetFrameExtendedPm64BitClassID:
- response = createEthernetFrameExtendedPmGetResponse(msgObj.EntityClass, msgObj.AttributeMask, msgObj.EntityInstance)
+ response = createEthernetFrameExtendedPmGetResponse(isExtended, msgObj.EntityClass, msgObj.AttributeMask, msgObj.EntityInstance)
default:
omciLogger.WithFields(log.Fields{
"EntityClass": msgObj.EntityClass,
@@ -103,8 +109,16 @@
}).Warnf("do-not-know-how-to-handle-get-request-for-me-class")
return nil, nil
}
+ omciLayer := &omci.OMCI{
+ TransactionID: omciMsg.TransactionID,
+ MessageType: omci.GetResponseType,
+ DeviceIdentifier: omciMsg.DeviceIdentifier,
+ }
+ var options gopacket.SerializeOptions
+ options.FixLengths = true
- pkt, err := Serialize(omci.GetResponseType, response, omciMsg.TransactionID)
+ buffer := gopacket.NewSerializeBuffer()
+ err = gopacket.SerializeLayers(buffer, options, omciLayer, response)
if err != nil {
omciLogger.WithFields(log.Fields{
"Err": err,
@@ -112,6 +126,7 @@
}).Error("cannot-Serialize-GetResponse")
return nil, err
}
+ pkt := buffer.Bytes()
log.WithFields(log.Fields{
"TxID": strconv.FormatInt(int64(omciMsg.TransactionID), 16),
@@ -121,7 +136,7 @@
return pkt, nil
}
-func createOnu2gResponse(attributeMask uint16, entityID uint16) *omci.GetResponse {
+func createOnu2gResponse(isExtended bool, attributeMask uint16, entityID uint16) *omci.GetResponse {
managedEntity, meErr := me.NewOnu2G(me.ParamData{
EntityID: entityID,
@@ -151,7 +166,9 @@
return &omci.GetResponse{
MeBasePacket: omci.MeBasePacket{
- EntityClass: me.Onu2GClassID,
+ EntityClass: me.Onu2GClassID,
+ EntityInstance: entityID,
+ Extended: isExtended,
},
Attributes: managedEntity.GetAttributeValueMap(),
AttributeMask: attributeMask,
@@ -159,7 +176,7 @@
}
}
-func createOnugResponse(attributeMask uint16, entityID uint16, onuSn *openolt.SerialNumber) *omci.GetResponse {
+func createOnugResponse(isExtended bool, attributeMask uint16, entityID uint16, onuSn *openolt.SerialNumber) *omci.GetResponse {
managedEntity, meErr := me.NewOnuG(me.ParamData{
EntityID: entityID,
@@ -188,27 +205,17 @@
return &omci.GetResponse{
MeBasePacket: omci.MeBasePacket{
- EntityClass: me.OnuGClassID,
+ EntityClass: me.OnuGClassID,
+ EntityInstance: entityID,
+ Extended: isExtended,
},
Attributes: managedEntity.GetAttributeValueMap(),
AttributeMask: attributeMask,
Result: me.Success,
}
-
- //return &omci.GetResponse{
- // MeBasePacket: omci.MeBasePacket{
- // EntityClass: me.OnuGClassID,
- // EntityInstance: entityID,
- // },
- // Attributes: me.AttributeValueMap{
- //
- // },
- // Result: me.Success,
- // AttributeMask: attributeMask,
- //}
}
-func createSoftwareImageResponse(attributeMask uint16, entityInstance uint16, activeImageEntityId uint16,
+func createSoftwareImageResponse(isExtended bool, attributeMask uint16, entityInstance uint16, activeImageEntityId uint16,
committedImageEntityId uint16, standbyImageVersion string, activeImageVersion string, committedImageVersion string) *omci.GetResponse {
omciLogger.WithFields(log.Fields{
@@ -244,6 +251,7 @@
MeBasePacket: omci.MeBasePacket{
EntityClass: me.SoftwareImageClassID,
EntityInstance: entityInstance,
+ Extended: isExtended,
},
Attributes: me.AttributeValueMap{
me.ManagedEntityID: 0,
@@ -268,11 +276,12 @@
return res
}
-func createIpHostResponse(attributeMask uint16, entityInstance uint16) *omci.GetResponse {
+func createIpHostResponse(isExtended bool, attributeMask uint16, entityInstance uint16) *omci.GetResponse {
return &omci.GetResponse{
MeBasePacket: omci.MeBasePacket{
EntityClass: me.IpHostConfigDataClassID,
EntityInstance: entityInstance,
+ Extended: isExtended,
},
Attributes: me.AttributeValueMap{
me.ManagedEntityID: 0,
@@ -283,11 +292,12 @@
}
}
-func createVoipConfigDataResponse(attributeMask uint16, entityInstance uint16) *omci.GetResponse {
+func createVoipConfigDataResponse(isExtended bool, attributeMask uint16, entityInstance uint16) *omci.GetResponse {
return &omci.GetResponse{
MeBasePacket: omci.MeBasePacket{
EntityClass: me.VoipConfigDataClassID,
EntityInstance: entityInstance,
+ Extended: isExtended,
},
Attributes: me.AttributeValueMap{
me.ManagedEntityID: 0,
@@ -305,7 +315,7 @@
}
}
-func createUnigResponse(attributeMask uint16, entityID uint16, onuDown bool) *omci.GetResponse {
+func createUnigResponse(isExtended bool, attributeMask uint16, entityID uint16, onuDown bool) *omci.GetResponse {
// Valid values for uni_admin_state are 0 (unlocks) and 1 (locks)
omciAdminState := 1
if !onuDown {
@@ -332,6 +342,7 @@
MeBasePacket: omci.MeBasePacket{
EntityClass: me.UniGClassID,
EntityInstance: entityID,
+ Extended: isExtended,
},
Attributes: managedEntity.GetAttributeValueMap(),
AttributeMask: attributeMask,
@@ -339,7 +350,7 @@
}
}
-func createPptpEthernetResponse(attributeMask uint16, entityID uint16, onuDown bool) *omci.GetResponse {
+func createPptpEthernetResponse(isExtended bool, attributeMask uint16, entityID uint16, onuDown bool) *omci.GetResponse {
// Valid values for oper_state are 0 (enabled) and 1 (disabled)
// Valid values for uni_admin_state are 0 (unlocks) and 1 (locks)
onuAdminState := 1
@@ -378,6 +389,7 @@
MeBasePacket: omci.MeBasePacket{
EntityClass: me.PhysicalPathTerminationPointEthernetUniClassID,
EntityInstance: entityID,
+ Extended: isExtended,
},
Attributes: managedEntity.GetAttributeValueMap(),
AttributeMask: attributeMask,
@@ -385,7 +397,7 @@
}
}
-func createPptpPotsResponse(attributeMask uint16, entityID uint16, onuDown bool) *omci.GetResponse {
+func createPptpPotsResponse(isExtended bool, attributeMask uint16, entityID uint16, onuDown bool) *omci.GetResponse {
// Valid values for oper_state are 0 (enabled) and 1 (disabled)
// Valid values for uni_admin_state are 0 (unlocks) and 1 (locks)
onuAdminState := 1
@@ -422,6 +434,7 @@
MeBasePacket: omci.MeBasePacket{
EntityClass: me.PhysicalPathTerminationPointPotsUniClassID,
EntityInstance: entityID,
+ Extended: isExtended,
},
Attributes: managedEntity.GetAttributeValueMap(),
AttributeMask: attributeMask,
@@ -429,7 +442,7 @@
}
}
-func createEthernetFramePerformanceMonitoringHistoryDataUpstreamResponse(attributeMask uint16, entityID uint16) *omci.GetResponse {
+func createEthernetFramePerformanceMonitoringHistoryDataUpstreamResponse(isExtended bool, attributeMask uint16, entityID uint16) *omci.GetResponse {
managedEntity, meErr := me.NewEthernetFramePerformanceMonitoringHistoryDataUpstream(me.ParamData{
EntityID: entityID,
Attributes: me.AttributeValueMap{
@@ -462,6 +475,7 @@
MeBasePacket: omci.MeBasePacket{
EntityClass: me.EthernetFramePerformanceMonitoringHistoryDataUpstreamClassID,
EntityInstance: entityID,
+ Extended: isExtended,
},
Attributes: managedEntity.GetAttributeValueMap(),
AttributeMask: attributeMask,
@@ -469,7 +483,7 @@
}
}
-func createEthernetFramePerformanceMonitoringHistoryDataDownstreamResponse(attributeMask uint16, entityID uint16) *omci.GetResponse {
+func createEthernetFramePerformanceMonitoringHistoryDataDownstreamResponse(isExtended bool, attributeMask uint16, entityID uint16) *omci.GetResponse {
managedEntity, meErr := me.NewEthernetFramePerformanceMonitoringHistoryDataDownstream(me.ParamData{
EntityID: entityID,
Attributes: me.AttributeValueMap{
@@ -502,6 +516,7 @@
MeBasePacket: omci.MeBasePacket{
EntityClass: me.EthernetFramePerformanceMonitoringHistoryDataDownstreamClassID,
EntityInstance: entityID,
+ Extended: isExtended,
},
Attributes: managedEntity.GetAttributeValueMap(),
AttributeMask: attributeMask,
@@ -509,7 +524,7 @@
}
}
-func createEthernetPerformanceMonitoringHistoryDataResponse(attributeMask uint16, entityID uint16) *omci.GetResponse {
+func createEthernetPerformanceMonitoringHistoryDataResponse(isExtended bool, attributeMask uint16, entityID uint16) *omci.GetResponse {
managedEntity, meErr := me.NewEthernetPerformanceMonitoringHistoryData(me.ParamData{
EntityID: entityID,
Attributes: me.AttributeValueMap{
@@ -542,6 +557,7 @@
MeBasePacket: omci.MeBasePacket{
EntityClass: me.EthernetPerformanceMonitoringHistoryDataClassID,
EntityInstance: entityID,
+ Extended: isExtended,
},
Attributes: managedEntity.GetAttributeValueMap(),
AttributeMask: attributeMask,
@@ -549,7 +565,7 @@
}
}
-func createFecPerformanceMonitoringHistoryDataResponse(attributeMask uint16, entityID uint16) *omci.GetResponse {
+func createFecPerformanceMonitoringHistoryDataResponse(isExtended bool, attributeMask uint16, entityID uint16) *omci.GetResponse {
managedEntity, meErr := me.NewFecPerformanceMonitoringHistoryData(me.ParamData{
EntityID: entityID,
Attributes: me.AttributeValueMap{
@@ -576,6 +592,7 @@
MeBasePacket: omci.MeBasePacket{
EntityClass: me.FecPerformanceMonitoringHistoryDataClassID,
EntityInstance: entityID,
+ Extended: isExtended,
},
Attributes: managedEntity.GetAttributeValueMap(),
AttributeMask: attributeMask,
@@ -583,7 +600,7 @@
}
}
-func createGemPortNetworkCtpPerformanceMonitoringHistoryData(attributeMask uint16, entityID uint16) *omci.GetResponse {
+func createGemPortNetworkCtpPerformanceMonitoringHistoryData(isExtended bool, attributeMask uint16, entityID uint16) *omci.GetResponse {
managedEntity, meErr := me.NewGemPortNetworkCtpPerformanceMonitoringHistoryData(me.ParamData{
EntityID: entityID,
Attributes: me.AttributeValueMap{
@@ -607,6 +624,7 @@
MeBasePacket: omci.MeBasePacket{
EntityClass: me.GemPortNetworkCtpPerformanceMonitoringHistoryDataClassID,
EntityInstance: entityID,
+ Extended: isExtended,
},
Attributes: managedEntity.GetAttributeValueMap(),
AttributeMask: attributeMask,
@@ -614,7 +632,7 @@
}
}
-func createOnuDataResponse(attributeMask uint16, entityID uint16, mds uint8) *omci.GetResponse {
+func createOnuDataResponse(isExtended bool, attributeMask uint16, entityID uint16, mds uint8) *omci.GetResponse {
managedEntity, meErr := me.NewOnuData(me.ParamData{
EntityID: entityID,
Attributes: me.AttributeValueMap{
@@ -632,6 +650,7 @@
MeBasePacket: omci.MeBasePacket{
EntityClass: me.OnuDataClassID,
EntityInstance: entityID,
+ Extended: isExtended,
},
Attributes: managedEntity.GetAttributeValueMap(),
AttributeMask: attributeMask,
@@ -639,7 +658,7 @@
}
}
-func createAnigResponse(attributeMask uint16, entityID uint16) *omci.GetResponse {
+func createAnigResponse(isExtended bool, attributeMask uint16, entityID uint16) *omci.GetResponse {
managedEntity, meErr := me.NewAniG(me.ParamData{
EntityID: entityID,
Attributes: me.AttributeValueMap{
@@ -672,6 +691,7 @@
MeBasePacket: omci.MeBasePacket{
EntityClass: me.AniGClassID,
EntityInstance: entityID,
+ Extended: isExtended,
},
Attributes: managedEntity.GetAttributeValueMap(),
AttributeMask: attributeMask,
@@ -679,7 +699,7 @@
}
}
-func createEthernetFrameExtendedPmGetResponse(meClass me.ClassID, attributeMask uint16, entityID uint16) *omci.GetResponse {
+func createEthernetFrameExtendedPmGetResponse(isExtended bool, meClass me.ClassID, attributeMask uint16, entityID uint16) *omci.GetResponse {
callback := me.NewEthernetFrameExtendedPm
if meClass != me.EthernetFrameExtendedPmClassID {
@@ -720,6 +740,7 @@
MeBasePacket: omci.MeBasePacket{
EntityClass: meClass,
EntityInstance: entityID,
+ Extended: isExtended,
},
Attributes: managedEntity.GetAttributeValueMap(),
AttributeMask: attributeMask,