blob: 71abb897bdf4a846117b04666fba2f2c552e1f58 [file] [log] [blame]
/*
* Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net)
* Copyright 2020-present Open Networking Foundation
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/*
* NOTE: This file was generated, manual edits will be overwritten!
*
* Generated by 'goCodeGenerator.py':
* https://github.com/cboling/OMCI-parser/README.md
*/
package generated
// ManagedEntityInfo provides ManagedEntity information
type ManagedEntityInfo struct {
New func(params ...ParamData) (*ManagedEntity, error)
}
// ParamData can be passed to the 'New' function to dictate how the returned
// Managed Entity is created. You should supply either zero or one ParamData
// structure to 'New'.
//
// If No ParamData is passed, the returned Managed Entity can only be used for
// providing validation of other structures. This is commonly done in a packet
// encoder/decoder to assist in that process.
//
// If One ParamData is passed, the returned Managed Entity will be initialized
// with the given values/attributes and then validated. This is commonly done
// when you wish to create an ME for transmission, storage or removal from a
// persistent database, or some other similar purpose.
//
type ParamData struct {
EntityID uint16
Attributes AttributeValueMap
}
// CreateME wraps a function that makes it a creator of a Managed Entity
type CreateME func(params ...ParamData) (*ManagedEntity, OmciErrors)
var classToManagedEntityMap map[ClassID]CreateME
func init() {
// Create mapping of 16-bit managed entity class IDs to ME-type
classToManagedEntityMap = make(map[ClassID]CreateME, 179)
classToManagedEntityMap[2] = NewOnuData
classToManagedEntityMap[5] = NewCardholder
classToManagedEntityMap[6] = NewCircuitPack
classToManagedEntityMap[7] = NewSoftwareImage
classToManagedEntityMap[11] = NewPhysicalPathTerminationPointEthernetUni
classToManagedEntityMap[12] = NewPhysicalPathTerminationPointCesUni
classToManagedEntityMap[14] = NewInterworkingVccTerminationPoint
classToManagedEntityMap[16] = NewAal5Profile
classToManagedEntityMap[18] = NewAal5PerformanceMonitoringHistoryData
classToManagedEntityMap[21] = NewCesServiceProfile
classToManagedEntityMap[24] = NewEthernetPerformanceMonitoringHistoryData
classToManagedEntityMap[45] = NewMacBridgeServiceProfile
classToManagedEntityMap[46] = NewMacBridgeConfigurationData
classToManagedEntityMap[47] = NewMacBridgePortConfigurationData
classToManagedEntityMap[48] = NewMacBridgePortDesignationData
classToManagedEntityMap[49] = NewMacBridgePortFilterTableData
classToManagedEntityMap[50] = NewMacBridgePortBridgeTableData
classToManagedEntityMap[51] = NewMacBridgePerformanceMonitoringHistoryData
classToManagedEntityMap[52] = NewMacBridgePortPerformanceMonitoringHistoryData
classToManagedEntityMap[53] = NewPhysicalPathTerminationPointPotsUni
classToManagedEntityMap[58] = NewVoiceServiceProfile
classToManagedEntityMap[62] = NewVpPerformanceMonitoringHistoryData
classToManagedEntityMap[78] = NewVlanTaggingOperationConfigurationData
classToManagedEntityMap[79] = NewMacBridgePortFilterPreAssignTable
classToManagedEntityMap[82] = NewPhysicalPathTerminationPointVideoUni
classToManagedEntityMap[83] = NewPhysicalPathTerminationPointLctUni
classToManagedEntityMap[84] = NewVlanTaggingFilterData
classToManagedEntityMap[89] = NewEthernetPerformanceMonitoringHistoryData2
classToManagedEntityMap[90] = NewPhysicalPathTerminationPointVideoAni
classToManagedEntityMap[98] = NewPhysicalPathTerminationPointXdslUniPart1
classToManagedEntityMap[99] = NewPhysicalPathTerminationPointXdslUniPart2
classToManagedEntityMap[100] = NewXdslLineInventoryAndStatusDataPart1
classToManagedEntityMap[101] = NewXdslLineInventoryAndStatusDataPart2
classToManagedEntityMap[102] = NewXdslChannelDownstreamStatusData
classToManagedEntityMap[103] = NewXdslChannelUpstreamStatusData
classToManagedEntityMap[105] = NewXdslLineConfigurationProfilePart2
classToManagedEntityMap[106] = NewXdslLineConfigurationProfilePart3
classToManagedEntityMap[107] = NewXdslChannelConfigurationProfile
classToManagedEntityMap[108] = NewXdslSubcarrierMaskingDownstreamProfile
classToManagedEntityMap[109] = NewXdslSubcarrierMaskingUpstreamProfile
classToManagedEntityMap[110] = NewXdslPsdMaskProfile
classToManagedEntityMap[111] = NewXdslDownstreamRfiBandsProfile
classToManagedEntityMap[112] = NewXdslXtuCPerformanceMonitoringHistoryData
classToManagedEntityMap[113] = NewXdslXtuRPerformanceMonitoringHistoryData
classToManagedEntityMap[114] = NewXdslXtuCChannelPerformanceMonitoringHistoryData
classToManagedEntityMap[115] = NewXdslXtuRChannelPerformanceMonitoringHistoryData
classToManagedEntityMap[116] = NewTcAdaptorPerformanceMonitoringHistoryDataXdsl
classToManagedEntityMap[130] = NewIeee8021PMapperServiceProfile
classToManagedEntityMap[131] = NewOltG
classToManagedEntityMap[133] = NewOnuPowerShedding
classToManagedEntityMap[134] = NewIpHostConfigData
classToManagedEntityMap[135] = NewIpHostPerformanceMonitoringHistoryData
classToManagedEntityMap[136] = NewTcpUdpConfigData
classToManagedEntityMap[137] = NewNetworkAddress
classToManagedEntityMap[138] = NewVoipConfigData
classToManagedEntityMap[139] = NewVoipVoiceCtp
classToManagedEntityMap[140] = NewCallControlPerformanceMonitoringHistoryData
classToManagedEntityMap[141] = NewVoipLineStatus
classToManagedEntityMap[142] = NewVoipMediaProfile
classToManagedEntityMap[143] = NewRtpProfileData
classToManagedEntityMap[144] = NewRtpPerformanceMonitoringHistoryData
classToManagedEntityMap[145] = NewNetworkDialPlanTable
classToManagedEntityMap[146] = NewVoipApplicationServiceProfile
classToManagedEntityMap[147] = NewVoipFeatureAccessCodes
classToManagedEntityMap[148] = NewAuthenticationSecurityMethod
classToManagedEntityMap[150] = NewSipAgentConfigData
classToManagedEntityMap[151] = NewSipAgentPerformanceMonitoringHistoryData
classToManagedEntityMap[152] = NewSipCallInitiationPerformanceMonitoringHistoryData
classToManagedEntityMap[153] = NewSipUserData
classToManagedEntityMap[155] = NewMgcConfigData
classToManagedEntityMap[156] = NewMgcPerformanceMonitoringHistoryData
classToManagedEntityMap[160] = NewEquipmentExtensionPackage
classToManagedEntityMap[162] = NewPhysicalPathTerminationPointMocaUni
classToManagedEntityMap[163] = NewMocaEthernetPerformanceMonitoringHistoryData
classToManagedEntityMap[168] = NewVdsl2LineInventoryAndStatusDataPart1
classToManagedEntityMap[169] = NewVdsl2LineInventoryAndStatusDataPart2
classToManagedEntityMap[170] = NewVdsl2LineInventoryAndStatusDataPart3
classToManagedEntityMap[171] = NewExtendedVlanTaggingOperationConfigurationData
classToManagedEntityMap[256] = NewOnuG
classToManagedEntityMap[257] = NewOnu2G
classToManagedEntityMap[262] = NewTCont
classToManagedEntityMap[263] = NewAniG
classToManagedEntityMap[264] = NewUniG
classToManagedEntityMap[266] = NewGemInterworkingTerminationPoint
classToManagedEntityMap[268] = NewGemPortNetworkCtp
classToManagedEntityMap[269] = NewVpNetworkCtp
classToManagedEntityMap[272] = NewGalEthernetProfile
classToManagedEntityMap[273] = NewThresholdData1
classToManagedEntityMap[274] = NewThresholdData2
classToManagedEntityMap[276] = NewGalEthernetPerformanceMonitoringHistoryData
classToManagedEntityMap[277] = NewPriorityQueue
classToManagedEntityMap[278] = NewTrafficScheduler
classToManagedEntityMap[280] = NewTrafficDescriptor
classToManagedEntityMap[281] = NewMulticastGemInterworkingTerminationPoint
classToManagedEntityMap[282] = NewPseudowireTerminationPoint
classToManagedEntityMap[283] = NewRtpPseudowireParameters
classToManagedEntityMap[284] = NewPseudowireMaintenanceProfile
classToManagedEntityMap[285] = NewPseudowirePerformanceMonitoringHistoryData
classToManagedEntityMap[286] = NewEthernetFlowTerminationPoint
classToManagedEntityMap[287] = NewOmci
classToManagedEntityMap[288] = NewManagedEntityMe
classToManagedEntityMap[289] = NewAttributeMe
classToManagedEntityMap[290] = NewDot1XPortExtensionPackage
classToManagedEntityMap[291] = NewDot1XConfigurationProfile
classToManagedEntityMap[292] = NewDot1XPerformanceMonitoringHistoryData
classToManagedEntityMap[293] = NewRadiusPerformanceMonitoringHistoryData
classToManagedEntityMap[296] = NewEthernetPerformanceMonitoringHistoryData3
classToManagedEntityMap[298] = NewDot1RateLimiter
classToManagedEntityMap[299] = NewDot1AgMaintenanceDomain
classToManagedEntityMap[300] = NewDot1AgMaintenanceAssociation
classToManagedEntityMap[301] = NewDot1AgDefaultMdLevel
classToManagedEntityMap[302] = NewDot1AgMep
classToManagedEntityMap[305] = NewDot1AgCfmStack
classToManagedEntityMap[306] = NewDot1AgChassisManagementInfo
classToManagedEntityMap[307] = NewOctetString
classToManagedEntityMap[308] = NewGeneralPurposeBuffer
classToManagedEntityMap[309] = NewMulticastOperationsProfile
classToManagedEntityMap[310] = NewMulticastSubscriberConfigInfo
classToManagedEntityMap[311] = NewMulticastSubscriberMonitor
classToManagedEntityMap[312] = NewFecPerformanceMonitoringHistoryData
classToManagedEntityMap[313] = NewReAniG
classToManagedEntityMap[314] = NewPhysicalPathTerminationPointReUni
classToManagedEntityMap[315] = NewReUpstreamAmplifier
classToManagedEntityMap[316] = NewReDownstreamAmplifier
classToManagedEntityMap[321] = NewEthernetFramePerformanceMonitoringHistoryDataDownstream
classToManagedEntityMap[322] = NewEthernetFramePerformanceMonitoringHistoryDataUpstream
classToManagedEntityMap[323] = NewVdsl2LineConfigurationExtensions2
classToManagedEntityMap[324] = NewXdslImpulseNoiseMonitorPerformanceMonitoringHistoryData
classToManagedEntityMap[325] = NewXdslLineInventoryAndStatusDataPart5
classToManagedEntityMap[328] = NewReCommonAmplifierParameters
classToManagedEntityMap[329] = NewVirtualEthernetInterfacePoint
classToManagedEntityMap[332] = NewEnhancedSecurityControl
classToManagedEntityMap[333] = NewMplsPseudowireTerminationPoint
classToManagedEntityMap[334] = NewEthernetFrameExtendedPm
classToManagedEntityMap[335] = NewSnmpConfigurationData
classToManagedEntityMap[336] = NewOnuDynamicPowerManagementControl
classToManagedEntityMap[337] = NewPwAtmConfigurationData
classToManagedEntityMap[338] = NewPwAtmPerformanceMonitoringHistoryData
classToManagedEntityMap[339] = NewPwEthernetConfigurationData
classToManagedEntityMap[340] = NewBbfTr069ManagementServer
classToManagedEntityMap[341] = NewGemPortNetworkCtpPerformanceMonitoringHistoryData
classToManagedEntityMap[342] = NewTcpUdpPerformanceMonitoringHistoryData
classToManagedEntityMap[343] = NewEnergyConsumptionPerformanceMonitoringHistoryData
classToManagedEntityMap[344] = NewXgPonTcPerformanceMonitoringHistoryData
classToManagedEntityMap[345] = NewXgPonDownstreamManagementPerformanceMonitoringHistoryData
classToManagedEntityMap[346] = NewXgPonUpstreamManagementPerformanceMonitoringHistoryData
classToManagedEntityMap[348] = NewMacBridgePortIcmpv6ProcessPreAssignTable
classToManagedEntityMap[400] = NewEthernetPseudowireParameters
classToManagedEntityMap[408] = NewXdslXtuCPerformanceMonitoringHistoryDataPart2
classToManagedEntityMap[410] = NewVdsl2LineConfigurationExtensions3
classToManagedEntityMap[412] = NewXdslChannelConfigurationProfilePart2
classToManagedEntityMap[413] = NewXtuDataGatheringConfiguration
classToManagedEntityMap[414] = NewXdslLineInventoryAndStatusDataPart8
classToManagedEntityMap[418] = NewEfmBondingGroup
classToManagedEntityMap[419] = NewEfmBondingLink
classToManagedEntityMap[420] = NewEfmBondingGroupPerformanceMonitoringHistoryData
classToManagedEntityMap[421] = NewEfmBondingGroupPerformanceMonitoringHistoryDataPart2
classToManagedEntityMap[422] = NewEfmBondingLinkPerformanceMonitoringHistoryData
classToManagedEntityMap[423] = NewEfmBondingPortPerformanceMonitoringHistoryData
classToManagedEntityMap[424] = NewEfmBondingPortPerformanceMonitoringHistoryDataPart2
classToManagedEntityMap[425] = NewEthernetFrameExtendedPm64Bit
classToManagedEntityMap[432] = NewFastChannelConfigurationProfile
classToManagedEntityMap[433] = NewFastDataPathConfigurationProfile
classToManagedEntityMap[434] = NewFastVectoringLineConfigurationExtensions
classToManagedEntityMap[436] = NewFastLineInventoryAndStatusDataPart2
classToManagedEntityMap[437] = NewFastXtuCPerformanceMonitoringHistoryData
classToManagedEntityMap[438] = NewFastXtuRPerformanceMonitoringHistoryData
classToManagedEntityMap[443] = NewTwdmChannelManagedEntity
classToManagedEntityMap[444] = NewTwdmChannelPhyLodsPerformanceMonitoringHistoryData
classToManagedEntityMap[445] = NewTwdmChannelXgemPerformanceMonitoringHistoryData
classToManagedEntityMap[446] = NewTwdmChannelPloamPerformanceMonitoringHistoryDataPart1
classToManagedEntityMap[447] = NewTwdmChannelPloamPerformanceMonitoringHistoryDataPart2
classToManagedEntityMap[448] = NewTwdmChannelPloamPerformanceMonitoringHistoryDataPart3
classToManagedEntityMap[449] = NewTwdmChannelTuningPerformanceMonitoringHistoryDataPart1
classToManagedEntityMap[450] = NewTwdmChannelTuningPerformanceMonitoringHistoryDataPart2
classToManagedEntityMap[451] = NewTwdmChannelTuningPerformanceMonitoringHistoryDataPart3
classToManagedEntityMap[452] = NewTwdmChannelOmciPerformanceMonitoringHistoryData
classToManagedEntityMap[453] = NewEnhancedFecPerformanceMonitoringHistoryData
classToManagedEntityMap[454] = NewEnhancedTcPerformanceMonitoringHistoryData
}
// LoadManagedEntityDefinition returns a function to create a Managed Entity for a specific
// Managed Entity class ID
func LoadManagedEntityDefinition(classID ClassID, params ...ParamData) (*ManagedEntity, OmciErrors) {
if newFunc, ok := classToManagedEntityMap[classID]; ok {
return newFunc(params...)
}
if IsVendorSpecificClassID(classID) {
return NewUnknownVendorSpecificME(classID, params...)
}
return NewUnknownG988ME(classID, params...)
}
// GetSupportedClassIDs returns an array of Managed Entity Class IDs supported
func GetSupportedClassIDs() []ClassID {
supported := make([]ClassID, 0, len(classToManagedEntityMap))
for k := range classToManagedEntityMap {
supported = append(supported, k)
}
return supported
}
// GetAttributesDefinitions returns the attribute definition map for a specific class
func GetAttributesDefinitions(classID ClassID) (AttributeDefinitionMap, OmciErrors) {
medef, err := LoadManagedEntityDefinition(classID)
if err.StatusCode() != Success {
return nil, err
}
return medef.GetAttributeDefinitions(), err
}
// IsVendorSpecificClassID returns true if the provided class ID is reserved in ITU-T G.988
// for vendor specific functionality
func IsVendorSpecificClassID(classID ClassID) bool {
// Values below are from Table 11.2.4-1 of ITU-T G.988 (11/2017)
return (ClassID(240) <= classID && classID <= ClassID(255)) ||
(ClassID(350) <= classID && classID <= ClassID(399)) ||
(ClassID(65280) <= classID && classID <= ClassID(65535))
}