blob: 2902fd2ddb822e9cd1947904fa80dc825bc7749d [file] [log] [blame]
Matteo Scandoloef4e8f82021-05-17 11:20:49 -07001/*
2 * Copyright 2018-present Open Networking Foundation
3
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7
8 * http://www.apache.org/licenses/LICENSE-2.0
9
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package omci
18
19import (
Matteo Scandolo8a574812021-05-20 15:18:53 -070020 "bytes"
Matteo Scandoloef4e8f82021-05-17 11:20:49 -070021 "encoding/binary"
22 "encoding/hex"
Elia Battistonac63b112022-01-12 18:40:49 +010023
Elia Battistonb7bea222022-02-18 16:25:00 +010024 "github.com/opencord/bbsim/internal/common"
Andrea Campanella10426e22021-10-15 17:58:04 +020025 me "github.com/opencord/omci-lib-go/v2/generated"
Matteo Scandoloef4e8f82021-05-17 11:20:49 -070026)
27
28type MibDbEntry struct {
29 classId me.ClassID
30 entityId EntityID
31 params me.AttributeValueMap
32}
33
34type MibDb struct {
35 NumberOfCommands uint16
36 items []MibDbEntry
37}
38
39type EntityID []byte
40
41func (e EntityID) ToString() string {
42 return hex.EncodeToString(e)
43}
44
45func (e EntityID) ToUint16() uint16 {
46 return binary.BigEndian.Uint16(e)
47}
48
49func (e EntityID) ToUint32() uint32 {
50 return binary.BigEndian.Uint32(e)
51}
52
Matteo Scandolo8a574812021-05-20 15:18:53 -070053func (e EntityID) FromUint16(id uint16) EntityID {
54 buff := new(bytes.Buffer)
55 err := binary.Write(buff, binary.BigEndian, id)
56 if err != nil {
57 panic(err)
58 }
59
60 return buff.Bytes()
61}
62
63func (e EntityID) Equals(i EntityID) bool {
64 if res := bytes.Compare(e, i); res == 0 {
65 return true
66 }
67 return false
68}
69
Matteo Scandoloef4e8f82021-05-17 11:20:49 -070070const (
71 cardHolderOnuType byte = 0x01 // ONU is a single piece of integrated equipment
72 ethernetUnitType byte = 0x2f // Ethernet BASE-T
73 xgsPonUnitType byte = 0xee // XG-PON10G10
Elia Battistonb7bea222022-02-18 16:25:00 +010074 gPonUnitType byte = 0xf5 // GPON12441244
Elia Battistonac63b112022-01-12 18:40:49 +010075 potsUnitType byte = 0x20 // POTS
Matteo Scandoloef4e8f82021-05-17 11:20:49 -070076 cardHolderSlotID byte = 0x01
77 tcontSlotId byte = 0x80 // why is this not the same as the cardHolderSlotID, it does not point to anything
78 aniGId byte = 0x01
79
80 upstreamPriorityQueues = 8 // Number of queues for each T-CONT
81 downstreamPriorityQueues = 16 // Number of queues for each PPTP
82 tconts = 8 // NOTE will we ever need to configure this?
83 // trafficSchedulers = 8 // NOTE will we ever need to configure this?
84)
85
86var (
87 cardHolderEntityID = EntityID{cardHolderOnuType, cardHolderSlotID}
88 circuitPackEntityID = cardHolderEntityID // is the same as that of the cardholder ME containing this circuit pack instance
89)
90
91func GenerateUniPortEntityId(id uint32) EntityID {
92 return EntityID{cardHolderSlotID, byte(id)}
93}
94
95// creates a MIB database for a ONU
96// CircuitPack and CardHolder are static, everything else can be configured
Elia Battistonb7bea222022-02-18 16:25:00 +010097func GenerateMibDatabase(ethUniPortCount int, potsUniPortCount int, technology common.PonTechnology) (*MibDb, error) {
Matteo Scandoloef4e8f82021-05-17 11:20:49 -070098
99 mibDb := MibDb{
100 items: []MibDbEntry{},
101 }
102
103 // the first element to return is the ONU-Data
104 mibDb.items = append(mibDb.items, MibDbEntry{
105 me.OnuDataClassID,
106 EntityID{0x00, 0x00},
Elia Battiston9bfe1102022-02-03 10:38:03 +0100107 me.AttributeValueMap{me.OnuData_MibDataSync: 0}, // FIXME this needs to be parametrized before sending the response
Matteo Scandoloef4e8f82021-05-17 11:20:49 -0700108 })
109
110 // then we report the CardHolder
111 // NOTE we have not report it till now, so leave it commented out
112 //mibDb.items = append(mibDb.items, MibDbEntry{
113 // me.CardholderClassID,
114 // cardHolderEntityID,
115 // me.AttributeValueMap{
116 // "ActualPlugInUnitType": cardHolderOnuType,
117 // "ExpectedPlugInUnitType": ethernetUnitType,
118 // },
119 //})
120
Elia Battistonb7bea222022-02-18 16:25:00 +0100121 // ANI circuitPack
122 var aniCPType byte
123
124 switch technology {
125 case common.XGSPON:
126 aniCPType = xgsPonUnitType
127 case common.GPON:
128 aniCPType = gPonUnitType
129 }
130
Matteo Scandoloef4e8f82021-05-17 11:20:49 -0700131 mibDb.items = append(mibDb.items, MibDbEntry{
132 me.CircuitPackClassID,
133 circuitPackEntityID,
134 me.AttributeValueMap{
Elia Battistonb7bea222022-02-18 16:25:00 +0100135 me.CircuitPack_Type: aniCPType,
Elia Battiston9bfe1102022-02-03 10:38:03 +0100136 me.CircuitPack_NumberOfPorts: 1, // NOTE is this the ANI port? must be
137 me.CircuitPack_SerialNumber: ToOctets("BBSM-Circuit-Pack-ani", 20),
138 me.CircuitPack_Version: ToOctets("v0.0.1", 20),
Matteo Scandoloef4e8f82021-05-17 11:20:49 -0700139 },
140 })
141 mibDb.items = append(mibDb.items, MibDbEntry{
142 me.CircuitPackClassID,
143 circuitPackEntityID,
144 me.AttributeValueMap{
Elia Battiston9bfe1102022-02-03 10:38:03 +0100145 me.CircuitPack_VendorId: ToOctets("ONF", 4),
146 me.CircuitPack_AdministrativeState: 0,
147 me.CircuitPack_OperationalState: 0,
148 me.CircuitPack_BridgedOrIpInd: 0,
Matteo Scandoloef4e8f82021-05-17 11:20:49 -0700149 },
150 })
151 mibDb.items = append(mibDb.items, MibDbEntry{
152 me.CircuitPackClassID,
153 circuitPackEntityID,
154 me.AttributeValueMap{
Elia Battiston9bfe1102022-02-03 10:38:03 +0100155 me.CircuitPack_EquipmentId: ToOctets("BBSM-Circuit-Pack", 20),
156 me.CircuitPack_CardConfiguration: 0,
157 me.CircuitPack_TotalTContBufferNumber: 8,
158 me.CircuitPack_TotalPriorityQueueNumber: 8,
159 me.CircuitPack_TotalTrafficSchedulerNumber: 0,
Matteo Scandoloef4e8f82021-05-17 11:20:49 -0700160 },
161 })
162 mibDb.items = append(mibDb.items, MibDbEntry{
163 me.CircuitPackClassID,
164 circuitPackEntityID,
165 me.AttributeValueMap{
Elia Battiston9bfe1102022-02-03 10:38:03 +0100166 me.CircuitPack_PowerShedOverride: uint32(0),
Matteo Scandoloef4e8f82021-05-17 11:20:49 -0700167 },
168 })
169
170 // ANI-G
171 mibDb.items = append(mibDb.items, MibDbEntry{
172 me.AniGClassID,
173 EntityID{tcontSlotId, aniGId},
174 me.AttributeValueMap{
Elia Battiston9bfe1102022-02-03 10:38:03 +0100175 me.AniG_Arc: 0,
176 me.AniG_ArcInterval: 0,
177 me.AniG_Deprecated: 0,
178 me.AniG_GemBlockLength: 48,
179 me.AniG_LowerOpticalThreshold: 255,
180 me.AniG_LowerTransmitPowerThreshold: 129,
181 me.AniG_OnuResponseTime: 0,
182 me.AniG_OpticalSignalLevel: 57428,
183 me.AniG_PiggybackDbaReporting: 0,
184 me.AniG_SignalDegradeThreshold: 9,
185 me.AniG_SignalFailThreshold: 5,
186 me.AniG_SrIndication: 1,
187 me.AniG_TotalTcontNumber: 8,
188 me.AniG_TransmitOpticalLevel: 3171,
189 me.AniG_UpperOpticalThreshold: 255,
190 me.AniG_UpperTransmitPowerThreshold: 129,
Matteo Scandoloef4e8f82021-05-17 11:20:49 -0700191 },
192 })
193
194 // circuitPack Ethernet
195 // NOTE the circuit pack is divided in multiple messages as too big to fit in a single one
196 mibDb.items = append(mibDb.items, MibDbEntry{
197 me.CircuitPackClassID,
198 circuitPackEntityID,
199 me.AttributeValueMap{
Elia Battiston9bfe1102022-02-03 10:38:03 +0100200 me.CircuitPack_Type: ethernetUnitType,
201 me.CircuitPack_NumberOfPorts: ethUniPortCount,
202 me.CircuitPack_SerialNumber: ToOctets("BBSM-Circuit-Pack", 20),
203 me.CircuitPack_Version: ToOctets("v0.0.1", 20),
Matteo Scandoloef4e8f82021-05-17 11:20:49 -0700204 },
205 })
206 mibDb.items = append(mibDb.items, MibDbEntry{
207 me.CircuitPackClassID,
208 circuitPackEntityID,
209 me.AttributeValueMap{
Elia Battiston9bfe1102022-02-03 10:38:03 +0100210 me.CircuitPack_VendorId: ToOctets("ONF", 4),
211 me.CircuitPack_AdministrativeState: 0,
212 me.CircuitPack_OperationalState: 0,
213 me.CircuitPack_BridgedOrIpInd: 0,
Matteo Scandoloef4e8f82021-05-17 11:20:49 -0700214 },
215 })
216 mibDb.items = append(mibDb.items, MibDbEntry{
217 me.CircuitPackClassID,
218 circuitPackEntityID,
219 me.AttributeValueMap{
Elia Battiston9bfe1102022-02-03 10:38:03 +0100220 me.CircuitPack_EquipmentId: ToOctets("BBSM-Circuit-Pack", 20),
221 me.CircuitPack_CardConfiguration: 0,
222 me.CircuitPack_TotalTContBufferNumber: 8,
223 me.CircuitPack_TotalPriorityQueueNumber: 8,
224 me.CircuitPack_TotalTrafficSchedulerNumber: 16,
Matteo Scandoloef4e8f82021-05-17 11:20:49 -0700225 },
226 })
227 mibDb.items = append(mibDb.items, MibDbEntry{
228 me.CircuitPackClassID,
229 circuitPackEntityID,
230 me.AttributeValueMap{
Elia Battiston9bfe1102022-02-03 10:38:03 +0100231 me.CircuitPack_PowerShedOverride: uint32(0),
Matteo Scandoloef4e8f82021-05-17 11:20:49 -0700232 },
233 })
234
Elia Battistonac63b112022-01-12 18:40:49 +0100235 if potsUniPortCount > 0 {
236 // circuitPack POTS
237 // NOTE the circuit pack is divided in multiple messages as too big to fit in a single one
238 mibDb.items = append(mibDb.items, MibDbEntry{
239 me.CircuitPackClassID,
240 circuitPackEntityID,
241 me.AttributeValueMap{
Elia Battiston9bfe1102022-02-03 10:38:03 +0100242 me.CircuitPack_Type: potsUnitType,
243 me.CircuitPack_NumberOfPorts: potsUniPortCount,
244 me.CircuitPack_SerialNumber: ToOctets("BBSM-Circuit-Pack", 20),
245 me.CircuitPack_Version: ToOctets("v0.0.1", 20),
Elia Battistonac63b112022-01-12 18:40:49 +0100246 },
247 })
248 mibDb.items = append(mibDb.items, MibDbEntry{
249 me.CircuitPackClassID,
250 circuitPackEntityID,
251 me.AttributeValueMap{
Elia Battiston9bfe1102022-02-03 10:38:03 +0100252 me.CircuitPack_VendorId: ToOctets("ONF", 4),
253 me.CircuitPack_AdministrativeState: 0,
254 me.CircuitPack_OperationalState: 0,
255 me.CircuitPack_BridgedOrIpInd: 0,
Elia Battistonac63b112022-01-12 18:40:49 +0100256 },
257 })
258 mibDb.items = append(mibDb.items, MibDbEntry{
259 me.CircuitPackClassID,
260 circuitPackEntityID,
261 me.AttributeValueMap{
Elia Battiston9bfe1102022-02-03 10:38:03 +0100262 me.CircuitPack_EquipmentId: ToOctets("BBSM-Circuit-Pack", 20),
263 me.CircuitPack_CardConfiguration: 0,
264 me.CircuitPack_TotalTContBufferNumber: 8,
265 me.CircuitPack_TotalPriorityQueueNumber: 8,
266 me.CircuitPack_TotalTrafficSchedulerNumber: 16,
Elia Battistonac63b112022-01-12 18:40:49 +0100267 },
268 })
269 mibDb.items = append(mibDb.items, MibDbEntry{
270 me.CircuitPackClassID,
271 circuitPackEntityID,
272 me.AttributeValueMap{
Elia Battiston9bfe1102022-02-03 10:38:03 +0100273 me.CircuitPack_PowerShedOverride: uint32(0),
Elia Battistonac63b112022-01-12 18:40:49 +0100274 },
275 })
276 }
277
Matteo Scandoloef4e8f82021-05-17 11:20:49 -0700278 // PPTP and UNI-Gs
279 // NOTE this are dependent on the number of UNI this ONU supports
280 // Through an identical ID, the UNI-G ME is implicitly linked to an instance of a PPTP
Elia Battistonac63b112022-01-12 18:40:49 +0100281 totalPortsCount := ethUniPortCount + potsUniPortCount
282 for i := 1; i <= totalPortsCount; i++ {
Matteo Scandoloef4e8f82021-05-17 11:20:49 -0700283 uniEntityId := GenerateUniPortEntityId(uint32(i))
284
Elia Battistonac63b112022-01-12 18:40:49 +0100285 if i <= ethUniPortCount {
286 // first, create the correct amount of ethernet UNIs, the same is done in onu.go
287 mibDb.items = append(mibDb.items, MibDbEntry{
288 me.PhysicalPathTerminationPointEthernetUniClassID,
289 uniEntityId,
290 me.AttributeValueMap{
Elia Battiston9bfe1102022-02-03 10:38:03 +0100291 me.PhysicalPathTerminationPointEthernetUni_ExpectedType: 0,
292 me.PhysicalPathTerminationPointEthernetUni_SensedType: ethernetUnitType,
293 me.PhysicalPathTerminationPointEthernetUni_AutoDetectionConfiguration: 0,
294 me.PhysicalPathTerminationPointEthernetUni_EthernetLoopbackConfiguration: 0,
295 me.PhysicalPathTerminationPointEthernetUni_AdministrativeState: 0,
296 me.PhysicalPathTerminationPointEthernetUni_OperationalState: 0,
297 me.PhysicalPathTerminationPointEthernetUni_ConfigurationInd: 3,
298 me.PhysicalPathTerminationPointEthernetUni_MaxFrameSize: 1518,
299 me.PhysicalPathTerminationPointEthernetUni_DteOrDceInd: 0,
300 me.PhysicalPathTerminationPointEthernetUni_PauseTime: 0,
301 me.PhysicalPathTerminationPointEthernetUni_BridgedOrIpInd: 2,
302 me.PhysicalPathTerminationPointEthernetUni_Arc: 0,
303 me.PhysicalPathTerminationPointEthernetUni_ArcInterval: 0,
304 me.PhysicalPathTerminationPointEthernetUni_PppoeFilter: 0,
305 me.PhysicalPathTerminationPointEthernetUni_PowerControl: 0,
Elia Battistonac63b112022-01-12 18:40:49 +0100306 },
307 })
308 } else {
309 // the remaining ones are pots UNIs, the same is done in onu.go
310 mibDb.items = append(mibDb.items, MibDbEntry{
311 me.PhysicalPathTerminationPointPotsUniClassID,
312 uniEntityId,
313 me.AttributeValueMap{
Elia Battiston9bfe1102022-02-03 10:38:03 +0100314 me.PhysicalPathTerminationPointPotsUni_AdministrativeState: 0,
315 me.PhysicalPathTerminationPointPotsUni_Deprecated: 0,
316 me.PhysicalPathTerminationPointPotsUni_Arc: 0,
317 me.PhysicalPathTerminationPointPotsUni_ArcInterval: 0,
318 me.PhysicalPathTerminationPointPotsUni_Impedance: 0,
319 me.PhysicalPathTerminationPointPotsUni_TransmissionPath: 0,
320 me.PhysicalPathTerminationPointPotsUni_RxGain: 0,
321 me.PhysicalPathTerminationPointPotsUni_TxGain: 0,
322 me.PhysicalPathTerminationPointPotsUni_OperationalState: 0,
323 me.PhysicalPathTerminationPointPotsUni_HookState: 0,
324 me.PhysicalPathTerminationPointPotsUni_PotsHoldoverTime: 0,
325 me.PhysicalPathTerminationPointPotsUni_NominalFeedVoltage: 0,
326 me.PhysicalPathTerminationPointPotsUni_LossOfSoftswitch: 0,
Elia Battistonac63b112022-01-12 18:40:49 +0100327 },
328 })
329 }
Matteo Scandoloef4e8f82021-05-17 11:20:49 -0700330
331 mibDb.items = append(mibDb.items, MibDbEntry{
332 me.UniGClassID,
333 uniEntityId,
334 me.AttributeValueMap{
Elia Battiston9bfe1102022-02-03 10:38:03 +0100335 me.UniG_AdministrativeState: 0,
336 me.UniG_Deprecated: 0,
337 me.UniG_ManagementCapability: 0,
338 me.UniG_NonOmciManagementIdentifier: 0,
339 me.UniG_RelayAgentOptions: 0,
Matteo Scandoloef4e8f82021-05-17 11:20:49 -0700340 },
341 })
342
343 // Downstream Queues (related to PPTP)
344 // 16 priorities queues for each UNI Ports
345 // EntityID = cardHolderSlotID + Uni EntityID (0101)
346 for j := 1; j <= downstreamPriorityQueues; j++ {
347 queueEntityId := EntityID{cardHolderSlotID, byte(j)}
348
349 // we first report the PriorityQueue without any attribute
350 mibDb.items = append(mibDb.items, MibDbEntry{
351 me.PriorityQueueClassID,
352 queueEntityId, //was not reported in the original implementation
353 me.AttributeValueMap{},
354 })
355
356 // then we report it with the required attributes
357 // In the downstream direction, the first byte is the slot number and the second byte is the port number of the queue's destination port.
358 relatedPort := append(uniEntityId, 0x00, byte(j))
359 mibDb.items = append(mibDb.items, MibDbEntry{
360 me.PriorityQueueClassID,
361 queueEntityId, //was not reported in the original implementation
362 me.AttributeValueMap{
Elia Battiston9bfe1102022-02-03 10:38:03 +0100363 me.PriorityQueue_QueueConfigurationOption: 0,
364 me.PriorityQueue_MaximumQueueSize: 100,
365 me.PriorityQueue_AllocatedQueueSize: 100,
366 me.PriorityQueue_DiscardBlockCounterResetInterval: 0,
367 me.PriorityQueue_ThresholdValueForDiscardedBlocksDueToBufferOverflow: 0,
368 me.PriorityQueue_RelatedPort: relatedPort.ToUint32(),
369 me.PriorityQueue_TrafficSchedulerPointer: 0, //it was hardcoded to 0x0108 in the current implementation
370 me.PriorityQueue_Weight: 1,
371 me.PriorityQueue_BackPressureOperation: 1,
372 me.PriorityQueue_BackPressureTime: 0,
373 me.PriorityQueue_BackPressureOccurQueueThreshold: 0,
374 me.PriorityQueue_BackPressureClearQueueThreshold: 0,
Matteo Scandoloef4e8f82021-05-17 11:20:49 -0700375 },
376 })
377 }
378 }
379
380 // T-CONTS and Traffic Schedulers
381 for i := 1; i <= tconts; i++ {
382 tcontEntityId := EntityID{tcontSlotId, byte(i)}
383
384 mibDb.items = append(mibDb.items, MibDbEntry{
385 me.TContClassID,
386 tcontEntityId,
387 me.AttributeValueMap{
Elia Battiston9bfe1102022-02-03 10:38:03 +0100388 me.TCont_AllocId: 65535,
Matteo Scandoloef4e8f82021-05-17 11:20:49 -0700389 },
390 })
391
392 tsEntityId := EntityID{cardHolderSlotID, byte(i)}
393 mibDb.items = append(mibDb.items, MibDbEntry{
394 me.TrafficSchedulerClassID,
395 tsEntityId, //was not reported in the original implementation
396 me.AttributeValueMap{
Elia Battiston9bfe1102022-02-03 10:38:03 +0100397 me.TrafficScheduler_TContPointer: tcontEntityId.ToUint16(), // was hardcoded to a non-existing t-cont
398 me.TrafficScheduler_TrafficSchedulerPointer: 0,
399 me.TrafficScheduler_Policy: 02,
400 me.TrafficScheduler_PriorityWeight: 0,
Matteo Scandoloef4e8f82021-05-17 11:20:49 -0700401 },
402 })
403
404 for j := 1; j <= upstreamPriorityQueues; j++ {
405 queueEntityId := EntityID{tcontSlotId, byte(j)}
406 // Upstream Queues (related to traffic schedulers)
407 // 8 priorities queues per TCONT
408 // EntityID = tcontSlotId + Uni EntityID (8001)
409
410 // we first report the PriorityQueue without any attribute
411 mibDb.items = append(mibDb.items, MibDbEntry{
412 me.PriorityQueueClassID,
413 queueEntityId, //was not reported in the original implementation
414 me.AttributeValueMap{},
415 })
416
417 // then we report it with the required attributes
418 // In the upstream direction, the first 2 bytes are the ME ID of the associated T- CONT, the first byte of which is a slot number, the second byte a T-CONT number.
419 relatedPort := append(tcontEntityId, 0x00, byte(j))
420 mibDb.items = append(mibDb.items, MibDbEntry{
421 me.PriorityQueueClassID,
422 queueEntityId, //was not reported in the original implementation
423 me.AttributeValueMap{
Elia Battiston9bfe1102022-02-03 10:38:03 +0100424 me.PriorityQueue_QueueConfigurationOption: 0,
425 me.PriorityQueue_MaximumQueueSize: 100,
426 me.PriorityQueue_AllocatedQueueSize: 100,
427 me.PriorityQueue_DiscardBlockCounterResetInterval: 0,
428 me.PriorityQueue_ThresholdValueForDiscardedBlocksDueToBufferOverflow: 0,
429 me.PriorityQueue_RelatedPort: relatedPort.ToUint32(),
430 me.PriorityQueue_TrafficSchedulerPointer: tsEntityId.ToUint16(), //it was hardcoded to 0x0108 in the current implementation
431 me.PriorityQueue_Weight: 1,
432 me.PriorityQueue_BackPressureOperation: 1,
433 me.PriorityQueue_BackPressureTime: 0,
434 me.PriorityQueue_BackPressureOccurQueueThreshold: 0,
435 me.PriorityQueue_BackPressureClearQueueThreshold: 0,
Matteo Scandoloef4e8f82021-05-17 11:20:49 -0700436 },
437 })
438 }
439 }
440
441 // ONU-2g
442 mibDb.items = append(mibDb.items, MibDbEntry{
443 me.Onu2GClassID,
444 EntityID{0x00, 0x00},
445 me.AttributeValueMap{
Elia Battiston9bfe1102022-02-03 10:38:03 +0100446 me.Onu2G_ConnectivityCapability: 127,
447 me.Onu2G_CurrentConnectivityMode: 0,
448 me.Onu2G_Deprecated: 1,
449 me.Onu2G_PriorityQueueScaleFactor: 1,
450 me.Onu2G_QualityOfServiceQosConfigurationFlexibility: 63,
451 me.Onu2G_Sysuptime: 0,
452 me.Onu2G_TotalGemPortIdNumber: 8,
453 me.Onu2G_TotalPriorityQueueNumber: 64,
454 me.Onu2G_TotalTrafficSchedulerNumber: 8,
Matteo Scandoloef4e8f82021-05-17 11:20:49 -0700455 },
456 })
457
458 mibDb.NumberOfCommands = uint16(len(mibDb.items))
459
460 return &mibDb, nil
461}