blob: 262999fddb064d1a5e7225c46ba60654aabcdc06 [file] [log] [blame]
Shad Ansari2f7f9be2017-06-07 13:34:53 -07001#include <bcmos_system.h>
2#include "bal_model_funcs.h"
3
4/******************************************************************************/
5bcmos_bool bcmbal_access_terminal_cfg_id_pack(bcmbal_access_terminal_cfg_id this, bcmbal_buf *buf)
6{
7 return bcmbal_buf_write_u16(buf, (uint16_t) this);
8}
9
10/******************************************************************************/
11bcmos_bool bcmbal_access_terminal_cfg_id_unpack(bcmbal_access_terminal_cfg_id *this, bcmbal_buf *buf)
12{
13 uint16_t num_val;
14 if (!bcmbal_buf_read_u16(buf, &num_val))
15 {
16 return BCMOS_FALSE;
17 }
18
19 *this = num_val;
20 return BCMOS_TRUE;
21}
22
23/******************************************************************************/
24bcmos_bool bcmbal_access_terminal_ind_id_pack(bcmbal_access_terminal_ind_id this, bcmbal_buf *buf)
25{
26 return bcmbal_buf_write_u16(buf, (uint16_t) this);
27}
28
29/******************************************************************************/
30bcmos_bool bcmbal_access_terminal_ind_id_unpack(bcmbal_access_terminal_ind_id *this, bcmbal_buf *buf)
31{
32 uint16_t num_val;
33 if (!bcmbal_buf_read_u16(buf, &num_val))
34 {
35 return BCMOS_FALSE;
36 }
37
38 *this = num_val;
39 return BCMOS_TRUE;
40}
41
42/******************************************************************************/
43bcmos_bool bcmbal_access_terminal_key_id_pack(bcmbal_access_terminal_key_id this, bcmbal_buf *buf)
44{
45 return bcmbal_buf_write_u16(buf, (uint16_t) this);
46}
47
48/******************************************************************************/
49bcmos_bool bcmbal_access_terminal_key_id_unpack(bcmbal_access_terminal_key_id *this, bcmbal_buf *buf)
50{
51 uint16_t num_val;
52 if (!bcmbal_buf_read_u16(buf, &num_val))
53 {
54 return BCMOS_FALSE;
55 }
56
57 *this = num_val;
58 return BCMOS_TRUE;
59}
60
61/******************************************************************************/
62bcmos_bool bcmbal_action_id_pack(bcmbal_action_id this, bcmbal_buf *buf)
63{
64 return bcmbal_buf_write_u64(buf, (uint64_t) this);
65}
66
67/******************************************************************************/
68bcmos_bool bcmbal_action_id_unpack(bcmbal_action_id *this, bcmbal_buf *buf)
69{
70 uint64_t num_val;
71 if (!bcmbal_buf_read_u64(buf, &num_val))
72 {
73 return BCMOS_FALSE;
74 }
75
76 *this = num_val;
77 return BCMOS_TRUE;
78}
79
80/******************************************************************************/
81bcmos_bool bcmbal_action_cmd_id_pack(bcmbal_action_cmd_id this, bcmbal_buf *buf)
82{
83 return bcmbal_buf_write_u32(buf, (uint32_t) this);
84}
85
86/******************************************************************************/
87bcmos_bool bcmbal_action_cmd_id_unpack(bcmbal_action_cmd_id *this, bcmbal_buf *buf)
88{
89 uint32_t num_val;
90 if (!bcmbal_buf_read_u32(buf, &num_val))
91 {
92 return BCMOS_FALSE;
93 }
94
95 *this = num_val;
96 return BCMOS_TRUE;
97}
98
99/******************************************************************************/
100bcmos_bool bcmbal_classifier_id_pack(bcmbal_classifier_id this, bcmbal_buf *buf)
101{
102 return bcmbal_buf_write_u64(buf, (uint64_t) this);
103}
104
105/******************************************************************************/
106bcmos_bool bcmbal_classifier_id_unpack(bcmbal_classifier_id *this, bcmbal_buf *buf)
107{
108 uint64_t num_val;
109 if (!bcmbal_buf_read_u64(buf, &num_val))
110 {
111 return BCMOS_FALSE;
112 }
113
114 *this = num_val;
115 return BCMOS_TRUE;
116}
117
118/******************************************************************************/
119bcmos_bool bcmbal_pkt_tag_type_pack(bcmbal_pkt_tag_type this, bcmbal_buf *buf)
120{
121 return bcmbal_buf_write_u32(buf, (uint32_t) this);
122}
123
124/******************************************************************************/
125bcmos_bool bcmbal_pkt_tag_type_unpack(bcmbal_pkt_tag_type *this, bcmbal_buf *buf)
126{
127 uint32_t num_val;
128 if (!bcmbal_buf_read_u32(buf, &num_val))
129 {
130 return BCMOS_FALSE;
131 }
132
133 *this = num_val;
134 return BCMOS_TRUE;
135}
136
137/******************************************************************************/
138bcmos_bool bcmbal_control_pack(bcmbal_control this, bcmbal_buf *buf)
139{
140 return bcmbal_buf_write_u32(buf, (uint32_t) this);
141}
142
143/******************************************************************************/
144bcmos_bool bcmbal_control_unpack(bcmbal_control *this, bcmbal_buf *buf)
145{
146 uint32_t num_val;
147 if (!bcmbal_buf_read_u32(buf, &num_val))
148 {
149 return BCMOS_FALSE;
150 }
151
152 *this = num_val;
153 return BCMOS_TRUE;
154}
155
156/******************************************************************************/
157bcmos_bool bcmbal_dest_type_pack(bcmbal_dest_type this, bcmbal_buf *buf)
158{
159 return bcmbal_buf_write_u32(buf, (uint32_t) this);
160}
161
162/******************************************************************************/
163bcmos_bool bcmbal_dest_type_unpack(bcmbal_dest_type *this, bcmbal_buf *buf)
164{
165 uint32_t num_val;
166 if (!bcmbal_buf_read_u32(buf, &num_val))
167 {
168 return BCMOS_FALSE;
169 }
170
171 *this = num_val;
172 return BCMOS_TRUE;
173}
174
175/******************************************************************************/
176bcmos_bool bcmbal_ds_miss_mode_pack(bcmbal_ds_miss_mode this, bcmbal_buf *buf)
177{
178 return bcmbal_buf_write_u32(buf, (uint32_t) this);
179}
180
181/******************************************************************************/
182bcmos_bool bcmbal_ds_miss_mode_unpack(bcmbal_ds_miss_mode *this, bcmbal_buf *buf)
183{
184 uint32_t num_val;
185 if (!bcmbal_buf_read_u32(buf, &num_val))
186 {
187 return BCMOS_FALSE;
188 }
189
190 *this = num_val;
191 return BCMOS_TRUE;
192}
193
194/******************************************************************************/
195bcmos_bool bcmbal_extra_bw_eligibility_type_pack(bcmbal_extra_bw_eligibility_type this, bcmbal_buf *buf)
196{
197 return bcmbal_buf_write_u8(buf, (uint8_t) this);
198}
199
200/******************************************************************************/
201bcmos_bool bcmbal_extra_bw_eligibility_type_unpack(bcmbal_extra_bw_eligibility_type *this, bcmbal_buf *buf)
202{
203 uint8_t num_val;
204 if (!bcmbal_buf_read_u8(buf, &num_val))
205 {
206 return BCMOS_FALSE;
207 }
208
209 *this = num_val;
210 return BCMOS_TRUE;
211}
212
213/******************************************************************************/
214bcmos_bool bcmbal_flow_cfg_id_pack(bcmbal_flow_cfg_id this, bcmbal_buf *buf)
215{
216 return bcmbal_buf_write_u16(buf, (uint16_t) this);
217}
218
219/******************************************************************************/
220bcmos_bool bcmbal_flow_cfg_id_unpack(bcmbal_flow_cfg_id *this, bcmbal_buf *buf)
221{
222 uint16_t num_val;
223 if (!bcmbal_buf_read_u16(buf, &num_val))
224 {
225 return BCMOS_FALSE;
226 }
227
228 *this = num_val;
229 return BCMOS_TRUE;
230}
231
232/******************************************************************************/
233bcmos_bool bcmbal_flow_ind_id_pack(bcmbal_flow_ind_id this, bcmbal_buf *buf)
234{
235 return bcmbal_buf_write_u16(buf, (uint16_t) this);
236}
237
238/******************************************************************************/
239bcmos_bool bcmbal_flow_ind_id_unpack(bcmbal_flow_ind_id *this, bcmbal_buf *buf)
240{
241 uint16_t num_val;
242 if (!bcmbal_buf_read_u16(buf, &num_val))
243 {
244 return BCMOS_FALSE;
245 }
246
247 *this = num_val;
248 return BCMOS_TRUE;
249}
250
251/******************************************************************************/
252bcmos_bool bcmbal_flow_key_id_pack(bcmbal_flow_key_id this, bcmbal_buf *buf)
253{
254 return bcmbal_buf_write_u16(buf, (uint16_t) this);
255}
256
257/******************************************************************************/
258bcmos_bool bcmbal_flow_key_id_unpack(bcmbal_flow_key_id *this, bcmbal_buf *buf)
259{
260 uint16_t num_val;
261 if (!bcmbal_buf_read_u16(buf, &num_val))
262 {
263 return BCMOS_FALSE;
264 }
265
266 *this = num_val;
267 return BCMOS_TRUE;
268}
269
270/******************************************************************************/
271bcmos_bool bcmbal_flow_stat_id_pack(bcmbal_flow_stat_id this, bcmbal_buf *buf)
272{
273 return bcmbal_buf_write_u16(buf, (uint16_t) this);
274}
275
276/******************************************************************************/
277bcmos_bool bcmbal_flow_stat_id_unpack(bcmbal_flow_stat_id *this, bcmbal_buf *buf)
278{
279 uint16_t num_val;
280 if (!bcmbal_buf_read_u16(buf, &num_val))
281 {
282 return BCMOS_FALSE;
283 }
284
285 *this = num_val;
286 return BCMOS_TRUE;
287}
288
289/******************************************************************************/
290bcmos_bool bcmbal_flow_type_pack(bcmbal_flow_type this, bcmbal_buf *buf)
291{
292 return bcmbal_buf_write_u32(buf, (uint32_t) this);
293}
294
295/******************************************************************************/
296bcmos_bool bcmbal_flow_type_unpack(bcmbal_flow_type *this, bcmbal_buf *buf)
297{
298 uint32_t num_val;
299 if (!bcmbal_buf_read_u32(buf, &num_val))
300 {
301 return BCMOS_FALSE;
302 }
303
304 *this = num_val;
305 return BCMOS_TRUE;
306}
307
308/******************************************************************************/
309bcmos_bool bcmbal_group_cfg_id_pack(bcmbal_group_cfg_id this, bcmbal_buf *buf)
310{
311 return bcmbal_buf_write_u16(buf, (uint16_t) this);
312}
313
314/******************************************************************************/
315bcmos_bool bcmbal_group_cfg_id_unpack(bcmbal_group_cfg_id *this, bcmbal_buf *buf)
316{
317 uint16_t num_val;
318 if (!bcmbal_buf_read_u16(buf, &num_val))
319 {
320 return BCMOS_FALSE;
321 }
322
323 *this = num_val;
324 return BCMOS_TRUE;
325}
326
327/******************************************************************************/
328bcmos_bool bcmbal_group_key_id_pack(bcmbal_group_key_id this, bcmbal_buf *buf)
329{
330 return bcmbal_buf_write_u16(buf, (uint16_t) this);
331}
332
333/******************************************************************************/
334bcmos_bool bcmbal_group_key_id_unpack(bcmbal_group_key_id *this, bcmbal_buf *buf)
335{
336 uint16_t num_val;
337 if (!bcmbal_buf_read_u16(buf, &num_val))
338 {
339 return BCMOS_FALSE;
340 }
341
342 *this = num_val;
343 return BCMOS_TRUE;
344}
345
346/******************************************************************************/
347bcmos_bool bcmbal_group_member_cmd_pack(bcmbal_group_member_cmd this, bcmbal_buf *buf)
348{
349 return bcmbal_buf_write_u32(buf, (uint32_t) this);
350}
351
352/******************************************************************************/
353bcmos_bool bcmbal_group_member_cmd_unpack(bcmbal_group_member_cmd *this, bcmbal_buf *buf)
354{
355 uint32_t num_val;
356 if (!bcmbal_buf_read_u32(buf, &num_val))
357 {
358 return BCMOS_FALSE;
359 }
360
361 *this = num_val;
362 return BCMOS_TRUE;
363}
364
365/******************************************************************************/
366bcmos_bool bcmbal_group_owner_pack(bcmbal_group_owner this, bcmbal_buf *buf)
367{
368 return bcmbal_buf_write_u8(buf, (uint8_t) this);
369}
370
371/******************************************************************************/
372bcmos_bool bcmbal_group_owner_unpack(bcmbal_group_owner *this, bcmbal_buf *buf)
373{
374 uint8_t num_val;
375 if (!bcmbal_buf_read_u8(buf, &num_val))
376 {
377 return BCMOS_FALSE;
378 }
379
380 *this = num_val;
381 return BCMOS_TRUE;
382}
383
384/******************************************************************************/
385bcmos_bool bcmbal_interface_cfg_id_pack(bcmbal_interface_cfg_id this, bcmbal_buf *buf)
386{
387 return bcmbal_buf_write_u16(buf, (uint16_t) this);
388}
389
390/******************************************************************************/
391bcmos_bool bcmbal_interface_cfg_id_unpack(bcmbal_interface_cfg_id *this, bcmbal_buf *buf)
392{
393 uint16_t num_val;
394 if (!bcmbal_buf_read_u16(buf, &num_val))
395 {
396 return BCMOS_FALSE;
397 }
398
399 *this = num_val;
400 return BCMOS_TRUE;
401}
402
403/******************************************************************************/
404bcmos_bool bcmbal_interface_ind_id_pack(bcmbal_interface_ind_id this, bcmbal_buf *buf)
405{
406 return bcmbal_buf_write_u16(buf, (uint16_t) this);
407}
408
409/******************************************************************************/
410bcmos_bool bcmbal_interface_ind_id_unpack(bcmbal_interface_ind_id *this, bcmbal_buf *buf)
411{
412 uint16_t num_val;
413 if (!bcmbal_buf_read_u16(buf, &num_val))
414 {
415 return BCMOS_FALSE;
416 }
417
418 *this = num_val;
419 return BCMOS_TRUE;
420}
421
422/******************************************************************************/
423bcmos_bool bcmbal_interface_key_id_pack(bcmbal_interface_key_id this, bcmbal_buf *buf)
424{
425 return bcmbal_buf_write_u16(buf, (uint16_t) this);
426}
427
428/******************************************************************************/
429bcmos_bool bcmbal_interface_key_id_unpack(bcmbal_interface_key_id *this, bcmbal_buf *buf)
430{
431 uint16_t num_val;
432 if (!bcmbal_buf_read_u16(buf, &num_val))
433 {
434 return BCMOS_FALSE;
435 }
436
437 *this = num_val;
438 return BCMOS_TRUE;
439}
440
441/******************************************************************************/
442bcmos_bool bcmbal_interface_stat_id_pack(bcmbal_interface_stat_id this, bcmbal_buf *buf)
443{
444 return bcmbal_buf_write_u16(buf, (uint16_t) this);
445}
446
447/******************************************************************************/
448bcmos_bool bcmbal_interface_stat_id_unpack(bcmbal_interface_stat_id *this, bcmbal_buf *buf)
449{
450 uint16_t num_val;
451 if (!bcmbal_buf_read_u16(buf, &num_val))
452 {
453 return BCMOS_FALSE;
454 }
455
456 *this = num_val;
457 return BCMOS_TRUE;
458}
459
460/******************************************************************************/
461bcmos_bool bcmbal_intf_type_pack(bcmbal_intf_type this, bcmbal_buf *buf)
462{
463 return bcmbal_buf_write_u32(buf, (uint32_t) this);
464}
465
466/******************************************************************************/
467bcmos_bool bcmbal_intf_type_unpack(bcmbal_intf_type *this, bcmbal_buf *buf)
468{
469 uint32_t num_val;
470 if (!bcmbal_buf_read_u32(buf, &num_val))
471 {
472 return BCMOS_FALSE;
473 }
474
475 *this = num_val;
476 return BCMOS_TRUE;
477}
478
479/******************************************************************************/
480bcmos_bool bcmbal_iwf_mode_pack(bcmbal_iwf_mode this, bcmbal_buf *buf)
481{
482 return bcmbal_buf_write_u32(buf, (uint32_t) this);
483}
484
485/******************************************************************************/
486bcmos_bool bcmbal_iwf_mode_unpack(bcmbal_iwf_mode *this, bcmbal_buf *buf)
487{
488 uint32_t num_val;
489 if (!bcmbal_buf_read_u32(buf, &num_val))
490 {
491 return BCMOS_FALSE;
492 }
493
494 *this = num_val;
495 return BCMOS_TRUE;
496}
497
498/******************************************************************************/
499bcmos_bool bcmbal_packet_cfg_id_pack(bcmbal_packet_cfg_id this, bcmbal_buf *buf)
500{
501 return bcmbal_buf_write_u16(buf, (uint16_t) this);
502}
503
504/******************************************************************************/
505bcmos_bool bcmbal_packet_cfg_id_unpack(bcmbal_packet_cfg_id *this, bcmbal_buf *buf)
506{
507 uint16_t num_val;
508 if (!bcmbal_buf_read_u16(buf, &num_val))
509 {
510 return BCMOS_FALSE;
511 }
512
513 *this = num_val;
514 return BCMOS_TRUE;
515}
516
517/******************************************************************************/
518bcmos_bool bcmbal_packet_ind_id_pack(bcmbal_packet_ind_id this, bcmbal_buf *buf)
519{
520 return bcmbal_buf_write_u16(buf, (uint16_t) this);
521}
522
523/******************************************************************************/
524bcmos_bool bcmbal_packet_ind_id_unpack(bcmbal_packet_ind_id *this, bcmbal_buf *buf)
525{
526 uint16_t num_val;
527 if (!bcmbal_buf_read_u16(buf, &num_val))
528 {
529 return BCMOS_FALSE;
530 }
531
532 *this = num_val;
533 return BCMOS_TRUE;
534}
535
536/******************************************************************************/
537bcmos_bool bcmbal_packet_key_id_pack(bcmbal_packet_key_id this, bcmbal_buf *buf)
538{
539 return bcmbal_buf_write_u16(buf, (uint16_t) this);
540}
541
542/******************************************************************************/
543bcmos_bool bcmbal_packet_key_id_unpack(bcmbal_packet_key_id *this, bcmbal_buf *buf)
544{
545 uint16_t num_val;
546 if (!bcmbal_buf_read_u16(buf, &num_val))
547 {
548 return BCMOS_FALSE;
549 }
550
551 *this = num_val;
552 return BCMOS_TRUE;
553}
554
555/******************************************************************************/
556bcmos_bool bcmbal_sla_id_pack(bcmbal_sla_id this, bcmbal_buf *buf)
557{
558 return bcmbal_buf_write_u64(buf, (uint64_t) this);
559}
560
561/******************************************************************************/
562bcmos_bool bcmbal_sla_id_unpack(bcmbal_sla_id *this, bcmbal_buf *buf)
563{
564 uint64_t num_val;
565 if (!bcmbal_buf_read_u64(buf, &num_val))
566 {
567 return BCMOS_FALSE;
568 }
569
570 *this = num_val;
571 return BCMOS_TRUE;
572}
573
574/******************************************************************************/
575bcmos_bool bcmbal_state_pack(bcmbal_state this, bcmbal_buf *buf)
576{
577 return bcmbal_buf_write_u32(buf, (uint32_t) this);
578}
579
580/******************************************************************************/
581bcmos_bool bcmbal_state_unpack(bcmbal_state *this, bcmbal_buf *buf)
582{
583 uint32_t num_val;
584 if (!bcmbal_buf_read_u32(buf, &num_val))
585 {
586 return BCMOS_FALSE;
587 }
588
589 *this = num_val;
590 return BCMOS_TRUE;
591}
592
593/******************************************************************************/
594bcmos_bool bcmbal_status_pack(bcmbal_status this, bcmbal_buf *buf)
595{
596 return bcmbal_buf_write_u32(buf, (uint32_t) this);
597}
598
599/******************************************************************************/
600bcmos_bool bcmbal_status_unpack(bcmbal_status *this, bcmbal_buf *buf)
601{
602 uint32_t num_val;
603 if (!bcmbal_buf_read_u32(buf, &num_val))
604 {
605 return BCMOS_FALSE;
606 }
607
608 *this = num_val;
609 return BCMOS_TRUE;
610}
611
612/******************************************************************************/
613bcmos_bool bcmbal_subscriber_terminal_cfg_id_pack(bcmbal_subscriber_terminal_cfg_id this, bcmbal_buf *buf)
614{
615 return bcmbal_buf_write_u16(buf, (uint16_t) this);
616}
617
618/******************************************************************************/
619bcmos_bool bcmbal_subscriber_terminal_cfg_id_unpack(bcmbal_subscriber_terminal_cfg_id *this, bcmbal_buf *buf)
620{
621 uint16_t num_val;
622 if (!bcmbal_buf_read_u16(buf, &num_val))
623 {
624 return BCMOS_FALSE;
625 }
626
627 *this = num_val;
628 return BCMOS_TRUE;
629}
630
631/******************************************************************************/
632bcmos_bool bcmbal_subscriber_terminal_ind_id_pack(bcmbal_subscriber_terminal_ind_id this, bcmbal_buf *buf)
633{
634 return bcmbal_buf_write_u16(buf, (uint16_t) this);
635}
636
637/******************************************************************************/
638bcmos_bool bcmbal_subscriber_terminal_ind_id_unpack(bcmbal_subscriber_terminal_ind_id *this, bcmbal_buf *buf)
639{
640 uint16_t num_val;
641 if (!bcmbal_buf_read_u16(buf, &num_val))
642 {
643 return BCMOS_FALSE;
644 }
645
646 *this = num_val;
647 return BCMOS_TRUE;
648}
649
650/******************************************************************************/
651bcmos_bool bcmbal_subscriber_terminal_key_id_pack(bcmbal_subscriber_terminal_key_id this, bcmbal_buf *buf)
652{
653 return bcmbal_buf_write_u16(buf, (uint16_t) this);
654}
655
656/******************************************************************************/
657bcmos_bool bcmbal_subscriber_terminal_key_id_unpack(bcmbal_subscriber_terminal_key_id *this, bcmbal_buf *buf)
658{
659 uint16_t num_val;
660 if (!bcmbal_buf_read_u16(buf, &num_val))
661 {
662 return BCMOS_FALSE;
663 }
664
665 *this = num_val;
666 return BCMOS_TRUE;
667}
668
669/******************************************************************************/
670bcmos_bool bcmbal_subscriber_terminal_stat_id_pack(bcmbal_subscriber_terminal_stat_id this, bcmbal_buf *buf)
671{
672 return bcmbal_buf_write_u16(buf, (uint16_t) this);
673}
674
675/******************************************************************************/
676bcmos_bool bcmbal_subscriber_terminal_stat_id_unpack(bcmbal_subscriber_terminal_stat_id *this, bcmbal_buf *buf)
677{
678 uint16_t num_val;
679 if (!bcmbal_buf_read_u16(buf, &num_val))
680 {
681 return BCMOS_FALSE;
682 }
683
684 *this = num_val;
685 return BCMOS_TRUE;
686}
687
688/******************************************************************************/
689bcmos_bool bcmbal_tm_bac_type_pack(bcmbal_tm_bac_type this, bcmbal_buf *buf)
690{
691 return bcmbal_buf_write_u8(buf, (uint8_t) this);
692}
693
694/******************************************************************************/
695bcmos_bool bcmbal_tm_bac_type_unpack(bcmbal_tm_bac_type *this, bcmbal_buf *buf)
696{
697 uint8_t num_val;
698 if (!bcmbal_buf_read_u8(buf, &num_val))
699 {
700 return BCMOS_FALSE;
701 }
702
703 *this = num_val;
704 return BCMOS_TRUE;
705}
706
707/******************************************************************************/
708bcmos_bool bcmbal_tm_creation_mode_pack(bcmbal_tm_creation_mode this, bcmbal_buf *buf)
709{
710 return bcmbal_buf_write_u8(buf, (uint8_t) this);
711}
712
713/******************************************************************************/
714bcmos_bool bcmbal_tm_creation_mode_unpack(bcmbal_tm_creation_mode *this, bcmbal_buf *buf)
715{
716 uint8_t num_val;
717 if (!bcmbal_buf_read_u8(buf, &num_val))
718 {
719 return BCMOS_FALSE;
720 }
721
722 *this = num_val;
723 return BCMOS_TRUE;
724}
725
726/******************************************************************************/
727bcmos_bool bcmbal_tm_queue_cfg_id_pack(bcmbal_tm_queue_cfg_id this, bcmbal_buf *buf)
728{
729 return bcmbal_buf_write_u16(buf, (uint16_t) this);
730}
731
732/******************************************************************************/
733bcmos_bool bcmbal_tm_queue_cfg_id_unpack(bcmbal_tm_queue_cfg_id *this, bcmbal_buf *buf)
734{
735 uint16_t num_val;
736 if (!bcmbal_buf_read_u16(buf, &num_val))
737 {
738 return BCMOS_FALSE;
739 }
740
741 *this = num_val;
742 return BCMOS_TRUE;
743}
744
745/******************************************************************************/
746bcmos_bool bcmbal_tm_queue_ind_id_pack(bcmbal_tm_queue_ind_id this, bcmbal_buf *buf)
747{
748 return bcmbal_buf_write_u16(buf, (uint16_t) this);
749}
750
751/******************************************************************************/
752bcmos_bool bcmbal_tm_queue_ind_id_unpack(bcmbal_tm_queue_ind_id *this, bcmbal_buf *buf)
753{
754 uint16_t num_val;
755 if (!bcmbal_buf_read_u16(buf, &num_val))
756 {
757 return BCMOS_FALSE;
758 }
759
760 *this = num_val;
761 return BCMOS_TRUE;
762}
763
764/******************************************************************************/
765bcmos_bool bcmbal_tm_queue_key_id_pack(bcmbal_tm_queue_key_id this, bcmbal_buf *buf)
766{
767 return bcmbal_buf_write_u16(buf, (uint16_t) this);
768}
769
770/******************************************************************************/
771bcmos_bool bcmbal_tm_queue_key_id_unpack(bcmbal_tm_queue_key_id *this, bcmbal_buf *buf)
772{
773 uint16_t num_val;
774 if (!bcmbal_buf_read_u16(buf, &num_val))
775 {
776 return BCMOS_FALSE;
777 }
778
779 *this = num_val;
780 return BCMOS_TRUE;
781}
782
783/******************************************************************************/
784bcmos_bool bcmbal_tm_queue_stat_id_pack(bcmbal_tm_queue_stat_id this, bcmbal_buf *buf)
785{
786 return bcmbal_buf_write_u16(buf, (uint16_t) this);
787}
788
789/******************************************************************************/
790bcmos_bool bcmbal_tm_queue_stat_id_unpack(bcmbal_tm_queue_stat_id *this, bcmbal_buf *buf)
791{
792 uint16_t num_val;
793 if (!bcmbal_buf_read_u16(buf, &num_val))
794 {
795 return BCMOS_FALSE;
796 }
797
798 *this = num_val;
799 return BCMOS_TRUE;
800}
801
802/******************************************************************************/
803bcmos_bool bcmbal_tm_sched_cfg_id_pack(bcmbal_tm_sched_cfg_id this, bcmbal_buf *buf)
804{
805 return bcmbal_buf_write_u16(buf, (uint16_t) this);
806}
807
808/******************************************************************************/
809bcmos_bool bcmbal_tm_sched_cfg_id_unpack(bcmbal_tm_sched_cfg_id *this, bcmbal_buf *buf)
810{
811 uint16_t num_val;
812 if (!bcmbal_buf_read_u16(buf, &num_val))
813 {
814 return BCMOS_FALSE;
815 }
816
817 *this = num_val;
818 return BCMOS_TRUE;
819}
820
821/******************************************************************************/
822bcmos_bool bcmbal_tm_sched_child_type_pack(bcmbal_tm_sched_child_type this, bcmbal_buf *buf)
823{
824 return bcmbal_buf_write_u8(buf, (uint8_t) this);
825}
826
827/******************************************************************************/
828bcmos_bool bcmbal_tm_sched_child_type_unpack(bcmbal_tm_sched_child_type *this, bcmbal_buf *buf)
829{
830 uint8_t num_val;
831 if (!bcmbal_buf_read_u8(buf, &num_val))
832 {
833 return BCMOS_FALSE;
834 }
835
836 *this = num_val;
837 return BCMOS_TRUE;
838}
839
840/******************************************************************************/
841bcmos_bool bcmbal_tm_sched_dir_pack(bcmbal_tm_sched_dir this, bcmbal_buf *buf)
842{
843 return bcmbal_buf_write_u8(buf, (uint8_t) this);
844}
845
846/******************************************************************************/
847bcmos_bool bcmbal_tm_sched_dir_unpack(bcmbal_tm_sched_dir *this, bcmbal_buf *buf)
848{
849 uint8_t num_val;
850 if (!bcmbal_buf_read_u8(buf, &num_val))
851 {
852 return BCMOS_FALSE;
853 }
854
855 *this = num_val;
856 return BCMOS_TRUE;
857}
858
859/******************************************************************************/
860bcmos_bool bcmbal_tm_sched_ind_id_pack(bcmbal_tm_sched_ind_id this, bcmbal_buf *buf)
861{
862 return bcmbal_buf_write_u16(buf, (uint16_t) this);
863}
864
865/******************************************************************************/
866bcmos_bool bcmbal_tm_sched_ind_id_unpack(bcmbal_tm_sched_ind_id *this, bcmbal_buf *buf)
867{
868 uint16_t num_val;
869 if (!bcmbal_buf_read_u16(buf, &num_val))
870 {
871 return BCMOS_FALSE;
872 }
873
874 *this = num_val;
875 return BCMOS_TRUE;
876}
877
878/******************************************************************************/
879bcmos_bool bcmbal_tm_sched_key_id_pack(bcmbal_tm_sched_key_id this, bcmbal_buf *buf)
880{
881 return bcmbal_buf_write_u16(buf, (uint16_t) this);
882}
883
884/******************************************************************************/
885bcmos_bool bcmbal_tm_sched_key_id_unpack(bcmbal_tm_sched_key_id *this, bcmbal_buf *buf)
886{
887 uint16_t num_val;
888 if (!bcmbal_buf_read_u16(buf, &num_val))
889 {
890 return BCMOS_FALSE;
891 }
892
893 *this = num_val;
894 return BCMOS_TRUE;
895}
896
897/******************************************************************************/
898bcmos_bool bcmbal_tm_sched_owner_type_pack(bcmbal_tm_sched_owner_type this, bcmbal_buf *buf)
899{
900 return bcmbal_buf_write_u8(buf, (uint8_t) this);
901}
902
903/******************************************************************************/
904bcmos_bool bcmbal_tm_sched_owner_type_unpack(bcmbal_tm_sched_owner_type *this, bcmbal_buf *buf)
905{
906 uint8_t num_val;
907 if (!bcmbal_buf_read_u8(buf, &num_val))
908 {
909 return BCMOS_FALSE;
910 }
911
912 *this = num_val;
913 return BCMOS_TRUE;
914}
915
916/******************************************************************************/
917bcmos_bool bcmbal_tm_sched_owner_agg_port_id_pack(bcmbal_tm_sched_owner_agg_port_id this, bcmbal_buf *buf)
918{
919 return bcmbal_buf_write_u64(buf, (uint64_t) this);
920}
921
922/******************************************************************************/
923bcmos_bool bcmbal_tm_sched_owner_agg_port_id_unpack(bcmbal_tm_sched_owner_agg_port_id *this, bcmbal_buf *buf)
924{
925 uint64_t num_val;
926 if (!bcmbal_buf_read_u64(buf, &num_val))
927 {
928 return BCMOS_FALSE;
929 }
930
931 *this = num_val;
932 return BCMOS_TRUE;
933}
934
935/******************************************************************************/
936bcmos_bool bcmbal_tm_sched_parent_id_pack(bcmbal_tm_sched_parent_id this, bcmbal_buf *buf)
937{
938 return bcmbal_buf_write_u64(buf, (uint64_t) this);
939}
940
941/******************************************************************************/
942bcmos_bool bcmbal_tm_sched_parent_id_unpack(bcmbal_tm_sched_parent_id *this, bcmbal_buf *buf)
943{
944 uint64_t num_val;
945 if (!bcmbal_buf_read_u64(buf, &num_val))
946 {
947 return BCMOS_FALSE;
948 }
949
950 *this = num_val;
951 return BCMOS_TRUE;
952}
953
954/******************************************************************************/
955bcmos_bool bcmbal_tm_sched_type_pack(bcmbal_tm_sched_type this, bcmbal_buf *buf)
956{
957 return bcmbal_buf_write_u8(buf, (uint8_t) this);
958}
959
960/******************************************************************************/
961bcmos_bool bcmbal_tm_sched_type_unpack(bcmbal_tm_sched_type *this, bcmbal_buf *buf)
962{
963 uint8_t num_val;
964 if (!bcmbal_buf_read_u8(buf, &num_val))
965 {
966 return BCMOS_FALSE;
967 }
968
969 *this = num_val;
970 return BCMOS_TRUE;
971}
972
973/******************************************************************************/
974bcmos_bool bcmbal_tm_shaping_id_pack(bcmbal_tm_shaping_id this, bcmbal_buf *buf)
975{
976 return bcmbal_buf_write_u64(buf, (uint64_t) this);
977}
978
979/******************************************************************************/
980bcmos_bool bcmbal_tm_shaping_id_unpack(bcmbal_tm_shaping_id *this, bcmbal_buf *buf)
981{
982 uint64_t num_val;
983 if (!bcmbal_buf_read_u64(buf, &num_val))
984 {
985 return BCMOS_FALSE;
986 }
987
988 *this = num_val;
989 return BCMOS_TRUE;
990}
991
992/******************************************************************************/
993bcmos_bool bcmbal_tm_tcont_sla_id_pack(bcmbal_tm_tcont_sla_id this, bcmbal_buf *buf)
994{
995 return bcmbal_buf_write_u64(buf, (uint64_t) this);
996}
997
998/******************************************************************************/
999bcmos_bool bcmbal_tm_tcont_sla_id_unpack(bcmbal_tm_tcont_sla_id *this, bcmbal_buf *buf)
1000{
1001 uint64_t num_val;
1002 if (!bcmbal_buf_read_u64(buf, &num_val))
1003 {
1004 return BCMOS_FALSE;
1005 }
1006
1007 *this = num_val;
1008 return BCMOS_TRUE;
1009}
1010
1011/******************************************************************************/
1012bcmos_bool bcmbal_trx_type_pack(bcmbal_trx_type this, bcmbal_buf *buf)
1013{
1014 return bcmbal_buf_write_u32(buf, (uint32_t) this);
1015}
1016
1017/******************************************************************************/
1018bcmos_bool bcmbal_trx_type_unpack(bcmbal_trx_type *this, bcmbal_buf *buf)
1019{
1020 uint32_t num_val;
1021 if (!bcmbal_buf_read_u32(buf, &num_val))
1022 {
1023 return BCMOS_FALSE;
1024 }
1025
1026 *this = num_val;
1027 return BCMOS_TRUE;
1028}
1029
1030/******************************************************************************/
1031void bcmbal_action_set_default(bcmbal_action *this)
1032{
1033 this->presence_mask = (bcmbal_action_id) 0;
1034 this->cmds_bitmask = (bcmbal_action_cmd_id) 0;
1035 this->o_vid = 0;
1036 this->o_pbits = 0;
1037 this->o_tpid = 0;
1038 this->i_vid = 0;
1039 this->i_pbits = 0;
1040 this->i_tpid = 0;
1041}
1042
1043/******************************************************************************/
1044bcmos_bool bcmbal_action_pack(const bcmbal_action *this, bcmbal_buf *buf)
1045{
1046 if (!bcmbal_action_id_pack(this->presence_mask, buf))
1047 {
1048 return BCMOS_FALSE;
1049 }
1050
1051 if ((((uint64_t) this->presence_mask & 0x0001) == 0x0001))
1052 {
1053 if (!bcmbal_action_cmd_id_pack(this->cmds_bitmask, buf))
1054 {
1055 return BCMOS_FALSE;
1056 }
1057 }
1058
1059 if ((((uint64_t) this->presence_mask & 0x0002) == 0x0002))
1060 {
1061 if (!bcmbal_buf_write_u16(buf, this->o_vid))
1062 {
1063 return BCMOS_FALSE;
1064 }
1065 }
1066
1067 if ((((uint64_t) this->presence_mask & 0x0004) == 0x0004))
1068 {
1069 if (!bcmbal_buf_write_u8(buf, this->o_pbits))
1070 {
1071 return BCMOS_FALSE;
1072 }
1073 }
1074
1075 if ((((uint64_t) this->presence_mask & 0x0008) == 0x0008))
1076 {
1077 if (!bcmbal_buf_write_u16(buf, this->o_tpid))
1078 {
1079 return BCMOS_FALSE;
1080 }
1081 }
1082
1083 if ((((uint64_t) this->presence_mask & 0x0010) == 0x0010))
1084 {
1085 if (!bcmbal_buf_write_u16(buf, this->i_vid))
1086 {
1087 return BCMOS_FALSE;
1088 }
1089 }
1090
1091 if ((((uint64_t) this->presence_mask & 0x0020) == 0x0020))
1092 {
1093 if (!bcmbal_buf_write_u8(buf, this->i_pbits))
1094 {
1095 return BCMOS_FALSE;
1096 }
1097 }
1098
1099 if ((((uint64_t) this->presence_mask & 0x0040) == 0x0040))
1100 {
1101 if (!bcmbal_buf_write_u16(buf, this->i_tpid))
1102 {
1103 return BCMOS_FALSE;
1104 }
1105 }
1106
1107 return BCMOS_TRUE;
1108}
1109
1110/******************************************************************************/
1111uint32_t bcmbal_action_get_packed_length(const bcmbal_action *this)
1112{
1113 uint32_t count = 8;
1114 if ((((uint64_t) this->presence_mask & 0x0001) == 0x0001))
1115 {
1116 count += 4;
1117 }
1118
1119 if ((((uint64_t) this->presence_mask & 0x0002) == 0x0002))
1120 {
1121 count += 2;
1122 }
1123
1124 if ((((uint64_t) this->presence_mask & 0x0004) == 0x0004))
1125 {
1126 count += 1;
1127 }
1128
1129 if ((((uint64_t) this->presence_mask & 0x0008) == 0x0008))
1130 {
1131 count += 2;
1132 }
1133
1134 if ((((uint64_t) this->presence_mask & 0x0010) == 0x0010))
1135 {
1136 count += 2;
1137 }
1138
1139 if ((((uint64_t) this->presence_mask & 0x0020) == 0x0020))
1140 {
1141 count += 1;
1142 }
1143
1144 if ((((uint64_t) this->presence_mask & 0x0040) == 0x0040))
1145 {
1146 count += 2;
1147 }
1148
1149 return count;
1150}
1151
1152/******************************************************************************/
1153bcmos_bool bcmbal_action_unpack(bcmbal_action *this, bcmbal_buf *buf, void **extra_mem)
1154{
1155 if (!bcmbal_action_id_unpack(&this->presence_mask, buf))
1156 {
1157 return BCMOS_FALSE;
1158 }
1159
1160 if ((((uint64_t) this->presence_mask & 0x0001) == 0x0001))
1161 {
1162 if (!bcmbal_action_cmd_id_unpack(&this->cmds_bitmask, buf))
1163 {
1164 return BCMOS_FALSE;
1165 }
1166 }
1167
1168 if ((((uint64_t) this->presence_mask & 0x0002) == 0x0002))
1169 {
1170 if (!bcmbal_buf_read_u16(buf, &this->o_vid))
1171 {
1172 return BCMOS_FALSE;
1173 }
1174 }
1175
1176 if ((((uint64_t) this->presence_mask & 0x0004) == 0x0004))
1177 {
1178 if (!bcmbal_buf_read_u8(buf, &this->o_pbits))
1179 {
1180 return BCMOS_FALSE;
1181 }
1182 }
1183
1184 if ((((uint64_t) this->presence_mask & 0x0008) == 0x0008))
1185 {
1186 if (!bcmbal_buf_read_u16(buf, &this->o_tpid))
1187 {
1188 return BCMOS_FALSE;
1189 }
1190 }
1191
1192 if ((((uint64_t) this->presence_mask & 0x0010) == 0x0010))
1193 {
1194 if (!bcmbal_buf_read_u16(buf, &this->i_vid))
1195 {
1196 return BCMOS_FALSE;
1197 }
1198 }
1199
1200 if ((((uint64_t) this->presence_mask & 0x0020) == 0x0020))
1201 {
1202 if (!bcmbal_buf_read_u8(buf, &this->i_pbits))
1203 {
1204 return BCMOS_FALSE;
1205 }
1206 }
1207
1208 if ((((uint64_t) this->presence_mask & 0x0040) == 0x0040))
1209 {
1210 if (!bcmbal_buf_read_u16(buf, &this->i_tpid))
1211 {
1212 return BCMOS_FALSE;
1213 }
1214 }
1215
1216 return BCMOS_TRUE;
1217}
1218
1219/******************************************************************************/
1220bcmos_bool bcmbal_action_scan(bcmbal_buf *packed, uint32_t *extra_mem)
1221{
1222 bcmbal_action_id presence_mask;
1223 if (!bcmbal_action_id_unpack(&presence_mask, packed))
1224 {
1225 return BCMOS_FALSE;
1226 }
1227
1228 if ((((uint64_t) presence_mask & 0x0001) == 0x0001))
1229 {
1230 if (!bcmbal_buf_skip(packed, 4))
1231 {
1232 return BCMOS_FALSE;
1233 }
1234 }
1235
1236 if ((((uint64_t) presence_mask & 0x0002) == 0x0002))
1237 {
1238 if (!bcmbal_buf_skip(packed, 2))
1239 {
1240 return BCMOS_FALSE;
1241 }
1242 }
1243
1244 if ((((uint64_t) presence_mask & 0x0004) == 0x0004))
1245 {
1246 if (!bcmbal_buf_skip(packed, 1))
1247 {
1248 return BCMOS_FALSE;
1249 }
1250 }
1251
1252 if ((((uint64_t) presence_mask & 0x0008) == 0x0008))
1253 {
1254 if (!bcmbal_buf_skip(packed, 2))
1255 {
1256 return BCMOS_FALSE;
1257 }
1258 }
1259
1260 if ((((uint64_t) presence_mask & 0x0010) == 0x0010))
1261 {
1262 if (!bcmbal_buf_skip(packed, 2))
1263 {
1264 return BCMOS_FALSE;
1265 }
1266 }
1267
1268 if ((((uint64_t) presence_mask & 0x0020) == 0x0020))
1269 {
1270 if (!bcmbal_buf_skip(packed, 1))
1271 {
1272 return BCMOS_FALSE;
1273 }
1274 }
1275
1276 if ((((uint64_t) presence_mask & 0x0040) == 0x0040))
1277 {
1278 if (!bcmbal_buf_skip(packed, 2))
1279 {
1280 return BCMOS_FALSE;
1281 }
1282 }
1283
1284 return BCMOS_TRUE;
1285}
1286
1287/******************************************************************************/
1288bcmos_bool bcmbal_action_bounds_check(const bcmbal_action *this)
1289{
1290 if ((this->presence_mask & 0xFFFFFFFFFFFFFF80ULL) != 0)
1291 {
1292 return BCMOS_FALSE;
1293 }
1294
1295 if ((((uint64_t) this->presence_mask & 0x0001) == 0x0001))
1296 {
1297 if ((this->cmds_bitmask & 0xFFFFE000UL) != 0)
1298 {
1299 return BCMOS_FALSE;
1300 }
1301 }
1302
1303 return BCMOS_TRUE;
1304}
1305
1306/******************************************************************************/
1307void bcmbal_aggregation_port_id_list_u8_set_default(bcmbal_aggregation_port_id_list_u8 *this)
1308{
1309 this->len = 0;
1310 this->val = NULL;
1311}
1312
1313/******************************************************************************/
1314bcmos_bool bcmbal_aggregation_port_id_list_u8_pack(const bcmbal_aggregation_port_id_list_u8 *this, bcmbal_buf *buf)
1315{
1316 uint8_t i0;
1317 if (!bcmbal_buf_write_u8(buf, this->len))
1318 {
1319 return BCMOS_FALSE;
1320 }
1321
1322 if ((this->len > 0) && (this->val == NULL))
1323 {
1324 bcmos_trace(BCMOS_TRACE_LEVEL_ERROR, "Error: list field \"val\" of struct \"bcmbal_aggregation_port_id_list_u8\" is uninitialized (NULL). You must allocate memory for this pointer before sending/receiving the message.\n");
1325 return BCMOS_FALSE;
1326 }
1327
1328 for (i0 = 0; i0 < this->len; i0++)
1329 {
1330 if (!bcmbal_buf_write_u16(buf, (uint16_t) this->val[i0]))
1331 {
1332 return BCMOS_FALSE;
1333 }
1334 }
1335
1336 return BCMOS_TRUE;
1337}
1338
1339/******************************************************************************/
1340uint32_t bcmbal_aggregation_port_id_list_u8_get_packed_length(const bcmbal_aggregation_port_id_list_u8 *this)
1341{
1342 return 1 + (2 * this->len);
1343}
1344
1345/******************************************************************************/
1346bcmos_bool bcmbal_aggregation_port_id_list_u8_unpack(bcmbal_aggregation_port_id_list_u8 *this, bcmbal_buf *buf, void **extra_mem)
1347{
1348 uint8_t i0;
1349 if (!bcmbal_buf_read_u8(buf, &this->len))
1350 {
1351 return BCMOS_FALSE;
1352 }
1353
1354 if ((this->len > 0) && (this->val == NULL))
1355 {
1356 if (extra_mem == NULL)
1357 {
1358 bcmos_trace(BCMOS_TRACE_LEVEL_ERROR, "Error: list field \"val\" of struct \"bcmbal_aggregation_port_id_list_u8\" is uninitialized (NULL). You must allocate memory for this pointer before sending/receiving the message.\n");
1359 return BCMOS_FALSE;
1360 }
1361 else
1362 {
1363 this->val = (bcmbal_aggregation_port_id *) *extra_mem;
1364 *extra_mem = ((uint8_t *) *extra_mem) + BCMOS_ROUND_TO_WORD(this->len * sizeof(bcmbal_aggregation_port_id));
1365 }
1366 }
1367
1368 for (i0 = 0; i0 < this->len; i0++)
1369 {
1370 if (!bcmbal_buf_read_u16(buf, (uint16_t *) &this->val[i0]))
1371 {
1372 return BCMOS_FALSE;
1373 }
1374 }
1375
1376 return BCMOS_TRUE;
1377}
1378
1379/******************************************************************************/
1380bcmos_bool bcmbal_aggregation_port_id_list_u8_scan(bcmbal_buf *packed, uint32_t *extra_mem)
1381{
1382 uint8_t len;
1383 if (!bcmbal_buf_read_u8(packed, &len))
1384 {
1385 return BCMOS_FALSE;
1386 }
1387
1388 *extra_mem += BCMOS_ROUND_TO_WORD(sizeof(bcmbal_aggregation_port_id) * len);
1389 if (!bcmbal_buf_skip(packed, len * 2))
1390 {
1391 return BCMOS_FALSE;
1392 }
1393
1394 return BCMOS_TRUE;
1395}
1396
1397/******************************************************************************/
1398bcmos_bool bcmbal_aggregation_port_id_list_u8_bounds_check(const bcmbal_aggregation_port_id_list_u8 *this)
1399{
1400 return BCMOS_TRUE;
1401}
1402
1403/******************************************************************************/
1404void bcmbal_classifier_set_default(bcmbal_classifier *this)
1405{
1406 this->presence_mask = (bcmbal_classifier_id) 0;
1407 this->o_tpid = 0;
1408 this->o_vid = 0;
1409 this->i_tpid = 0;
1410 this->i_vid = 0;
1411 this->o_pbits = 0;
1412 this->i_pbits = 0;
1413 this->ether_type = 0;
1414 bcmos_mac_address_init(&this->dst_mac);
1415 bcmos_mac_address_init(&this->src_mac);
1416 this->ip_proto = 0;
1417 bcmos_ipv4_address_init(&this->dst_ip);
1418 bcmos_ipv4_address_init(&this->src_ip);
1419 this->src_port = 0;
1420 this->dst_port = 0;
1421 this->pkt_tag_type = (bcmbal_pkt_tag_type) 0;
1422}
1423
1424/******************************************************************************/
1425bcmos_bool bcmbal_classifier_pack(const bcmbal_classifier *this, bcmbal_buf *buf)
1426{
1427 if (!bcmbal_classifier_id_pack(this->presence_mask, buf))
1428 {
1429 return BCMOS_FALSE;
1430 }
1431
1432 if ((((uint64_t) this->presence_mask & 0x0001) == 0x0001))
1433 {
1434 if (!bcmbal_buf_write_u16(buf, this->o_tpid))
1435 {
1436 return BCMOS_FALSE;
1437 }
1438 }
1439
1440 if ((((uint64_t) this->presence_mask & 0x0002) == 0x0002))
1441 {
1442 if (!bcmbal_buf_write_u16(buf, this->o_vid))
1443 {
1444 return BCMOS_FALSE;
1445 }
1446 }
1447
1448 if ((((uint64_t) this->presence_mask & 0x0004) == 0x0004))
1449 {
1450 if (!bcmbal_buf_write_u16(buf, this->i_tpid))
1451 {
1452 return BCMOS_FALSE;
1453 }
1454 }
1455
1456 if ((((uint64_t) this->presence_mask & 0x0008) == 0x0008))
1457 {
1458 if (!bcmbal_buf_write_u16(buf, this->i_vid))
1459 {
1460 return BCMOS_FALSE;
1461 }
1462 }
1463
1464 if ((((uint64_t) this->presence_mask & 0x0010) == 0x0010))
1465 {
1466 if (!bcmbal_buf_write_u8(buf, this->o_pbits))
1467 {
1468 return BCMOS_FALSE;
1469 }
1470 }
1471
1472 if ((((uint64_t) this->presence_mask & 0x0020) == 0x0020))
1473 {
1474 if (!bcmbal_buf_write_u8(buf, this->i_pbits))
1475 {
1476 return BCMOS_FALSE;
1477 }
1478 }
1479
1480 if ((((uint64_t) this->presence_mask & 0x0040) == 0x0040))
1481 {
1482 if (!bcmbal_buf_write_u16(buf, this->ether_type))
1483 {
1484 return BCMOS_FALSE;
1485 }
1486 }
1487
1488 if ((((uint64_t) this->presence_mask & 0x0080) == 0x0080))
1489 {
1490 if (!bcmbal_buf_write_mac_address(buf, this->dst_mac))
1491 {
1492 return BCMOS_FALSE;
1493 }
1494 }
1495
1496 if ((((uint64_t) this->presence_mask & 0x0100) == 0x0100))
1497 {
1498 if (!bcmbal_buf_write_mac_address(buf, this->src_mac))
1499 {
1500 return BCMOS_FALSE;
1501 }
1502 }
1503
1504 if ((((uint64_t) this->presence_mask & 0x0200) == 0x0200))
1505 {
1506 if (!bcmbal_buf_write_u8(buf, this->ip_proto))
1507 {
1508 return BCMOS_FALSE;
1509 }
1510 }
1511
1512 if ((((uint64_t) this->presence_mask & 0x0400) == 0x0400))
1513 {
1514 if (!bcmbal_buf_write_ipv4_address(buf, this->dst_ip))
1515 {
1516 return BCMOS_FALSE;
1517 }
1518 }
1519
1520 if ((((uint64_t) this->presence_mask & 0x0800) == 0x0800))
1521 {
1522 if (!bcmbal_buf_write_ipv4_address(buf, this->src_ip))
1523 {
1524 return BCMOS_FALSE;
1525 }
1526 }
1527
1528 if ((((uint64_t) this->presence_mask & 0x1000) == 0x1000))
1529 {
1530 if (!bcmbal_buf_write_u16(buf, this->src_port))
1531 {
1532 return BCMOS_FALSE;
1533 }
1534 }
1535
1536 if ((((uint64_t) this->presence_mask & 0x2000) == 0x2000))
1537 {
1538 if (!bcmbal_buf_write_u16(buf, this->dst_port))
1539 {
1540 return BCMOS_FALSE;
1541 }
1542 }
1543
1544 if ((((uint64_t) this->presence_mask & 0x4000) == 0x4000))
1545 {
1546 if (!bcmbal_pkt_tag_type_pack(this->pkt_tag_type, buf))
1547 {
1548 return BCMOS_FALSE;
1549 }
1550 }
1551
1552 return BCMOS_TRUE;
1553}
1554
1555/******************************************************************************/
1556uint32_t bcmbal_classifier_get_packed_length(const bcmbal_classifier *this)
1557{
1558 uint32_t count = 8;
1559 if ((((uint64_t) this->presence_mask & 0x0001) == 0x0001))
1560 {
1561 count += 2;
1562 }
1563
1564 if ((((uint64_t) this->presence_mask & 0x0002) == 0x0002))
1565 {
1566 count += 2;
1567 }
1568
1569 if ((((uint64_t) this->presence_mask & 0x0004) == 0x0004))
1570 {
1571 count += 2;
1572 }
1573
1574 if ((((uint64_t) this->presence_mask & 0x0008) == 0x0008))
1575 {
1576 count += 2;
1577 }
1578
1579 if ((((uint64_t) this->presence_mask & 0x0010) == 0x0010))
1580 {
1581 count += 1;
1582 }
1583
1584 if ((((uint64_t) this->presence_mask & 0x0020) == 0x0020))
1585 {
1586 count += 1;
1587 }
1588
1589 if ((((uint64_t) this->presence_mask & 0x0040) == 0x0040))
1590 {
1591 count += 2;
1592 }
1593
1594 if ((((uint64_t) this->presence_mask & 0x0080) == 0x0080))
1595 {
1596 count += 6;
1597 }
1598
1599 if ((((uint64_t) this->presence_mask & 0x0100) == 0x0100))
1600 {
1601 count += 6;
1602 }
1603
1604 if ((((uint64_t) this->presence_mask & 0x0200) == 0x0200))
1605 {
1606 count += 1;
1607 }
1608
1609 if ((((uint64_t) this->presence_mask & 0x0400) == 0x0400))
1610 {
1611 count += 4;
1612 }
1613
1614 if ((((uint64_t) this->presence_mask & 0x0800) == 0x0800))
1615 {
1616 count += 4;
1617 }
1618
1619 if ((((uint64_t) this->presence_mask & 0x1000) == 0x1000))
1620 {
1621 count += 2;
1622 }
1623
1624 if ((((uint64_t) this->presence_mask & 0x2000) == 0x2000))
1625 {
1626 count += 2;
1627 }
1628
1629 if ((((uint64_t) this->presence_mask & 0x4000) == 0x4000))
1630 {
1631 count += 4;
1632 }
1633
1634 return count;
1635}
1636
1637/******************************************************************************/
1638bcmos_bool bcmbal_classifier_unpack(bcmbal_classifier *this, bcmbal_buf *buf, void **extra_mem)
1639{
1640 if (!bcmbal_classifier_id_unpack(&this->presence_mask, buf))
1641 {
1642 return BCMOS_FALSE;
1643 }
1644
1645 if ((((uint64_t) this->presence_mask & 0x0001) == 0x0001))
1646 {
1647 if (!bcmbal_buf_read_u16(buf, &this->o_tpid))
1648 {
1649 return BCMOS_FALSE;
1650 }
1651 }
1652
1653 if ((((uint64_t) this->presence_mask & 0x0002) == 0x0002))
1654 {
1655 if (!bcmbal_buf_read_u16(buf, &this->o_vid))
1656 {
1657 return BCMOS_FALSE;
1658 }
1659 }
1660
1661 if ((((uint64_t) this->presence_mask & 0x0004) == 0x0004))
1662 {
1663 if (!bcmbal_buf_read_u16(buf, &this->i_tpid))
1664 {
1665 return BCMOS_FALSE;
1666 }
1667 }
1668
1669 if ((((uint64_t) this->presence_mask & 0x0008) == 0x0008))
1670 {
1671 if (!bcmbal_buf_read_u16(buf, &this->i_vid))
1672 {
1673 return BCMOS_FALSE;
1674 }
1675 }
1676
1677 if ((((uint64_t) this->presence_mask & 0x0010) == 0x0010))
1678 {
1679 if (!bcmbal_buf_read_u8(buf, &this->o_pbits))
1680 {
1681 return BCMOS_FALSE;
1682 }
1683 }
1684
1685 if ((((uint64_t) this->presence_mask & 0x0020) == 0x0020))
1686 {
1687 if (!bcmbal_buf_read_u8(buf, &this->i_pbits))
1688 {
1689 return BCMOS_FALSE;
1690 }
1691 }
1692
1693 if ((((uint64_t) this->presence_mask & 0x0040) == 0x0040))
1694 {
1695 if (!bcmbal_buf_read_u16(buf, &this->ether_type))
1696 {
1697 return BCMOS_FALSE;
1698 }
1699 }
1700
1701 if ((((uint64_t) this->presence_mask & 0x0080) == 0x0080))
1702 {
1703 if (!bcmbal_buf_read_mac_address(buf, &this->dst_mac))
1704 {
1705 return BCMOS_FALSE;
1706 }
1707 }
1708
1709 if ((((uint64_t) this->presence_mask & 0x0100) == 0x0100))
1710 {
1711 if (!bcmbal_buf_read_mac_address(buf, &this->src_mac))
1712 {
1713 return BCMOS_FALSE;
1714 }
1715 }
1716
1717 if ((((uint64_t) this->presence_mask & 0x0200) == 0x0200))
1718 {
1719 if (!bcmbal_buf_read_u8(buf, &this->ip_proto))
1720 {
1721 return BCMOS_FALSE;
1722 }
1723 }
1724
1725 if ((((uint64_t) this->presence_mask & 0x0400) == 0x0400))
1726 {
1727 if (!bcmbal_buf_read_ipv4_address(buf, &this->dst_ip))
1728 {
1729 return BCMOS_FALSE;
1730 }
1731 }
1732
1733 if ((((uint64_t) this->presence_mask & 0x0800) == 0x0800))
1734 {
1735 if (!bcmbal_buf_read_ipv4_address(buf, &this->src_ip))
1736 {
1737 return BCMOS_FALSE;
1738 }
1739 }
1740
1741 if ((((uint64_t) this->presence_mask & 0x1000) == 0x1000))
1742 {
1743 if (!bcmbal_buf_read_u16(buf, &this->src_port))
1744 {
1745 return BCMOS_FALSE;
1746 }
1747 }
1748
1749 if ((((uint64_t) this->presence_mask & 0x2000) == 0x2000))
1750 {
1751 if (!bcmbal_buf_read_u16(buf, &this->dst_port))
1752 {
1753 return BCMOS_FALSE;
1754 }
1755 }
1756
1757 if ((((uint64_t) this->presence_mask & 0x4000) == 0x4000))
1758 {
1759 if (!bcmbal_pkt_tag_type_unpack(&this->pkt_tag_type, buf))
1760 {
1761 return BCMOS_FALSE;
1762 }
1763 }
1764
1765 return BCMOS_TRUE;
1766}
1767
1768/******************************************************************************/
1769bcmos_bool bcmbal_classifier_scan(bcmbal_buf *packed, uint32_t *extra_mem)
1770{
1771 bcmbal_classifier_id presence_mask;
1772 if (!bcmbal_classifier_id_unpack(&presence_mask, packed))
1773 {
1774 return BCMOS_FALSE;
1775 }
1776
1777 if ((((uint64_t) presence_mask & 0x0001) == 0x0001))
1778 {
1779 if (!bcmbal_buf_skip(packed, 2))
1780 {
1781 return BCMOS_FALSE;
1782 }
1783 }
1784
1785 if ((((uint64_t) presence_mask & 0x0002) == 0x0002))
1786 {
1787 if (!bcmbal_buf_skip(packed, 2))
1788 {
1789 return BCMOS_FALSE;
1790 }
1791 }
1792
1793 if ((((uint64_t) presence_mask & 0x0004) == 0x0004))
1794 {
1795 if (!bcmbal_buf_skip(packed, 2))
1796 {
1797 return BCMOS_FALSE;
1798 }
1799 }
1800
1801 if ((((uint64_t) presence_mask & 0x0008) == 0x0008))
1802 {
1803 if (!bcmbal_buf_skip(packed, 2))
1804 {
1805 return BCMOS_FALSE;
1806 }
1807 }
1808
1809 if ((((uint64_t) presence_mask & 0x0010) == 0x0010))
1810 {
1811 if (!bcmbal_buf_skip(packed, 1))
1812 {
1813 return BCMOS_FALSE;
1814 }
1815 }
1816
1817 if ((((uint64_t) presence_mask & 0x0020) == 0x0020))
1818 {
1819 if (!bcmbal_buf_skip(packed, 1))
1820 {
1821 return BCMOS_FALSE;
1822 }
1823 }
1824
1825 if ((((uint64_t) presence_mask & 0x0040) == 0x0040))
1826 {
1827 if (!bcmbal_buf_skip(packed, 2))
1828 {
1829 return BCMOS_FALSE;
1830 }
1831 }
1832
1833 if ((((uint64_t) presence_mask & 0x0080) == 0x0080))
1834 {
1835 if (!bcmbal_buf_skip(packed, 6))
1836 {
1837 return BCMOS_FALSE;
1838 }
1839 }
1840
1841 if ((((uint64_t) presence_mask & 0x0100) == 0x0100))
1842 {
1843 if (!bcmbal_buf_skip(packed, 6))
1844 {
1845 return BCMOS_FALSE;
1846 }
1847 }
1848
1849 if ((((uint64_t) presence_mask & 0x0200) == 0x0200))
1850 {
1851 if (!bcmbal_buf_skip(packed, 1))
1852 {
1853 return BCMOS_FALSE;
1854 }
1855 }
1856
1857 if ((((uint64_t) presence_mask & 0x0400) == 0x0400))
1858 {
1859 if (!bcmbal_buf_skip(packed, 4))
1860 {
1861 return BCMOS_FALSE;
1862 }
1863 }
1864
1865 if ((((uint64_t) presence_mask & 0x0800) == 0x0800))
1866 {
1867 if (!bcmbal_buf_skip(packed, 4))
1868 {
1869 return BCMOS_FALSE;
1870 }
1871 }
1872
1873 if ((((uint64_t) presence_mask & 0x1000) == 0x1000))
1874 {
1875 if (!bcmbal_buf_skip(packed, 2))
1876 {
1877 return BCMOS_FALSE;
1878 }
1879 }
1880
1881 if ((((uint64_t) presence_mask & 0x2000) == 0x2000))
1882 {
1883 if (!bcmbal_buf_skip(packed, 2))
1884 {
1885 return BCMOS_FALSE;
1886 }
1887 }
1888
1889 if ((((uint64_t) presence_mask & 0x4000) == 0x4000))
1890 {
1891 if (!bcmbal_buf_skip(packed, 4))
1892 {
1893 return BCMOS_FALSE;
1894 }
1895 }
1896
1897 return BCMOS_TRUE;
1898}
1899
1900/******************************************************************************/
1901bcmos_bool bcmbal_classifier_bounds_check(const bcmbal_classifier *this)
1902{
1903 if ((this->presence_mask & 0xFFFFFFFFFFFF8000ULL) != 0)
1904 {
1905 return BCMOS_FALSE;
1906 }
1907
1908 if ((((uint64_t) this->presence_mask & 0x4000) == 0x4000))
1909 {
1910 if ((this->pkt_tag_type & 0xFFFFFFF8UL) != 0)
1911 {
1912 return BCMOS_FALSE;
1913 }
1914 }
1915
1916 return BCMOS_TRUE;
1917}
1918
1919/******************************************************************************/
1920void bcmbal_dest_set_default(bcmbal_dest *this)
1921{
1922 this->type = (bcmbal_dest_type) 0;
1923}
1924
1925/******************************************************************************/
1926bcmos_bool bcmbal_dest_pack(const bcmbal_dest *this, bcmbal_buf *buf)
1927{
1928 if (!bcmbal_dest_type_pack(this->type, buf))
1929 {
1930 return BCMOS_FALSE;
1931 }
1932
1933 switch (this->type)
1934 {
1935 case BCMBAL_DEST_TYPE_NNI:
1936 {
1937 if (!bcmbal_buf_write_u32(buf, (uint32_t) this->u.nni.int_id))
1938 {
1939 return BCMOS_FALSE;
1940 }
1941 }
1942 break;
1943 case BCMBAL_DEST_TYPE_SUB_TERM:
1944 {
1945 if (!bcmbal_buf_write_u32(buf, (uint32_t) this->u.sub_term.sub_term_id))
1946 {
1947 return BCMOS_FALSE;
1948 }
1949
1950 if (!bcmbal_buf_write_u16(buf, this->u.sub_term.sub_term_uni))
1951 {
1952 return BCMOS_FALSE;
1953 }
1954
1955 if (!bcmbal_buf_write_u16(buf, this->u.sub_term.int_id))
1956 {
1957 return BCMOS_FALSE;
1958 }
1959 }
1960 break;
1961 case BCMBAL_DEST_TYPE_HOST:
1962 {
1963 }
1964 break;
1965 default:
1966 return BCMOS_FALSE;
1967 }
1968
1969 return BCMOS_TRUE;
1970}
1971
1972/******************************************************************************/
1973uint32_t bcmbal_dest_get_packed_length(const bcmbal_dest *this)
1974{
1975 uint32_t count = 4;
1976 switch (this->type)
1977 {
1978 case BCMBAL_DEST_TYPE_NNI:
1979 {
1980 count += 4;
1981 }
1982 break;
1983 case BCMBAL_DEST_TYPE_SUB_TERM:
1984 {
1985 count += 8;
1986 }
1987 break;
1988 case BCMBAL_DEST_TYPE_HOST:
1989 {
1990 }
1991 break;
1992 default:
1993 break;
1994 }
1995
1996 return count;
1997}
1998
1999/******************************************************************************/
2000bcmos_bool bcmbal_dest_unpack(bcmbal_dest *this, bcmbal_buf *buf, void **extra_mem)
2001{
2002 if (!bcmbal_dest_type_unpack(&this->type, buf))
2003 {
2004 return BCMOS_FALSE;
2005 }
2006
2007 switch (this->type)
2008 {
2009 case BCMBAL_DEST_TYPE_NNI:
2010 {
2011 if (!bcmbal_buf_read_u32(buf, (uint32_t *) &this->u.nni.int_id))
2012 {
2013 return BCMOS_FALSE;
2014 }
2015 }
2016 break;
2017 case BCMBAL_DEST_TYPE_SUB_TERM:
2018 {
2019 if (!bcmbal_buf_read_u32(buf, (uint32_t *) &this->u.sub_term.sub_term_id))
2020 {
2021 return BCMOS_FALSE;
2022 }
2023
2024 if (!bcmbal_buf_read_u16(buf, &this->u.sub_term.sub_term_uni))
2025 {
2026 return BCMOS_FALSE;
2027 }
2028
2029 if (!bcmbal_buf_read_u16(buf, &this->u.sub_term.int_id))
2030 {
2031 return BCMOS_FALSE;
2032 }
2033 }
2034 break;
2035 case BCMBAL_DEST_TYPE_HOST:
2036 {
2037 }
2038 break;
2039 default:
2040 return BCMOS_FALSE;
2041 }
2042
2043 return BCMOS_TRUE;
2044}
2045
2046/******************************************************************************/
2047bcmos_bool bcmbal_dest_scan(bcmbal_buf *packed, uint32_t *extra_mem)
2048{
2049 bcmbal_dest_type type;
2050 if (!bcmbal_dest_type_unpack(&type, packed))
2051 {
2052 return BCMOS_FALSE;
2053 }
2054
2055 switch (type)
2056 {
2057 case BCMBAL_DEST_TYPE_NNI:
2058 {
2059 if (!bcmbal_buf_skip(packed, 4))
2060 {
2061 return BCMOS_FALSE;
2062 }
2063 }
2064 break;
2065 case BCMBAL_DEST_TYPE_SUB_TERM:
2066 {
2067 if (!bcmbal_buf_skip(packed, 4))
2068 {
2069 return BCMOS_FALSE;
2070 }
2071
2072 if (!bcmbal_buf_skip(packed, 2))
2073 {
2074 return BCMOS_FALSE;
2075 }
2076
2077 if (!bcmbal_buf_skip(packed, 2))
2078 {
2079 return BCMOS_FALSE;
2080 }
2081 }
2082 break;
2083 case BCMBAL_DEST_TYPE_HOST:
2084 {
2085 }
2086 break;
2087 default:
2088 return BCMOS_FALSE;
2089 }
2090
2091 return BCMOS_TRUE;
2092}
2093
2094/******************************************************************************/
2095bcmos_bool bcmbal_dest_bounds_check(const bcmbal_dest *this)
2096{
2097 switch (this->type)
2098 {
2099 case BCMBAL_DEST_TYPE_NNI:
2100 {
2101 }
2102 break;
2103 case BCMBAL_DEST_TYPE_SUB_TERM:
2104 {
2105 }
2106 break;
2107 case BCMBAL_DEST_TYPE_HOST:
2108 {
2109 }
2110 break;
2111 default:
2112 return BCMOS_FALSE;
2113 }
2114
2115 return BCMOS_TRUE;
2116}
2117
2118/******************************************************************************/
2119void bcmbal_flow_id_list_u32_set_default(bcmbal_flow_id_list_u32 *this)
2120{
2121 this->len = 0;
2122 this->val = NULL;
2123}
2124
2125/******************************************************************************/
2126bcmos_bool bcmbal_flow_id_list_u32_pack(const bcmbal_flow_id_list_u32 *this, bcmbal_buf *buf)
2127{
2128 uint32_t i0;
2129 if (!bcmbal_buf_write_u32(buf, this->len))
2130 {
2131 return BCMOS_FALSE;
2132 }
2133
2134 if ((this->len > 0) && (this->val == NULL))
2135 {
2136 bcmos_trace(BCMOS_TRACE_LEVEL_ERROR, "Error: list field \"val\" of struct \"bcmbal_flow_id_list_u32\" is uninitialized (NULL). You must allocate memory for this pointer before sending/receiving the message.\n");
2137 return BCMOS_FALSE;
2138 }
2139
2140 for (i0 = 0; i0 < this->len; i0++)
2141 {
2142 if (!bcmbal_buf_write_u32(buf, (uint32_t) this->val[i0]))
2143 {
2144 return BCMOS_FALSE;
2145 }
2146 }
2147
2148 return BCMOS_TRUE;
2149}
2150
2151/******************************************************************************/
2152uint32_t bcmbal_flow_id_list_u32_get_packed_length(const bcmbal_flow_id_list_u32 *this)
2153{
2154 return 4 + (4 * this->len);
2155}
2156
2157/******************************************************************************/
2158bcmos_bool bcmbal_flow_id_list_u32_unpack(bcmbal_flow_id_list_u32 *this, bcmbal_buf *buf, void **extra_mem)
2159{
2160 uint32_t i0;
2161 if (!bcmbal_buf_read_u32(buf, &this->len))
2162 {
2163 return BCMOS_FALSE;
2164 }
2165
2166 if ((this->len > 0) && (this->val == NULL))
2167 {
2168 if (extra_mem == NULL)
2169 {
2170 bcmos_trace(BCMOS_TRACE_LEVEL_ERROR, "Error: list field \"val\" of struct \"bcmbal_flow_id_list_u32\" is uninitialized (NULL). You must allocate memory for this pointer before sending/receiving the message.\n");
2171 return BCMOS_FALSE;
2172 }
2173 else
2174 {
2175 this->val = (bcmbal_flow_id *) *extra_mem;
2176 *extra_mem = ((uint8_t *) *extra_mem) + BCMOS_ROUND_TO_WORD(this->len * sizeof(bcmbal_flow_id));
2177 }
2178 }
2179
2180 for (i0 = 0; i0 < this->len; i0++)
2181 {
2182 if (!bcmbal_buf_read_u32(buf, (uint32_t *) &this->val[i0]))
2183 {
2184 return BCMOS_FALSE;
2185 }
2186 }
2187
2188 return BCMOS_TRUE;
2189}
2190
2191/******************************************************************************/
2192bcmos_bool bcmbal_flow_id_list_u32_scan(bcmbal_buf *packed, uint32_t *extra_mem)
2193{
2194 uint32_t len;
2195 if (!bcmbal_buf_read_u32(packed, &len))
2196 {
2197 return BCMOS_FALSE;
2198 }
2199
2200 *extra_mem += BCMOS_ROUND_TO_WORD(sizeof(bcmbal_flow_id) * len);
2201 if (!bcmbal_buf_skip(packed, len * 4))
2202 {
2203 return BCMOS_FALSE;
2204 }
2205
2206 return BCMOS_TRUE;
2207}
2208
2209/******************************************************************************/
2210bcmos_bool bcmbal_flow_id_list_u32_bounds_check(const bcmbal_flow_id_list_u32 *this)
2211{
2212 return BCMOS_TRUE;
2213}
2214
2215/******************************************************************************/
2216void bcmbal_tm_queue_ref_set_default(bcmbal_tm_queue_ref *this)
2217{
2218 this->sched_id = (bcmbal_tm_sched_id) 0;
2219 this->queue_id = (bcmbal_tm_queue_id) 0;
2220}
2221
2222/******************************************************************************/
2223bcmos_bool bcmbal_tm_queue_ref_pack(const bcmbal_tm_queue_ref *this, bcmbal_buf *buf)
2224{
2225 if (!bcmbal_buf_write_u32(buf, (uint32_t) this->sched_id))
2226 {
2227 return BCMOS_FALSE;
2228 }
2229
2230 if (!bcmbal_buf_write_u8(buf, (uint8_t) this->queue_id))
2231 {
2232 return BCMOS_FALSE;
2233 }
2234
2235 return BCMOS_TRUE;
2236}
2237
2238/******************************************************************************/
2239bcmos_bool bcmbal_tm_queue_ref_unpack(bcmbal_tm_queue_ref *this, bcmbal_buf *buf, void **extra_mem)
2240{
2241 if (!bcmbal_buf_read_u32(buf, (uint32_t *) &this->sched_id))
2242 {
2243 return BCMOS_FALSE;
2244 }
2245
2246 if (!bcmbal_buf_read_u8(buf, (uint8_t *) &this->queue_id))
2247 {
2248 return BCMOS_FALSE;
2249 }
2250
2251 return BCMOS_TRUE;
2252}
2253
2254/******************************************************************************/
2255bcmos_bool bcmbal_tm_queue_ref_scan(bcmbal_buf *packed, uint32_t *extra_mem)
2256{
2257 (void)extra_mem;
2258 return bcmbal_buf_skip(packed, 5);
2259}
2260
2261/******************************************************************************/
2262bcmos_bool bcmbal_tm_queue_ref_bounds_check(const bcmbal_tm_queue_ref *this)
2263{
2264 return BCMOS_TRUE;
2265}
2266
2267/******************************************************************************/
2268void bcmbal_group_member_info_set_default(bcmbal_group_member_info *this)
2269{
2270 this->intf_id = (bcmbal_intf_id) 0;
2271 this->svc_port_id = (bcmbal_service_port_id) 0;
2272 this->action.presence_mask = (bcmbal_action_id) 0;
2273 this->action.cmds_bitmask = (bcmbal_action_cmd_id) 0;
2274 this->action.o_vid = 0;
2275 this->action.o_pbits = 0;
2276 this->action.o_tpid = 0;
2277 this->action.i_vid = 0;
2278 this->action.i_pbits = 0;
2279 this->action.i_tpid = 0;
2280 this->queue.sched_id = (bcmbal_tm_sched_id) 0;
2281 this->queue.queue_id = (bcmbal_tm_queue_id) 0;
2282}
2283
2284/******************************************************************************/
2285bcmos_bool bcmbal_group_member_info_pack(const bcmbal_group_member_info *this, bcmbal_buf *buf)
2286{
2287 if (!bcmbal_buf_write_u32(buf, (uint32_t) this->intf_id))
2288 {
2289 return BCMOS_FALSE;
2290 }
2291
2292 if (!bcmbal_buf_write_u16(buf, (uint16_t) this->svc_port_id))
2293 {
2294 return BCMOS_FALSE;
2295 }
2296
2297 if (!bcmbal_action_pack(&this->action, buf))
2298 {
2299 return BCMOS_FALSE;
2300 }
2301
2302 if (!bcmbal_tm_queue_ref_pack(&this->queue, buf))
2303 {
2304 return BCMOS_FALSE;
2305 }
2306
2307 return BCMOS_TRUE;
2308}
2309
2310/******************************************************************************/
2311uint32_t bcmbal_group_member_info_get_packed_length(const bcmbal_group_member_info *this)
2312{
2313 return 11 + bcmbal_action_get_packed_length(&this->action);
2314}
2315
2316/******************************************************************************/
2317bcmos_bool bcmbal_group_member_info_unpack(bcmbal_group_member_info *this, bcmbal_buf *buf, void **extra_mem)
2318{
2319 if (!bcmbal_buf_read_u32(buf, (uint32_t *) &this->intf_id))
2320 {
2321 return BCMOS_FALSE;
2322 }
2323
2324 if (!bcmbal_buf_read_u16(buf, (uint16_t *) &this->svc_port_id))
2325 {
2326 return BCMOS_FALSE;
2327 }
2328
2329 if (!bcmbal_action_unpack(&this->action, buf, extra_mem))
2330 {
2331 return BCMOS_FALSE;
2332 }
2333
2334 if (!bcmbal_tm_queue_ref_unpack(&this->queue, buf, extra_mem))
2335 {
2336 return BCMOS_FALSE;
2337 }
2338
2339 return BCMOS_TRUE;
2340}
2341
2342/******************************************************************************/
2343bcmos_bool bcmbal_group_member_info_scan(bcmbal_buf *packed, uint32_t *extra_mem)
2344{
2345 if (!bcmbal_buf_skip(packed, 4))
2346 {
2347 return BCMOS_FALSE;
2348 }
2349
2350 if (!bcmbal_buf_skip(packed, 2))
2351 {
2352 return BCMOS_FALSE;
2353 }
2354
2355 if (!bcmbal_action_scan(packed, extra_mem))
2356 {
2357 return BCMOS_FALSE;
2358 }
2359
2360 if (!bcmbal_buf_skip(packed, 5))
2361 {
2362 return BCMOS_FALSE;
2363 }
2364
2365 return BCMOS_TRUE;
2366}
2367
2368/******************************************************************************/
2369bcmos_bool bcmbal_group_member_info_bounds_check(const bcmbal_group_member_info *this)
2370{
2371 if (!bcmbal_action_bounds_check(&this->action))
2372 {
2373 return BCMOS_FALSE;
2374 }
2375
2376 if (!bcmbal_tm_queue_ref_bounds_check(&this->queue))
2377 {
2378 return BCMOS_FALSE;
2379 }
2380
2381 return BCMOS_TRUE;
2382}
2383
2384/******************************************************************************/
2385void bcmbal_group_member_info_list_u16_set_default(bcmbal_group_member_info_list_u16 *this)
2386{
2387 this->len = 0;
2388 this->val = NULL;
2389}
2390
2391/******************************************************************************/
2392bcmos_bool bcmbal_group_member_info_list_u16_pack(const bcmbal_group_member_info_list_u16 *this, bcmbal_buf *buf)
2393{
2394 uint16_t i0;
2395 if (!bcmbal_buf_write_u16(buf, this->len))
2396 {
2397 return BCMOS_FALSE;
2398 }
2399
2400 if ((this->len > 0) && (this->val == NULL))
2401 {
2402 bcmos_trace(BCMOS_TRACE_LEVEL_ERROR, "Error: list field \"val\" of struct \"bcmbal_group_member_info_list_u16\" is uninitialized (NULL). You must allocate memory for this pointer before sending/receiving the message.\n");
2403 return BCMOS_FALSE;
2404 }
2405
2406 for (i0 = 0; i0 < this->len; i0++)
2407 {
2408 if (!bcmbal_group_member_info_pack(&this->val[i0], buf))
2409 {
2410 return BCMOS_FALSE;
2411 }
2412 }
2413
2414 return BCMOS_TRUE;
2415}
2416
2417/******************************************************************************/
2418uint32_t bcmbal_group_member_info_list_u16_get_packed_length(const bcmbal_group_member_info_list_u16 *this)
2419{
2420 uint32_t count = 2;
2421 uint32_t i0;
2422 if ((this->len > 0) && (this->val == NULL))
2423 {
2424 bcmos_trace(BCMOS_TRACE_LEVEL_ERROR, "Error: list field \"len\" of struct \"bcmbal_group_member_info_list_u16\" is uninitialized (NULL). You must allocate memory for this pointer before sending/receiving the message.\n");
2425 return 0;
2426 }
2427
2428 for (i0 = 0; i0 < this->len; i0++)
2429 {
2430 count += bcmbal_group_member_info_get_packed_length(&this->val[i0]);
2431 }
2432
2433 return count;
2434}
2435
2436/******************************************************************************/
2437bcmos_bool bcmbal_group_member_info_list_u16_unpack(bcmbal_group_member_info_list_u16 *this, bcmbal_buf *buf, void **extra_mem)
2438{
2439 uint16_t i0;
2440 if (!bcmbal_buf_read_u16(buf, &this->len))
2441 {
2442 return BCMOS_FALSE;
2443 }
2444
2445 if ((this->len > 0) && (this->val == NULL))
2446 {
2447 if (extra_mem == NULL)
2448 {
2449 bcmos_trace(BCMOS_TRACE_LEVEL_ERROR, "Error: list field \"val\" of struct \"bcmbal_group_member_info_list_u16\" is uninitialized (NULL). You must allocate memory for this pointer before sending/receiving the message.\n");
2450 return BCMOS_FALSE;
2451 }
2452 else
2453 {
2454 this->val = (bcmbal_group_member_info *) *extra_mem;
2455 *extra_mem = ((uint8_t *) *extra_mem) + BCMOS_ROUND_TO_WORD(this->len * sizeof(bcmbal_group_member_info));
2456 }
2457 }
2458
2459 for (i0 = 0; i0 < this->len; i0++)
2460 {
2461 if (!bcmbal_group_member_info_unpack(&this->val[i0], buf, extra_mem))
2462 {
2463 return BCMOS_FALSE;
2464 }
2465 }
2466
2467 return BCMOS_TRUE;
2468}
2469
2470/******************************************************************************/
2471bcmos_bool bcmbal_group_member_info_list_u16_scan(bcmbal_buf *packed, uint32_t *extra_mem)
2472{
2473 uint16_t len;
2474 uint16_t i0;
2475 if (!bcmbal_buf_read_u16(packed, &len))
2476 {
2477 return BCMOS_FALSE;
2478 }
2479
2480 *extra_mem += BCMOS_ROUND_TO_WORD(sizeof(bcmbal_group_member_info) * len);
2481 for (i0 = 0; i0 < len; i0++)
2482 {
2483 if (!bcmbal_group_member_info_scan(packed, extra_mem))
2484 {
2485 return BCMOS_FALSE;
2486 }
2487 }
2488
2489 return BCMOS_TRUE;
2490}
2491
2492/******************************************************************************/
2493bcmos_bool bcmbal_group_member_info_list_u16_bounds_check(const bcmbal_group_member_info_list_u16 *this)
2494{
2495 return BCMOS_TRUE;
2496}
2497
2498/******************************************************************************/
2499void bcmbal_password_set_default(bcmbal_password *this)
2500{
2501 memset(this->arr, 0, sizeof(this->arr));
2502}
2503
2504/******************************************************************************/
2505bcmos_bool bcmbal_password_pack(const bcmbal_password *this, bcmbal_buf *buf)
2506{
2507 if (!bcmbal_buf_write(buf, this->arr, 10))
2508 {
2509 return BCMOS_FALSE;
2510 }
2511
2512 return BCMOS_TRUE;
2513}
2514
2515/******************************************************************************/
2516bcmos_bool bcmbal_password_unpack(bcmbal_password *this, bcmbal_buf *buf, void **extra_mem)
2517{
2518 if (!bcmbal_buf_read(buf, this->arr, 10))
2519 {
2520 return BCMOS_FALSE;
2521 }
2522
2523 return BCMOS_TRUE;
2524}
2525
2526/******************************************************************************/
2527bcmos_bool bcmbal_password_scan(bcmbal_buf *packed, uint32_t *extra_mem)
2528{
2529 (void)extra_mem;
2530 return bcmbal_buf_skip(packed, 10);
2531}
2532
2533/******************************************************************************/
2534bcmos_bool bcmbal_password_bounds_check(const bcmbal_password *this)
2535{
2536 return BCMOS_TRUE;
2537}
2538
2539/******************************************************************************/
2540void bcmbal_registration_id_set_default(bcmbal_registration_id *this)
2541{
2542 memset(this->arr, 0, sizeof(this->arr));
2543}
2544
2545/******************************************************************************/
2546bcmos_bool bcmbal_registration_id_pack(const bcmbal_registration_id *this, bcmbal_buf *buf)
2547{
2548 if (!bcmbal_buf_write(buf, this->arr, 36))
2549 {
2550 return BCMOS_FALSE;
2551 }
2552
2553 return BCMOS_TRUE;
2554}
2555
2556/******************************************************************************/
2557bcmos_bool bcmbal_registration_id_unpack(bcmbal_registration_id *this, bcmbal_buf *buf, void **extra_mem)
2558{
2559 if (!bcmbal_buf_read(buf, this->arr, 36))
2560 {
2561 return BCMOS_FALSE;
2562 }
2563
2564 return BCMOS_TRUE;
2565}
2566
2567/******************************************************************************/
2568bcmos_bool bcmbal_registration_id_scan(bcmbal_buf *packed, uint32_t *extra_mem)
2569{
2570 (void)extra_mem;
2571 return bcmbal_buf_skip(packed, 36);
2572}
2573
2574/******************************************************************************/
2575bcmos_bool bcmbal_registration_id_bounds_check(const bcmbal_registration_id *this)
2576{
2577 return BCMOS_TRUE;
2578}
2579
2580/******************************************************************************/
2581void bcmbal_serial_number_set_default(bcmbal_serial_number *this)
2582{
2583 memset(this->vendor_id, 0, sizeof(this->vendor_id));
2584 memset(this->vendor_specific, 0, sizeof(this->vendor_specific));
2585}
2586
2587/******************************************************************************/
2588bcmos_bool bcmbal_serial_number_pack(const bcmbal_serial_number *this, bcmbal_buf *buf)
2589{
2590 if (!bcmbal_buf_write(buf, this->vendor_id, 4))
2591 {
2592 return BCMOS_FALSE;
2593 }
2594
2595 if (!bcmbal_buf_write(buf, this->vendor_specific, 4))
2596 {
2597 return BCMOS_FALSE;
2598 }
2599
2600 return BCMOS_TRUE;
2601}
2602
2603/******************************************************************************/
2604bcmos_bool bcmbal_serial_number_unpack(bcmbal_serial_number *this, bcmbal_buf *buf, void **extra_mem)
2605{
2606 if (!bcmbal_buf_read(buf, this->vendor_id, 4))
2607 {
2608 return BCMOS_FALSE;
2609 }
2610
2611 if (!bcmbal_buf_read(buf, this->vendor_specific, 4))
2612 {
2613 return BCMOS_FALSE;
2614 }
2615
2616 return BCMOS_TRUE;
2617}
2618
2619/******************************************************************************/
2620bcmos_bool bcmbal_serial_number_scan(bcmbal_buf *packed, uint32_t *extra_mem)
2621{
2622 (void)extra_mem;
2623 return bcmbal_buf_skip(packed, 8);
2624}
2625
2626/******************************************************************************/
2627bcmos_bool bcmbal_serial_number_bounds_check(const bcmbal_serial_number *this)
2628{
2629 return BCMOS_TRUE;
2630}
2631
2632/******************************************************************************/
2633void bcmbal_service_port_id_list_u8_set_default(bcmbal_service_port_id_list_u8 *this)
2634{
2635 this->len = 0;
2636 this->val = NULL;
2637}
2638
2639/******************************************************************************/
2640bcmos_bool bcmbal_service_port_id_list_u8_pack(const bcmbal_service_port_id_list_u8 *this, bcmbal_buf *buf)
2641{
2642 uint8_t i0;
2643 if (!bcmbal_buf_write_u8(buf, this->len))
2644 {
2645 return BCMOS_FALSE;
2646 }
2647
2648 if ((this->len > 0) && (this->val == NULL))
2649 {
2650 bcmos_trace(BCMOS_TRACE_LEVEL_ERROR, "Error: list field \"val\" of struct \"bcmbal_service_port_id_list_u8\" is uninitialized (NULL). You must allocate memory for this pointer before sending/receiving the message.\n");
2651 return BCMOS_FALSE;
2652 }
2653
2654 for (i0 = 0; i0 < this->len; i0++)
2655 {
2656 if (!bcmbal_buf_write_u16(buf, (uint16_t) this->val[i0]))
2657 {
2658 return BCMOS_FALSE;
2659 }
2660 }
2661
2662 return BCMOS_TRUE;
2663}
2664
2665/******************************************************************************/
2666uint32_t bcmbal_service_port_id_list_u8_get_packed_length(const bcmbal_service_port_id_list_u8 *this)
2667{
2668 return 1 + (2 * this->len);
2669}
2670
2671/******************************************************************************/
2672bcmos_bool bcmbal_service_port_id_list_u8_unpack(bcmbal_service_port_id_list_u8 *this, bcmbal_buf *buf, void **extra_mem)
2673{
2674 uint8_t i0;
2675 if (!bcmbal_buf_read_u8(buf, &this->len))
2676 {
2677 return BCMOS_FALSE;
2678 }
2679
2680 if ((this->len > 0) && (this->val == NULL))
2681 {
2682 if (extra_mem == NULL)
2683 {
2684 bcmos_trace(BCMOS_TRACE_LEVEL_ERROR, "Error: list field \"val\" of struct \"bcmbal_service_port_id_list_u8\" is uninitialized (NULL). You must allocate memory for this pointer before sending/receiving the message.\n");
2685 return BCMOS_FALSE;
2686 }
2687 else
2688 {
2689 this->val = (bcmbal_service_port_id *) *extra_mem;
2690 *extra_mem = ((uint8_t *) *extra_mem) + BCMOS_ROUND_TO_WORD(this->len * sizeof(bcmbal_service_port_id));
2691 }
2692 }
2693
2694 for (i0 = 0; i0 < this->len; i0++)
2695 {
2696 if (!bcmbal_buf_read_u16(buf, (uint16_t *) &this->val[i0]))
2697 {
2698 return BCMOS_FALSE;
2699 }
2700 }
2701
2702 return BCMOS_TRUE;
2703}
2704
2705/******************************************************************************/
2706bcmos_bool bcmbal_service_port_id_list_u8_scan(bcmbal_buf *packed, uint32_t *extra_mem)
2707{
2708 uint8_t len;
2709 if (!bcmbal_buf_read_u8(packed, &len))
2710 {
2711 return BCMOS_FALSE;
2712 }
2713
2714 *extra_mem += BCMOS_ROUND_TO_WORD(sizeof(bcmbal_service_port_id) * len);
2715 if (!bcmbal_buf_skip(packed, len * 2))
2716 {
2717 return BCMOS_FALSE;
2718 }
2719
2720 return BCMOS_TRUE;
2721}
2722
2723/******************************************************************************/
2724bcmos_bool bcmbal_service_port_id_list_u8_bounds_check(const bcmbal_service_port_id_list_u8 *this)
2725{
2726 return BCMOS_TRUE;
2727}
2728
2729/******************************************************************************/
2730void bcmbal_sla_set_default(bcmbal_sla *this)
2731{
2732 this->presence_mask = (bcmbal_sla_id) 0;
2733 this->min_rate = 0;
2734 this->max_rate = 0;
2735}
2736
2737/******************************************************************************/
2738bcmos_bool bcmbal_sla_pack(const bcmbal_sla *this, bcmbal_buf *buf)
2739{
2740 if (!bcmbal_sla_id_pack(this->presence_mask, buf))
2741 {
2742 return BCMOS_FALSE;
2743 }
2744
2745 if ((((uint64_t) this->presence_mask & 0x0001) == 0x0001))
2746 {
2747 if (!bcmbal_buf_write_u32(buf, this->min_rate))
2748 {
2749 return BCMOS_FALSE;
2750 }
2751 }
2752
2753 if ((((uint64_t) this->presence_mask & 0x0002) == 0x0002))
2754 {
2755 if (!bcmbal_buf_write_u32(buf, this->max_rate))
2756 {
2757 return BCMOS_FALSE;
2758 }
2759 }
2760
2761 return BCMOS_TRUE;
2762}
2763
2764/******************************************************************************/
2765uint32_t bcmbal_sla_get_packed_length(const bcmbal_sla *this)
2766{
2767 uint32_t count = 8;
2768 if ((((uint64_t) this->presence_mask & 0x0001) == 0x0001))
2769 {
2770 count += 4;
2771 }
2772
2773 if ((((uint64_t) this->presence_mask & 0x0002) == 0x0002))
2774 {
2775 count += 4;
2776 }
2777
2778 return count;
2779}
2780
2781/******************************************************************************/
2782bcmos_bool bcmbal_sla_unpack(bcmbal_sla *this, bcmbal_buf *buf, void **extra_mem)
2783{
2784 if (!bcmbal_sla_id_unpack(&this->presence_mask, buf))
2785 {
2786 return BCMOS_FALSE;
2787 }
2788
2789 if ((((uint64_t) this->presence_mask & 0x0001) == 0x0001))
2790 {
2791 if (!bcmbal_buf_read_u32(buf, &this->min_rate))
2792 {
2793 return BCMOS_FALSE;
2794 }
2795 }
2796
2797 if ((((uint64_t) this->presence_mask & 0x0002) == 0x0002))
2798 {
2799 if (!bcmbal_buf_read_u32(buf, &this->max_rate))
2800 {
2801 return BCMOS_FALSE;
2802 }
2803 }
2804
2805 return BCMOS_TRUE;
2806}
2807
2808/******************************************************************************/
2809bcmos_bool bcmbal_sla_scan(bcmbal_buf *packed, uint32_t *extra_mem)
2810{
2811 bcmbal_sla_id presence_mask;
2812 if (!bcmbal_sla_id_unpack(&presence_mask, packed))
2813 {
2814 return BCMOS_FALSE;
2815 }
2816
2817 if ((((uint64_t) presence_mask & 0x0001) == 0x0001))
2818 {
2819 if (!bcmbal_buf_skip(packed, 4))
2820 {
2821 return BCMOS_FALSE;
2822 }
2823 }
2824
2825 if ((((uint64_t) presence_mask & 0x0002) == 0x0002))
2826 {
2827 if (!bcmbal_buf_skip(packed, 4))
2828 {
2829 return BCMOS_FALSE;
2830 }
2831 }
2832
2833 return BCMOS_TRUE;
2834}
2835
2836/******************************************************************************/
2837bcmos_bool bcmbal_sla_bounds_check(const bcmbal_sla *this)
2838{
2839 if ((this->presence_mask & 0xFFFFFFFFFFFFFFFCULL) != 0)
2840 {
2841 return BCMOS_FALSE;
2842 }
2843
2844 return BCMOS_TRUE;
2845}
2846
2847/******************************************************************************/
2848void bcmbal_sub_id_list_u16_set_default(bcmbal_sub_id_list_u16 *this)
2849{
2850 this->len = 0;
2851 this->val = NULL;
2852}
2853
2854/******************************************************************************/
2855bcmos_bool bcmbal_sub_id_list_u16_pack(const bcmbal_sub_id_list_u16 *this, bcmbal_buf *buf)
2856{
2857 uint16_t i0;
2858 if (!bcmbal_buf_write_u16(buf, this->len))
2859 {
2860 return BCMOS_FALSE;
2861 }
2862
2863 if ((this->len > 0) && (this->val == NULL))
2864 {
2865 bcmos_trace(BCMOS_TRACE_LEVEL_ERROR, "Error: list field \"val\" of struct \"bcmbal_sub_id_list_u16\" is uninitialized (NULL). You must allocate memory for this pointer before sending/receiving the message.\n");
2866 return BCMOS_FALSE;
2867 }
2868
2869 for (i0 = 0; i0 < this->len; i0++)
2870 {
2871 if (!bcmbal_buf_write_u32(buf, (uint32_t) this->val[i0]))
2872 {
2873 return BCMOS_FALSE;
2874 }
2875 }
2876
2877 return BCMOS_TRUE;
2878}
2879
2880/******************************************************************************/
2881uint32_t bcmbal_sub_id_list_u16_get_packed_length(const bcmbal_sub_id_list_u16 *this)
2882{
2883 return 2 + (4 * this->len);
2884}
2885
2886/******************************************************************************/
2887bcmos_bool bcmbal_sub_id_list_u16_unpack(bcmbal_sub_id_list_u16 *this, bcmbal_buf *buf, void **extra_mem)
2888{
2889 uint16_t i0;
2890 if (!bcmbal_buf_read_u16(buf, &this->len))
2891 {
2892 return BCMOS_FALSE;
2893 }
2894
2895 if ((this->len > 0) && (this->val == NULL))
2896 {
2897 if (extra_mem == NULL)
2898 {
2899 bcmos_trace(BCMOS_TRACE_LEVEL_ERROR, "Error: list field \"val\" of struct \"bcmbal_sub_id_list_u16\" is uninitialized (NULL). You must allocate memory for this pointer before sending/receiving the message.\n");
2900 return BCMOS_FALSE;
2901 }
2902 else
2903 {
2904 this->val = (bcmbal_sub_id *) *extra_mem;
2905 *extra_mem = ((uint8_t *) *extra_mem) + BCMOS_ROUND_TO_WORD(this->len * sizeof(bcmbal_sub_id));
2906 }
2907 }
2908
2909 for (i0 = 0; i0 < this->len; i0++)
2910 {
2911 if (!bcmbal_buf_read_u32(buf, (uint32_t *) &this->val[i0]))
2912 {
2913 return BCMOS_FALSE;
2914 }
2915 }
2916
2917 return BCMOS_TRUE;
2918}
2919
2920/******************************************************************************/
2921bcmos_bool bcmbal_sub_id_list_u16_scan(bcmbal_buf *packed, uint32_t *extra_mem)
2922{
2923 uint16_t len;
2924 if (!bcmbal_buf_read_u16(packed, &len))
2925 {
2926 return BCMOS_FALSE;
2927 }
2928
2929 *extra_mem += BCMOS_ROUND_TO_WORD(sizeof(bcmbal_sub_id) * len);
2930 if (!bcmbal_buf_skip(packed, len * 4))
2931 {
2932 return BCMOS_FALSE;
2933 }
2934
2935 return BCMOS_TRUE;
2936}
2937
2938/******************************************************************************/
2939bcmos_bool bcmbal_sub_id_list_u16_bounds_check(const bcmbal_sub_id_list_u16 *this)
2940{
2941 return BCMOS_TRUE;
2942}
2943
2944/******************************************************************************/
2945void bcmbal_tm_red_set_default(bcmbal_tm_red *this)
2946{
2947 this->min_threshold = (bcmbal_percent) 0;
2948 this->max_threshold = (bcmbal_percent) 0;
2949 this->max_probability = (bcmbal_percent) 0;
2950}
2951
2952/******************************************************************************/
2953bcmos_bool bcmbal_tm_red_pack(const bcmbal_tm_red *this, bcmbal_buf *buf)
2954{
2955 if (!bcmbal_buf_write_u8(buf, (uint8_t) this->min_threshold))
2956 {
2957 return BCMOS_FALSE;
2958 }
2959
2960 if (!bcmbal_buf_write_u8(buf, (uint8_t) this->max_threshold))
2961 {
2962 return BCMOS_FALSE;
2963 }
2964
2965 if (!bcmbal_buf_write_u8(buf, (uint8_t) this->max_probability))
2966 {
2967 return BCMOS_FALSE;
2968 }
2969
2970 return BCMOS_TRUE;
2971}
2972
2973/******************************************************************************/
2974bcmos_bool bcmbal_tm_red_unpack(bcmbal_tm_red *this, bcmbal_buf *buf, void **extra_mem)
2975{
2976 if (!bcmbal_buf_read_u8(buf, (uint8_t *) &this->min_threshold))
2977 {
2978 return BCMOS_FALSE;
2979 }
2980
2981 if (!bcmbal_buf_read_u8(buf, (uint8_t *) &this->max_threshold))
2982 {
2983 return BCMOS_FALSE;
2984 }
2985
2986 if (!bcmbal_buf_read_u8(buf, (uint8_t *) &this->max_probability))
2987 {
2988 return BCMOS_FALSE;
2989 }
2990
2991 return BCMOS_TRUE;
2992}
2993
2994/******************************************************************************/
2995bcmos_bool bcmbal_tm_red_scan(bcmbal_buf *packed, uint32_t *extra_mem)
2996{
2997 (void)extra_mem;
2998 return bcmbal_buf_skip(packed, 3);
2999}
3000
3001/******************************************************************************/
3002bcmos_bool bcmbal_tm_red_bounds_check(const bcmbal_tm_red *this)
3003{
3004 if (this->min_threshold > (bcmbal_percent) 100)
3005 {
3006 return BCMOS_FALSE;
3007 }
3008
3009 if (this->max_threshold > (bcmbal_percent) 100)
3010 {
3011 return BCMOS_FALSE;
3012 }
3013
3014 if (this->max_probability > (bcmbal_percent) 100)
3015 {
3016 return BCMOS_FALSE;
3017 }
3018
3019 return BCMOS_TRUE;
3020}
3021
3022/******************************************************************************/
3023void bcmbal_tm_bac_set_default(bcmbal_tm_bac *this)
3024{
3025 this->type = (bcmbal_tm_bac_type) 0;
3026}
3027
3028/******************************************************************************/
3029bcmos_bool bcmbal_tm_bac_pack(const bcmbal_tm_bac *this, bcmbal_buf *buf)
3030{
3031 if (!bcmbal_tm_bac_type_pack(this->type, buf))
3032 {
3033 return BCMOS_FALSE;
3034 }
3035
3036 switch (this->type)
3037 {
3038 case BCMBAL_TM_BAC_TYPE_TAILDROP:
3039 {
3040 if (!bcmbal_buf_write_u32(buf, this->u.taildrop.max_size))
3041 {
3042 return BCMOS_FALSE;
3043 }
3044 }
3045 break;
3046 case BCMBAL_TM_BAC_TYPE_RED:
3047 {
3048 if (!bcmbal_tm_red_pack(&this->u.red.red, buf))
3049 {
3050 return BCMOS_FALSE;
3051 }
3052 }
3053 break;
3054 case BCMBAL_TM_BAC_TYPE_WRED:
3055 {
3056 if (!bcmbal_tm_red_pack(&this->u.wred.green, buf))
3057 {
3058 return BCMOS_FALSE;
3059 }
3060
3061 if (!bcmbal_tm_red_pack(&this->u.wred.yellow, buf))
3062 {
3063 return BCMOS_FALSE;
3064 }
3065
3066 if (!bcmbal_tm_red_pack(&this->u.wred.red, buf))
3067 {
3068 return BCMOS_FALSE;
3069 }
3070 }
3071 break;
3072 case BCMBAL_TM_BAC_TYPE_WTAILDROP:
3073 default:
3074 return BCMOS_FALSE;
3075 }
3076
3077 return BCMOS_TRUE;
3078}
3079
3080/******************************************************************************/
3081uint32_t bcmbal_tm_bac_get_packed_length(const bcmbal_tm_bac *this)
3082{
3083 uint32_t count = 1;
3084 switch (this->type)
3085 {
3086 case BCMBAL_TM_BAC_TYPE_TAILDROP:
3087 {
3088 count += 4;
3089 }
3090 break;
3091 case BCMBAL_TM_BAC_TYPE_RED:
3092 {
3093 count += 3;
3094 }
3095 break;
3096 case BCMBAL_TM_BAC_TYPE_WRED:
3097 {
3098 count += 9;
3099 }
3100 break;
3101 case BCMBAL_TM_BAC_TYPE_WTAILDROP:
3102 default:
3103 break;
3104 }
3105
3106 return count;
3107}
3108
3109/******************************************************************************/
3110bcmos_bool bcmbal_tm_bac_unpack(bcmbal_tm_bac *this, bcmbal_buf *buf, void **extra_mem)
3111{
3112 if (!bcmbal_tm_bac_type_unpack(&this->type, buf))
3113 {
3114 return BCMOS_FALSE;
3115 }
3116
3117 switch (this->type)
3118 {
3119 case BCMBAL_TM_BAC_TYPE_TAILDROP:
3120 {
3121 if (!bcmbal_buf_read_u32(buf, &this->u.taildrop.max_size))
3122 {
3123 return BCMOS_FALSE;
3124 }
3125 }
3126 break;
3127 case BCMBAL_TM_BAC_TYPE_RED:
3128 {
3129 if (!bcmbal_tm_red_unpack(&this->u.red.red, buf, extra_mem))
3130 {
3131 return BCMOS_FALSE;
3132 }
3133 }
3134 break;
3135 case BCMBAL_TM_BAC_TYPE_WRED:
3136 {
3137 if (!bcmbal_tm_red_unpack(&this->u.wred.green, buf, extra_mem))
3138 {
3139 return BCMOS_FALSE;
3140 }
3141
3142 if (!bcmbal_tm_red_unpack(&this->u.wred.yellow, buf, extra_mem))
3143 {
3144 return BCMOS_FALSE;
3145 }
3146
3147 if (!bcmbal_tm_red_unpack(&this->u.wred.red, buf, extra_mem))
3148 {
3149 return BCMOS_FALSE;
3150 }
3151 }
3152 break;
3153 case BCMBAL_TM_BAC_TYPE_WTAILDROP:
3154 default:
3155 return BCMOS_FALSE;
3156 }
3157
3158 return BCMOS_TRUE;
3159}
3160
3161/******************************************************************************/
3162bcmos_bool bcmbal_tm_bac_scan(bcmbal_buf *packed, uint32_t *extra_mem)
3163{
3164 bcmbal_tm_bac_type type;
3165 if (!bcmbal_tm_bac_type_unpack(&type, packed))
3166 {
3167 return BCMOS_FALSE;
3168 }
3169
3170 switch (type)
3171 {
3172 case BCMBAL_TM_BAC_TYPE_TAILDROP:
3173 {
3174 if (!bcmbal_buf_skip(packed, 4))
3175 {
3176 return BCMOS_FALSE;
3177 }
3178 }
3179 break;
3180 case BCMBAL_TM_BAC_TYPE_RED:
3181 {
3182 if (!bcmbal_buf_skip(packed, 3))
3183 {
3184 return BCMOS_FALSE;
3185 }
3186 }
3187 break;
3188 case BCMBAL_TM_BAC_TYPE_WRED:
3189 {
3190 if (!bcmbal_buf_skip(packed, 3))
3191 {
3192 return BCMOS_FALSE;
3193 }
3194
3195 if (!bcmbal_buf_skip(packed, 3))
3196 {
3197 return BCMOS_FALSE;
3198 }
3199
3200 if (!bcmbal_buf_skip(packed, 3))
3201 {
3202 return BCMOS_FALSE;
3203 }
3204 }
3205 break;
3206 case BCMBAL_TM_BAC_TYPE_WTAILDROP:
3207 default:
3208 return BCMOS_FALSE;
3209 }
3210
3211 return BCMOS_TRUE;
3212}
3213
3214/******************************************************************************/
3215bcmos_bool bcmbal_tm_bac_bounds_check(const bcmbal_tm_bac *this)
3216{
3217 switch (this->type)
3218 {
3219 case BCMBAL_TM_BAC_TYPE_TAILDROP:
3220 {
3221 }
3222 break;
3223 case BCMBAL_TM_BAC_TYPE_RED:
3224 {
3225 if (!bcmbal_tm_red_bounds_check(&this->u.red.red))
3226 {
3227 return BCMOS_FALSE;
3228 }
3229 }
3230 break;
3231 case BCMBAL_TM_BAC_TYPE_WRED:
3232 {
3233 if (!bcmbal_tm_red_bounds_check(&this->u.wred.green))
3234 {
3235 return BCMOS_FALSE;
3236 }
3237
3238 if (!bcmbal_tm_red_bounds_check(&this->u.wred.yellow))
3239 {
3240 return BCMOS_FALSE;
3241 }
3242
3243 if (!bcmbal_tm_red_bounds_check(&this->u.wred.red))
3244 {
3245 return BCMOS_FALSE;
3246 }
3247 }
3248 break;
3249 case BCMBAL_TM_BAC_TYPE_WTAILDROP:
3250 break;
3251 default:
3252 return BCMOS_FALSE;
3253 }
3254
3255 return BCMOS_TRUE;
3256}
3257
3258/******************************************************************************/
3259void bcmbal_tm_queue_id_list_u8_set_default(bcmbal_tm_queue_id_list_u8 *this)
3260{
3261 this->len = 0;
3262 this->val = NULL;
3263}
3264
3265/******************************************************************************/
3266bcmos_bool bcmbal_tm_queue_id_list_u8_pack(const bcmbal_tm_queue_id_list_u8 *this, bcmbal_buf *buf)
3267{
3268 uint8_t i0;
3269 if (!bcmbal_buf_write_u8(buf, this->len))
3270 {
3271 return BCMOS_FALSE;
3272 }
3273
3274 if ((this->len > 0) && (this->val == NULL))
3275 {
3276 bcmos_trace(BCMOS_TRACE_LEVEL_ERROR, "Error: list field \"val\" of struct \"bcmbal_tm_queue_id_list_u8\" is uninitialized (NULL). You must allocate memory for this pointer before sending/receiving the message.\n");
3277 return BCMOS_FALSE;
3278 }
3279
3280 for (i0 = 0; i0 < this->len; i0++)
3281 {
3282 if (!bcmbal_buf_write_u8(buf, (uint8_t) this->val[i0]))
3283 {
3284 return BCMOS_FALSE;
3285 }
3286 }
3287
3288 return BCMOS_TRUE;
3289}
3290
3291/******************************************************************************/
3292uint32_t bcmbal_tm_queue_id_list_u8_get_packed_length(const bcmbal_tm_queue_id_list_u8 *this)
3293{
3294 return 1 + this->len;
3295}
3296
3297/******************************************************************************/
3298bcmos_bool bcmbal_tm_queue_id_list_u8_unpack(bcmbal_tm_queue_id_list_u8 *this, bcmbal_buf *buf, void **extra_mem)
3299{
3300 uint8_t i0;
3301 if (!bcmbal_buf_read_u8(buf, &this->len))
3302 {
3303 return BCMOS_FALSE;
3304 }
3305
3306 if ((this->len > 0) && (this->val == NULL))
3307 {
3308 if (extra_mem == NULL)
3309 {
3310 bcmos_trace(BCMOS_TRACE_LEVEL_ERROR, "Error: list field \"val\" of struct \"bcmbal_tm_queue_id_list_u8\" is uninitialized (NULL). You must allocate memory for this pointer before sending/receiving the message.\n");
3311 return BCMOS_FALSE;
3312 }
3313 else
3314 {
3315 this->val = (bcmbal_tm_queue_id *) *extra_mem;
3316 *extra_mem = ((uint8_t *) *extra_mem) + BCMOS_ROUND_TO_WORD(this->len * sizeof(bcmbal_tm_queue_id));
3317 }
3318 }
3319
3320 for (i0 = 0; i0 < this->len; i0++)
3321 {
3322 if (!bcmbal_buf_read_u8(buf, (uint8_t *) &this->val[i0]))
3323 {
3324 return BCMOS_FALSE;
3325 }
3326 }
3327
3328 return BCMOS_TRUE;
3329}
3330
3331/******************************************************************************/
3332bcmos_bool bcmbal_tm_queue_id_list_u8_scan(bcmbal_buf *packed, uint32_t *extra_mem)
3333{
3334 uint8_t len;
3335 if (!bcmbal_buf_read_u8(packed, &len))
3336 {
3337 return BCMOS_FALSE;
3338 }
3339
3340 *extra_mem += BCMOS_ROUND_TO_WORD(sizeof(bcmbal_tm_queue_id) * len);
3341 if (!bcmbal_buf_skip(packed, len * 1))
3342 {
3343 return BCMOS_FALSE;
3344 }
3345
3346 return BCMOS_TRUE;
3347}
3348
3349/******************************************************************************/
3350bcmos_bool bcmbal_tm_queue_id_list_u8_bounds_check(const bcmbal_tm_queue_id_list_u8 *this)
3351{
3352 return BCMOS_TRUE;
3353}
3354
3355/******************************************************************************/
3356void bcmbal_tm_sched_id_list_u8_set_default(bcmbal_tm_sched_id_list_u8 *this)
3357{
3358 this->len = 0;
3359 this->val = NULL;
3360}
3361
3362/******************************************************************************/
3363bcmos_bool bcmbal_tm_sched_id_list_u8_pack(const bcmbal_tm_sched_id_list_u8 *this, bcmbal_buf *buf)
3364{
3365 uint8_t i0;
3366 if (!bcmbal_buf_write_u8(buf, this->len))
3367 {
3368 return BCMOS_FALSE;
3369 }
3370
3371 if ((this->len > 0) && (this->val == NULL))
3372 {
3373 bcmos_trace(BCMOS_TRACE_LEVEL_ERROR, "Error: list field \"val\" of struct \"bcmbal_tm_sched_id_list_u8\" is uninitialized (NULL). You must allocate memory for this pointer before sending/receiving the message.\n");
3374 return BCMOS_FALSE;
3375 }
3376
3377 for (i0 = 0; i0 < this->len; i0++)
3378 {
3379 if (!bcmbal_buf_write_u32(buf, (uint32_t) this->val[i0]))
3380 {
3381 return BCMOS_FALSE;
3382 }
3383 }
3384
3385 return BCMOS_TRUE;
3386}
3387
3388/******************************************************************************/
3389uint32_t bcmbal_tm_sched_id_list_u8_get_packed_length(const bcmbal_tm_sched_id_list_u8 *this)
3390{
3391 return 1 + (4 * this->len);
3392}
3393
3394/******************************************************************************/
3395bcmos_bool bcmbal_tm_sched_id_list_u8_unpack(bcmbal_tm_sched_id_list_u8 *this, bcmbal_buf *buf, void **extra_mem)
3396{
3397 uint8_t i0;
3398 if (!bcmbal_buf_read_u8(buf, &this->len))
3399 {
3400 return BCMOS_FALSE;
3401 }
3402
3403 if ((this->len > 0) && (this->val == NULL))
3404 {
3405 if (extra_mem == NULL)
3406 {
3407 bcmos_trace(BCMOS_TRACE_LEVEL_ERROR, "Error: list field \"val\" of struct \"bcmbal_tm_sched_id_list_u8\" is uninitialized (NULL). You must allocate memory for this pointer before sending/receiving the message.\n");
3408 return BCMOS_FALSE;
3409 }
3410 else
3411 {
3412 this->val = (bcmbal_tm_sched_id *) *extra_mem;
3413 *extra_mem = ((uint8_t *) *extra_mem) + BCMOS_ROUND_TO_WORD(this->len * sizeof(bcmbal_tm_sched_id));
3414 }
3415 }
3416
3417 for (i0 = 0; i0 < this->len; i0++)
3418 {
3419 if (!bcmbal_buf_read_u32(buf, (uint32_t *) &this->val[i0]))
3420 {
3421 return BCMOS_FALSE;
3422 }
3423 }
3424
3425 return BCMOS_TRUE;
3426}
3427
3428/******************************************************************************/
3429bcmos_bool bcmbal_tm_sched_id_list_u8_scan(bcmbal_buf *packed, uint32_t *extra_mem)
3430{
3431 uint8_t len;
3432 if (!bcmbal_buf_read_u8(packed, &len))
3433 {
3434 return BCMOS_FALSE;
3435 }
3436
3437 *extra_mem += BCMOS_ROUND_TO_WORD(sizeof(bcmbal_tm_sched_id) * len);
3438 if (!bcmbal_buf_skip(packed, len * 4))
3439 {
3440 return BCMOS_FALSE;
3441 }
3442
3443 return BCMOS_TRUE;
3444}
3445
3446/******************************************************************************/
3447bcmos_bool bcmbal_tm_sched_id_list_u8_bounds_check(const bcmbal_tm_sched_id_list_u8 *this)
3448{
3449 return BCMOS_TRUE;
3450}
3451
3452/******************************************************************************/
3453void bcmbal_tm_sched_owner_set_default(bcmbal_tm_sched_owner *this)
3454{
3455 this->type = (bcmbal_tm_sched_owner_type) 0;
3456}
3457
3458/******************************************************************************/
3459bcmos_bool bcmbal_tm_sched_owner_pack(const bcmbal_tm_sched_owner *this, bcmbal_buf *buf)
3460{
3461 if (!bcmbal_tm_sched_owner_type_pack(this->type, buf))
3462 {
3463 return BCMOS_FALSE;
3464 }
3465
3466 switch (this->type)
3467 {
3468 case BCMBAL_TM_SCHED_OWNER_TYPE_INTERFACE:
3469 {
3470 if (!bcmbal_intf_type_pack(this->u.interface.intf_type, buf))
3471 {
3472 return BCMOS_FALSE;
3473 }
3474
3475 if (!bcmbal_buf_write_u32(buf, (uint32_t) this->u.interface.intf_id))
3476 {
3477 return BCMOS_FALSE;
3478 }
3479 }
3480 break;
3481 case BCMBAL_TM_SCHED_OWNER_TYPE_SUB_TERM:
3482 {
3483 if (!bcmbal_buf_write_u32(buf, (uint32_t) this->u.sub_term.intf_id))
3484 {
3485 return BCMOS_FALSE;
3486 }
3487
3488 if (!bcmbal_buf_write_u32(buf, (uint32_t) this->u.sub_term.sub_term_id))
3489 {
3490 return BCMOS_FALSE;
3491 }
3492 }
3493 break;
3494 case BCMBAL_TM_SCHED_OWNER_TYPE_AGG_PORT:
3495 {
3496 if (!bcmbal_tm_sched_owner_agg_port_id_pack(this->u.agg_port.presence_mask, buf))
3497 {
3498 return BCMOS_FALSE;
3499 }
3500
3501 if ((((uint64_t) this->u.agg_port.presence_mask & 0x0001) == 0x0001))
3502 {
3503 if (!bcmbal_buf_write_u8(buf, this->u.agg_port.intf_id))
3504 {
3505 return BCMOS_FALSE;
3506 }
3507 }
3508
3509 if ((((uint64_t) this->u.agg_port.presence_mask & 0x0002) == 0x0002))
3510 {
3511 if (!bcmbal_buf_write_u32(buf, (uint32_t) this->u.agg_port.sub_term_id))
3512 {
3513 return BCMOS_FALSE;
3514 }
3515 }
3516
3517 if ((((uint64_t) this->u.agg_port.presence_mask & 0x0004) == 0x0004))
3518 {
3519 if (!bcmbal_buf_write_u16(buf, (uint16_t) this->u.agg_port.agg_port_id))
3520 {
3521 return BCMOS_FALSE;
3522 }
3523 }
3524 }
3525 break;
3526 case BCMBAL_TM_SCHED_OWNER_TYPE_UNI:
3527 {
3528 if (!bcmbal_buf_write_u8(buf, this->u.uni.intf_id))
3529 {
3530 return BCMOS_FALSE;
3531 }
3532
3533 if (!bcmbal_buf_write_u32(buf, (uint32_t) this->u.uni.sub_term_id))
3534 {
3535 return BCMOS_FALSE;
3536 }
3537
3538 if (!bcmbal_buf_write_u8(buf, this->u.uni.idx))
3539 {
3540 return BCMOS_FALSE;
3541 }
3542 }
3543 break;
3544 case BCMBAL_TM_SCHED_OWNER_TYPE_VIRTUAL:
3545 {
3546 if (!bcmbal_buf_write_u32(buf, this->u.virtual.idx))
3547 {
3548 return BCMOS_FALSE;
3549 }
3550 }
3551 break;
3552 case BCMBAL_TM_SCHED_OWNER_TYPE_UNDEFINED:
3553 default:
3554 return BCMOS_FALSE;
3555 }
3556
3557 return BCMOS_TRUE;
3558}
3559
3560/******************************************************************************/
3561uint32_t bcmbal_tm_sched_owner_get_packed_length(const bcmbal_tm_sched_owner *this)
3562{
3563 uint32_t count = 1;
3564 switch (this->type)
3565 {
3566 case BCMBAL_TM_SCHED_OWNER_TYPE_INTERFACE:
3567 {
3568 count += 8;
3569 }
3570 break;
3571 case BCMBAL_TM_SCHED_OWNER_TYPE_SUB_TERM:
3572 {
3573 count += 8;
3574 }
3575 break;
3576 case BCMBAL_TM_SCHED_OWNER_TYPE_AGG_PORT:
3577 {
3578 count += 15;
3579 }
3580 break;
3581 case BCMBAL_TM_SCHED_OWNER_TYPE_UNI:
3582 {
3583 count += 6;
3584 }
3585 break;
3586 case BCMBAL_TM_SCHED_OWNER_TYPE_VIRTUAL:
3587 {
3588 count += 4;
3589 }
3590 break;
3591 case BCMBAL_TM_SCHED_OWNER_TYPE_UNDEFINED:
3592 default:
3593 break;
3594 }
3595
3596 return count;
3597}
3598
3599/******************************************************************************/
3600bcmos_bool bcmbal_tm_sched_owner_unpack(bcmbal_tm_sched_owner *this, bcmbal_buf *buf, void **extra_mem)
3601{
3602 if (!bcmbal_tm_sched_owner_type_unpack(&this->type, buf))
3603 {
3604 return BCMOS_FALSE;
3605 }
3606
3607 switch (this->type)
3608 {
3609 case BCMBAL_TM_SCHED_OWNER_TYPE_INTERFACE:
3610 {
3611 if (!bcmbal_intf_type_unpack(&this->u.interface.intf_type, buf))
3612 {
3613 return BCMOS_FALSE;
3614 }
3615
3616 if (!bcmbal_buf_read_u32(buf, (uint32_t *) &this->u.interface.intf_id))
3617 {
3618 return BCMOS_FALSE;
3619 }
3620 }
3621 break;
3622 case BCMBAL_TM_SCHED_OWNER_TYPE_SUB_TERM:
3623 {
3624 if (!bcmbal_buf_read_u32(buf, (uint32_t *) &this->u.sub_term.intf_id))
3625 {
3626 return BCMOS_FALSE;
3627 }
3628
3629 if (!bcmbal_buf_read_u32(buf, (uint32_t *) &this->u.sub_term.sub_term_id))
3630 {
3631 return BCMOS_FALSE;
3632 }
3633 }
3634 break;
3635 case BCMBAL_TM_SCHED_OWNER_TYPE_AGG_PORT:
3636 {
3637 if (!bcmbal_tm_sched_owner_agg_port_id_unpack(&this->u.agg_port.presence_mask, buf))
3638 {
3639 return BCMOS_FALSE;
3640 }
3641
3642 if ((((uint64_t) this->u.agg_port.presence_mask & 0x0001) == 0x0001))
3643 {
3644 if (!bcmbal_buf_read_u8(buf, &this->u.agg_port.intf_id))
3645 {
3646 return BCMOS_FALSE;
3647 }
3648 }
3649
3650 if ((((uint64_t) this->u.agg_port.presence_mask & 0x0002) == 0x0002))
3651 {
3652 if (!bcmbal_buf_read_u32(buf, (uint32_t *) &this->u.agg_port.sub_term_id))
3653 {
3654 return BCMOS_FALSE;
3655 }
3656 }
3657
3658 if ((((uint64_t) this->u.agg_port.presence_mask & 0x0004) == 0x0004))
3659 {
3660 if (!bcmbal_buf_read_u16(buf, (uint16_t *) &this->u.agg_port.agg_port_id))
3661 {
3662 return BCMOS_FALSE;
3663 }
3664 }
3665 }
3666 break;
3667 case BCMBAL_TM_SCHED_OWNER_TYPE_UNI:
3668 {
3669 if (!bcmbal_buf_read_u8(buf, &this->u.uni.intf_id))
3670 {
3671 return BCMOS_FALSE;
3672 }
3673
3674 if (!bcmbal_buf_read_u32(buf, (uint32_t *) &this->u.uni.sub_term_id))
3675 {
3676 return BCMOS_FALSE;
3677 }
3678
3679 if (!bcmbal_buf_read_u8(buf, &this->u.uni.idx))
3680 {
3681 return BCMOS_FALSE;
3682 }
3683 }
3684 break;
3685 case BCMBAL_TM_SCHED_OWNER_TYPE_VIRTUAL:
3686 {
3687 if (!bcmbal_buf_read_u32(buf, &this->u.virtual.idx))
3688 {
3689 return BCMOS_FALSE;
3690 }
3691 }
3692 break;
3693 case BCMBAL_TM_SCHED_OWNER_TYPE_UNDEFINED:
3694 default:
3695 return BCMOS_FALSE;
3696 }
3697
3698 return BCMOS_TRUE;
3699}
3700
3701/******************************************************************************/
3702bcmos_bool bcmbal_tm_sched_owner_scan(bcmbal_buf *packed, uint32_t *extra_mem)
3703{
3704 bcmbal_tm_sched_owner_type type;
3705 if (!bcmbal_tm_sched_owner_type_unpack(&type, packed))
3706 {
3707 return BCMOS_FALSE;
3708 }
3709
3710 switch (type)
3711 {
3712 case BCMBAL_TM_SCHED_OWNER_TYPE_INTERFACE:
3713 {
3714 if (!bcmbal_buf_skip(packed, 4))
3715 {
3716 return BCMOS_FALSE;
3717 }
3718
3719 if (!bcmbal_buf_skip(packed, 4))
3720 {
3721 return BCMOS_FALSE;
3722 }
3723 }
3724 break;
3725 case BCMBAL_TM_SCHED_OWNER_TYPE_SUB_TERM:
3726 {
3727 if (!bcmbal_buf_skip(packed, 4))
3728 {
3729 return BCMOS_FALSE;
3730 }
3731
3732 if (!bcmbal_buf_skip(packed, 4))
3733 {
3734 return BCMOS_FALSE;
3735 }
3736 }
3737 break;
3738 case BCMBAL_TM_SCHED_OWNER_TYPE_AGG_PORT:
3739 {
3740 bcmbal_tm_sched_owner_agg_port_id presence_mask;
3741 if (!bcmbal_tm_sched_owner_agg_port_id_unpack(&presence_mask, packed))
3742 {
3743 return BCMOS_FALSE;
3744 }
3745
3746 if ((((uint64_t) presence_mask & 0x0001) == 0x0001))
3747 {
3748 if (!bcmbal_buf_skip(packed, 1))
3749 {
3750 return BCMOS_FALSE;
3751 }
3752 }
3753
3754 if ((((uint64_t) presence_mask & 0x0002) == 0x0002))
3755 {
3756 if (!bcmbal_buf_skip(packed, 4))
3757 {
3758 return BCMOS_FALSE;
3759 }
3760 }
3761
3762 if ((((uint64_t) presence_mask & 0x0004) == 0x0004))
3763 {
3764 if (!bcmbal_buf_skip(packed, 2))
3765 {
3766 return BCMOS_FALSE;
3767 }
3768 }
3769 }
3770 break;
3771 case BCMBAL_TM_SCHED_OWNER_TYPE_UNI:
3772 {
3773 if (!bcmbal_buf_skip(packed, 1))
3774 {
3775 return BCMOS_FALSE;
3776 }
3777
3778 if (!bcmbal_buf_skip(packed, 4))
3779 {
3780 return BCMOS_FALSE;
3781 }
3782
3783 if (!bcmbal_buf_skip(packed, 1))
3784 {
3785 return BCMOS_FALSE;
3786 }
3787 }
3788 break;
3789 case BCMBAL_TM_SCHED_OWNER_TYPE_VIRTUAL:
3790 {
3791 if (!bcmbal_buf_skip(packed, 4))
3792 {
3793 return BCMOS_FALSE;
3794 }
3795 }
3796 break;
3797 case BCMBAL_TM_SCHED_OWNER_TYPE_UNDEFINED:
3798 default:
3799 return BCMOS_FALSE;
3800 }
3801
3802 return BCMOS_TRUE;
3803}
3804
3805/******************************************************************************/
3806bcmos_bool bcmbal_tm_sched_owner_bounds_check(const bcmbal_tm_sched_owner *this)
3807{
3808 switch (this->type)
3809 {
3810 case BCMBAL_TM_SCHED_OWNER_TYPE_INTERFACE:
3811 {
3812 switch (this->u.interface.intf_type)
3813 {
3814 case BCMBAL_INTF_TYPE_NNI:
3815 break;
3816 case BCMBAL_INTF_TYPE_PON:
3817 break;
3818 default:
3819 return BCMOS_FALSE;
3820 }
3821 }
3822 break;
3823 case BCMBAL_TM_SCHED_OWNER_TYPE_SUB_TERM:
3824 {
3825 }
3826 break;
3827 case BCMBAL_TM_SCHED_OWNER_TYPE_AGG_PORT:
3828 {
3829 if ((this->u.agg_port.presence_mask & 0xFFFFFFFFFFFFFFF8ULL) != 0)
3830 {
3831 return BCMOS_FALSE;
3832 }
3833 }
3834 break;
3835 case BCMBAL_TM_SCHED_OWNER_TYPE_UNI:
3836 {
3837 }
3838 break;
3839 case BCMBAL_TM_SCHED_OWNER_TYPE_VIRTUAL:
3840 {
3841 }
3842 break;
3843 case BCMBAL_TM_SCHED_OWNER_TYPE_UNDEFINED:
3844 break;
3845 default:
3846 return BCMOS_FALSE;
3847 }
3848
3849 return BCMOS_TRUE;
3850}
3851
3852/******************************************************************************/
3853void bcmbal_tm_sched_parent_set_default(bcmbal_tm_sched_parent *this)
3854{
3855 this->presence_mask = (bcmbal_tm_sched_parent_id) 0;
3856 this->sched_id = (bcmbal_tm_sched_id) 0;
3857 this->priority = (bcmbal_tm_priority) 0;
3858 this->weight = (bcmbal_tm_weight) 0;
3859}
3860
3861/******************************************************************************/
3862bcmos_bool bcmbal_tm_sched_parent_pack(const bcmbal_tm_sched_parent *this, bcmbal_buf *buf)
3863{
3864 if (!bcmbal_tm_sched_parent_id_pack(this->presence_mask, buf))
3865 {
3866 return BCMOS_FALSE;
3867 }
3868
3869 if ((((uint64_t) this->presence_mask & 0x0001) == 0x0001))
3870 {
3871 if (!bcmbal_buf_write_u32(buf, (uint32_t) this->sched_id))
3872 {
3873 return BCMOS_FALSE;
3874 }
3875 }
3876
3877 if ((((uint64_t) this->presence_mask & 0x0002) == 0x0002))
3878 {
3879 if (!bcmbal_buf_write_u8(buf, (uint8_t) this->priority))
3880 {
3881 return BCMOS_FALSE;
3882 }
3883 }
3884
3885 if ((((uint64_t) this->presence_mask & 0x0004) == 0x0004))
3886 {
3887 if (!bcmbal_buf_write_u8(buf, (uint8_t) this->weight))
3888 {
3889 return BCMOS_FALSE;
3890 }
3891 }
3892
3893 return BCMOS_TRUE;
3894}
3895
3896/******************************************************************************/
3897uint32_t bcmbal_tm_sched_parent_get_packed_length(const bcmbal_tm_sched_parent *this)
3898{
3899 uint32_t count = 8;
3900 if ((((uint64_t) this->presence_mask & 0x0001) == 0x0001))
3901 {
3902 count += 4;
3903 }
3904
3905 if ((((uint64_t) this->presence_mask & 0x0002) == 0x0002))
3906 {
3907 count += 1;
3908 }
3909
3910 if ((((uint64_t) this->presence_mask & 0x0004) == 0x0004))
3911 {
3912 count += 1;
3913 }
3914
3915 return count;
3916}
3917
3918/******************************************************************************/
3919bcmos_bool bcmbal_tm_sched_parent_unpack(bcmbal_tm_sched_parent *this, bcmbal_buf *buf, void **extra_mem)
3920{
3921 if (!bcmbal_tm_sched_parent_id_unpack(&this->presence_mask, buf))
3922 {
3923 return BCMOS_FALSE;
3924 }
3925
3926 if ((((uint64_t) this->presence_mask & 0x0001) == 0x0001))
3927 {
3928 if (!bcmbal_buf_read_u32(buf, (uint32_t *) &this->sched_id))
3929 {
3930 return BCMOS_FALSE;
3931 }
3932 }
3933
3934 if ((((uint64_t) this->presence_mask & 0x0002) == 0x0002))
3935 {
3936 if (!bcmbal_buf_read_u8(buf, (uint8_t *) &this->priority))
3937 {
3938 return BCMOS_FALSE;
3939 }
3940 }
3941
3942 if ((((uint64_t) this->presence_mask & 0x0004) == 0x0004))
3943 {
3944 if (!bcmbal_buf_read_u8(buf, (uint8_t *) &this->weight))
3945 {
3946 return BCMOS_FALSE;
3947 }
3948 }
3949
3950 return BCMOS_TRUE;
3951}
3952
3953/******************************************************************************/
3954bcmos_bool bcmbal_tm_sched_parent_scan(bcmbal_buf *packed, uint32_t *extra_mem)
3955{
3956 bcmbal_tm_sched_parent_id presence_mask;
3957 if (!bcmbal_tm_sched_parent_id_unpack(&presence_mask, packed))
3958 {
3959 return BCMOS_FALSE;
3960 }
3961
3962 if ((((uint64_t) presence_mask & 0x0001) == 0x0001))
3963 {
3964 if (!bcmbal_buf_skip(packed, 4))
3965 {
3966 return BCMOS_FALSE;
3967 }
3968 }
3969
3970 if ((((uint64_t) presence_mask & 0x0002) == 0x0002))
3971 {
3972 if (!bcmbal_buf_skip(packed, 1))
3973 {
3974 return BCMOS_FALSE;
3975 }
3976 }
3977
3978 if ((((uint64_t) presence_mask & 0x0004) == 0x0004))
3979 {
3980 if (!bcmbal_buf_skip(packed, 1))
3981 {
3982 return BCMOS_FALSE;
3983 }
3984 }
3985
3986 return BCMOS_TRUE;
3987}
3988
3989/******************************************************************************/
3990bcmos_bool bcmbal_tm_sched_parent_bounds_check(const bcmbal_tm_sched_parent *this)
3991{
3992 if ((this->presence_mask & 0xFFFFFFFFFFFFFFF8ULL) != 0)
3993 {
3994 return BCMOS_FALSE;
3995 }
3996
3997 return BCMOS_TRUE;
3998}
3999
4000/******************************************************************************/
4001void bcmbal_tm_shaping_set_default(bcmbal_tm_shaping *this)
4002{
4003 this->presence_mask = (bcmbal_tm_shaping_id) 0;
4004 this->sbr = 0;
4005 this->pbr = 0;
4006 this->burst = 0;
4007}
4008
4009/******************************************************************************/
4010bcmos_bool bcmbal_tm_shaping_pack(const bcmbal_tm_shaping *this, bcmbal_buf *buf)
4011{
4012 if (!bcmbal_tm_shaping_id_pack(this->presence_mask, buf))
4013 {
4014 return BCMOS_FALSE;
4015 }
4016
4017 if ((((uint64_t) this->presence_mask & 0x0001) == 0x0001))
4018 {
4019 if (!bcmbal_buf_write_u32(buf, this->sbr))
4020 {
4021 return BCMOS_FALSE;
4022 }
4023 }
4024
4025 if ((((uint64_t) this->presence_mask & 0x0002) == 0x0002))
4026 {
4027 if (!bcmbal_buf_write_u32(buf, this->pbr))
4028 {
4029 return BCMOS_FALSE;
4030 }
4031 }
4032
4033 if ((((uint64_t) this->presence_mask & 0x0004) == 0x0004))
4034 {
4035 if (!bcmbal_buf_write_u32(buf, this->burst))
4036 {
4037 return BCMOS_FALSE;
4038 }
4039 }
4040
4041 return BCMOS_TRUE;
4042}
4043
4044/******************************************************************************/
4045uint32_t bcmbal_tm_shaping_get_packed_length(const bcmbal_tm_shaping *this)
4046{
4047 uint32_t count = 8;
4048 if ((((uint64_t) this->presence_mask & 0x0001) == 0x0001))
4049 {
4050 count += 4;
4051 }
4052
4053 if ((((uint64_t) this->presence_mask & 0x0002) == 0x0002))
4054 {
4055 count += 4;
4056 }
4057
4058 if ((((uint64_t) this->presence_mask & 0x0004) == 0x0004))
4059 {
4060 count += 4;
4061 }
4062
4063 return count;
4064}
4065
4066/******************************************************************************/
4067bcmos_bool bcmbal_tm_shaping_unpack(bcmbal_tm_shaping *this, bcmbal_buf *buf, void **extra_mem)
4068{
4069 if (!bcmbal_tm_shaping_id_unpack(&this->presence_mask, buf))
4070 {
4071 return BCMOS_FALSE;
4072 }
4073
4074 if ((((uint64_t) this->presence_mask & 0x0001) == 0x0001))
4075 {
4076 if (!bcmbal_buf_read_u32(buf, &this->sbr))
4077 {
4078 return BCMOS_FALSE;
4079 }
4080 }
4081
4082 if ((((uint64_t) this->presence_mask & 0x0002) == 0x0002))
4083 {
4084 if (!bcmbal_buf_read_u32(buf, &this->pbr))
4085 {
4086 return BCMOS_FALSE;
4087 }
4088 }
4089
4090 if ((((uint64_t) this->presence_mask & 0x0004) == 0x0004))
4091 {
4092 if (!bcmbal_buf_read_u32(buf, &this->burst))
4093 {
4094 return BCMOS_FALSE;
4095 }
4096 }
4097
4098 return BCMOS_TRUE;
4099}
4100
4101/******************************************************************************/
4102bcmos_bool bcmbal_tm_shaping_scan(bcmbal_buf *packed, uint32_t *extra_mem)
4103{
4104 bcmbal_tm_shaping_id presence_mask;
4105 if (!bcmbal_tm_shaping_id_unpack(&presence_mask, packed))
4106 {
4107 return BCMOS_FALSE;
4108 }
4109
4110 if ((((uint64_t) presence_mask & 0x0001) == 0x0001))
4111 {
4112 if (!bcmbal_buf_skip(packed, 4))
4113 {
4114 return BCMOS_FALSE;
4115 }
4116 }
4117
4118 if ((((uint64_t) presence_mask & 0x0002) == 0x0002))
4119 {
4120 if (!bcmbal_buf_skip(packed, 4))
4121 {
4122 return BCMOS_FALSE;
4123 }
4124 }
4125
4126 if ((((uint64_t) presence_mask & 0x0004) == 0x0004))
4127 {
4128 if (!bcmbal_buf_skip(packed, 4))
4129 {
4130 return BCMOS_FALSE;
4131 }
4132 }
4133
4134 return BCMOS_TRUE;
4135}
4136
4137/******************************************************************************/
4138bcmos_bool bcmbal_tm_shaping_bounds_check(const bcmbal_tm_shaping *this)
4139{
4140 if ((this->presence_mask & 0xFFFFFFFFFFFFFFF8ULL) != 0)
4141 {
4142 return BCMOS_FALSE;
4143 }
4144
4145 return BCMOS_TRUE;
4146}
4147
4148/******************************************************************************/
4149void bcmbal_tm_tcont_sla_set_default(bcmbal_tm_tcont_sla *this)
4150{
4151 this->presence_mask = (bcmbal_tm_tcont_sla_id) 0;
4152 this->extra_bw_elig = BCMBAL_EXTRA_BW_ELIGIBILITY_TYPE_NONE;
4153 this->nrt_cbr = 0;
4154 this->rt_cbr = 0;
4155 this->rt_profile = 0;
4156 this->nrt_profile = 0;
4157}
4158
4159/******************************************************************************/
4160bcmos_bool bcmbal_tm_tcont_sla_pack(const bcmbal_tm_tcont_sla *this, bcmbal_buf *buf)
4161{
4162 if (!bcmbal_tm_tcont_sla_id_pack(this->presence_mask, buf))
4163 {
4164 return BCMOS_FALSE;
4165 }
4166
4167 if ((((uint64_t) this->presence_mask & 0x0001) == 0x0001))
4168 {
4169 if (!bcmbal_extra_bw_eligibility_type_pack(this->extra_bw_elig, buf))
4170 {
4171 return BCMOS_FALSE;
4172 }
4173 }
4174
4175 if ((((uint64_t) this->presence_mask & 0x0002) == 0x0002))
4176 {
4177 if (!bcmbal_buf_write_u8(buf, this->nrt_cbr))
4178 {
4179 return BCMOS_FALSE;
4180 }
4181 }
4182
4183 if ((((uint64_t) this->presence_mask & 0x0004) == 0x0004))
4184 {
4185 if (!bcmbal_buf_write_u8(buf, this->rt_cbr))
4186 {
4187 return BCMOS_FALSE;
4188 }
4189 }
4190
4191 if ((((uint64_t) this->presence_mask & 0x0008) == 0x0008))
4192 {
4193 if (!bcmbal_buf_write_u8(buf, this->rt_profile))
4194 {
4195 return BCMOS_FALSE;
4196 }
4197 }
4198
4199 if ((((uint64_t) this->presence_mask & 0x0010) == 0x0010))
4200 {
4201 if (!bcmbal_buf_write_u8(buf, this->nrt_profile))
4202 {
4203 return BCMOS_FALSE;
4204 }
4205 }
4206
4207 return BCMOS_TRUE;
4208}
4209
4210/******************************************************************************/
4211uint32_t bcmbal_tm_tcont_sla_get_packed_length(const bcmbal_tm_tcont_sla *this)
4212{
4213 uint32_t count = 8;
4214 if ((((uint64_t) this->presence_mask & 0x0001) == 0x0001))
4215 {
4216 count += 1;
4217 }
4218
4219 if ((((uint64_t) this->presence_mask & 0x0002) == 0x0002))
4220 {
4221 count += 1;
4222 }
4223
4224 if ((((uint64_t) this->presence_mask & 0x0004) == 0x0004))
4225 {
4226 count += 1;
4227 }
4228
4229 if ((((uint64_t) this->presence_mask & 0x0008) == 0x0008))
4230 {
4231 count += 1;
4232 }
4233
4234 if ((((uint64_t) this->presence_mask & 0x0010) == 0x0010))
4235 {
4236 count += 1;
4237 }
4238
4239 return count;
4240}
4241
4242/******************************************************************************/
4243bcmos_bool bcmbal_tm_tcont_sla_unpack(bcmbal_tm_tcont_sla *this, bcmbal_buf *buf, void **extra_mem)
4244{
4245 if (!bcmbal_tm_tcont_sla_id_unpack(&this->presence_mask, buf))
4246 {
4247 return BCMOS_FALSE;
4248 }
4249
4250 if ((((uint64_t) this->presence_mask & 0x0001) == 0x0001))
4251 {
4252 if (!bcmbal_extra_bw_eligibility_type_unpack(&this->extra_bw_elig, buf))
4253 {
4254 return BCMOS_FALSE;
4255 }
4256 }
4257
4258 if ((((uint64_t) this->presence_mask & 0x0002) == 0x0002))
4259 {
4260 if (!bcmbal_buf_read_u8(buf, &this->nrt_cbr))
4261 {
4262 return BCMOS_FALSE;
4263 }
4264 }
4265
4266 if ((((uint64_t) this->presence_mask & 0x0004) == 0x0004))
4267 {
4268 if (!bcmbal_buf_read_u8(buf, &this->rt_cbr))
4269 {
4270 return BCMOS_FALSE;
4271 }
4272 }
4273
4274 if ((((uint64_t) this->presence_mask & 0x0008) == 0x0008))
4275 {
4276 if (!bcmbal_buf_read_u8(buf, &this->rt_profile))
4277 {
4278 return BCMOS_FALSE;
4279 }
4280 }
4281
4282 if ((((uint64_t) this->presence_mask & 0x0010) == 0x0010))
4283 {
4284 if (!bcmbal_buf_read_u8(buf, &this->nrt_profile))
4285 {
4286 return BCMOS_FALSE;
4287 }
4288 }
4289
4290 return BCMOS_TRUE;
4291}
4292
4293/******************************************************************************/
4294bcmos_bool bcmbal_tm_tcont_sla_scan(bcmbal_buf *packed, uint32_t *extra_mem)
4295{
4296 bcmbal_tm_tcont_sla_id presence_mask;
4297 if (!bcmbal_tm_tcont_sla_id_unpack(&presence_mask, packed))
4298 {
4299 return BCMOS_FALSE;
4300 }
4301
4302 if ((((uint64_t) presence_mask & 0x0001) == 0x0001))
4303 {
4304 if (!bcmbal_buf_skip(packed, 1))
4305 {
4306 return BCMOS_FALSE;
4307 }
4308 }
4309
4310 if ((((uint64_t) presence_mask & 0x0002) == 0x0002))
4311 {
4312 if (!bcmbal_buf_skip(packed, 1))
4313 {
4314 return BCMOS_FALSE;
4315 }
4316 }
4317
4318 if ((((uint64_t) presence_mask & 0x0004) == 0x0004))
4319 {
4320 if (!bcmbal_buf_skip(packed, 1))
4321 {
4322 return BCMOS_FALSE;
4323 }
4324 }
4325
4326 if ((((uint64_t) presence_mask & 0x0008) == 0x0008))
4327 {
4328 if (!bcmbal_buf_skip(packed, 1))
4329 {
4330 return BCMOS_FALSE;
4331 }
4332 }
4333
4334 if ((((uint64_t) presence_mask & 0x0010) == 0x0010))
4335 {
4336 if (!bcmbal_buf_skip(packed, 1))
4337 {
4338 return BCMOS_FALSE;
4339 }
4340 }
4341
4342 return BCMOS_TRUE;
4343}
4344
4345/******************************************************************************/
4346bcmos_bool bcmbal_tm_tcont_sla_bounds_check(const bcmbal_tm_tcont_sla *this)
4347{
4348 if ((this->presence_mask & 0xFFFFFFFFFFFFFFE0ULL) != 0)
4349 {
4350 return BCMOS_FALSE;
4351 }
4352
4353 if ((((uint64_t) this->presence_mask & 0x0001) == 0x0001))
4354 {
4355 switch (this->extra_bw_elig)
4356 {
4357 case BCMBAL_EXTRA_BW_ELIGIBILITY_TYPE_NONE:
4358 break;
4359 case BCMBAL_EXTRA_BW_ELIGIBILITY_TYPE_NOT_ASSURED:
4360 break;
4361 case BCMBAL_EXTRA_BW_ELIGIBILITY_TYPE_BEST_EFFORT:
4362 break;
4363 default:
4364 return BCMOS_FALSE;
4365 }
4366 }
4367
4368 return BCMOS_TRUE;
4369}
4370
4371/******************************************************************************/
4372void bcmbal_u8_list_u32_set_default(bcmbal_u8_list_u32 *this)
4373{
4374 this->len = 0;
4375 this->val = NULL;
4376}
4377
4378/******************************************************************************/
4379bcmos_bool bcmbal_u8_list_u32_pack(const bcmbal_u8_list_u32 *this, bcmbal_buf *buf)
4380{
4381 if (!bcmbal_buf_write_u32(buf, this->len))
4382 {
4383 return BCMOS_FALSE;
4384 }
4385
4386 if ((this->len > 0) && (this->val == NULL))
4387 {
4388 bcmos_trace(BCMOS_TRACE_LEVEL_ERROR, "Error: list field \"val\" of struct \"bcmbal_u8_list_u32\" is uninitialized (NULL). You must allocate memory for this pointer before sending/receiving the message.\n");
4389 return BCMOS_FALSE;
4390 }
4391
4392 if (!bcmbal_buf_write(buf, this->val, this->len))
4393 {
4394 return BCMOS_FALSE;
4395 }
4396
4397 return BCMOS_TRUE;
4398}
4399
4400/******************************************************************************/
4401uint32_t bcmbal_u8_list_u32_get_packed_length(const bcmbal_u8_list_u32 *this)
4402{
4403 return 4 + this->len;
4404}
4405
4406/******************************************************************************/
4407bcmos_bool bcmbal_u8_list_u32_unpack(bcmbal_u8_list_u32 *this, bcmbal_buf *buf, void **extra_mem)
4408{
4409 if (!bcmbal_buf_read_u32(buf, &this->len))
4410 {
4411 return BCMOS_FALSE;
4412 }
4413
4414 if ((this->len > 0) && (this->val == NULL))
4415 {
4416 if (extra_mem == NULL)
4417 {
4418 bcmos_trace(BCMOS_TRACE_LEVEL_ERROR, "Error: list field \"val\" of struct \"bcmbal_u8_list_u32\" is uninitialized (NULL). You must allocate memory for this pointer before sending/receiving the message.\n");
4419 return BCMOS_FALSE;
4420 }
4421 else
4422 {
4423 this->val = (uint8_t *) *extra_mem;
4424 *extra_mem = ((uint8_t *) *extra_mem) + BCMOS_ROUND_TO_WORD(this->len * sizeof(uint8_t));
4425 }
4426 }
4427
4428 if (!bcmbal_buf_read(buf, this->val, this->len))
4429 {
4430 return BCMOS_FALSE;
4431 }
4432
4433 return BCMOS_TRUE;
4434}
4435
4436/******************************************************************************/
4437bcmos_bool bcmbal_u8_list_u32_scan(bcmbal_buf *packed, uint32_t *extra_mem)
4438{
4439 uint32_t len;
4440 if (!bcmbal_buf_read_u32(packed, &len))
4441 {
4442 return BCMOS_FALSE;
4443 }
4444
4445 *extra_mem += BCMOS_ROUND_TO_WORD(sizeof(uint8_t) * len);
4446 if (!bcmbal_buf_skip(packed, len * 1))
4447 {
4448 return BCMOS_FALSE;
4449 }
4450
4451 return BCMOS_TRUE;
4452}
4453
4454/******************************************************************************/
4455bcmos_bool bcmbal_u8_list_u32_bounds_check(const bcmbal_u8_list_u32 *this)
4456{
4457 return BCMOS_TRUE;
4458}
4459
4460/******************************************************************************/
4461void bcmbal_access_terminal_key_set_default(bcmbal_access_terminal_key *this, bcmbal_presence_mask fields_present)
4462{
4463 if ((fields_present & (1ULL << BCMBAL_ACCESS_TERMINAL_KEY_ID_ACCESS_TERM_ID)) != 0)
4464 {
4465 this->access_term_id = (bcmbal_access_id) 1;
4466 }
4467}
4468
4469/******************************************************************************/
4470bcmos_bool bcmbal_access_terminal_key_pack(const bcmbal_access_terminal_key *this, bcmbal_buf *buf, bcmbal_presence_mask fields_present)
4471{
4472 if ((fields_present & (1ULL << BCMBAL_ACCESS_TERMINAL_KEY_ID_ACCESS_TERM_ID)) != 0)
4473 {
4474 if (!bcmbal_buf_write_u32(buf, (uint32_t) this->access_term_id))
4475 {
4476 return BCMOS_FALSE;
4477 }
4478 }
4479
4480 return BCMOS_TRUE;
4481}
4482
4483/******************************************************************************/
4484uint32_t bcmbal_access_terminal_key_get_packed_length(const bcmbal_access_terminal_key *this, bcmbal_presence_mask fields_present)
4485{
4486 uint32_t count = 0;
4487 if ((fields_present & (1ULL << BCMBAL_ACCESS_TERMINAL_KEY_ID_ACCESS_TERM_ID)) != 0)
4488 {
4489 count += 4;
4490 }
4491
4492 return count;
4493}
4494
4495/******************************************************************************/
4496bcmos_bool bcmbal_access_terminal_key_unpack(bcmbal_access_terminal_key *this, bcmbal_buf *buf, void **extra_mem, bcmbal_presence_mask fields_present)
4497{
4498 if ((fields_present & (1ULL << BCMBAL_ACCESS_TERMINAL_KEY_ID_ACCESS_TERM_ID)) != 0)
4499 {
4500 if (!bcmbal_buf_read_u32(buf, (uint32_t *) &this->access_term_id))
4501 {
4502 return BCMOS_FALSE;
4503 }
4504 }
4505
4506 return BCMOS_TRUE;
4507}
4508
4509/******************************************************************************/
4510bcmos_bool bcmbal_access_terminal_key_scan(bcmbal_buf *packed, uint32_t *extra_mem, bcmbal_presence_mask fields_present)
4511{
4512 if ((fields_present & (1ULL << BCMBAL_ACCESS_TERMINAL_KEY_ID_ACCESS_TERM_ID)) != 0)
4513 {
4514 if (!bcmbal_buf_skip(packed, 4))
4515 {
4516 return BCMOS_FALSE;
4517 }
4518 }
4519
4520 return BCMOS_TRUE;
4521}
4522
4523/******************************************************************************/
4524bcmos_bool bcmbal_access_terminal_key_bounds_check(const bcmbal_access_terminal_key *this, bcmbal_presence_mask fields_present, bcmbal_access_terminal_key_id *failed_prop)
4525{
4526 if ((fields_present & (1ULL << BCMBAL_ACCESS_TERMINAL_KEY_ID_ACCESS_TERM_ID)) != 0)
4527 {
4528 if (this->access_term_id < (bcmbal_access_id) 1)
4529 {
4530 *failed_prop = BCMBAL_ACCESS_TERMINAL_KEY_ID_ACCESS_TERM_ID;
4531 return BCMOS_FALSE;
4532 }
4533
4534 if (this->access_term_id > (bcmbal_access_id) 1)
4535 {
4536 *failed_prop = BCMBAL_ACCESS_TERMINAL_KEY_ID_ACCESS_TERM_ID;
4537 return BCMOS_FALSE;
4538 }
4539 }
4540
4541 return BCMOS_TRUE;
4542}
4543
4544/******************************************************************************/
4545void bcmbal_access_terminal_cfg_data_set_default(bcmbal_access_terminal_cfg_data *this, bcmbal_presence_mask fields_present)
4546{
4547 if ((fields_present & (1ULL << BCMBAL_ACCESS_TERMINAL_CFG_ID_ADMIN_STATE)) != 0)
4548 {
4549 this->admin_state = (bcmbal_state) 0;
4550 }
4551
4552 if ((fields_present & (1ULL << BCMBAL_ACCESS_TERMINAL_CFG_ID_OPER_STATUS)) != 0)
4553 {
4554 this->oper_status = (bcmbal_status) 0;
4555 }
4556
4557 if ((fields_present & (1ULL << BCMBAL_ACCESS_TERMINAL_CFG_ID_IWF_MODE)) != 0)
4558 {
4559 this->iwf_mode = BCMBAL_IWF_MODE_DIRECT_MAPPING;
4560 }
4561}
4562
4563/******************************************************************************/
4564bcmos_bool bcmbal_access_terminal_cfg_data_pack(const bcmbal_access_terminal_cfg_data *this, bcmbal_buf *buf, bcmbal_presence_mask fields_present)
4565{
4566 if ((fields_present & (1ULL << BCMBAL_ACCESS_TERMINAL_CFG_ID_ADMIN_STATE)) != 0)
4567 {
4568 if (!bcmbal_state_pack(this->admin_state, buf))
4569 {
4570 return BCMOS_FALSE;
4571 }
4572 }
4573
4574 if ((fields_present & (1ULL << BCMBAL_ACCESS_TERMINAL_CFG_ID_OPER_STATUS)) != 0)
4575 {
4576 if (!bcmbal_status_pack(this->oper_status, buf))
4577 {
4578 return BCMOS_FALSE;
4579 }
4580 }
4581
4582 if ((fields_present & (1ULL << BCMBAL_ACCESS_TERMINAL_CFG_ID_IWF_MODE)) != 0)
4583 {
4584 if (!bcmbal_iwf_mode_pack(this->iwf_mode, buf))
4585 {
4586 return BCMOS_FALSE;
4587 }
4588 }
4589
4590 return BCMOS_TRUE;
4591}
4592
4593/******************************************************************************/
4594uint32_t bcmbal_access_terminal_cfg_data_get_packed_length(const bcmbal_access_terminal_cfg_data *this, bcmbal_presence_mask fields_present)
4595{
4596 uint32_t count = 0;
4597 if ((fields_present & (1ULL << BCMBAL_ACCESS_TERMINAL_CFG_ID_ADMIN_STATE)) != 0)
4598 {
4599 count += 4;
4600 }
4601
4602 if ((fields_present & (1ULL << BCMBAL_ACCESS_TERMINAL_CFG_ID_OPER_STATUS)) != 0)
4603 {
4604 count += 4;
4605 }
4606
4607 if ((fields_present & (1ULL << BCMBAL_ACCESS_TERMINAL_CFG_ID_IWF_MODE)) != 0)
4608 {
4609 count += 4;
4610 }
4611
4612 return count;
4613}
4614
4615/******************************************************************************/
4616bcmos_bool bcmbal_access_terminal_cfg_data_unpack(bcmbal_access_terminal_cfg_data *this, bcmbal_buf *buf, void **extra_mem, bcmbal_presence_mask fields_present)
4617{
4618 if ((fields_present & (1ULL << BCMBAL_ACCESS_TERMINAL_CFG_ID_ADMIN_STATE)) != 0)
4619 {
4620 if (!bcmbal_state_unpack(&this->admin_state, buf))
4621 {
4622 return BCMOS_FALSE;
4623 }
4624 }
4625
4626 if ((fields_present & (1ULL << BCMBAL_ACCESS_TERMINAL_CFG_ID_OPER_STATUS)) != 0)
4627 {
4628 if (!bcmbal_status_unpack(&this->oper_status, buf))
4629 {
4630 return BCMOS_FALSE;
4631 }
4632 }
4633
4634 if ((fields_present & (1ULL << BCMBAL_ACCESS_TERMINAL_CFG_ID_IWF_MODE)) != 0)
4635 {
4636 if (!bcmbal_iwf_mode_unpack(&this->iwf_mode, buf))
4637 {
4638 return BCMOS_FALSE;
4639 }
4640 }
4641
4642 return BCMOS_TRUE;
4643}
4644
4645/******************************************************************************/
4646bcmos_bool bcmbal_access_terminal_cfg_data_scan(bcmbal_buf *packed, uint32_t *extra_mem, bcmbal_presence_mask fields_present)
4647{
4648 if ((fields_present & (1ULL << BCMBAL_ACCESS_TERMINAL_CFG_ID_ADMIN_STATE)) != 0)
4649 {
4650 if (!bcmbal_buf_skip(packed, 4))
4651 {
4652 return BCMOS_FALSE;
4653 }
4654 }
4655
4656 if ((fields_present & (1ULL << BCMBAL_ACCESS_TERMINAL_CFG_ID_OPER_STATUS)) != 0)
4657 {
4658 if (!bcmbal_buf_skip(packed, 4))
4659 {
4660 return BCMOS_FALSE;
4661 }
4662 }
4663
4664 if ((fields_present & (1ULL << BCMBAL_ACCESS_TERMINAL_CFG_ID_IWF_MODE)) != 0)
4665 {
4666 if (!bcmbal_buf_skip(packed, 4))
4667 {
4668 return BCMOS_FALSE;
4669 }
4670 }
4671
4672 return BCMOS_TRUE;
4673}
4674
4675/******************************************************************************/
4676bcmos_bool bcmbal_access_terminal_cfg_data_bounds_check(const bcmbal_access_terminal_cfg_data *this, bcmbal_presence_mask fields_present, bcmbal_access_terminal_cfg_id *failed_prop)
4677{
4678 if ((fields_present & (1ULL << BCMBAL_ACCESS_TERMINAL_CFG_ID_ADMIN_STATE)) != 0)
4679 {
4680 switch (this->admin_state)
4681 {
4682 case BCMBAL_STATE_UP:
4683 break;
4684 case BCMBAL_STATE_DOWN:
4685 break;
4686 case BCMBAL_STATE_TESTING:
4687 break;
4688 default:
4689 *failed_prop = BCMBAL_ACCESS_TERMINAL_CFG_ID_ADMIN_STATE;
4690 return BCMOS_FALSE;
4691 }
4692 }
4693
4694 if ((fields_present & (1ULL << BCMBAL_ACCESS_TERMINAL_CFG_ID_OPER_STATUS)) != 0)
4695 {
4696 switch (this->oper_status)
4697 {
4698 case BCMBAL_STATUS_UP:
4699 break;
4700 case BCMBAL_STATUS_DOWN:
4701 break;
4702 case BCMBAL_STATUS_TESTING:
4703 break;
4704 case BCMBAL_STATUS_NOT_PRESENT:
4705 break;
4706 case BCMBAL_STATUS_LOWER_LAYER_DOWN:
4707 break;
4708 case BCMBAL_STATUS_UNKNOWN:
4709 break;
4710 default:
4711 *failed_prop = BCMBAL_ACCESS_TERMINAL_CFG_ID_OPER_STATUS;
4712 return BCMOS_FALSE;
4713 }
4714 }
4715
4716 if ((fields_present & (1ULL << BCMBAL_ACCESS_TERMINAL_CFG_ID_IWF_MODE)) != 0)
4717 {
4718 switch (this->iwf_mode)
4719 {
4720 case BCMBAL_IWF_MODE_DIRECT_MAPPING:
4721 break;
4722 case BCMBAL_IWF_MODE_PER_FLOW:
4723 break;
4724 default:
4725 *failed_prop = BCMBAL_ACCESS_TERMINAL_CFG_ID_IWF_MODE;
4726 return BCMOS_FALSE;
4727 }
4728 }
4729
4730 return BCMOS_TRUE;
4731}
4732
4733/******************************************************************************/
4734void bcmbal_access_terminal_ind_data_set_default(bcmbal_access_terminal_ind_data *this, bcmbal_presence_mask fields_present)
4735{
4736 if ((fields_present & (1ULL << BCMBAL_ACCESS_TERMINAL_IND_ID_ADMIN_STATE)) != 0)
4737 {
4738 this->admin_state = (bcmbal_state) 0;
4739 }
4740
4741 if ((fields_present & (1ULL << BCMBAL_ACCESS_TERMINAL_IND_ID_OPER_STATUS)) != 0)
4742 {
4743 this->oper_status = (bcmbal_status) 0;
4744 }
4745
4746 if ((fields_present & (1ULL << BCMBAL_ACCESS_TERMINAL_IND_ID_IWF_MODE)) != 0)
4747 {
4748 this->iwf_mode = BCMBAL_IWF_MODE_DIRECT_MAPPING;
4749 }
4750}
4751
4752/******************************************************************************/
4753bcmos_bool bcmbal_access_terminal_ind_data_pack(const bcmbal_access_terminal_ind_data *this, bcmbal_buf *buf, bcmbal_presence_mask fields_present)
4754{
4755 if ((fields_present & (1ULL << BCMBAL_ACCESS_TERMINAL_IND_ID_ADMIN_STATE)) != 0)
4756 {
4757 if (!bcmbal_state_pack(this->admin_state, buf))
4758 {
4759 return BCMOS_FALSE;
4760 }
4761 }
4762
4763 if ((fields_present & (1ULL << BCMBAL_ACCESS_TERMINAL_IND_ID_OPER_STATUS)) != 0)
4764 {
4765 if (!bcmbal_status_pack(this->oper_status, buf))
4766 {
4767 return BCMOS_FALSE;
4768 }
4769 }
4770
4771 if ((fields_present & (1ULL << BCMBAL_ACCESS_TERMINAL_IND_ID_IWF_MODE)) != 0)
4772 {
4773 if (!bcmbal_iwf_mode_pack(this->iwf_mode, buf))
4774 {
4775 return BCMOS_FALSE;
4776 }
4777 }
4778
4779 return BCMOS_TRUE;
4780}
4781
4782/******************************************************************************/
4783uint32_t bcmbal_access_terminal_ind_data_get_packed_length(const bcmbal_access_terminal_ind_data *this, bcmbal_presence_mask fields_present)
4784{
4785 uint32_t count = 0;
4786 if ((fields_present & (1ULL << BCMBAL_ACCESS_TERMINAL_IND_ID_ADMIN_STATE)) != 0)
4787 {
4788 count += 4;
4789 }
4790
4791 if ((fields_present & (1ULL << BCMBAL_ACCESS_TERMINAL_IND_ID_OPER_STATUS)) != 0)
4792 {
4793 count += 4;
4794 }
4795
4796 if ((fields_present & (1ULL << BCMBAL_ACCESS_TERMINAL_IND_ID_IWF_MODE)) != 0)
4797 {
4798 count += 4;
4799 }
4800
4801 return count;
4802}
4803
4804/******************************************************************************/
4805bcmos_bool bcmbal_access_terminal_ind_data_unpack(bcmbal_access_terminal_ind_data *this, bcmbal_buf *buf, void **extra_mem, bcmbal_presence_mask fields_present)
4806{
4807 if ((fields_present & (1ULL << BCMBAL_ACCESS_TERMINAL_IND_ID_ADMIN_STATE)) != 0)
4808 {
4809 if (!bcmbal_state_unpack(&this->admin_state, buf))
4810 {
4811 return BCMOS_FALSE;
4812 }
4813 }
4814
4815 if ((fields_present & (1ULL << BCMBAL_ACCESS_TERMINAL_IND_ID_OPER_STATUS)) != 0)
4816 {
4817 if (!bcmbal_status_unpack(&this->oper_status, buf))
4818 {
4819 return BCMOS_FALSE;
4820 }
4821 }
4822
4823 if ((fields_present & (1ULL << BCMBAL_ACCESS_TERMINAL_IND_ID_IWF_MODE)) != 0)
4824 {
4825 if (!bcmbal_iwf_mode_unpack(&this->iwf_mode, buf))
4826 {
4827 return BCMOS_FALSE;
4828 }
4829 }
4830
4831 return BCMOS_TRUE;
4832}
4833
4834/******************************************************************************/
4835bcmos_bool bcmbal_access_terminal_ind_data_scan(bcmbal_buf *packed, uint32_t *extra_mem, bcmbal_presence_mask fields_present)
4836{
4837 if ((fields_present & (1ULL << BCMBAL_ACCESS_TERMINAL_IND_ID_ADMIN_STATE)) != 0)
4838 {
4839 if (!bcmbal_buf_skip(packed, 4))
4840 {
4841 return BCMOS_FALSE;
4842 }
4843 }
4844
4845 if ((fields_present & (1ULL << BCMBAL_ACCESS_TERMINAL_IND_ID_OPER_STATUS)) != 0)
4846 {
4847 if (!bcmbal_buf_skip(packed, 4))
4848 {
4849 return BCMOS_FALSE;
4850 }
4851 }
4852
4853 if ((fields_present & (1ULL << BCMBAL_ACCESS_TERMINAL_IND_ID_IWF_MODE)) != 0)
4854 {
4855 if (!bcmbal_buf_skip(packed, 4))
4856 {
4857 return BCMOS_FALSE;
4858 }
4859 }
4860
4861 return BCMOS_TRUE;
4862}
4863
4864/******************************************************************************/
4865bcmos_bool bcmbal_access_terminal_ind_data_bounds_check(const bcmbal_access_terminal_ind_data *this, bcmbal_presence_mask fields_present, bcmbal_access_terminal_ind_id *failed_prop)
4866{
4867 if ((fields_present & (1ULL << BCMBAL_ACCESS_TERMINAL_IND_ID_ADMIN_STATE)) != 0)
4868 {
4869 switch (this->admin_state)
4870 {
4871 case BCMBAL_STATE_UP:
4872 break;
4873 case BCMBAL_STATE_DOWN:
4874 break;
4875 case BCMBAL_STATE_TESTING:
4876 break;
4877 default:
4878 *failed_prop = BCMBAL_ACCESS_TERMINAL_IND_ID_ADMIN_STATE;
4879 return BCMOS_FALSE;
4880 }
4881 }
4882
4883 if ((fields_present & (1ULL << BCMBAL_ACCESS_TERMINAL_IND_ID_OPER_STATUS)) != 0)
4884 {
4885 switch (this->oper_status)
4886 {
4887 case BCMBAL_STATUS_UP:
4888 break;
4889 case BCMBAL_STATUS_DOWN:
4890 break;
4891 case BCMBAL_STATUS_TESTING:
4892 break;
4893 case BCMBAL_STATUS_NOT_PRESENT:
4894 break;
4895 case BCMBAL_STATUS_LOWER_LAYER_DOWN:
4896 break;
4897 case BCMBAL_STATUS_UNKNOWN:
4898 break;
4899 default:
4900 *failed_prop = BCMBAL_ACCESS_TERMINAL_IND_ID_OPER_STATUS;
4901 return BCMOS_FALSE;
4902 }
4903 }
4904
4905 if ((fields_present & (1ULL << BCMBAL_ACCESS_TERMINAL_IND_ID_IWF_MODE)) != 0)
4906 {
4907 switch (this->iwf_mode)
4908 {
4909 case BCMBAL_IWF_MODE_DIRECT_MAPPING:
4910 break;
4911 case BCMBAL_IWF_MODE_PER_FLOW:
4912 break;
4913 default:
4914 *failed_prop = BCMBAL_ACCESS_TERMINAL_IND_ID_IWF_MODE;
4915 return BCMOS_FALSE;
4916 }
4917 }
4918
4919 return BCMOS_TRUE;
4920}
4921
4922/******************************************************************************/
4923void bcmbal_flow_key_set_default(bcmbal_flow_key *this, bcmbal_presence_mask fields_present)
4924{
4925 if ((fields_present & (1ULL << BCMBAL_FLOW_KEY_ID_FLOW_ID)) != 0)
4926 {
4927 this->flow_id = (bcmbal_flow_id) 0;
4928 }
4929
4930 if ((fields_present & (1ULL << BCMBAL_FLOW_KEY_ID_FLOW_TYPE)) != 0)
4931 {
4932 this->flow_type = (bcmbal_flow_type) 0;
4933 }
4934}
4935
4936/******************************************************************************/
4937bcmos_bool bcmbal_flow_key_pack(const bcmbal_flow_key *this, bcmbal_buf *buf, bcmbal_presence_mask fields_present)
4938{
4939 if ((fields_present & (1ULL << BCMBAL_FLOW_KEY_ID_FLOW_ID)) != 0)
4940 {
4941 if (!bcmbal_buf_write_u32(buf, (uint32_t) this->flow_id))
4942 {
4943 return BCMOS_FALSE;
4944 }
4945 }
4946
4947 if ((fields_present & (1ULL << BCMBAL_FLOW_KEY_ID_FLOW_TYPE)) != 0)
4948 {
4949 if (!bcmbal_flow_type_pack(this->flow_type, buf))
4950 {
4951 return BCMOS_FALSE;
4952 }
4953 }
4954
4955 return BCMOS_TRUE;
4956}
4957
4958/******************************************************************************/
4959uint32_t bcmbal_flow_key_get_packed_length(const bcmbal_flow_key *this, bcmbal_presence_mask fields_present)
4960{
4961 uint32_t count = 0;
4962 if ((fields_present & (1ULL << BCMBAL_FLOW_KEY_ID_FLOW_ID)) != 0)
4963 {
4964 count += 4;
4965 }
4966
4967 if ((fields_present & (1ULL << BCMBAL_FLOW_KEY_ID_FLOW_TYPE)) != 0)
4968 {
4969 count += 4;
4970 }
4971
4972 return count;
4973}
4974
4975/******************************************************************************/
4976bcmos_bool bcmbal_flow_key_unpack(bcmbal_flow_key *this, bcmbal_buf *buf, void **extra_mem, bcmbal_presence_mask fields_present)
4977{
4978 if ((fields_present & (1ULL << BCMBAL_FLOW_KEY_ID_FLOW_ID)) != 0)
4979 {
4980 if (!bcmbal_buf_read_u32(buf, (uint32_t *) &this->flow_id))
4981 {
4982 return BCMOS_FALSE;
4983 }
4984 }
4985
4986 if ((fields_present & (1ULL << BCMBAL_FLOW_KEY_ID_FLOW_TYPE)) != 0)
4987 {
4988 if (!bcmbal_flow_type_unpack(&this->flow_type, buf))
4989 {
4990 return BCMOS_FALSE;
4991 }
4992 }
4993
4994 return BCMOS_TRUE;
4995}
4996
4997/******************************************************************************/
4998bcmos_bool bcmbal_flow_key_scan(bcmbal_buf *packed, uint32_t *extra_mem, bcmbal_presence_mask fields_present)
4999{
5000 if ((fields_present & (1ULL << BCMBAL_FLOW_KEY_ID_FLOW_ID)) != 0)
5001 {
5002 if (!bcmbal_buf_skip(packed, 4))
5003 {
5004 return BCMOS_FALSE;
5005 }
5006 }
5007
5008 if ((fields_present & (1ULL << BCMBAL_FLOW_KEY_ID_FLOW_TYPE)) != 0)
5009 {
5010 if (!bcmbal_buf_skip(packed, 4))
5011 {
5012 return BCMOS_FALSE;
5013 }
5014 }
5015
5016 return BCMOS_TRUE;
5017}
5018
5019/******************************************************************************/
5020bcmos_bool bcmbal_flow_key_bounds_check(const bcmbal_flow_key *this, bcmbal_presence_mask fields_present, bcmbal_flow_key_id *failed_prop)
5021{
5022 if ((fields_present & (1ULL << BCMBAL_FLOW_KEY_ID_FLOW_TYPE)) != 0)
5023 {
5024 switch (this->flow_type)
5025 {
5026 case BCMBAL_FLOW_TYPE_UPSTREAM:
5027 break;
5028 case BCMBAL_FLOW_TYPE_DOWNSTREAM:
5029 break;
5030 case BCMBAL_FLOW_TYPE_BROADCAST:
5031 break;
5032 case BCMBAL_FLOW_TYPE_MULTICAST:
5033 break;
5034 default:
5035 *failed_prop = BCMBAL_FLOW_KEY_ID_FLOW_TYPE;
5036 return BCMOS_FALSE;
5037 }
5038 }
5039
5040 return BCMOS_TRUE;
5041}
5042
5043/******************************************************************************/
5044void bcmbal_flow_cfg_data_set_default(bcmbal_flow_cfg_data *this, bcmbal_presence_mask fields_present)
5045{
5046 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_ADMIN_STATE)) != 0)
5047 {
5048 this->admin_state = (bcmbal_state) 0;
5049 }
5050
5051 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_OPER_STATUS)) != 0)
5052 {
5053 this->oper_status = (bcmbal_status) 0;
5054 }
5055
5056 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_ACCESS_INT_ID)) != 0)
5057 {
5058 this->access_int_id = (bcmbal_intf_id) 0;
5059 }
5060
5061 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_NETWORK_INT_ID)) != 0)
5062 {
5063 this->network_int_id = (bcmbal_intf_id) 0;
5064 }
5065
5066 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_SUB_TERM_ID)) != 0)
5067 {
5068 this->sub_term_id = (bcmbal_sub_id) 0;
5069 }
5070
5071 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_SUB_TERM_UNI_IDX)) != 0)
5072 {
5073 this->sub_term_uni_idx = 0;
5074 }
5075
5076 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_SVC_PORT_ID)) != 0)
5077 {
5078 this->svc_port_id = (bcmbal_service_port_id) 0;
5079 }
5080
5081 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_AGG_PORT_ID)) != 0)
5082 {
5083 this->agg_port_id = (bcmbal_aggregation_port_id) 0;
5084 }
5085
5086 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_RESOLVE_MAC)) != 0)
5087 {
5088 this->resolve_mac = BCMOS_FALSE;
5089 }
5090
5091 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_CLASSIFIER)) != 0)
5092 {
5093 this->classifier.presence_mask = (bcmbal_classifier_id) 0;
5094 this->classifier.o_tpid = 0;
5095 this->classifier.o_vid = 0;
5096 this->classifier.i_tpid = 0;
5097 this->classifier.i_vid = 0;
5098 this->classifier.o_pbits = 0;
5099 this->classifier.i_pbits = 0;
5100 this->classifier.ether_type = 0;
5101 bcmos_mac_address_init(&this->classifier.dst_mac);
5102 bcmos_mac_address_init(&this->classifier.src_mac);
5103 this->classifier.ip_proto = 0;
5104 bcmos_ipv4_address_init(&this->classifier.dst_ip);
5105 bcmos_ipv4_address_init(&this->classifier.src_ip);
5106 this->classifier.src_port = 0;
5107 this->classifier.dst_port = 0;
5108 this->classifier.pkt_tag_type = (bcmbal_pkt_tag_type) 0;
5109 }
5110
5111 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_ACTION)) != 0)
5112 {
5113 this->action.presence_mask = (bcmbal_action_id) 0;
5114 this->action.cmds_bitmask = (bcmbal_action_cmd_id) 0;
5115 this->action.o_vid = 0;
5116 this->action.o_pbits = 0;
5117 this->action.o_tpid = 0;
5118 this->action.i_vid = 0;
5119 this->action.i_pbits = 0;
5120 this->action.i_tpid = 0;
5121 }
5122
5123 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_SLA)) != 0)
5124 {
5125 this->sla.presence_mask = (bcmbal_sla_id) 0;
5126 this->sla.min_rate = 0;
5127 this->sla.max_rate = 0;
5128 }
5129
5130 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_COOKIE)) != 0)
5131 {
5132 this->cookie = (bcmbal_cookie) 0;
5133 }
5134
5135 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_PRIORITY)) != 0)
5136 {
5137 this->priority = 1;
5138 }
5139
5140 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_GROUP_ID)) != 0)
5141 {
5142 this->group_id = (bcmbal_group_id) 0;
5143 }
5144
5145 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_QUEUE)) != 0)
5146 {
5147 this->queue.sched_id = (bcmbal_tm_sched_id) 0;
5148 this->queue.queue_id = (bcmbal_tm_queue_id) 0;
5149 }
5150}
5151
5152/******************************************************************************/
5153bcmos_bool bcmbal_flow_cfg_data_pack(const bcmbal_flow_cfg_data *this, bcmbal_buf *buf, bcmbal_presence_mask fields_present)
5154{
5155 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_ADMIN_STATE)) != 0)
5156 {
5157 if (!bcmbal_state_pack(this->admin_state, buf))
5158 {
5159 return BCMOS_FALSE;
5160 }
5161 }
5162
5163 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_OPER_STATUS)) != 0)
5164 {
5165 if (!bcmbal_status_pack(this->oper_status, buf))
5166 {
5167 return BCMOS_FALSE;
5168 }
5169 }
5170
5171 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_ACCESS_INT_ID)) != 0)
5172 {
5173 if (!bcmbal_buf_write_u32(buf, (uint32_t) this->access_int_id))
5174 {
5175 return BCMOS_FALSE;
5176 }
5177 }
5178
5179 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_NETWORK_INT_ID)) != 0)
5180 {
5181 if (!bcmbal_buf_write_u32(buf, (uint32_t) this->network_int_id))
5182 {
5183 return BCMOS_FALSE;
5184 }
5185 }
5186
5187 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_SUB_TERM_ID)) != 0)
5188 {
5189 if (!bcmbal_buf_write_u32(buf, (uint32_t) this->sub_term_id))
5190 {
5191 return BCMOS_FALSE;
5192 }
5193 }
5194
5195 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_SUB_TERM_UNI_IDX)) != 0)
5196 {
5197 if (!bcmbal_buf_write_u8(buf, this->sub_term_uni_idx))
5198 {
5199 return BCMOS_FALSE;
5200 }
5201 }
5202
5203 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_SVC_PORT_ID)) != 0)
5204 {
5205 if (!bcmbal_buf_write_u16(buf, (uint16_t) this->svc_port_id))
5206 {
5207 return BCMOS_FALSE;
5208 }
5209 }
5210
5211 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_AGG_PORT_ID)) != 0)
5212 {
5213 if (!bcmbal_buf_write_u16(buf, (uint16_t) this->agg_port_id))
5214 {
5215 return BCMOS_FALSE;
5216 }
5217 }
5218
5219 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_RESOLVE_MAC)) != 0)
5220 {
5221 if (!bcmbal_buf_write_bool(buf, this->resolve_mac))
5222 {
5223 return BCMOS_FALSE;
5224 }
5225 }
5226
5227 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_CLASSIFIER)) != 0)
5228 {
5229 if (!bcmbal_classifier_pack(&this->classifier, buf))
5230 {
5231 return BCMOS_FALSE;
5232 }
5233 }
5234
5235 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_ACTION)) != 0)
5236 {
5237 if (!bcmbal_action_pack(&this->action, buf))
5238 {
5239 return BCMOS_FALSE;
5240 }
5241 }
5242
5243 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_SLA)) != 0)
5244 {
5245 if (!bcmbal_sla_pack(&this->sla, buf))
5246 {
5247 return BCMOS_FALSE;
5248 }
5249 }
5250
5251 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_COOKIE)) != 0)
5252 {
5253 if (!bcmbal_buf_write_u64(buf, (uint64_t) this->cookie))
5254 {
5255 return BCMOS_FALSE;
5256 }
5257 }
5258
5259 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_PRIORITY)) != 0)
5260 {
5261 if (!bcmbal_buf_write_u16(buf, this->priority))
5262 {
5263 return BCMOS_FALSE;
5264 }
5265 }
5266
5267 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_GROUP_ID)) != 0)
5268 {
5269 if (!bcmbal_buf_write_u32(buf, (uint32_t) this->group_id))
5270 {
5271 return BCMOS_FALSE;
5272 }
5273 }
5274
5275 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_QUEUE)) != 0)
5276 {
5277 if (!bcmbal_tm_queue_ref_pack(&this->queue, buf))
5278 {
5279 return BCMOS_FALSE;
5280 }
5281 }
5282
5283 return BCMOS_TRUE;
5284}
5285
5286/******************************************************************************/
5287uint32_t bcmbal_flow_cfg_data_get_packed_length(const bcmbal_flow_cfg_data *this, bcmbal_presence_mask fields_present)
5288{
5289 uint32_t count = 0;
5290 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_ADMIN_STATE)) != 0)
5291 {
5292 count += 4;
5293 }
5294
5295 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_OPER_STATUS)) != 0)
5296 {
5297 count += 4;
5298 }
5299
5300 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_ACCESS_INT_ID)) != 0)
5301 {
5302 count += 4;
5303 }
5304
5305 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_NETWORK_INT_ID)) != 0)
5306 {
5307 count += 4;
5308 }
5309
5310 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_SUB_TERM_ID)) != 0)
5311 {
5312 count += 4;
5313 }
5314
5315 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_SUB_TERM_UNI_IDX)) != 0)
5316 {
5317 count += 1;
5318 }
5319
5320 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_SVC_PORT_ID)) != 0)
5321 {
5322 count += 2;
5323 }
5324
5325 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_AGG_PORT_ID)) != 0)
5326 {
5327 count += 2;
5328 }
5329
5330 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_RESOLVE_MAC)) != 0)
5331 {
5332 count += 1;
5333 }
5334
5335 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_CLASSIFIER)) != 0)
5336 {
5337 count += bcmbal_classifier_get_packed_length(&this->classifier);
5338 }
5339
5340 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_ACTION)) != 0)
5341 {
5342 count += bcmbal_action_get_packed_length(&this->action);
5343 }
5344
5345 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_SLA)) != 0)
5346 {
5347 count += bcmbal_sla_get_packed_length(&this->sla);
5348 }
5349
5350 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_COOKIE)) != 0)
5351 {
5352 count += 8;
5353 }
5354
5355 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_PRIORITY)) != 0)
5356 {
5357 count += 2;
5358 }
5359
5360 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_GROUP_ID)) != 0)
5361 {
5362 count += 4;
5363 }
5364
5365 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_QUEUE)) != 0)
5366 {
5367 count += 5;
5368 }
5369
5370 return count;
5371}
5372
5373/******************************************************************************/
5374bcmos_bool bcmbal_flow_cfg_data_unpack(bcmbal_flow_cfg_data *this, bcmbal_buf *buf, void **extra_mem, bcmbal_presence_mask fields_present)
5375{
5376 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_ADMIN_STATE)) != 0)
5377 {
5378 if (!bcmbal_state_unpack(&this->admin_state, buf))
5379 {
5380 return BCMOS_FALSE;
5381 }
5382 }
5383
5384 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_OPER_STATUS)) != 0)
5385 {
5386 if (!bcmbal_status_unpack(&this->oper_status, buf))
5387 {
5388 return BCMOS_FALSE;
5389 }
5390 }
5391
5392 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_ACCESS_INT_ID)) != 0)
5393 {
5394 if (!bcmbal_buf_read_u32(buf, (uint32_t *) &this->access_int_id))
5395 {
5396 return BCMOS_FALSE;
5397 }
5398 }
5399
5400 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_NETWORK_INT_ID)) != 0)
5401 {
5402 if (!bcmbal_buf_read_u32(buf, (uint32_t *) &this->network_int_id))
5403 {
5404 return BCMOS_FALSE;
5405 }
5406 }
5407
5408 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_SUB_TERM_ID)) != 0)
5409 {
5410 if (!bcmbal_buf_read_u32(buf, (uint32_t *) &this->sub_term_id))
5411 {
5412 return BCMOS_FALSE;
5413 }
5414 }
5415
5416 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_SUB_TERM_UNI_IDX)) != 0)
5417 {
5418 if (!bcmbal_buf_read_u8(buf, &this->sub_term_uni_idx))
5419 {
5420 return BCMOS_FALSE;
5421 }
5422 }
5423
5424 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_SVC_PORT_ID)) != 0)
5425 {
5426 if (!bcmbal_buf_read_u16(buf, (uint16_t *) &this->svc_port_id))
5427 {
5428 return BCMOS_FALSE;
5429 }
5430 }
5431
5432 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_AGG_PORT_ID)) != 0)
5433 {
5434 if (!bcmbal_buf_read_u16(buf, (uint16_t *) &this->agg_port_id))
5435 {
5436 return BCMOS_FALSE;
5437 }
5438 }
5439
5440 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_RESOLVE_MAC)) != 0)
5441 {
5442 if (!bcmbal_buf_read_bool(buf, &this->resolve_mac))
5443 {
5444 return BCMOS_FALSE;
5445 }
5446 }
5447
5448 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_CLASSIFIER)) != 0)
5449 {
5450 if (!bcmbal_classifier_unpack(&this->classifier, buf, extra_mem))
5451 {
5452 return BCMOS_FALSE;
5453 }
5454 }
5455
5456 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_ACTION)) != 0)
5457 {
5458 if (!bcmbal_action_unpack(&this->action, buf, extra_mem))
5459 {
5460 return BCMOS_FALSE;
5461 }
5462 }
5463
5464 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_SLA)) != 0)
5465 {
5466 if (!bcmbal_sla_unpack(&this->sla, buf, extra_mem))
5467 {
5468 return BCMOS_FALSE;
5469 }
5470 }
5471
5472 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_COOKIE)) != 0)
5473 {
5474 if (!bcmbal_buf_read_u64(buf, (uint64_t *) &this->cookie))
5475 {
5476 return BCMOS_FALSE;
5477 }
5478 }
5479
5480 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_PRIORITY)) != 0)
5481 {
5482 if (!bcmbal_buf_read_u16(buf, &this->priority))
5483 {
5484 return BCMOS_FALSE;
5485 }
5486 }
5487
5488 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_GROUP_ID)) != 0)
5489 {
5490 if (!bcmbal_buf_read_u32(buf, (uint32_t *) &this->group_id))
5491 {
5492 return BCMOS_FALSE;
5493 }
5494 }
5495
5496 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_QUEUE)) != 0)
5497 {
5498 if (!bcmbal_tm_queue_ref_unpack(&this->queue, buf, extra_mem))
5499 {
5500 return BCMOS_FALSE;
5501 }
5502 }
5503
5504 return BCMOS_TRUE;
5505}
5506
5507/******************************************************************************/
5508bcmos_bool bcmbal_flow_cfg_data_scan(bcmbal_buf *packed, uint32_t *extra_mem, bcmbal_presence_mask fields_present)
5509{
5510 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_ADMIN_STATE)) != 0)
5511 {
5512 if (!bcmbal_buf_skip(packed, 4))
5513 {
5514 return BCMOS_FALSE;
5515 }
5516 }
5517
5518 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_OPER_STATUS)) != 0)
5519 {
5520 if (!bcmbal_buf_skip(packed, 4))
5521 {
5522 return BCMOS_FALSE;
5523 }
5524 }
5525
5526 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_ACCESS_INT_ID)) != 0)
5527 {
5528 if (!bcmbal_buf_skip(packed, 4))
5529 {
5530 return BCMOS_FALSE;
5531 }
5532 }
5533
5534 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_NETWORK_INT_ID)) != 0)
5535 {
5536 if (!bcmbal_buf_skip(packed, 4))
5537 {
5538 return BCMOS_FALSE;
5539 }
5540 }
5541
5542 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_SUB_TERM_ID)) != 0)
5543 {
5544 if (!bcmbal_buf_skip(packed, 4))
5545 {
5546 return BCMOS_FALSE;
5547 }
5548 }
5549
5550 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_SUB_TERM_UNI_IDX)) != 0)
5551 {
5552 if (!bcmbal_buf_skip(packed, 1))
5553 {
5554 return BCMOS_FALSE;
5555 }
5556 }
5557
5558 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_SVC_PORT_ID)) != 0)
5559 {
5560 if (!bcmbal_buf_skip(packed, 2))
5561 {
5562 return BCMOS_FALSE;
5563 }
5564 }
5565
5566 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_AGG_PORT_ID)) != 0)
5567 {
5568 if (!bcmbal_buf_skip(packed, 2))
5569 {
5570 return BCMOS_FALSE;
5571 }
5572 }
5573
5574 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_RESOLVE_MAC)) != 0)
5575 {
5576 if (!bcmbal_buf_skip(packed, 1))
5577 {
5578 return BCMOS_FALSE;
5579 }
5580 }
5581
5582 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_CLASSIFIER)) != 0)
5583 {
5584 if (!bcmbal_classifier_scan(packed, extra_mem))
5585 {
5586 return BCMOS_FALSE;
5587 }
5588 }
5589
5590 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_ACTION)) != 0)
5591 {
5592 if (!bcmbal_action_scan(packed, extra_mem))
5593 {
5594 return BCMOS_FALSE;
5595 }
5596 }
5597
5598 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_SLA)) != 0)
5599 {
5600 if (!bcmbal_sla_scan(packed, extra_mem))
5601 {
5602 return BCMOS_FALSE;
5603 }
5604 }
5605
5606 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_COOKIE)) != 0)
5607 {
5608 if (!bcmbal_buf_skip(packed, 8))
5609 {
5610 return BCMOS_FALSE;
5611 }
5612 }
5613
5614 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_PRIORITY)) != 0)
5615 {
5616 if (!bcmbal_buf_skip(packed, 2))
5617 {
5618 return BCMOS_FALSE;
5619 }
5620 }
5621
5622 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_GROUP_ID)) != 0)
5623 {
5624 if (!bcmbal_buf_skip(packed, 4))
5625 {
5626 return BCMOS_FALSE;
5627 }
5628 }
5629
5630 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_QUEUE)) != 0)
5631 {
5632 if (!bcmbal_buf_skip(packed, 5))
5633 {
5634 return BCMOS_FALSE;
5635 }
5636 }
5637
5638 return BCMOS_TRUE;
5639}
5640
5641/******************************************************************************/
5642bcmos_bool bcmbal_flow_cfg_data_bounds_check(const bcmbal_flow_cfg_data *this, bcmbal_presence_mask fields_present, bcmbal_flow_cfg_id *failed_prop)
5643{
5644 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_ADMIN_STATE)) != 0)
5645 {
5646 switch (this->admin_state)
5647 {
5648 case BCMBAL_STATE_UP:
5649 break;
5650 case BCMBAL_STATE_DOWN:
5651 break;
5652 case BCMBAL_STATE_TESTING:
5653 break;
5654 default:
5655 *failed_prop = BCMBAL_FLOW_CFG_ID_ADMIN_STATE;
5656 return BCMOS_FALSE;
5657 }
5658 }
5659
5660 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_OPER_STATUS)) != 0)
5661 {
5662 switch (this->oper_status)
5663 {
5664 case BCMBAL_STATUS_UP:
5665 break;
5666 case BCMBAL_STATUS_DOWN:
5667 break;
5668 case BCMBAL_STATUS_TESTING:
5669 break;
5670 case BCMBAL_STATUS_NOT_PRESENT:
5671 break;
5672 case BCMBAL_STATUS_LOWER_LAYER_DOWN:
5673 break;
5674 case BCMBAL_STATUS_UNKNOWN:
5675 break;
5676 default:
5677 *failed_prop = BCMBAL_FLOW_CFG_ID_OPER_STATUS;
5678 return BCMOS_FALSE;
5679 }
5680 }
5681
5682 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_CLASSIFIER)) != 0)
5683 {
5684 if (!bcmbal_classifier_bounds_check(&this->classifier))
5685 {
5686 *failed_prop = BCMBAL_FLOW_CFG_ID_CLASSIFIER;
5687 return BCMOS_FALSE;
5688 }
5689 }
5690
5691 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_ACTION)) != 0)
5692 {
5693 if (!bcmbal_action_bounds_check(&this->action))
5694 {
5695 *failed_prop = BCMBAL_FLOW_CFG_ID_ACTION;
5696 return BCMOS_FALSE;
5697 }
5698 }
5699
5700 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_SLA)) != 0)
5701 {
5702 if (!bcmbal_sla_bounds_check(&this->sla))
5703 {
5704 *failed_prop = BCMBAL_FLOW_CFG_ID_SLA;
5705 return BCMOS_FALSE;
5706 }
5707 }
5708
5709 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_PRIORITY)) != 0)
5710 {
5711 if (this->priority < 1)
5712 {
5713 *failed_prop = BCMBAL_FLOW_CFG_ID_PRIORITY;
5714 return BCMOS_FALSE;
5715 }
5716
5717 if (this->priority > 255)
5718 {
5719 *failed_prop = BCMBAL_FLOW_CFG_ID_PRIORITY;
5720 return BCMOS_FALSE;
5721 }
5722 }
5723
5724 if ((fields_present & (1ULL << BCMBAL_FLOW_CFG_ID_QUEUE)) != 0)
5725 {
5726 if (!bcmbal_tm_queue_ref_bounds_check(&this->queue))
5727 {
5728 *failed_prop = BCMBAL_FLOW_CFG_ID_QUEUE;
5729 return BCMOS_FALSE;
5730 }
5731 }
5732
5733 return BCMOS_TRUE;
5734}
5735
5736/******************************************************************************/
5737void bcmbal_flow_stat_data_set_default(bcmbal_flow_stat_data *this, bcmbal_presence_mask fields_present)
5738{
5739 if ((fields_present & (1ULL << BCMBAL_FLOW_STAT_ID_RX_PACKETS)) != 0)
5740 {
5741 this->rx_packets = 0;
5742 }
5743
5744 if ((fields_present & (1ULL << BCMBAL_FLOW_STAT_ID_RX_BYTES)) != 0)
5745 {
5746 this->rx_bytes = 0;
5747 }
5748
5749 if ((fields_present & (1ULL << BCMBAL_FLOW_STAT_ID_TX_PACKETS)) != 0)
5750 {
5751 this->tx_packets = 0;
5752 }
5753
5754 if ((fields_present & (1ULL << BCMBAL_FLOW_STAT_ID_TX_BYTES)) != 0)
5755 {
5756 this->tx_bytes = 0;
5757 }
5758}
5759
5760/******************************************************************************/
5761bcmos_bool bcmbal_flow_stat_data_pack(const bcmbal_flow_stat_data *this, bcmbal_buf *buf, bcmbal_presence_mask fields_present)
5762{
5763 if ((fields_present & (1ULL << BCMBAL_FLOW_STAT_ID_RX_PACKETS)) != 0)
5764 {
5765 if (!bcmbal_buf_write_u64(buf, this->rx_packets))
5766 {
5767 return BCMOS_FALSE;
5768 }
5769 }
5770
5771 if ((fields_present & (1ULL << BCMBAL_FLOW_STAT_ID_RX_BYTES)) != 0)
5772 {
5773 if (!bcmbal_buf_write_u64(buf, this->rx_bytes))
5774 {
5775 return BCMOS_FALSE;
5776 }
5777 }
5778
5779 if ((fields_present & (1ULL << BCMBAL_FLOW_STAT_ID_TX_PACKETS)) != 0)
5780 {
5781 if (!bcmbal_buf_write_u64(buf, this->tx_packets))
5782 {
5783 return BCMOS_FALSE;
5784 }
5785 }
5786
5787 if ((fields_present & (1ULL << BCMBAL_FLOW_STAT_ID_TX_BYTES)) != 0)
5788 {
5789 if (!bcmbal_buf_write_u64(buf, this->tx_bytes))
5790 {
5791 return BCMOS_FALSE;
5792 }
5793 }
5794
5795 return BCMOS_TRUE;
5796}
5797
5798/******************************************************************************/
5799uint32_t bcmbal_flow_stat_data_get_packed_length(const bcmbal_flow_stat_data *this, bcmbal_presence_mask fields_present)
5800{
5801 uint32_t count = 0;
5802 if ((fields_present & (1ULL << BCMBAL_FLOW_STAT_ID_RX_PACKETS)) != 0)
5803 {
5804 count += 8;
5805 }
5806
5807 if ((fields_present & (1ULL << BCMBAL_FLOW_STAT_ID_RX_BYTES)) != 0)
5808 {
5809 count += 8;
5810 }
5811
5812 if ((fields_present & (1ULL << BCMBAL_FLOW_STAT_ID_TX_PACKETS)) != 0)
5813 {
5814 count += 8;
5815 }
5816
5817 if ((fields_present & (1ULL << BCMBAL_FLOW_STAT_ID_TX_BYTES)) != 0)
5818 {
5819 count += 8;
5820 }
5821
5822 return count;
5823}
5824
5825/******************************************************************************/
5826bcmos_bool bcmbal_flow_stat_data_unpack(bcmbal_flow_stat_data *this, bcmbal_buf *buf, void **extra_mem, bcmbal_presence_mask fields_present)
5827{
5828 if ((fields_present & (1ULL << BCMBAL_FLOW_STAT_ID_RX_PACKETS)) != 0)
5829 {
5830 if (!bcmbal_buf_read_u64(buf, &this->rx_packets))
5831 {
5832 return BCMOS_FALSE;
5833 }
5834 }
5835
5836 if ((fields_present & (1ULL << BCMBAL_FLOW_STAT_ID_RX_BYTES)) != 0)
5837 {
5838 if (!bcmbal_buf_read_u64(buf, &this->rx_bytes))
5839 {
5840 return BCMOS_FALSE;
5841 }
5842 }
5843
5844 if ((fields_present & (1ULL << BCMBAL_FLOW_STAT_ID_TX_PACKETS)) != 0)
5845 {
5846 if (!bcmbal_buf_read_u64(buf, &this->tx_packets))
5847 {
5848 return BCMOS_FALSE;
5849 }
5850 }
5851
5852 if ((fields_present & (1ULL << BCMBAL_FLOW_STAT_ID_TX_BYTES)) != 0)
5853 {
5854 if (!bcmbal_buf_read_u64(buf, &this->tx_bytes))
5855 {
5856 return BCMOS_FALSE;
5857 }
5858 }
5859
5860 return BCMOS_TRUE;
5861}
5862
5863/******************************************************************************/
5864bcmos_bool bcmbal_flow_stat_data_scan(bcmbal_buf *packed, uint32_t *extra_mem, bcmbal_presence_mask fields_present)
5865{
5866 if ((fields_present & (1ULL << BCMBAL_FLOW_STAT_ID_RX_PACKETS)) != 0)
5867 {
5868 if (!bcmbal_buf_skip(packed, 8))
5869 {
5870 return BCMOS_FALSE;
5871 }
5872 }
5873
5874 if ((fields_present & (1ULL << BCMBAL_FLOW_STAT_ID_RX_BYTES)) != 0)
5875 {
5876 if (!bcmbal_buf_skip(packed, 8))
5877 {
5878 return BCMOS_FALSE;
5879 }
5880 }
5881
5882 if ((fields_present & (1ULL << BCMBAL_FLOW_STAT_ID_TX_PACKETS)) != 0)
5883 {
5884 if (!bcmbal_buf_skip(packed, 8))
5885 {
5886 return BCMOS_FALSE;
5887 }
5888 }
5889
5890 if ((fields_present & (1ULL << BCMBAL_FLOW_STAT_ID_TX_BYTES)) != 0)
5891 {
5892 if (!bcmbal_buf_skip(packed, 8))
5893 {
5894 return BCMOS_FALSE;
5895 }
5896 }
5897
5898 return BCMOS_TRUE;
5899}
5900
5901/******************************************************************************/
5902bcmos_bool bcmbal_flow_stat_data_bounds_check(const bcmbal_flow_stat_data *this, bcmbal_presence_mask fields_present, bcmbal_flow_stat_id *failed_prop)
5903{
5904 return BCMOS_TRUE;
5905}
5906
5907/******************************************************************************/
5908void bcmbal_flow_ind_data_set_default(bcmbal_flow_ind_data *this, bcmbal_presence_mask fields_present)
5909{
5910 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_ADMIN_STATE)) != 0)
5911 {
5912 this->admin_state = (bcmbal_state) 0;
5913 }
5914
5915 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_OPER_STATUS)) != 0)
5916 {
5917 this->oper_status = (bcmbal_status) 0;
5918 }
5919
5920 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_ACCESS_INT_ID)) != 0)
5921 {
5922 this->access_int_id = 0;
5923 }
5924
5925 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_NETWORK_INT_ID)) != 0)
5926 {
5927 this->network_int_id = 0;
5928 }
5929
5930 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_SUB_TERM_ID)) != 0)
5931 {
5932 this->sub_term_id = 0;
5933 }
5934
5935 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_SVC_PORT_ID)) != 0)
5936 {
5937 this->svc_port_id = 0;
5938 }
5939
5940 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_AGG_PORT_ID)) != 0)
5941 {
5942 this->agg_port_id = 0;
5943 }
5944
5945 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_RESOLVE_MAC)) != 0)
5946 {
5947 this->resolve_mac = BCMOS_FALSE;
5948 }
5949
5950 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_BASE_TC_ID)) != 0)
5951 {
5952 this->base_tc_id = 0;
5953 }
5954
5955 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_CLASSIFIER)) != 0)
5956 {
5957 this->classifier.presence_mask = (bcmbal_classifier_id) 0;
5958 this->classifier.o_tpid = 0;
5959 this->classifier.o_vid = 0;
5960 this->classifier.i_tpid = 0;
5961 this->classifier.i_vid = 0;
5962 this->classifier.o_pbits = 0;
5963 this->classifier.i_pbits = 0;
5964 this->classifier.ether_type = 0;
5965 bcmos_mac_address_init(&this->classifier.dst_mac);
5966 bcmos_mac_address_init(&this->classifier.src_mac);
5967 this->classifier.ip_proto = 0;
5968 bcmos_ipv4_address_init(&this->classifier.dst_ip);
5969 bcmos_ipv4_address_init(&this->classifier.src_ip);
5970 this->classifier.src_port = 0;
5971 this->classifier.dst_port = 0;
5972 this->classifier.pkt_tag_type = (bcmbal_pkt_tag_type) 0;
5973 }
5974
5975 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_ACTION)) != 0)
5976 {
5977 this->action.presence_mask = (bcmbal_action_id) 0;
5978 this->action.cmds_bitmask = (bcmbal_action_cmd_id) 0;
5979 this->action.o_vid = 0;
5980 this->action.o_pbits = 0;
5981 this->action.o_tpid = 0;
5982 this->action.i_vid = 0;
5983 this->action.i_pbits = 0;
5984 this->action.i_tpid = 0;
5985 }
5986
5987 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_SLA)) != 0)
5988 {
5989 this->sla.presence_mask = (bcmbal_sla_id) 0;
5990 this->sla.min_rate = 0;
5991 this->sla.max_rate = 0;
5992 }
5993
5994 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_COOKIE)) != 0)
5995 {
5996 this->cookie = 0;
5997 }
5998
5999 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_PRIORITY)) != 0)
6000 {
6001 this->priority = 1;
6002 }
6003}
6004
6005/******************************************************************************/
6006bcmos_bool bcmbal_flow_ind_data_pack(const bcmbal_flow_ind_data *this, bcmbal_buf *buf, bcmbal_presence_mask fields_present)
6007{
6008 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_ADMIN_STATE)) != 0)
6009 {
6010 if (!bcmbal_state_pack(this->admin_state, buf))
6011 {
6012 return BCMOS_FALSE;
6013 }
6014 }
6015
6016 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_OPER_STATUS)) != 0)
6017 {
6018 if (!bcmbal_status_pack(this->oper_status, buf))
6019 {
6020 return BCMOS_FALSE;
6021 }
6022 }
6023
6024 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_ACCESS_INT_ID)) != 0)
6025 {
6026 if (!bcmbal_buf_write_u16(buf, this->access_int_id))
6027 {
6028 return BCMOS_FALSE;
6029 }
6030 }
6031
6032 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_NETWORK_INT_ID)) != 0)
6033 {
6034 if (!bcmbal_buf_write_u16(buf, this->network_int_id))
6035 {
6036 return BCMOS_FALSE;
6037 }
6038 }
6039
6040 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_SUB_TERM_ID)) != 0)
6041 {
6042 if (!bcmbal_buf_write_u32(buf, this->sub_term_id))
6043 {
6044 return BCMOS_FALSE;
6045 }
6046 }
6047
6048 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_SVC_PORT_ID)) != 0)
6049 {
6050 if (!bcmbal_buf_write_u16(buf, this->svc_port_id))
6051 {
6052 return BCMOS_FALSE;
6053 }
6054 }
6055
6056 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_AGG_PORT_ID)) != 0)
6057 {
6058 if (!bcmbal_buf_write_u16(buf, this->agg_port_id))
6059 {
6060 return BCMOS_FALSE;
6061 }
6062 }
6063
6064 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_RESOLVE_MAC)) != 0)
6065 {
6066 if (!bcmbal_buf_write_bool(buf, this->resolve_mac))
6067 {
6068 return BCMOS_FALSE;
6069 }
6070 }
6071
6072 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_BASE_TC_ID)) != 0)
6073 {
6074 if (!bcmbal_buf_write_u16(buf, this->base_tc_id))
6075 {
6076 return BCMOS_FALSE;
6077 }
6078 }
6079
6080 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_CLASSIFIER)) != 0)
6081 {
6082 if (!bcmbal_classifier_pack(&this->classifier, buf))
6083 {
6084 return BCMOS_FALSE;
6085 }
6086 }
6087
6088 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_ACTION)) != 0)
6089 {
6090 if (!bcmbal_action_pack(&this->action, buf))
6091 {
6092 return BCMOS_FALSE;
6093 }
6094 }
6095
6096 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_SLA)) != 0)
6097 {
6098 if (!bcmbal_sla_pack(&this->sla, buf))
6099 {
6100 return BCMOS_FALSE;
6101 }
6102 }
6103
6104 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_COOKIE)) != 0)
6105 {
6106 if (!bcmbal_buf_write_u32(buf, this->cookie))
6107 {
6108 return BCMOS_FALSE;
6109 }
6110 }
6111
6112 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_PRIORITY)) != 0)
6113 {
6114 if (!bcmbal_buf_write_u16(buf, this->priority))
6115 {
6116 return BCMOS_FALSE;
6117 }
6118 }
6119
6120 return BCMOS_TRUE;
6121}
6122
6123/******************************************************************************/
6124uint32_t bcmbal_flow_ind_data_get_packed_length(const bcmbal_flow_ind_data *this, bcmbal_presence_mask fields_present)
6125{
6126 uint32_t count = 0;
6127 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_ADMIN_STATE)) != 0)
6128 {
6129 count += 4;
6130 }
6131
6132 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_OPER_STATUS)) != 0)
6133 {
6134 count += 4;
6135 }
6136
6137 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_ACCESS_INT_ID)) != 0)
6138 {
6139 count += 2;
6140 }
6141
6142 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_NETWORK_INT_ID)) != 0)
6143 {
6144 count += 2;
6145 }
6146
6147 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_SUB_TERM_ID)) != 0)
6148 {
6149 count += 4;
6150 }
6151
6152 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_SVC_PORT_ID)) != 0)
6153 {
6154 count += 2;
6155 }
6156
6157 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_AGG_PORT_ID)) != 0)
6158 {
6159 count += 2;
6160 }
6161
6162 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_RESOLVE_MAC)) != 0)
6163 {
6164 count += 1;
6165 }
6166
6167 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_BASE_TC_ID)) != 0)
6168 {
6169 count += 2;
6170 }
6171
6172 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_CLASSIFIER)) != 0)
6173 {
6174 count += bcmbal_classifier_get_packed_length(&this->classifier);
6175 }
6176
6177 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_ACTION)) != 0)
6178 {
6179 count += bcmbal_action_get_packed_length(&this->action);
6180 }
6181
6182 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_SLA)) != 0)
6183 {
6184 count += bcmbal_sla_get_packed_length(&this->sla);
6185 }
6186
6187 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_COOKIE)) != 0)
6188 {
6189 count += 4;
6190 }
6191
6192 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_PRIORITY)) != 0)
6193 {
6194 count += 2;
6195 }
6196
6197 return count;
6198}
6199
6200/******************************************************************************/
6201bcmos_bool bcmbal_flow_ind_data_unpack(bcmbal_flow_ind_data *this, bcmbal_buf *buf, void **extra_mem, bcmbal_presence_mask fields_present)
6202{
6203 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_ADMIN_STATE)) != 0)
6204 {
6205 if (!bcmbal_state_unpack(&this->admin_state, buf))
6206 {
6207 return BCMOS_FALSE;
6208 }
6209 }
6210
6211 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_OPER_STATUS)) != 0)
6212 {
6213 if (!bcmbal_status_unpack(&this->oper_status, buf))
6214 {
6215 return BCMOS_FALSE;
6216 }
6217 }
6218
6219 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_ACCESS_INT_ID)) != 0)
6220 {
6221 if (!bcmbal_buf_read_u16(buf, &this->access_int_id))
6222 {
6223 return BCMOS_FALSE;
6224 }
6225 }
6226
6227 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_NETWORK_INT_ID)) != 0)
6228 {
6229 if (!bcmbal_buf_read_u16(buf, &this->network_int_id))
6230 {
6231 return BCMOS_FALSE;
6232 }
6233 }
6234
6235 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_SUB_TERM_ID)) != 0)
6236 {
6237 if (!bcmbal_buf_read_u32(buf, &this->sub_term_id))
6238 {
6239 return BCMOS_FALSE;
6240 }
6241 }
6242
6243 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_SVC_PORT_ID)) != 0)
6244 {
6245 if (!bcmbal_buf_read_u16(buf, &this->svc_port_id))
6246 {
6247 return BCMOS_FALSE;
6248 }
6249 }
6250
6251 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_AGG_PORT_ID)) != 0)
6252 {
6253 if (!bcmbal_buf_read_u16(buf, &this->agg_port_id))
6254 {
6255 return BCMOS_FALSE;
6256 }
6257 }
6258
6259 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_RESOLVE_MAC)) != 0)
6260 {
6261 if (!bcmbal_buf_read_bool(buf, &this->resolve_mac))
6262 {
6263 return BCMOS_FALSE;
6264 }
6265 }
6266
6267 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_BASE_TC_ID)) != 0)
6268 {
6269 if (!bcmbal_buf_read_u16(buf, &this->base_tc_id))
6270 {
6271 return BCMOS_FALSE;
6272 }
6273 }
6274
6275 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_CLASSIFIER)) != 0)
6276 {
6277 if (!bcmbal_classifier_unpack(&this->classifier, buf, extra_mem))
6278 {
6279 return BCMOS_FALSE;
6280 }
6281 }
6282
6283 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_ACTION)) != 0)
6284 {
6285 if (!bcmbal_action_unpack(&this->action, buf, extra_mem))
6286 {
6287 return BCMOS_FALSE;
6288 }
6289 }
6290
6291 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_SLA)) != 0)
6292 {
6293 if (!bcmbal_sla_unpack(&this->sla, buf, extra_mem))
6294 {
6295 return BCMOS_FALSE;
6296 }
6297 }
6298
6299 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_COOKIE)) != 0)
6300 {
6301 if (!bcmbal_buf_read_u32(buf, &this->cookie))
6302 {
6303 return BCMOS_FALSE;
6304 }
6305 }
6306
6307 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_PRIORITY)) != 0)
6308 {
6309 if (!bcmbal_buf_read_u16(buf, &this->priority))
6310 {
6311 return BCMOS_FALSE;
6312 }
6313 }
6314
6315 return BCMOS_TRUE;
6316}
6317
6318/******************************************************************************/
6319bcmos_bool bcmbal_flow_ind_data_scan(bcmbal_buf *packed, uint32_t *extra_mem, bcmbal_presence_mask fields_present)
6320{
6321 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_ADMIN_STATE)) != 0)
6322 {
6323 if (!bcmbal_buf_skip(packed, 4))
6324 {
6325 return BCMOS_FALSE;
6326 }
6327 }
6328
6329 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_OPER_STATUS)) != 0)
6330 {
6331 if (!bcmbal_buf_skip(packed, 4))
6332 {
6333 return BCMOS_FALSE;
6334 }
6335 }
6336
6337 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_ACCESS_INT_ID)) != 0)
6338 {
6339 if (!bcmbal_buf_skip(packed, 2))
6340 {
6341 return BCMOS_FALSE;
6342 }
6343 }
6344
6345 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_NETWORK_INT_ID)) != 0)
6346 {
6347 if (!bcmbal_buf_skip(packed, 2))
6348 {
6349 return BCMOS_FALSE;
6350 }
6351 }
6352
6353 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_SUB_TERM_ID)) != 0)
6354 {
6355 if (!bcmbal_buf_skip(packed, 4))
6356 {
6357 return BCMOS_FALSE;
6358 }
6359 }
6360
6361 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_SVC_PORT_ID)) != 0)
6362 {
6363 if (!bcmbal_buf_skip(packed, 2))
6364 {
6365 return BCMOS_FALSE;
6366 }
6367 }
6368
6369 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_AGG_PORT_ID)) != 0)
6370 {
6371 if (!bcmbal_buf_skip(packed, 2))
6372 {
6373 return BCMOS_FALSE;
6374 }
6375 }
6376
6377 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_RESOLVE_MAC)) != 0)
6378 {
6379 if (!bcmbal_buf_skip(packed, 1))
6380 {
6381 return BCMOS_FALSE;
6382 }
6383 }
6384
6385 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_BASE_TC_ID)) != 0)
6386 {
6387 if (!bcmbal_buf_skip(packed, 2))
6388 {
6389 return BCMOS_FALSE;
6390 }
6391 }
6392
6393 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_CLASSIFIER)) != 0)
6394 {
6395 if (!bcmbal_classifier_scan(packed, extra_mem))
6396 {
6397 return BCMOS_FALSE;
6398 }
6399 }
6400
6401 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_ACTION)) != 0)
6402 {
6403 if (!bcmbal_action_scan(packed, extra_mem))
6404 {
6405 return BCMOS_FALSE;
6406 }
6407 }
6408
6409 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_SLA)) != 0)
6410 {
6411 if (!bcmbal_sla_scan(packed, extra_mem))
6412 {
6413 return BCMOS_FALSE;
6414 }
6415 }
6416
6417 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_COOKIE)) != 0)
6418 {
6419 if (!bcmbal_buf_skip(packed, 4))
6420 {
6421 return BCMOS_FALSE;
6422 }
6423 }
6424
6425 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_PRIORITY)) != 0)
6426 {
6427 if (!bcmbal_buf_skip(packed, 2))
6428 {
6429 return BCMOS_FALSE;
6430 }
6431 }
6432
6433 return BCMOS_TRUE;
6434}
6435
6436/******************************************************************************/
6437bcmos_bool bcmbal_flow_ind_data_bounds_check(const bcmbal_flow_ind_data *this, bcmbal_presence_mask fields_present, bcmbal_flow_ind_id *failed_prop)
6438{
6439 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_ADMIN_STATE)) != 0)
6440 {
6441 switch (this->admin_state)
6442 {
6443 case BCMBAL_STATE_UP:
6444 break;
6445 case BCMBAL_STATE_DOWN:
6446 break;
6447 case BCMBAL_STATE_TESTING:
6448 break;
6449 default:
6450 *failed_prop = BCMBAL_FLOW_IND_ID_ADMIN_STATE;
6451 return BCMOS_FALSE;
6452 }
6453 }
6454
6455 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_OPER_STATUS)) != 0)
6456 {
6457 switch (this->oper_status)
6458 {
6459 case BCMBAL_STATUS_UP:
6460 break;
6461 case BCMBAL_STATUS_DOWN:
6462 break;
6463 case BCMBAL_STATUS_TESTING:
6464 break;
6465 case BCMBAL_STATUS_NOT_PRESENT:
6466 break;
6467 case BCMBAL_STATUS_LOWER_LAYER_DOWN:
6468 break;
6469 case BCMBAL_STATUS_UNKNOWN:
6470 break;
6471 default:
6472 *failed_prop = BCMBAL_FLOW_IND_ID_OPER_STATUS;
6473 return BCMOS_FALSE;
6474 }
6475 }
6476
6477 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_CLASSIFIER)) != 0)
6478 {
6479 if (!bcmbal_classifier_bounds_check(&this->classifier))
6480 {
6481 *failed_prop = BCMBAL_FLOW_IND_ID_CLASSIFIER;
6482 return BCMOS_FALSE;
6483 }
6484 }
6485
6486 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_ACTION)) != 0)
6487 {
6488 if (!bcmbal_action_bounds_check(&this->action))
6489 {
6490 *failed_prop = BCMBAL_FLOW_IND_ID_ACTION;
6491 return BCMOS_FALSE;
6492 }
6493 }
6494
6495 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_SLA)) != 0)
6496 {
6497 if (!bcmbal_sla_bounds_check(&this->sla))
6498 {
6499 *failed_prop = BCMBAL_FLOW_IND_ID_SLA;
6500 return BCMOS_FALSE;
6501 }
6502 }
6503
6504 if ((fields_present & (1ULL << BCMBAL_FLOW_IND_ID_PRIORITY)) != 0)
6505 {
6506 if (this->priority < 1)
6507 {
6508 *failed_prop = BCMBAL_FLOW_IND_ID_PRIORITY;
6509 return BCMOS_FALSE;
6510 }
6511
6512 if (this->priority > 255)
6513 {
6514 *failed_prop = BCMBAL_FLOW_IND_ID_PRIORITY;
6515 return BCMOS_FALSE;
6516 }
6517 }
6518
6519 return BCMOS_TRUE;
6520}
6521
6522/******************************************************************************/
6523void bcmbal_group_key_set_default(bcmbal_group_key *this, bcmbal_presence_mask fields_present)
6524{
6525 if ((fields_present & (1ULL << BCMBAL_GROUP_KEY_ID_GROUP_ID)) != 0)
6526 {
6527 this->group_id = (bcmbal_group_id) 0;
6528 }
6529}
6530
6531/******************************************************************************/
6532bcmos_bool bcmbal_group_key_pack(const bcmbal_group_key *this, bcmbal_buf *buf, bcmbal_presence_mask fields_present)
6533{
6534 if ((fields_present & (1ULL << BCMBAL_GROUP_KEY_ID_GROUP_ID)) != 0)
6535 {
6536 if (!bcmbal_buf_write_u32(buf, (uint32_t) this->group_id))
6537 {
6538 return BCMOS_FALSE;
6539 }
6540 }
6541
6542 return BCMOS_TRUE;
6543}
6544
6545/******************************************************************************/
6546uint32_t bcmbal_group_key_get_packed_length(const bcmbal_group_key *this, bcmbal_presence_mask fields_present)
6547{
6548 uint32_t count = 0;
6549 if ((fields_present & (1ULL << BCMBAL_GROUP_KEY_ID_GROUP_ID)) != 0)
6550 {
6551 count += 4;
6552 }
6553
6554 return count;
6555}
6556
6557/******************************************************************************/
6558bcmos_bool bcmbal_group_key_unpack(bcmbal_group_key *this, bcmbal_buf *buf, void **extra_mem, bcmbal_presence_mask fields_present)
6559{
6560 if ((fields_present & (1ULL << BCMBAL_GROUP_KEY_ID_GROUP_ID)) != 0)
6561 {
6562 if (!bcmbal_buf_read_u32(buf, (uint32_t *) &this->group_id))
6563 {
6564 return BCMOS_FALSE;
6565 }
6566 }
6567
6568 return BCMOS_TRUE;
6569}
6570
6571/******************************************************************************/
6572bcmos_bool bcmbal_group_key_scan(bcmbal_buf *packed, uint32_t *extra_mem, bcmbal_presence_mask fields_present)
6573{
6574 if ((fields_present & (1ULL << BCMBAL_GROUP_KEY_ID_GROUP_ID)) != 0)
6575 {
6576 if (!bcmbal_buf_skip(packed, 4))
6577 {
6578 return BCMOS_FALSE;
6579 }
6580 }
6581
6582 return BCMOS_TRUE;
6583}
6584
6585/******************************************************************************/
6586bcmos_bool bcmbal_group_key_bounds_check(const bcmbal_group_key *this, bcmbal_presence_mask fields_present, bcmbal_group_key_id *failed_prop)
6587{
6588 return BCMOS_TRUE;
6589}
6590
6591/******************************************************************************/
6592void bcmbal_group_cfg_data_set_default(bcmbal_group_cfg_data *this, bcmbal_presence_mask fields_present)
6593{
6594 if ((fields_present & (1ULL << BCMBAL_GROUP_CFG_ID_MEMBERS_CMD)) != 0)
6595 {
6596 this->members_cmd = (bcmbal_group_member_cmd) 0;
6597 }
6598
6599 if ((fields_present & (1ULL << BCMBAL_GROUP_CFG_ID_MEMBERS)) != 0)
6600 {
6601 this->members.len = 0;
6602 this->members.val = NULL;
6603 }
6604
6605 if ((fields_present & (1ULL << BCMBAL_GROUP_CFG_ID_COOKIE)) != 0)
6606 {
6607 this->cookie = (bcmbal_cookie) 0;
6608 }
6609
6610 if ((fields_present & (1ULL << BCMBAL_GROUP_CFG_ID_FLOWS)) != 0)
6611 {
6612 this->flows.len = 0;
6613 this->flows.val = NULL;
6614 }
6615
6616 if ((fields_present & (1ULL << BCMBAL_GROUP_CFG_ID_OWNER)) != 0)
6617 {
6618 this->owner = BCMBAL_GROUP_OWNER_NONE;
6619 }
6620}
6621
6622/******************************************************************************/
6623bcmos_bool bcmbal_group_cfg_data_pack(const bcmbal_group_cfg_data *this, bcmbal_buf *buf, bcmbal_presence_mask fields_present)
6624{
6625 if ((fields_present & (1ULL << BCMBAL_GROUP_CFG_ID_MEMBERS_CMD)) != 0)
6626 {
6627 if (!bcmbal_group_member_cmd_pack(this->members_cmd, buf))
6628 {
6629 return BCMOS_FALSE;
6630 }
6631 }
6632
6633 if ((fields_present & (1ULL << BCMBAL_GROUP_CFG_ID_MEMBERS)) != 0)
6634 {
6635 if (!bcmbal_group_member_info_list_u16_pack(&this->members, buf))
6636 {
6637 return BCMOS_FALSE;
6638 }
6639 }
6640
6641 if ((fields_present & (1ULL << BCMBAL_GROUP_CFG_ID_COOKIE)) != 0)
6642 {
6643 if (!bcmbal_buf_write_u64(buf, (uint64_t) this->cookie))
6644 {
6645 return BCMOS_FALSE;
6646 }
6647 }
6648
6649 if ((fields_present & (1ULL << BCMBAL_GROUP_CFG_ID_FLOWS)) != 0)
6650 {
6651 if (!bcmbal_flow_id_list_u32_pack(&this->flows, buf))
6652 {
6653 return BCMOS_FALSE;
6654 }
6655 }
6656
6657 if ((fields_present & (1ULL << BCMBAL_GROUP_CFG_ID_OWNER)) != 0)
6658 {
6659 if (!bcmbal_group_owner_pack(this->owner, buf))
6660 {
6661 return BCMOS_FALSE;
6662 }
6663 }
6664
6665 return BCMOS_TRUE;
6666}
6667
6668/******************************************************************************/
6669uint32_t bcmbal_group_cfg_data_get_packed_length(const bcmbal_group_cfg_data *this, bcmbal_presence_mask fields_present)
6670{
6671 uint32_t count = 0;
6672 if ((fields_present & (1ULL << BCMBAL_GROUP_CFG_ID_MEMBERS_CMD)) != 0)
6673 {
6674 count += 4;
6675 }
6676
6677 if ((fields_present & (1ULL << BCMBAL_GROUP_CFG_ID_MEMBERS)) != 0)
6678 {
6679 count += bcmbal_group_member_info_list_u16_get_packed_length(&this->members);
6680 }
6681
6682 if ((fields_present & (1ULL << BCMBAL_GROUP_CFG_ID_COOKIE)) != 0)
6683 {
6684 count += 8;
6685 }
6686
6687 if ((fields_present & (1ULL << BCMBAL_GROUP_CFG_ID_FLOWS)) != 0)
6688 {
6689 count += bcmbal_flow_id_list_u32_get_packed_length(&this->flows);
6690 }
6691
6692 if ((fields_present & (1ULL << BCMBAL_GROUP_CFG_ID_OWNER)) != 0)
6693 {
6694 count += 1;
6695 }
6696
6697 return count;
6698}
6699
6700/******************************************************************************/
6701bcmos_bool bcmbal_group_cfg_data_unpack(bcmbal_group_cfg_data *this, bcmbal_buf *buf, void **extra_mem, bcmbal_presence_mask fields_present)
6702{
6703 if ((fields_present & (1ULL << BCMBAL_GROUP_CFG_ID_MEMBERS_CMD)) != 0)
6704 {
6705 if (!bcmbal_group_member_cmd_unpack(&this->members_cmd, buf))
6706 {
6707 return BCMOS_FALSE;
6708 }
6709 }
6710
6711 if ((fields_present & (1ULL << BCMBAL_GROUP_CFG_ID_MEMBERS)) != 0)
6712 {
6713 if (!bcmbal_group_member_info_list_u16_unpack(&this->members, buf, extra_mem))
6714 {
6715 return BCMOS_FALSE;
6716 }
6717 }
6718
6719 if ((fields_present & (1ULL << BCMBAL_GROUP_CFG_ID_COOKIE)) != 0)
6720 {
6721 if (!bcmbal_buf_read_u64(buf, (uint64_t *) &this->cookie))
6722 {
6723 return BCMOS_FALSE;
6724 }
6725 }
6726
6727 if ((fields_present & (1ULL << BCMBAL_GROUP_CFG_ID_FLOWS)) != 0)
6728 {
6729 if (!bcmbal_flow_id_list_u32_unpack(&this->flows, buf, extra_mem))
6730 {
6731 return BCMOS_FALSE;
6732 }
6733 }
6734
6735 if ((fields_present & (1ULL << BCMBAL_GROUP_CFG_ID_OWNER)) != 0)
6736 {
6737 if (!bcmbal_group_owner_unpack(&this->owner, buf))
6738 {
6739 return BCMOS_FALSE;
6740 }
6741 }
6742
6743 return BCMOS_TRUE;
6744}
6745
6746/******************************************************************************/
6747bcmos_bool bcmbal_group_cfg_data_scan(bcmbal_buf *packed, uint32_t *extra_mem, bcmbal_presence_mask fields_present)
6748{
6749 if ((fields_present & (1ULL << BCMBAL_GROUP_CFG_ID_MEMBERS_CMD)) != 0)
6750 {
6751 if (!bcmbal_buf_skip(packed, 4))
6752 {
6753 return BCMOS_FALSE;
6754 }
6755 }
6756
6757 if ((fields_present & (1ULL << BCMBAL_GROUP_CFG_ID_MEMBERS)) != 0)
6758 {
6759 if (!bcmbal_group_member_info_list_u16_scan(packed, extra_mem))
6760 {
6761 return BCMOS_FALSE;
6762 }
6763 }
6764
6765 if ((fields_present & (1ULL << BCMBAL_GROUP_CFG_ID_COOKIE)) != 0)
6766 {
6767 if (!bcmbal_buf_skip(packed, 8))
6768 {
6769 return BCMOS_FALSE;
6770 }
6771 }
6772
6773 if ((fields_present & (1ULL << BCMBAL_GROUP_CFG_ID_FLOWS)) != 0)
6774 {
6775 if (!bcmbal_flow_id_list_u32_scan(packed, extra_mem))
6776 {
6777 return BCMOS_FALSE;
6778 }
6779 }
6780
6781 if ((fields_present & (1ULL << BCMBAL_GROUP_CFG_ID_OWNER)) != 0)
6782 {
6783 if (!bcmbal_buf_skip(packed, 1))
6784 {
6785 return BCMOS_FALSE;
6786 }
6787 }
6788
6789 return BCMOS_TRUE;
6790}
6791
6792/******************************************************************************/
6793bcmos_bool bcmbal_group_cfg_data_bounds_check(const bcmbal_group_cfg_data *this, bcmbal_presence_mask fields_present, bcmbal_group_cfg_id *failed_prop)
6794{
6795 if ((fields_present & (1ULL << BCMBAL_GROUP_CFG_ID_MEMBERS_CMD)) != 0)
6796 {
6797 switch (this->members_cmd)
6798 {
6799 case BCMBAL_GROUP_MEMBER_CMD_ADD_MEMBERS:
6800 break;
6801 case BCMBAL_GROUP_MEMBER_CMD_REM_MEMBERS:
6802 break;
6803 case BCMBAL_GROUP_MEMBER_CMD_SET_MEMBERS:
6804 break;
6805 default:
6806 *failed_prop = BCMBAL_GROUP_CFG_ID_MEMBERS_CMD;
6807 return BCMOS_FALSE;
6808 }
6809 }
6810
6811 if ((fields_present & (1ULL << BCMBAL_GROUP_CFG_ID_MEMBERS)) != 0)
6812 {
6813 if (!bcmbal_group_member_info_list_u16_bounds_check(&this->members))
6814 {
6815 *failed_prop = BCMBAL_GROUP_CFG_ID_MEMBERS;
6816 return BCMOS_FALSE;
6817 }
6818 }
6819
6820 if ((fields_present & (1ULL << BCMBAL_GROUP_CFG_ID_FLOWS)) != 0)
6821 {
6822 if (!bcmbal_flow_id_list_u32_bounds_check(&this->flows))
6823 {
6824 *failed_prop = BCMBAL_GROUP_CFG_ID_FLOWS;
6825 return BCMOS_FALSE;
6826 }
6827 }
6828
6829 if ((fields_present & (1ULL << BCMBAL_GROUP_CFG_ID_OWNER)) != 0)
6830 {
6831 switch (this->owner)
6832 {
6833 case BCMBAL_GROUP_OWNER_NONE:
6834 break;
6835 case BCMBAL_GROUP_OWNER_MULTICAST:
6836 break;
6837 case BCMBAL_GROUP_OWNER_UNICAST:
6838 break;
6839 default:
6840 *failed_prop = BCMBAL_GROUP_CFG_ID_OWNER;
6841 return BCMOS_FALSE;
6842 }
6843 }
6844
6845 return BCMOS_TRUE;
6846}
6847
6848/******************************************************************************/
6849void bcmbal_interface_key_set_default(bcmbal_interface_key *this, bcmbal_presence_mask fields_present)
6850{
6851 if ((fields_present & (1ULL << BCMBAL_INTERFACE_KEY_ID_INTF_ID)) != 0)
6852 {
6853 this->intf_id = 0;
6854 }
6855
6856 if ((fields_present & (1ULL << BCMBAL_INTERFACE_KEY_ID_INTF_TYPE)) != 0)
6857 {
6858 this->intf_type = BCMBAL_INTF_TYPE_NNI;
6859 }
6860}
6861
6862/******************************************************************************/
6863bcmos_bool bcmbal_interface_key_pack(const bcmbal_interface_key *this, bcmbal_buf *buf, bcmbal_presence_mask fields_present)
6864{
6865 if ((fields_present & (1ULL << BCMBAL_INTERFACE_KEY_ID_INTF_ID)) != 0)
6866 {
6867 if (!bcmbal_buf_write_u32(buf, this->intf_id))
6868 {
6869 return BCMOS_FALSE;
6870 }
6871 }
6872
6873 if ((fields_present & (1ULL << BCMBAL_INTERFACE_KEY_ID_INTF_TYPE)) != 0)
6874 {
6875 if (!bcmbal_intf_type_pack(this->intf_type, buf))
6876 {
6877 return BCMOS_FALSE;
6878 }
6879 }
6880
6881 return BCMOS_TRUE;
6882}
6883
6884/******************************************************************************/
6885uint32_t bcmbal_interface_key_get_packed_length(const bcmbal_interface_key *this, bcmbal_presence_mask fields_present)
6886{
6887 uint32_t count = 0;
6888 if ((fields_present & (1ULL << BCMBAL_INTERFACE_KEY_ID_INTF_ID)) != 0)
6889 {
6890 count += 4;
6891 }
6892
6893 if ((fields_present & (1ULL << BCMBAL_INTERFACE_KEY_ID_INTF_TYPE)) != 0)
6894 {
6895 count += 4;
6896 }
6897
6898 return count;
6899}
6900
6901/******************************************************************************/
6902bcmos_bool bcmbal_interface_key_unpack(bcmbal_interface_key *this, bcmbal_buf *buf, void **extra_mem, bcmbal_presence_mask fields_present)
6903{
6904 if ((fields_present & (1ULL << BCMBAL_INTERFACE_KEY_ID_INTF_ID)) != 0)
6905 {
6906 if (!bcmbal_buf_read_u32(buf, &this->intf_id))
6907 {
6908 return BCMOS_FALSE;
6909 }
6910 }
6911
6912 if ((fields_present & (1ULL << BCMBAL_INTERFACE_KEY_ID_INTF_TYPE)) != 0)
6913 {
6914 if (!bcmbal_intf_type_unpack(&this->intf_type, buf))
6915 {
6916 return BCMOS_FALSE;
6917 }
6918 }
6919
6920 return BCMOS_TRUE;
6921}
6922
6923/******************************************************************************/
6924bcmos_bool bcmbal_interface_key_scan(bcmbal_buf *packed, uint32_t *extra_mem, bcmbal_presence_mask fields_present)
6925{
6926 if ((fields_present & (1ULL << BCMBAL_INTERFACE_KEY_ID_INTF_ID)) != 0)
6927 {
6928 if (!bcmbal_buf_skip(packed, 4))
6929 {
6930 return BCMOS_FALSE;
6931 }
6932 }
6933
6934 if ((fields_present & (1ULL << BCMBAL_INTERFACE_KEY_ID_INTF_TYPE)) != 0)
6935 {
6936 if (!bcmbal_buf_skip(packed, 4))
6937 {
6938 return BCMOS_FALSE;
6939 }
6940 }
6941
6942 return BCMOS_TRUE;
6943}
6944
6945/******************************************************************************/
6946bcmos_bool bcmbal_interface_key_bounds_check(const bcmbal_interface_key *this, bcmbal_presence_mask fields_present, bcmbal_interface_key_id *failed_prop)
6947{
6948 if ((fields_present & (1ULL << BCMBAL_INTERFACE_KEY_ID_INTF_TYPE)) != 0)
6949 {
6950 switch (this->intf_type)
6951 {
6952 case BCMBAL_INTF_TYPE_NNI:
6953 break;
6954 case BCMBAL_INTF_TYPE_PON:
6955 break;
6956 default:
6957 *failed_prop = BCMBAL_INTERFACE_KEY_ID_INTF_TYPE;
6958 return BCMOS_FALSE;
6959 }
6960 }
6961
6962 return BCMOS_TRUE;
6963}
6964
6965/******************************************************************************/
6966void bcmbal_interface_cfg_data_set_default(bcmbal_interface_cfg_data *this, bcmbal_presence_mask fields_present)
6967{
6968 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_ADMIN_STATE)) != 0)
6969 {
6970 this->admin_state = (bcmbal_state) 0;
6971 }
6972
6973 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_OPER_STATUS)) != 0)
6974 {
6975 this->oper_status = (bcmbal_status) 0;
6976 }
6977
6978 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_MIN_DATA_AGG_PORT_ID)) != 0)
6979 {
6980 this->min_data_agg_port_id = (bcmbal_aggregation_port_id) 0;
6981 }
6982
6983 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_MIN_DATA_SVC_PORT_ID)) != 0)
6984 {
6985 this->min_data_svc_port_id = (bcmbal_service_port_id) 0;
6986 }
6987
6988 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_TRANSCEIVER_TYPE)) != 0)
6989 {
6990 this->transceiver_type = BCMBAL_TRX_TYPE_GPON_SPS_43_48;
6991 }
6992
6993 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_DS_MISS_MODE)) != 0)
6994 {
6995 this->ds_miss_mode = BCMBAL_DS_MISS_MODE_DISCARD;
6996 }
6997
6998 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_MTU)) != 0)
6999 {
7000 this->mtu = 0;
7001 }
7002
7003 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_FLOW_CONTROL)) != 0)
7004 {
7005 this->flow_control = BCMBAL_CONTROL_DISABLE;
7006 }
7007
7008 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_DS_TM)) != 0)
7009 {
7010 this->ds_tm = (bcmbal_tm_sched_id) 0;
7011 }
7012
7013 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_US_TM)) != 0)
7014 {
7015 this->us_tm = (bcmbal_tm_sched_id) 0;
7016 }
7017
7018 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_SUB_TERM_ID_LIST)) != 0)
7019 {
7020 this->sub_term_id_list.len = 0;
7021 this->sub_term_id_list.val = NULL;
7022 }
7023}
7024
7025/******************************************************************************/
7026bcmos_bool bcmbal_interface_cfg_data_pack(const bcmbal_interface_cfg_data *this, bcmbal_buf *buf, bcmbal_presence_mask fields_present)
7027{
7028 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_ADMIN_STATE)) != 0)
7029 {
7030 if (!bcmbal_state_pack(this->admin_state, buf))
7031 {
7032 return BCMOS_FALSE;
7033 }
7034 }
7035
7036 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_OPER_STATUS)) != 0)
7037 {
7038 if (!bcmbal_status_pack(this->oper_status, buf))
7039 {
7040 return BCMOS_FALSE;
7041 }
7042 }
7043
7044 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_MIN_DATA_AGG_PORT_ID)) != 0)
7045 {
7046 if (!bcmbal_buf_write_u16(buf, (uint16_t) this->min_data_agg_port_id))
7047 {
7048 return BCMOS_FALSE;
7049 }
7050 }
7051
7052 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_MIN_DATA_SVC_PORT_ID)) != 0)
7053 {
7054 if (!bcmbal_buf_write_u16(buf, (uint16_t) this->min_data_svc_port_id))
7055 {
7056 return BCMOS_FALSE;
7057 }
7058 }
7059
7060 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_TRANSCEIVER_TYPE)) != 0)
7061 {
7062 if (!bcmbal_trx_type_pack(this->transceiver_type, buf))
7063 {
7064 return BCMOS_FALSE;
7065 }
7066 }
7067
7068 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_DS_MISS_MODE)) != 0)
7069 {
7070 if (!bcmbal_ds_miss_mode_pack(this->ds_miss_mode, buf))
7071 {
7072 return BCMOS_FALSE;
7073 }
7074 }
7075
7076 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_MTU)) != 0)
7077 {
7078 if (!bcmbal_buf_write_u16(buf, this->mtu))
7079 {
7080 return BCMOS_FALSE;
7081 }
7082 }
7083
7084 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_FLOW_CONTROL)) != 0)
7085 {
7086 if (!bcmbal_control_pack(this->flow_control, buf))
7087 {
7088 return BCMOS_FALSE;
7089 }
7090 }
7091
7092 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_DS_TM)) != 0)
7093 {
7094 if (!bcmbal_buf_write_u32(buf, (uint32_t) this->ds_tm))
7095 {
7096 return BCMOS_FALSE;
7097 }
7098 }
7099
7100 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_US_TM)) != 0)
7101 {
7102 if (!bcmbal_buf_write_u32(buf, (uint32_t) this->us_tm))
7103 {
7104 return BCMOS_FALSE;
7105 }
7106 }
7107
7108 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_SUB_TERM_ID_LIST)) != 0)
7109 {
7110 if (!bcmbal_sub_id_list_u16_pack(&this->sub_term_id_list, buf))
7111 {
7112 return BCMOS_FALSE;
7113 }
7114 }
7115
7116 return BCMOS_TRUE;
7117}
7118
7119/******************************************************************************/
7120uint32_t bcmbal_interface_cfg_data_get_packed_length(const bcmbal_interface_cfg_data *this, bcmbal_presence_mask fields_present)
7121{
7122 uint32_t count = 0;
7123 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_ADMIN_STATE)) != 0)
7124 {
7125 count += 4;
7126 }
7127
7128 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_OPER_STATUS)) != 0)
7129 {
7130 count += 4;
7131 }
7132
7133 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_MIN_DATA_AGG_PORT_ID)) != 0)
7134 {
7135 count += 2;
7136 }
7137
7138 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_MIN_DATA_SVC_PORT_ID)) != 0)
7139 {
7140 count += 2;
7141 }
7142
7143 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_TRANSCEIVER_TYPE)) != 0)
7144 {
7145 count += 4;
7146 }
7147
7148 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_DS_MISS_MODE)) != 0)
7149 {
7150 count += 4;
7151 }
7152
7153 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_MTU)) != 0)
7154 {
7155 count += 2;
7156 }
7157
7158 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_FLOW_CONTROL)) != 0)
7159 {
7160 count += 4;
7161 }
7162
7163 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_DS_TM)) != 0)
7164 {
7165 count += 4;
7166 }
7167
7168 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_US_TM)) != 0)
7169 {
7170 count += 4;
7171 }
7172
7173 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_SUB_TERM_ID_LIST)) != 0)
7174 {
7175 count += bcmbal_sub_id_list_u16_get_packed_length(&this->sub_term_id_list);
7176 }
7177
7178 return count;
7179}
7180
7181/******************************************************************************/
7182bcmos_bool bcmbal_interface_cfg_data_unpack(bcmbal_interface_cfg_data *this, bcmbal_buf *buf, void **extra_mem, bcmbal_presence_mask fields_present)
7183{
7184 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_ADMIN_STATE)) != 0)
7185 {
7186 if (!bcmbal_state_unpack(&this->admin_state, buf))
7187 {
7188 return BCMOS_FALSE;
7189 }
7190 }
7191
7192 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_OPER_STATUS)) != 0)
7193 {
7194 if (!bcmbal_status_unpack(&this->oper_status, buf))
7195 {
7196 return BCMOS_FALSE;
7197 }
7198 }
7199
7200 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_MIN_DATA_AGG_PORT_ID)) != 0)
7201 {
7202 if (!bcmbal_buf_read_u16(buf, (uint16_t *) &this->min_data_agg_port_id))
7203 {
7204 return BCMOS_FALSE;
7205 }
7206 }
7207
7208 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_MIN_DATA_SVC_PORT_ID)) != 0)
7209 {
7210 if (!bcmbal_buf_read_u16(buf, (uint16_t *) &this->min_data_svc_port_id))
7211 {
7212 return BCMOS_FALSE;
7213 }
7214 }
7215
7216 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_TRANSCEIVER_TYPE)) != 0)
7217 {
7218 if (!bcmbal_trx_type_unpack(&this->transceiver_type, buf))
7219 {
7220 return BCMOS_FALSE;
7221 }
7222 }
7223
7224 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_DS_MISS_MODE)) != 0)
7225 {
7226 if (!bcmbal_ds_miss_mode_unpack(&this->ds_miss_mode, buf))
7227 {
7228 return BCMOS_FALSE;
7229 }
7230 }
7231
7232 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_MTU)) != 0)
7233 {
7234 if (!bcmbal_buf_read_u16(buf, &this->mtu))
7235 {
7236 return BCMOS_FALSE;
7237 }
7238 }
7239
7240 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_FLOW_CONTROL)) != 0)
7241 {
7242 if (!bcmbal_control_unpack(&this->flow_control, buf))
7243 {
7244 return BCMOS_FALSE;
7245 }
7246 }
7247
7248 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_DS_TM)) != 0)
7249 {
7250 if (!bcmbal_buf_read_u32(buf, (uint32_t *) &this->ds_tm))
7251 {
7252 return BCMOS_FALSE;
7253 }
7254 }
7255
7256 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_US_TM)) != 0)
7257 {
7258 if (!bcmbal_buf_read_u32(buf, (uint32_t *) &this->us_tm))
7259 {
7260 return BCMOS_FALSE;
7261 }
7262 }
7263
7264 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_SUB_TERM_ID_LIST)) != 0)
7265 {
7266 if (!bcmbal_sub_id_list_u16_unpack(&this->sub_term_id_list, buf, extra_mem))
7267 {
7268 return BCMOS_FALSE;
7269 }
7270 }
7271
7272 return BCMOS_TRUE;
7273}
7274
7275/******************************************************************************/
7276bcmos_bool bcmbal_interface_cfg_data_scan(bcmbal_buf *packed, uint32_t *extra_mem, bcmbal_presence_mask fields_present)
7277{
7278 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_ADMIN_STATE)) != 0)
7279 {
7280 if (!bcmbal_buf_skip(packed, 4))
7281 {
7282 return BCMOS_FALSE;
7283 }
7284 }
7285
7286 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_OPER_STATUS)) != 0)
7287 {
7288 if (!bcmbal_buf_skip(packed, 4))
7289 {
7290 return BCMOS_FALSE;
7291 }
7292 }
7293
7294 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_MIN_DATA_AGG_PORT_ID)) != 0)
7295 {
7296 if (!bcmbal_buf_skip(packed, 2))
7297 {
7298 return BCMOS_FALSE;
7299 }
7300 }
7301
7302 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_MIN_DATA_SVC_PORT_ID)) != 0)
7303 {
7304 if (!bcmbal_buf_skip(packed, 2))
7305 {
7306 return BCMOS_FALSE;
7307 }
7308 }
7309
7310 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_TRANSCEIVER_TYPE)) != 0)
7311 {
7312 if (!bcmbal_buf_skip(packed, 4))
7313 {
7314 return BCMOS_FALSE;
7315 }
7316 }
7317
7318 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_DS_MISS_MODE)) != 0)
7319 {
7320 if (!bcmbal_buf_skip(packed, 4))
7321 {
7322 return BCMOS_FALSE;
7323 }
7324 }
7325
7326 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_MTU)) != 0)
7327 {
7328 if (!bcmbal_buf_skip(packed, 2))
7329 {
7330 return BCMOS_FALSE;
7331 }
7332 }
7333
7334 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_FLOW_CONTROL)) != 0)
7335 {
7336 if (!bcmbal_buf_skip(packed, 4))
7337 {
7338 return BCMOS_FALSE;
7339 }
7340 }
7341
7342 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_DS_TM)) != 0)
7343 {
7344 if (!bcmbal_buf_skip(packed, 4))
7345 {
7346 return BCMOS_FALSE;
7347 }
7348 }
7349
7350 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_US_TM)) != 0)
7351 {
7352 if (!bcmbal_buf_skip(packed, 4))
7353 {
7354 return BCMOS_FALSE;
7355 }
7356 }
7357
7358 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_SUB_TERM_ID_LIST)) != 0)
7359 {
7360 if (!bcmbal_sub_id_list_u16_scan(packed, extra_mem))
7361 {
7362 return BCMOS_FALSE;
7363 }
7364 }
7365
7366 return BCMOS_TRUE;
7367}
7368
7369/******************************************************************************/
7370bcmos_bool bcmbal_interface_cfg_data_bounds_check(const bcmbal_interface_cfg_data *this, bcmbal_presence_mask fields_present, bcmbal_interface_cfg_id *failed_prop)
7371{
7372 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_ADMIN_STATE)) != 0)
7373 {
7374 switch (this->admin_state)
7375 {
7376 case BCMBAL_STATE_UP:
7377 break;
7378 case BCMBAL_STATE_DOWN:
7379 break;
7380 case BCMBAL_STATE_TESTING:
7381 break;
7382 default:
7383 *failed_prop = BCMBAL_INTERFACE_CFG_ID_ADMIN_STATE;
7384 return BCMOS_FALSE;
7385 }
7386 }
7387
7388 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_OPER_STATUS)) != 0)
7389 {
7390 switch (this->oper_status)
7391 {
7392 case BCMBAL_STATUS_UP:
7393 break;
7394 case BCMBAL_STATUS_DOWN:
7395 break;
7396 case BCMBAL_STATUS_TESTING:
7397 break;
7398 case BCMBAL_STATUS_NOT_PRESENT:
7399 break;
7400 case BCMBAL_STATUS_LOWER_LAYER_DOWN:
7401 break;
7402 case BCMBAL_STATUS_UNKNOWN:
7403 break;
7404 default:
7405 *failed_prop = BCMBAL_INTERFACE_CFG_ID_OPER_STATUS;
7406 return BCMOS_FALSE;
7407 }
7408 }
7409
7410 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_TRANSCEIVER_TYPE)) != 0)
7411 {
7412 switch (this->transceiver_type)
7413 {
7414 case BCMBAL_TRX_TYPE_GPON_SPS_43_48:
7415 break;
7416 case BCMBAL_TRX_TYPE_GPON_SPS_SOG_4321:
7417 break;
7418 case BCMBAL_TRX_TYPE_GPON_LTE_3680_M:
7419 break;
7420 case BCMBAL_TRX_TYPE_GPON_SOURCE_PHOTONICS:
7421 break;
7422 case BCMBAL_TRX_TYPE_GPON_LTE_3680_P:
7423 break;
7424 case BCMBAL_TRX_TYPE_XGPON_LTH_7222_PC:
7425 break;
7426 case BCMBAL_TRX_TYPE_XGPON_LTH_7226_PC:
7427 break;
7428 case BCMBAL_TRX_TYPE_XGPON_LTH_5302_PC:
7429 break;
7430 default:
7431 *failed_prop = BCMBAL_INTERFACE_CFG_ID_TRANSCEIVER_TYPE;
7432 return BCMOS_FALSE;
7433 }
7434 }
7435
7436 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_DS_MISS_MODE)) != 0)
7437 {
7438 switch (this->ds_miss_mode)
7439 {
7440 case BCMBAL_DS_MISS_MODE_DISCARD:
7441 break;
7442 case BCMBAL_DS_MISS_MODE_BROADCAST:
7443 break;
7444 case BCMBAL_DS_MISS_MODE_VID:
7445 break;
7446 default:
7447 *failed_prop = BCMBAL_INTERFACE_CFG_ID_DS_MISS_MODE;
7448 return BCMOS_FALSE;
7449 }
7450 }
7451
7452 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_FLOW_CONTROL)) != 0)
7453 {
7454 switch (this->flow_control)
7455 {
7456 case BCMBAL_CONTROL_DISABLE:
7457 break;
7458 case BCMBAL_CONTROL_ENABLE:
7459 break;
7460 default:
7461 *failed_prop = BCMBAL_INTERFACE_CFG_ID_FLOW_CONTROL;
7462 return BCMOS_FALSE;
7463 }
7464 }
7465
7466 if ((fields_present & (1ULL << BCMBAL_INTERFACE_CFG_ID_SUB_TERM_ID_LIST)) != 0)
7467 {
7468 if (!bcmbal_sub_id_list_u16_bounds_check(&this->sub_term_id_list))
7469 {
7470 *failed_prop = BCMBAL_INTERFACE_CFG_ID_SUB_TERM_ID_LIST;
7471 return BCMOS_FALSE;
7472 }
7473 }
7474
7475 return BCMOS_TRUE;
7476}
7477
7478/******************************************************************************/
7479void bcmbal_interface_stat_data_set_default(bcmbal_interface_stat_data *this, bcmbal_presence_mask fields_present)
7480{
7481 if ((fields_present & (1ULL << BCMBAL_INTERFACE_STAT_ID_RX_PACKETS)) != 0)
7482 {
7483 this->rx_packets = 0;
7484 }
7485
7486 if ((fields_present & (1ULL << BCMBAL_INTERFACE_STAT_ID_RX_BYTES)) != 0)
7487 {
7488 this->rx_bytes = 0;
7489 }
7490
7491 if ((fields_present & (1ULL << BCMBAL_INTERFACE_STAT_ID_TX_PACKETS)) != 0)
7492 {
7493 this->tx_packets = 0;
7494 }
7495
7496 if ((fields_present & (1ULL << BCMBAL_INTERFACE_STAT_ID_TX_BYTES)) != 0)
7497 {
7498 this->tx_bytes = 0;
7499 }
7500}
7501
7502/******************************************************************************/
7503bcmos_bool bcmbal_interface_stat_data_pack(const bcmbal_interface_stat_data *this, bcmbal_buf *buf, bcmbal_presence_mask fields_present)
7504{
7505 if ((fields_present & (1ULL << BCMBAL_INTERFACE_STAT_ID_RX_PACKETS)) != 0)
7506 {
7507 if (!bcmbal_buf_write_u64(buf, this->rx_packets))
7508 {
7509 return BCMOS_FALSE;
7510 }
7511 }
7512
7513 if ((fields_present & (1ULL << BCMBAL_INTERFACE_STAT_ID_RX_BYTES)) != 0)
7514 {
7515 if (!bcmbal_buf_write_u64(buf, this->rx_bytes))
7516 {
7517 return BCMOS_FALSE;
7518 }
7519 }
7520
7521 if ((fields_present & (1ULL << BCMBAL_INTERFACE_STAT_ID_TX_PACKETS)) != 0)
7522 {
7523 if (!bcmbal_buf_write_u64(buf, this->tx_packets))
7524 {
7525 return BCMOS_FALSE;
7526 }
7527 }
7528
7529 if ((fields_present & (1ULL << BCMBAL_INTERFACE_STAT_ID_TX_BYTES)) != 0)
7530 {
7531 if (!bcmbal_buf_write_u64(buf, this->tx_bytes))
7532 {
7533 return BCMOS_FALSE;
7534 }
7535 }
7536
7537 return BCMOS_TRUE;
7538}
7539
7540/******************************************************************************/
7541uint32_t bcmbal_interface_stat_data_get_packed_length(const bcmbal_interface_stat_data *this, bcmbal_presence_mask fields_present)
7542{
7543 uint32_t count = 0;
7544 if ((fields_present & (1ULL << BCMBAL_INTERFACE_STAT_ID_RX_PACKETS)) != 0)
7545 {
7546 count += 8;
7547 }
7548
7549 if ((fields_present & (1ULL << BCMBAL_INTERFACE_STAT_ID_RX_BYTES)) != 0)
7550 {
7551 count += 8;
7552 }
7553
7554 if ((fields_present & (1ULL << BCMBAL_INTERFACE_STAT_ID_TX_PACKETS)) != 0)
7555 {
7556 count += 8;
7557 }
7558
7559 if ((fields_present & (1ULL << BCMBAL_INTERFACE_STAT_ID_TX_BYTES)) != 0)
7560 {
7561 count += 8;
7562 }
7563
7564 return count;
7565}
7566
7567/******************************************************************************/
7568bcmos_bool bcmbal_interface_stat_data_unpack(bcmbal_interface_stat_data *this, bcmbal_buf *buf, void **extra_mem, bcmbal_presence_mask fields_present)
7569{
7570 if ((fields_present & (1ULL << BCMBAL_INTERFACE_STAT_ID_RX_PACKETS)) != 0)
7571 {
7572 if (!bcmbal_buf_read_u64(buf, &this->rx_packets))
7573 {
7574 return BCMOS_FALSE;
7575 }
7576 }
7577
7578 if ((fields_present & (1ULL << BCMBAL_INTERFACE_STAT_ID_RX_BYTES)) != 0)
7579 {
7580 if (!bcmbal_buf_read_u64(buf, &this->rx_bytes))
7581 {
7582 return BCMOS_FALSE;
7583 }
7584 }
7585
7586 if ((fields_present & (1ULL << BCMBAL_INTERFACE_STAT_ID_TX_PACKETS)) != 0)
7587 {
7588 if (!bcmbal_buf_read_u64(buf, &this->tx_packets))
7589 {
7590 return BCMOS_FALSE;
7591 }
7592 }
7593
7594 if ((fields_present & (1ULL << BCMBAL_INTERFACE_STAT_ID_TX_BYTES)) != 0)
7595 {
7596 if (!bcmbal_buf_read_u64(buf, &this->tx_bytes))
7597 {
7598 return BCMOS_FALSE;
7599 }
7600 }
7601
7602 return BCMOS_TRUE;
7603}
7604
7605/******************************************************************************/
7606bcmos_bool bcmbal_interface_stat_data_scan(bcmbal_buf *packed, uint32_t *extra_mem, bcmbal_presence_mask fields_present)
7607{
7608 if ((fields_present & (1ULL << BCMBAL_INTERFACE_STAT_ID_RX_PACKETS)) != 0)
7609 {
7610 if (!bcmbal_buf_skip(packed, 8))
7611 {
7612 return BCMOS_FALSE;
7613 }
7614 }
7615
7616 if ((fields_present & (1ULL << BCMBAL_INTERFACE_STAT_ID_RX_BYTES)) != 0)
7617 {
7618 if (!bcmbal_buf_skip(packed, 8))
7619 {
7620 return BCMOS_FALSE;
7621 }
7622 }
7623
7624 if ((fields_present & (1ULL << BCMBAL_INTERFACE_STAT_ID_TX_PACKETS)) != 0)
7625 {
7626 if (!bcmbal_buf_skip(packed, 8))
7627 {
7628 return BCMOS_FALSE;
7629 }
7630 }
7631
7632 if ((fields_present & (1ULL << BCMBAL_INTERFACE_STAT_ID_TX_BYTES)) != 0)
7633 {
7634 if (!bcmbal_buf_skip(packed, 8))
7635 {
7636 return BCMOS_FALSE;
7637 }
7638 }
7639
7640 return BCMOS_TRUE;
7641}
7642
7643/******************************************************************************/
7644bcmos_bool bcmbal_interface_stat_data_bounds_check(const bcmbal_interface_stat_data *this, bcmbal_presence_mask fields_present, bcmbal_interface_stat_id *failed_prop)
7645{
7646 return BCMOS_TRUE;
7647}
7648
7649/******************************************************************************/
7650void bcmbal_interface_ind_data_set_default(bcmbal_interface_ind_data *this, bcmbal_presence_mask fields_present)
7651{
7652 if ((fields_present & (1ULL << BCMBAL_INTERFACE_IND_ID_ADMIN_STATE)) != 0)
7653 {
7654 this->admin_state = (bcmbal_state) 0;
7655 }
7656
7657 if ((fields_present & (1ULL << BCMBAL_INTERFACE_IND_ID_OPER_STATUS)) != 0)
7658 {
7659 this->oper_status = (bcmbal_status) 0;
7660 }
7661
7662 if ((fields_present & (1ULL << BCMBAL_INTERFACE_IND_ID_MIN_DATA_AGG_PORT_ID)) != 0)
7663 {
7664 this->min_data_agg_port_id = 0;
7665 }
7666
7667 if ((fields_present & (1ULL << BCMBAL_INTERFACE_IND_ID_MIN_DATA_SVC_PORT_ID)) != 0)
7668 {
7669 this->min_data_svc_port_id = 0;
7670 }
7671
7672 if ((fields_present & (1ULL << BCMBAL_INTERFACE_IND_ID_TRANSCEIVER_TYPE)) != 0)
7673 {
7674 this->transceiver_type = BCMBAL_TRX_TYPE_GPON_SPS_43_48;
7675 }
7676
7677 if ((fields_present & (1ULL << BCMBAL_INTERFACE_IND_ID_DS_MISS_MODE)) != 0)
7678 {
7679 this->ds_miss_mode = BCMBAL_DS_MISS_MODE_DISCARD;
7680 }
7681
7682 if ((fields_present & (1ULL << BCMBAL_INTERFACE_IND_ID_MTU)) != 0)
7683 {
7684 this->mtu = 0;
7685 }
7686
7687 if ((fields_present & (1ULL << BCMBAL_INTERFACE_IND_ID_FLOW_CONTROL)) != 0)
7688 {
7689 this->flow_control = BCMBAL_CONTROL_DISABLE;
7690 }
7691
7692 if ((fields_present & (1ULL << BCMBAL_INTERFACE_IND_ID_DS_TM)) != 0)
7693 {
7694 this->ds_tm = (bcmbal_tm_sched_id) 0;
7695 }
7696
7697 if ((fields_present & (1ULL << BCMBAL_INTERFACE_IND_ID_US_TM)) != 0)
7698 {
7699 this->us_tm = (bcmbal_tm_sched_id) 0;
7700 }
7701}
7702
7703/******************************************************************************/
7704bcmos_bool bcmbal_interface_ind_data_pack(const bcmbal_interface_ind_data *this, bcmbal_buf *buf, bcmbal_presence_mask fields_present)
7705{
7706 if ((fields_present & (1ULL << BCMBAL_INTERFACE_IND_ID_ADMIN_STATE)) != 0)
7707 {
7708 if (!bcmbal_state_pack(this->admin_state, buf))
7709 {
7710 return BCMOS_FALSE;
7711 }
7712 }
7713
7714 if ((fields_present & (1ULL << BCMBAL_INTERFACE_IND_ID_OPER_STATUS)) != 0)
7715 {
7716 if (!bcmbal_status_pack(this->oper_status, buf))
7717 {
7718 return BCMOS_FALSE;
7719 }
7720 }
7721
7722 if ((fields_present & (1ULL << BCMBAL_INTERFACE_IND_ID_MIN_DATA_AGG_PORT_ID)) != 0)
7723 {
7724 if (!bcmbal_buf_write_u16(buf, this->min_data_agg_port_id))
7725 {
7726 return BCMOS_FALSE;
7727 }
7728 }
7729
7730 if ((fields_present & (1ULL << BCMBAL_INTERFACE_IND_ID_MIN_DATA_SVC_PORT_ID)) != 0)
7731 {
7732 if (!bcmbal_buf_write_u16(buf, this->min_data_svc_port_id))
7733 {
7734 return BCMOS_FALSE;
7735 }
7736 }
7737
7738 if ((fields_present & (1ULL << BCMBAL_INTERFACE_IND_ID_TRANSCEIVER_TYPE)) != 0)
7739 {
7740 if (!bcmbal_trx_type_pack(this->transceiver_type, buf))
7741 {
7742 return BCMOS_FALSE;
7743 }
7744 }
7745
7746 if ((fields_present & (1ULL << BCMBAL_INTERFACE_IND_ID_DS_MISS_MODE)) != 0)
7747 {
7748 if (!bcmbal_ds_miss_mode_pack(this->ds_miss_mode, buf))
7749 {
7750 return BCMOS_FALSE;
7751 }
7752 }
7753
7754 if ((fields_present & (1ULL << BCMBAL_INTERFACE_IND_ID_MTU)) != 0)
7755 {
7756 if (!bcmbal_buf_write_u16(buf, this->mtu))
7757 {
7758 return BCMOS_FALSE;
7759 }
7760 }
7761
7762 if ((fields_present & (1ULL << BCMBAL_INTERFACE_IND_ID_FLOW_CONTROL)) != 0)
7763 {
7764 if (!bcmbal_control_pack(this->flow_control, buf))
7765 {
7766 return BCMOS_FALSE;
7767 }
7768 }
7769
7770 if ((fields_present & (1ULL << BCMBAL_INTERFACE_IND_ID_DS_TM)) != 0)
7771 {
7772 if (!bcmbal_buf_write_u32(buf, (uint32_t) this->ds_tm))
7773 {
7774 return BCMOS_FALSE;
7775 }
7776 }
7777
7778 if ((fields_present & (1ULL << BCMBAL_INTERFACE_IND_ID_US_TM)) != 0)
7779 {
7780 if (!bcmbal_buf_write_u32(buf, (uint32_t) this->us_tm))
7781 {
7782 return BCMOS_FALSE;
7783 }
7784 }
7785
7786 return BCMOS_TRUE;
7787}
7788
7789/******************************************************************************/
7790uint32_t bcmbal_interface_ind_data_get_packed_length(const bcmbal_interface_ind_data *this, bcmbal_presence_mask fields_present)
7791{
7792 uint32_t count = 0;
7793 if ((fields_present & (1ULL << BCMBAL_INTERFACE_IND_ID_ADMIN_STATE)) != 0)
7794 {
7795 count += 4;
7796 }
7797
7798 if ((fields_present & (1ULL << BCMBAL_INTERFACE_IND_ID_OPER_STATUS)) != 0)
7799 {
7800 count += 4;
7801 }
7802
7803 if ((fields_present & (1ULL << BCMBAL_INTERFACE_IND_ID_MIN_DATA_AGG_PORT_ID)) != 0)
7804 {
7805 count += 2;
7806 }
7807
7808 if ((fields_present & (1ULL << BCMBAL_INTERFACE_IND_ID_MIN_DATA_SVC_PORT_ID)) != 0)
7809 {
7810 count += 2;
7811 }
7812
7813 if ((fields_present & (1ULL << BCMBAL_INTERFACE_IND_ID_TRANSCEIVER_TYPE)) != 0)
7814 {
7815 count += 4;
7816 }
7817
7818 if ((fields_present & (1ULL << BCMBAL_INTERFACE_IND_ID_DS_MISS_MODE)) != 0)
7819 {
7820 count += 4;
7821 }
7822
7823 if ((fields_present & (1ULL << BCMBAL_INTERFACE_IND_ID_MTU)) != 0)
7824 {
7825 count += 2;
7826 }
7827
7828 if ((fields_present & (1ULL << BCMBAL_INTERFACE_IND_ID_FLOW_CONTROL)) != 0)
7829 {
7830 count += 4;
7831 }
7832
7833 if ((fields_present & (1ULL << BCMBAL_INTERFACE_IND_ID_DS_TM)) != 0)
7834 {
7835 count += 4;
7836 }
7837
7838 if ((fields_present & (1ULL << BCMBAL_INTERFACE_IND_ID_US_TM)) != 0)
7839 {
7840 count += 4;
7841 }
7842
7843 return count;
7844}
7845
7846/******************************************************************************/
7847bcmos_bool bcmbal_interface_ind_data_unpack(bcmbal_interface_ind_data *this, bcmbal_buf *buf, void **extra_mem, bcmbal_presence_mask fields_present)
7848{
7849 if ((fields_present & (1ULL << BCMBAL_INTERFACE_IND_ID_ADMIN_STATE)) != 0)
7850 {
7851 if (!bcmbal_state_unpack(&this->admin_state, buf))
7852 {
7853 return BCMOS_FALSE;
7854 }
7855 }
7856
7857 if ((fields_present & (1ULL << BCMBAL_INTERFACE_IND_ID_OPER_STATUS)) != 0)
7858 {
7859 if (!bcmbal_status_unpack(&this->oper_status, buf))
7860 {
7861 return BCMOS_FALSE;
7862 }
7863 }
7864
7865 if ((fields_present & (1ULL << BCMBAL_INTERFACE_IND_ID_MIN_DATA_AGG_PORT_ID)) != 0)
7866 {
7867 if (!bcmbal_buf_read_u16(buf, &this->min_data_agg_port_id))
7868 {
7869 return BCMOS_FALSE;
7870 }
7871 }
7872
7873 if ((fields_present & (1ULL << BCMBAL_INTERFACE_IND_ID_MIN_DATA_SVC_PORT_ID)) != 0)
7874 {
7875 if (!bcmbal_buf_read_u16(buf, &this->min_data_svc_port_id))
7876 {
7877 return BCMOS_FALSE;
7878 }
7879 }
7880
7881 if ((fields_present & (1ULL << BCMBAL_INTERFACE_IND_ID_TRANSCEIVER_TYPE)) != 0)
7882 {
7883 if (!bcmbal_trx_type_unpack(&this->transceiver_type, buf))
7884 {
7885 return BCMOS_FALSE;
7886 }
7887 }
7888
7889 if ((fields_present & (1ULL << BCMBAL_INTERFACE_IND_ID_DS_MISS_MODE)) != 0)
7890 {
7891 if (!bcmbal_ds_miss_mode_unpack(&this->ds_miss_mode, buf))
7892 {
7893 return BCMOS_FALSE;
7894 }
7895 }
7896
7897 if ((fields_present & (1ULL << BCMBAL_INTERFACE_IND_ID_MTU)) != 0)
7898 {
7899 if (!bcmbal_buf_read_u16(buf, &this->mtu))
7900 {
7901 return BCMOS_FALSE;
7902 }
7903 }
7904
7905 if ((fields_present & (1ULL << BCMBAL_INTERFACE_IND_ID_FLOW_CONTROL)) != 0)
7906 {
7907 if (!bcmbal_control_unpack(&this->flow_control, buf))
7908 {
7909 return BCMOS_FALSE;
7910 }
7911 }
7912
7913 if ((fields_present & (1ULL << BCMBAL_INTERFACE_IND_ID_DS_TM)) != 0)
7914 {
7915 if (!bcmbal_buf_read_u32(buf, (uint32_t *) &this->ds_tm))
7916 {
7917 return BCMOS_FALSE;
7918 }
7919 }
7920
7921 if ((fields_present & (1ULL << BCMBAL_INTERFACE_IND_ID_US_TM)) != 0)
7922 {
7923 if (!bcmbal_buf_read_u32(buf, (uint32_t *) &this->us_tm))
7924 {
7925 return BCMOS_FALSE;
7926 }
7927 }
7928
7929 return BCMOS_TRUE;
7930}
7931
7932/******************************************************************************/
7933bcmos_bool bcmbal_interface_ind_data_scan(bcmbal_buf *packed, uint32_t *extra_mem, bcmbal_presence_mask fields_present)
7934{
7935 if ((fields_present & (1ULL << BCMBAL_INTERFACE_IND_ID_ADMIN_STATE)) != 0)
7936 {
7937 if (!bcmbal_buf_skip(packed, 4))
7938 {
7939 return BCMOS_FALSE;
7940 }
7941 }
7942
7943 if ((fields_present & (1ULL << BCMBAL_INTERFACE_IND_ID_OPER_STATUS)) != 0)
7944 {
7945 if (!bcmbal_buf_skip(packed, 4))
7946 {
7947 return BCMOS_FALSE;
7948 }
7949 }
7950
7951 if ((fields_present & (1ULL << BCMBAL_INTERFACE_IND_ID_MIN_DATA_AGG_PORT_ID)) != 0)
7952 {
7953 if (!bcmbal_buf_skip(packed, 2))
7954 {
7955 return BCMOS_FALSE;
7956 }
7957 }
7958
7959 if ((fields_present & (1ULL << BCMBAL_INTERFACE_IND_ID_MIN_DATA_SVC_PORT_ID)) != 0)
7960 {
7961 if (!bcmbal_buf_skip(packed, 2))
7962 {
7963 return BCMOS_FALSE;
7964 }
7965 }
7966
7967 if ((fields_present & (1ULL << BCMBAL_INTERFACE_IND_ID_TRANSCEIVER_TYPE)) != 0)
7968 {
7969 if (!bcmbal_buf_skip(packed, 4))
7970 {
7971 return BCMOS_FALSE;
7972 }
7973 }
7974
7975 if ((fields_present & (1ULL << BCMBAL_INTERFACE_IND_ID_DS_MISS_MODE)) != 0)
7976 {
7977 if (!bcmbal_buf_skip(packed, 4))
7978 {
7979 return BCMOS_FALSE;
7980 }
7981 }
7982
7983 if ((fields_present & (1ULL << BCMBAL_INTERFACE_IND_ID_MTU)) != 0)
7984 {
7985 if (!bcmbal_buf_skip(packed, 2))
7986 {
7987 return BCMOS_FALSE;
7988 }
7989 }
7990
7991 if ((fields_present & (1ULL << BCMBAL_INTERFACE_IND_ID_FLOW_CONTROL)) != 0)
7992 {
7993 if (!bcmbal_buf_skip(packed, 4))
7994 {
7995 return BCMOS_FALSE;
7996 }
7997 }
7998
7999 if ((fields_present & (1ULL << BCMBAL_INTERFACE_IND_ID_DS_TM)) != 0)
8000 {
8001 if (!bcmbal_buf_skip(packed, 4))
8002 {
8003 return BCMOS_FALSE;
8004 }
8005 }
8006
8007 if ((fields_present & (1ULL << BCMBAL_INTERFACE_IND_ID_US_TM)) != 0)
8008 {
8009 if (!bcmbal_buf_skip(packed, 4))
8010 {
8011 return BCMOS_FALSE;
8012 }
8013 }
8014
8015 return BCMOS_TRUE;
8016}
8017
8018/******************************************************************************/
8019bcmos_bool bcmbal_interface_ind_data_bounds_check(const bcmbal_interface_ind_data *this, bcmbal_presence_mask fields_present, bcmbal_interface_ind_id *failed_prop)
8020{
8021 if ((fields_present & (1ULL << BCMBAL_INTERFACE_IND_ID_ADMIN_STATE)) != 0)
8022 {
8023 switch (this->admin_state)
8024 {
8025 case BCMBAL_STATE_UP:
8026 break;
8027 case BCMBAL_STATE_DOWN:
8028 break;
8029 case BCMBAL_STATE_TESTING:
8030 break;
8031 default:
8032 *failed_prop = BCMBAL_INTERFACE_IND_ID_ADMIN_STATE;
8033 return BCMOS_FALSE;
8034 }
8035 }
8036
8037 if ((fields_present & (1ULL << BCMBAL_INTERFACE_IND_ID_OPER_STATUS)) != 0)
8038 {
8039 switch (this->oper_status)
8040 {
8041 case BCMBAL_STATUS_UP:
8042 break;
8043 case BCMBAL_STATUS_DOWN:
8044 break;
8045 case BCMBAL_STATUS_TESTING:
8046 break;
8047 case BCMBAL_STATUS_NOT_PRESENT:
8048 break;
8049 case BCMBAL_STATUS_LOWER_LAYER_DOWN:
8050 break;
8051 case BCMBAL_STATUS_UNKNOWN:
8052 break;
8053 default:
8054 *failed_prop = BCMBAL_INTERFACE_IND_ID_OPER_STATUS;
8055 return BCMOS_FALSE;
8056 }
8057 }
8058
8059 if ((fields_present & (1ULL << BCMBAL_INTERFACE_IND_ID_TRANSCEIVER_TYPE)) != 0)
8060 {
8061 switch (this->transceiver_type)
8062 {
8063 case BCMBAL_TRX_TYPE_GPON_SPS_43_48:
8064 break;
8065 case BCMBAL_TRX_TYPE_GPON_SPS_SOG_4321:
8066 break;
8067 case BCMBAL_TRX_TYPE_GPON_LTE_3680_M:
8068 break;
8069 case BCMBAL_TRX_TYPE_GPON_SOURCE_PHOTONICS:
8070 break;
8071 case BCMBAL_TRX_TYPE_GPON_LTE_3680_P:
8072 break;
8073 case BCMBAL_TRX_TYPE_XGPON_LTH_7222_PC:
8074 break;
8075 case BCMBAL_TRX_TYPE_XGPON_LTH_7226_PC:
8076 break;
8077 case BCMBAL_TRX_TYPE_XGPON_LTH_5302_PC:
8078 break;
8079 default:
8080 *failed_prop = BCMBAL_INTERFACE_IND_ID_TRANSCEIVER_TYPE;
8081 return BCMOS_FALSE;
8082 }
8083 }
8084
8085 if ((fields_present & (1ULL << BCMBAL_INTERFACE_IND_ID_DS_MISS_MODE)) != 0)
8086 {
8087 switch (this->ds_miss_mode)
8088 {
8089 case BCMBAL_DS_MISS_MODE_DISCARD:
8090 break;
8091 case BCMBAL_DS_MISS_MODE_BROADCAST:
8092 break;
8093 case BCMBAL_DS_MISS_MODE_VID:
8094 break;
8095 default:
8096 *failed_prop = BCMBAL_INTERFACE_IND_ID_DS_MISS_MODE;
8097 return BCMOS_FALSE;
8098 }
8099 }
8100
8101 if ((fields_present & (1ULL << BCMBAL_INTERFACE_IND_ID_FLOW_CONTROL)) != 0)
8102 {
8103 switch (this->flow_control)
8104 {
8105 case BCMBAL_CONTROL_DISABLE:
8106 break;
8107 case BCMBAL_CONTROL_ENABLE:
8108 break;
8109 default:
8110 *failed_prop = BCMBAL_INTERFACE_IND_ID_FLOW_CONTROL;
8111 return BCMOS_FALSE;
8112 }
8113 }
8114
8115 return BCMOS_TRUE;
8116}
8117
8118/******************************************************************************/
8119void bcmbal_packet_key_set_default(bcmbal_packet_key *this, bcmbal_presence_mask fields_present)
8120{
8121 if ((fields_present & (1ULL << BCMBAL_PACKET_KEY_ID_RESERVED)) != 0)
8122 {
8123 this->reserved = 0;
8124 }
8125
8126 if ((fields_present & (1ULL << BCMBAL_PACKET_KEY_ID_PACKET_SEND_DEST)) != 0)
8127 {
8128 this->packet_send_dest.type = (bcmbal_dest_type) 0;
8129 this->packet_send_dest.u.nni.int_id = (bcmbal_intf_id) 0;
8130 }
8131}
8132
8133/******************************************************************************/
8134bcmos_bool bcmbal_packet_key_pack(const bcmbal_packet_key *this, bcmbal_buf *buf, bcmbal_presence_mask fields_present)
8135{
8136 if ((fields_present & (1ULL << BCMBAL_PACKET_KEY_ID_RESERVED)) != 0)
8137 {
8138 if (!bcmbal_buf_write_u32(buf, this->reserved))
8139 {
8140 return BCMOS_FALSE;
8141 }
8142 }
8143
8144 if ((fields_present & (1ULL << BCMBAL_PACKET_KEY_ID_PACKET_SEND_DEST)) != 0)
8145 {
8146 if (!bcmbal_dest_pack(&this->packet_send_dest, buf))
8147 {
8148 return BCMOS_FALSE;
8149 }
8150 }
8151
8152 return BCMOS_TRUE;
8153}
8154
8155/******************************************************************************/
8156uint32_t bcmbal_packet_key_get_packed_length(const bcmbal_packet_key *this, bcmbal_presence_mask fields_present)
8157{
8158 uint32_t count = 0;
8159 if ((fields_present & (1ULL << BCMBAL_PACKET_KEY_ID_RESERVED)) != 0)
8160 {
8161 count += 4;
8162 }
8163
8164 if ((fields_present & (1ULL << BCMBAL_PACKET_KEY_ID_PACKET_SEND_DEST)) != 0)
8165 {
8166 count += bcmbal_dest_get_packed_length(&this->packet_send_dest);
8167 }
8168
8169 return count;
8170}
8171
8172/******************************************************************************/
8173bcmos_bool bcmbal_packet_key_unpack(bcmbal_packet_key *this, bcmbal_buf *buf, void **extra_mem, bcmbal_presence_mask fields_present)
8174{
8175 if ((fields_present & (1ULL << BCMBAL_PACKET_KEY_ID_RESERVED)) != 0)
8176 {
8177 if (!bcmbal_buf_read_u32(buf, &this->reserved))
8178 {
8179 return BCMOS_FALSE;
8180 }
8181 }
8182
8183 if ((fields_present & (1ULL << BCMBAL_PACKET_KEY_ID_PACKET_SEND_DEST)) != 0)
8184 {
8185 if (!bcmbal_dest_unpack(&this->packet_send_dest, buf, extra_mem))
8186 {
8187 return BCMOS_FALSE;
8188 }
8189 }
8190
8191 return BCMOS_TRUE;
8192}
8193
8194/******************************************************************************/
8195bcmos_bool bcmbal_packet_key_scan(bcmbal_buf *packed, uint32_t *extra_mem, bcmbal_presence_mask fields_present)
8196{
8197 if ((fields_present & (1ULL << BCMBAL_PACKET_KEY_ID_RESERVED)) != 0)
8198 {
8199 if (!bcmbal_buf_skip(packed, 4))
8200 {
8201 return BCMOS_FALSE;
8202 }
8203 }
8204
8205 if ((fields_present & (1ULL << BCMBAL_PACKET_KEY_ID_PACKET_SEND_DEST)) != 0)
8206 {
8207 if (!bcmbal_dest_scan(packed, extra_mem))
8208 {
8209 return BCMOS_FALSE;
8210 }
8211 }
8212
8213 return BCMOS_TRUE;
8214}
8215
8216/******************************************************************************/
8217bcmos_bool bcmbal_packet_key_bounds_check(const bcmbal_packet_key *this, bcmbal_presence_mask fields_present, bcmbal_packet_key_id *failed_prop)
8218{
8219 if ((fields_present & (1ULL << BCMBAL_PACKET_KEY_ID_PACKET_SEND_DEST)) != 0)
8220 {
8221 if (!bcmbal_dest_bounds_check(&this->packet_send_dest))
8222 {
8223 *failed_prop = BCMBAL_PACKET_KEY_ID_PACKET_SEND_DEST;
8224 return BCMOS_FALSE;
8225 }
8226 }
8227
8228 return BCMOS_TRUE;
8229}
8230
8231/******************************************************************************/
8232void bcmbal_packet_cfg_data_set_default(bcmbal_packet_cfg_data *this, bcmbal_presence_mask fields_present)
8233{
8234 if ((fields_present & (1ULL << BCMBAL_PACKET_CFG_ID_FLOW_ID)) != 0)
8235 {
8236 this->flow_id = (bcmbal_flow_id) 0;
8237 }
8238
8239 if ((fields_present & (1ULL << BCMBAL_PACKET_CFG_ID_FLOW_TYPE)) != 0)
8240 {
8241 this->flow_type = (bcmbal_flow_type) 0;
8242 }
8243
8244 if ((fields_present & (1ULL << BCMBAL_PACKET_CFG_ID_INTF_ID)) != 0)
8245 {
8246 this->intf_id = (bcmbal_intf_id) 0;
8247 }
8248
8249 if ((fields_present & (1ULL << BCMBAL_PACKET_CFG_ID_INTF_TYPE)) != 0)
8250 {
8251 this->intf_type = BCMBAL_INTF_TYPE_NNI;
8252 }
8253
8254 if ((fields_present & (1ULL << BCMBAL_PACKET_CFG_ID_SVC_PORT)) != 0)
8255 {
8256 this->svc_port = (bcmbal_service_port_id) 0;
8257 }
8258
8259 if ((fields_present & (1ULL << BCMBAL_PACKET_CFG_ID_FLOW_COOKIE)) != 0)
8260 {
8261 this->flow_cookie = (bcmbal_cookie) 0;
8262 }
8263
8264 if ((fields_present & (1ULL << BCMBAL_PACKET_CFG_ID_PKT)) != 0)
8265 {
8266 this->pkt.len = 0;
8267 this->pkt.val = NULL;
8268 }
8269}
8270
8271/******************************************************************************/
8272bcmos_bool bcmbal_packet_cfg_data_pack(const bcmbal_packet_cfg_data *this, bcmbal_buf *buf, bcmbal_presence_mask fields_present)
8273{
8274 if ((fields_present & (1ULL << BCMBAL_PACKET_CFG_ID_FLOW_ID)) != 0)
8275 {
8276 if (!bcmbal_buf_write_u32(buf, (uint32_t) this->flow_id))
8277 {
8278 return BCMOS_FALSE;
8279 }
8280 }
8281
8282 if ((fields_present & (1ULL << BCMBAL_PACKET_CFG_ID_FLOW_TYPE)) != 0)
8283 {
8284 if (!bcmbal_flow_type_pack(this->flow_type, buf))
8285 {
8286 return BCMOS_FALSE;
8287 }
8288 }
8289
8290 if ((fields_present & (1ULL << BCMBAL_PACKET_CFG_ID_INTF_ID)) != 0)
8291 {
8292 if (!bcmbal_buf_write_u32(buf, (uint32_t) this->intf_id))
8293 {
8294 return BCMOS_FALSE;
8295 }
8296 }
8297
8298 if ((fields_present & (1ULL << BCMBAL_PACKET_CFG_ID_INTF_TYPE)) != 0)
8299 {
8300 if (!bcmbal_intf_type_pack(this->intf_type, buf))
8301 {
8302 return BCMOS_FALSE;
8303 }
8304 }
8305
8306 if ((fields_present & (1ULL << BCMBAL_PACKET_CFG_ID_SVC_PORT)) != 0)
8307 {
8308 if (!bcmbal_buf_write_u16(buf, (uint16_t) this->svc_port))
8309 {
8310 return BCMOS_FALSE;
8311 }
8312 }
8313
8314 if ((fields_present & (1ULL << BCMBAL_PACKET_CFG_ID_FLOW_COOKIE)) != 0)
8315 {
8316 if (!bcmbal_buf_write_u64(buf, (uint64_t) this->flow_cookie))
8317 {
8318 return BCMOS_FALSE;
8319 }
8320 }
8321
8322 if ((fields_present & (1ULL << BCMBAL_PACKET_CFG_ID_PKT)) != 0)
8323 {
8324 if (!bcmbal_u8_list_u32_pack(&this->pkt, buf))
8325 {
8326 return BCMOS_FALSE;
8327 }
8328 }
8329
8330 return BCMOS_TRUE;
8331}
8332
8333/******************************************************************************/
8334uint32_t bcmbal_packet_cfg_data_get_packed_length(const bcmbal_packet_cfg_data *this, bcmbal_presence_mask fields_present)
8335{
8336 uint32_t count = 0;
8337 if ((fields_present & (1ULL << BCMBAL_PACKET_CFG_ID_FLOW_ID)) != 0)
8338 {
8339 count += 4;
8340 }
8341
8342 if ((fields_present & (1ULL << BCMBAL_PACKET_CFG_ID_FLOW_TYPE)) != 0)
8343 {
8344 count += 4;
8345 }
8346
8347 if ((fields_present & (1ULL << BCMBAL_PACKET_CFG_ID_INTF_ID)) != 0)
8348 {
8349 count += 4;
8350 }
8351
8352 if ((fields_present & (1ULL << BCMBAL_PACKET_CFG_ID_INTF_TYPE)) != 0)
8353 {
8354 count += 4;
8355 }
8356
8357 if ((fields_present & (1ULL << BCMBAL_PACKET_CFG_ID_SVC_PORT)) != 0)
8358 {
8359 count += 2;
8360 }
8361
8362 if ((fields_present & (1ULL << BCMBAL_PACKET_CFG_ID_FLOW_COOKIE)) != 0)
8363 {
8364 count += 8;
8365 }
8366
8367 if ((fields_present & (1ULL << BCMBAL_PACKET_CFG_ID_PKT)) != 0)
8368 {
8369 count += bcmbal_u8_list_u32_get_packed_length(&this->pkt);
8370 }
8371
8372 return count;
8373}
8374
8375/******************************************************************************/
8376bcmos_bool bcmbal_packet_cfg_data_unpack(bcmbal_packet_cfg_data *this, bcmbal_buf *buf, void **extra_mem, bcmbal_presence_mask fields_present)
8377{
8378 if ((fields_present & (1ULL << BCMBAL_PACKET_CFG_ID_FLOW_ID)) != 0)
8379 {
8380 if (!bcmbal_buf_read_u32(buf, (uint32_t *) &this->flow_id))
8381 {
8382 return BCMOS_FALSE;
8383 }
8384 }
8385
8386 if ((fields_present & (1ULL << BCMBAL_PACKET_CFG_ID_FLOW_TYPE)) != 0)
8387 {
8388 if (!bcmbal_flow_type_unpack(&this->flow_type, buf))
8389 {
8390 return BCMOS_FALSE;
8391 }
8392 }
8393
8394 if ((fields_present & (1ULL << BCMBAL_PACKET_CFG_ID_INTF_ID)) != 0)
8395 {
8396 if (!bcmbal_buf_read_u32(buf, (uint32_t *) &this->intf_id))
8397 {
8398 return BCMOS_FALSE;
8399 }
8400 }
8401
8402 if ((fields_present & (1ULL << BCMBAL_PACKET_CFG_ID_INTF_TYPE)) != 0)
8403 {
8404 if (!bcmbal_intf_type_unpack(&this->intf_type, buf))
8405 {
8406 return BCMOS_FALSE;
8407 }
8408 }
8409
8410 if ((fields_present & (1ULL << BCMBAL_PACKET_CFG_ID_SVC_PORT)) != 0)
8411 {
8412 if (!bcmbal_buf_read_u16(buf, (uint16_t *) &this->svc_port))
8413 {
8414 return BCMOS_FALSE;
8415 }
8416 }
8417
8418 if ((fields_present & (1ULL << BCMBAL_PACKET_CFG_ID_FLOW_COOKIE)) != 0)
8419 {
8420 if (!bcmbal_buf_read_u64(buf, (uint64_t *) &this->flow_cookie))
8421 {
8422 return BCMOS_FALSE;
8423 }
8424 }
8425
8426 if ((fields_present & (1ULL << BCMBAL_PACKET_CFG_ID_PKT)) != 0)
8427 {
8428 if (!bcmbal_u8_list_u32_unpack(&this->pkt, buf, extra_mem))
8429 {
8430 return BCMOS_FALSE;
8431 }
8432 }
8433
8434 return BCMOS_TRUE;
8435}
8436
8437/******************************************************************************/
8438bcmos_bool bcmbal_packet_cfg_data_scan(bcmbal_buf *packed, uint32_t *extra_mem, bcmbal_presence_mask fields_present)
8439{
8440 if ((fields_present & (1ULL << BCMBAL_PACKET_CFG_ID_FLOW_ID)) != 0)
8441 {
8442 if (!bcmbal_buf_skip(packed, 4))
8443 {
8444 return BCMOS_FALSE;
8445 }
8446 }
8447
8448 if ((fields_present & (1ULL << BCMBAL_PACKET_CFG_ID_FLOW_TYPE)) != 0)
8449 {
8450 if (!bcmbal_buf_skip(packed, 4))
8451 {
8452 return BCMOS_FALSE;
8453 }
8454 }
8455
8456 if ((fields_present & (1ULL << BCMBAL_PACKET_CFG_ID_INTF_ID)) != 0)
8457 {
8458 if (!bcmbal_buf_skip(packed, 4))
8459 {
8460 return BCMOS_FALSE;
8461 }
8462 }
8463
8464 if ((fields_present & (1ULL << BCMBAL_PACKET_CFG_ID_INTF_TYPE)) != 0)
8465 {
8466 if (!bcmbal_buf_skip(packed, 4))
8467 {
8468 return BCMOS_FALSE;
8469 }
8470 }
8471
8472 if ((fields_present & (1ULL << BCMBAL_PACKET_CFG_ID_SVC_PORT)) != 0)
8473 {
8474 if (!bcmbal_buf_skip(packed, 2))
8475 {
8476 return BCMOS_FALSE;
8477 }
8478 }
8479
8480 if ((fields_present & (1ULL << BCMBAL_PACKET_CFG_ID_FLOW_COOKIE)) != 0)
8481 {
8482 if (!bcmbal_buf_skip(packed, 8))
8483 {
8484 return BCMOS_FALSE;
8485 }
8486 }
8487
8488 if ((fields_present & (1ULL << BCMBAL_PACKET_CFG_ID_PKT)) != 0)
8489 {
8490 if (!bcmbal_u8_list_u32_scan(packed, extra_mem))
8491 {
8492 return BCMOS_FALSE;
8493 }
8494 }
8495
8496 return BCMOS_TRUE;
8497}
8498
8499/******************************************************************************/
8500bcmos_bool bcmbal_packet_cfg_data_bounds_check(const bcmbal_packet_cfg_data *this, bcmbal_presence_mask fields_present, bcmbal_packet_cfg_id *failed_prop)
8501{
8502 if ((fields_present & (1ULL << BCMBAL_PACKET_CFG_ID_FLOW_TYPE)) != 0)
8503 {
8504 switch (this->flow_type)
8505 {
8506 case BCMBAL_FLOW_TYPE_UPSTREAM:
8507 break;
8508 case BCMBAL_FLOW_TYPE_DOWNSTREAM:
8509 break;
8510 case BCMBAL_FLOW_TYPE_BROADCAST:
8511 break;
8512 case BCMBAL_FLOW_TYPE_MULTICAST:
8513 break;
8514 default:
8515 *failed_prop = BCMBAL_PACKET_CFG_ID_FLOW_TYPE;
8516 return BCMOS_FALSE;
8517 }
8518 }
8519
8520 if ((fields_present & (1ULL << BCMBAL_PACKET_CFG_ID_INTF_TYPE)) != 0)
8521 {
8522 switch (this->intf_type)
8523 {
8524 case BCMBAL_INTF_TYPE_NNI:
8525 break;
8526 case BCMBAL_INTF_TYPE_PON:
8527 break;
8528 default:
8529 *failed_prop = BCMBAL_PACKET_CFG_ID_INTF_TYPE;
8530 return BCMOS_FALSE;
8531 }
8532 }
8533
8534 if ((fields_present & (1ULL << BCMBAL_PACKET_CFG_ID_PKT)) != 0)
8535 {
8536 if (!bcmbal_u8_list_u32_bounds_check(&this->pkt))
8537 {
8538 *failed_prop = BCMBAL_PACKET_CFG_ID_PKT;
8539 return BCMOS_FALSE;
8540 }
8541 }
8542
8543 return BCMOS_TRUE;
8544}
8545
8546/******************************************************************************/
8547void bcmbal_packet_ind_data_set_default(bcmbal_packet_ind_data *this, bcmbal_presence_mask fields_present)
8548{
8549 if ((fields_present & (1ULL << BCMBAL_PACKET_IND_ID_FLOW_ID)) != 0)
8550 {
8551 this->flow_id = (bcmbal_flow_id) 0;
8552 }
8553
8554 if ((fields_present & (1ULL << BCMBAL_PACKET_IND_ID_FLOW_TYPE)) != 0)
8555 {
8556 this->flow_type = (bcmbal_flow_type) 0;
8557 }
8558
8559 if ((fields_present & (1ULL << BCMBAL_PACKET_IND_ID_INTF_ID)) != 0)
8560 {
8561 this->intf_id = (bcmbal_intf_id) 0;
8562 }
8563
8564 if ((fields_present & (1ULL << BCMBAL_PACKET_IND_ID_INTF_TYPE)) != 0)
8565 {
8566 this->intf_type = BCMBAL_INTF_TYPE_NNI;
8567 }
8568
8569 if ((fields_present & (1ULL << BCMBAL_PACKET_IND_ID_SVC_PORT)) != 0)
8570 {
8571 this->svc_port = (bcmbal_service_port_id) 0;
8572 }
8573
8574 if ((fields_present & (1ULL << BCMBAL_PACKET_IND_ID_FLOW_COOKIE)) != 0)
8575 {
8576 this->flow_cookie = (bcmbal_cookie) 0;
8577 }
8578
8579 if ((fields_present & (1ULL << BCMBAL_PACKET_IND_ID_PKT)) != 0)
8580 {
8581 this->pkt.len = 0;
8582 this->pkt.val = NULL;
8583 }
8584}
8585
8586/******************************************************************************/
8587bcmos_bool bcmbal_packet_ind_data_pack(const bcmbal_packet_ind_data *this, bcmbal_buf *buf, bcmbal_presence_mask fields_present)
8588{
8589 if ((fields_present & (1ULL << BCMBAL_PACKET_IND_ID_FLOW_ID)) != 0)
8590 {
8591 if (!bcmbal_buf_write_u32(buf, (uint32_t) this->flow_id))
8592 {
8593 return BCMOS_FALSE;
8594 }
8595 }
8596
8597 if ((fields_present & (1ULL << BCMBAL_PACKET_IND_ID_FLOW_TYPE)) != 0)
8598 {
8599 if (!bcmbal_flow_type_pack(this->flow_type, buf))
8600 {
8601 return BCMOS_FALSE;
8602 }
8603 }
8604
8605 if ((fields_present & (1ULL << BCMBAL_PACKET_IND_ID_INTF_ID)) != 0)
8606 {
8607 if (!bcmbal_buf_write_u32(buf, (uint32_t) this->intf_id))
8608 {
8609 return BCMOS_FALSE;
8610 }
8611 }
8612
8613 if ((fields_present & (1ULL << BCMBAL_PACKET_IND_ID_INTF_TYPE)) != 0)
8614 {
8615 if (!bcmbal_intf_type_pack(this->intf_type, buf))
8616 {
8617 return BCMOS_FALSE;
8618 }
8619 }
8620
8621 if ((fields_present & (1ULL << BCMBAL_PACKET_IND_ID_SVC_PORT)) != 0)
8622 {
8623 if (!bcmbal_buf_write_u16(buf, (uint16_t) this->svc_port))
8624 {
8625 return BCMOS_FALSE;
8626 }
8627 }
8628
8629 if ((fields_present & (1ULL << BCMBAL_PACKET_IND_ID_FLOW_COOKIE)) != 0)
8630 {
8631 if (!bcmbal_buf_write_u64(buf, (uint64_t) this->flow_cookie))
8632 {
8633 return BCMOS_FALSE;
8634 }
8635 }
8636
8637 if ((fields_present & (1ULL << BCMBAL_PACKET_IND_ID_PKT)) != 0)
8638 {
8639 if (!bcmbal_u8_list_u32_pack(&this->pkt, buf))
8640 {
8641 return BCMOS_FALSE;
8642 }
8643 }
8644
8645 return BCMOS_TRUE;
8646}
8647
8648/******************************************************************************/
8649uint32_t bcmbal_packet_ind_data_get_packed_length(const bcmbal_packet_ind_data *this, bcmbal_presence_mask fields_present)
8650{
8651 uint32_t count = 0;
8652 if ((fields_present & (1ULL << BCMBAL_PACKET_IND_ID_FLOW_ID)) != 0)
8653 {
8654 count += 4;
8655 }
8656
8657 if ((fields_present & (1ULL << BCMBAL_PACKET_IND_ID_FLOW_TYPE)) != 0)
8658 {
8659 count += 4;
8660 }
8661
8662 if ((fields_present & (1ULL << BCMBAL_PACKET_IND_ID_INTF_ID)) != 0)
8663 {
8664 count += 4;
8665 }
8666
8667 if ((fields_present & (1ULL << BCMBAL_PACKET_IND_ID_INTF_TYPE)) != 0)
8668 {
8669 count += 4;
8670 }
8671
8672 if ((fields_present & (1ULL << BCMBAL_PACKET_IND_ID_SVC_PORT)) != 0)
8673 {
8674 count += 2;
8675 }
8676
8677 if ((fields_present & (1ULL << BCMBAL_PACKET_IND_ID_FLOW_COOKIE)) != 0)
8678 {
8679 count += 8;
8680 }
8681
8682 if ((fields_present & (1ULL << BCMBAL_PACKET_IND_ID_PKT)) != 0)
8683 {
8684 count += bcmbal_u8_list_u32_get_packed_length(&this->pkt);
8685 }
8686
8687 return count;
8688}
8689
8690/******************************************************************************/
8691bcmos_bool bcmbal_packet_ind_data_unpack(bcmbal_packet_ind_data *this, bcmbal_buf *buf, void **extra_mem, bcmbal_presence_mask fields_present)
8692{
8693 if ((fields_present & (1ULL << BCMBAL_PACKET_IND_ID_FLOW_ID)) != 0)
8694 {
8695 if (!bcmbal_buf_read_u32(buf, (uint32_t *) &this->flow_id))
8696 {
8697 return BCMOS_FALSE;
8698 }
8699 }
8700
8701 if ((fields_present & (1ULL << BCMBAL_PACKET_IND_ID_FLOW_TYPE)) != 0)
8702 {
8703 if (!bcmbal_flow_type_unpack(&this->flow_type, buf))
8704 {
8705 return BCMOS_FALSE;
8706 }
8707 }
8708
8709 if ((fields_present & (1ULL << BCMBAL_PACKET_IND_ID_INTF_ID)) != 0)
8710 {
8711 if (!bcmbal_buf_read_u32(buf, (uint32_t *) &this->intf_id))
8712 {
8713 return BCMOS_FALSE;
8714 }
8715 }
8716
8717 if ((fields_present & (1ULL << BCMBAL_PACKET_IND_ID_INTF_TYPE)) != 0)
8718 {
8719 if (!bcmbal_intf_type_unpack(&this->intf_type, buf))
8720 {
8721 return BCMOS_FALSE;
8722 }
8723 }
8724
8725 if ((fields_present & (1ULL << BCMBAL_PACKET_IND_ID_SVC_PORT)) != 0)
8726 {
8727 if (!bcmbal_buf_read_u16(buf, (uint16_t *) &this->svc_port))
8728 {
8729 return BCMOS_FALSE;
8730 }
8731 }
8732
8733 if ((fields_present & (1ULL << BCMBAL_PACKET_IND_ID_FLOW_COOKIE)) != 0)
8734 {
8735 if (!bcmbal_buf_read_u64(buf, (uint64_t *) &this->flow_cookie))
8736 {
8737 return BCMOS_FALSE;
8738 }
8739 }
8740
8741 if ((fields_present & (1ULL << BCMBAL_PACKET_IND_ID_PKT)) != 0)
8742 {
8743 if (!bcmbal_u8_list_u32_unpack(&this->pkt, buf, extra_mem))
8744 {
8745 return BCMOS_FALSE;
8746 }
8747 }
8748
8749 return BCMOS_TRUE;
8750}
8751
8752/******************************************************************************/
8753bcmos_bool bcmbal_packet_ind_data_scan(bcmbal_buf *packed, uint32_t *extra_mem, bcmbal_presence_mask fields_present)
8754{
8755 if ((fields_present & (1ULL << BCMBAL_PACKET_IND_ID_FLOW_ID)) != 0)
8756 {
8757 if (!bcmbal_buf_skip(packed, 4))
8758 {
8759 return BCMOS_FALSE;
8760 }
8761 }
8762
8763 if ((fields_present & (1ULL << BCMBAL_PACKET_IND_ID_FLOW_TYPE)) != 0)
8764 {
8765 if (!bcmbal_buf_skip(packed, 4))
8766 {
8767 return BCMOS_FALSE;
8768 }
8769 }
8770
8771 if ((fields_present & (1ULL << BCMBAL_PACKET_IND_ID_INTF_ID)) != 0)
8772 {
8773 if (!bcmbal_buf_skip(packed, 4))
8774 {
8775 return BCMOS_FALSE;
8776 }
8777 }
8778
8779 if ((fields_present & (1ULL << BCMBAL_PACKET_IND_ID_INTF_TYPE)) != 0)
8780 {
8781 if (!bcmbal_buf_skip(packed, 4))
8782 {
8783 return BCMOS_FALSE;
8784 }
8785 }
8786
8787 if ((fields_present & (1ULL << BCMBAL_PACKET_IND_ID_SVC_PORT)) != 0)
8788 {
8789 if (!bcmbal_buf_skip(packed, 2))
8790 {
8791 return BCMOS_FALSE;
8792 }
8793 }
8794
8795 if ((fields_present & (1ULL << BCMBAL_PACKET_IND_ID_FLOW_COOKIE)) != 0)
8796 {
8797 if (!bcmbal_buf_skip(packed, 8))
8798 {
8799 return BCMOS_FALSE;
8800 }
8801 }
8802
8803 if ((fields_present & (1ULL << BCMBAL_PACKET_IND_ID_PKT)) != 0)
8804 {
8805 if (!bcmbal_u8_list_u32_scan(packed, extra_mem))
8806 {
8807 return BCMOS_FALSE;
8808 }
8809 }
8810
8811 return BCMOS_TRUE;
8812}
8813
8814/******************************************************************************/
8815bcmos_bool bcmbal_packet_ind_data_bounds_check(const bcmbal_packet_ind_data *this, bcmbal_presence_mask fields_present, bcmbal_packet_ind_id *failed_prop)
8816{
8817 if ((fields_present & (1ULL << BCMBAL_PACKET_IND_ID_FLOW_TYPE)) != 0)
8818 {
8819 switch (this->flow_type)
8820 {
8821 case BCMBAL_FLOW_TYPE_UPSTREAM:
8822 break;
8823 case BCMBAL_FLOW_TYPE_DOWNSTREAM:
8824 break;
8825 case BCMBAL_FLOW_TYPE_BROADCAST:
8826 break;
8827 case BCMBAL_FLOW_TYPE_MULTICAST:
8828 break;
8829 default:
8830 *failed_prop = BCMBAL_PACKET_IND_ID_FLOW_TYPE;
8831 return BCMOS_FALSE;
8832 }
8833 }
8834
8835 if ((fields_present & (1ULL << BCMBAL_PACKET_IND_ID_INTF_TYPE)) != 0)
8836 {
8837 switch (this->intf_type)
8838 {
8839 case BCMBAL_INTF_TYPE_NNI:
8840 break;
8841 case BCMBAL_INTF_TYPE_PON:
8842 break;
8843 default:
8844 *failed_prop = BCMBAL_PACKET_IND_ID_INTF_TYPE;
8845 return BCMOS_FALSE;
8846 }
8847 }
8848
8849 if ((fields_present & (1ULL << BCMBAL_PACKET_IND_ID_PKT)) != 0)
8850 {
8851 if (!bcmbal_u8_list_u32_bounds_check(&this->pkt))
8852 {
8853 *failed_prop = BCMBAL_PACKET_IND_ID_PKT;
8854 return BCMOS_FALSE;
8855 }
8856 }
8857
8858 return BCMOS_TRUE;
8859}
8860
8861/******************************************************************************/
8862void bcmbal_subscriber_terminal_key_set_default(bcmbal_subscriber_terminal_key *this, bcmbal_presence_mask fields_present)
8863{
8864 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_KEY_ID_SUB_TERM_ID)) != 0)
8865 {
8866 this->sub_term_id = (bcmbal_sub_id) 0;
8867 }
8868
8869 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_KEY_ID_INTF_ID)) != 0)
8870 {
8871 this->intf_id = (bcmbal_intf_id) 0;
8872 }
8873}
8874
8875/******************************************************************************/
8876bcmos_bool bcmbal_subscriber_terminal_key_pack(const bcmbal_subscriber_terminal_key *this, bcmbal_buf *buf, bcmbal_presence_mask fields_present)
8877{
8878 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_KEY_ID_SUB_TERM_ID)) != 0)
8879 {
8880 if (!bcmbal_buf_write_u32(buf, (uint32_t) this->sub_term_id))
8881 {
8882 return BCMOS_FALSE;
8883 }
8884 }
8885
8886 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_KEY_ID_INTF_ID)) != 0)
8887 {
8888 if (!bcmbal_buf_write_u32(buf, (uint32_t) this->intf_id))
8889 {
8890 return BCMOS_FALSE;
8891 }
8892 }
8893
8894 return BCMOS_TRUE;
8895}
8896
8897/******************************************************************************/
8898uint32_t bcmbal_subscriber_terminal_key_get_packed_length(const bcmbal_subscriber_terminal_key *this, bcmbal_presence_mask fields_present)
8899{
8900 uint32_t count = 0;
8901 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_KEY_ID_SUB_TERM_ID)) != 0)
8902 {
8903 count += 4;
8904 }
8905
8906 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_KEY_ID_INTF_ID)) != 0)
8907 {
8908 count += 4;
8909 }
8910
8911 return count;
8912}
8913
8914/******************************************************************************/
8915bcmos_bool bcmbal_subscriber_terminal_key_unpack(bcmbal_subscriber_terminal_key *this, bcmbal_buf *buf, void **extra_mem, bcmbal_presence_mask fields_present)
8916{
8917 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_KEY_ID_SUB_TERM_ID)) != 0)
8918 {
8919 if (!bcmbal_buf_read_u32(buf, (uint32_t *) &this->sub_term_id))
8920 {
8921 return BCMOS_FALSE;
8922 }
8923 }
8924
8925 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_KEY_ID_INTF_ID)) != 0)
8926 {
8927 if (!bcmbal_buf_read_u32(buf, (uint32_t *) &this->intf_id))
8928 {
8929 return BCMOS_FALSE;
8930 }
8931 }
8932
8933 return BCMOS_TRUE;
8934}
8935
8936/******************************************************************************/
8937bcmos_bool bcmbal_subscriber_terminal_key_scan(bcmbal_buf *packed, uint32_t *extra_mem, bcmbal_presence_mask fields_present)
8938{
8939 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_KEY_ID_SUB_TERM_ID)) != 0)
8940 {
8941 if (!bcmbal_buf_skip(packed, 4))
8942 {
8943 return BCMOS_FALSE;
8944 }
8945 }
8946
8947 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_KEY_ID_INTF_ID)) != 0)
8948 {
8949 if (!bcmbal_buf_skip(packed, 4))
8950 {
8951 return BCMOS_FALSE;
8952 }
8953 }
8954
8955 return BCMOS_TRUE;
8956}
8957
8958/******************************************************************************/
8959bcmos_bool bcmbal_subscriber_terminal_key_bounds_check(const bcmbal_subscriber_terminal_key *this, bcmbal_presence_mask fields_present, bcmbal_subscriber_terminal_key_id *failed_prop)
8960{
8961 return BCMOS_TRUE;
8962}
8963
8964/******************************************************************************/
8965void bcmbal_subscriber_terminal_cfg_data_set_default(bcmbal_subscriber_terminal_cfg_data *this, bcmbal_presence_mask fields_present)
8966{
8967 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_ADMIN_STATE)) != 0)
8968 {
8969 this->admin_state = (bcmbal_state) 0;
8970 }
8971
8972 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_OPER_STATUS)) != 0)
8973 {
8974 this->oper_status = (bcmbal_status) 0;
8975 }
8976
8977 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_SERIAL_NUMBER)) != 0)
8978 {
8979 memset(this->serial_number.vendor_id, 0, sizeof(this->serial_number.vendor_id));
8980 memset(this->serial_number.vendor_specific, 0, sizeof(this->serial_number.vendor_specific));
8981 }
8982
8983 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_PASSWORD)) != 0)
8984 {
8985 memset(this->password.arr, 0, sizeof(this->password.arr));
8986 }
8987
8988 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_REGISTRATION_ID)) != 0)
8989 {
8990 memset(this->registration_id.arr, 0, sizeof(this->registration_id.arr));
8991 }
8992
8993 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_SVC_PORT_ID)) != 0)
8994 {
8995 this->svc_port_id = (bcmbal_service_port_id) 0;
8996 }
8997
8998 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_MAC_ADDRESS)) != 0)
8999 {
9000 bcmos_mac_address_init(&this->mac_address);
9001 }
9002
9003 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_DS_TM)) != 0)
9004 {
9005 this->ds_tm = (bcmbal_tm_sched_id) 0;
9006 }
9007
9008 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_US_TM)) != 0)
9009 {
9010 this->us_tm = (bcmbal_tm_sched_id) 0;
9011 }
9012
9013 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_SVC_PORT_ID_LIST)) != 0)
9014 {
9015 this->svc_port_id_list.len = 0;
9016 this->svc_port_id_list.val = NULL;
9017 }
9018
9019 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_AGG_PORT_ID_LIST)) != 0)
9020 {
9021 this->agg_port_id_list.len = 0;
9022 this->agg_port_id_list.val = NULL;
9023 }
9024}
9025
9026/******************************************************************************/
9027bcmos_bool bcmbal_subscriber_terminal_cfg_data_pack(const bcmbal_subscriber_terminal_cfg_data *this, bcmbal_buf *buf, bcmbal_presence_mask fields_present)
9028{
9029 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_ADMIN_STATE)) != 0)
9030 {
9031 if (!bcmbal_state_pack(this->admin_state, buf))
9032 {
9033 return BCMOS_FALSE;
9034 }
9035 }
9036
9037 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_OPER_STATUS)) != 0)
9038 {
9039 if (!bcmbal_status_pack(this->oper_status, buf))
9040 {
9041 return BCMOS_FALSE;
9042 }
9043 }
9044
9045 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_SERIAL_NUMBER)) != 0)
9046 {
9047 if (!bcmbal_serial_number_pack(&this->serial_number, buf))
9048 {
9049 return BCMOS_FALSE;
9050 }
9051 }
9052
9053 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_PASSWORD)) != 0)
9054 {
9055 if (!bcmbal_password_pack(&this->password, buf))
9056 {
9057 return BCMOS_FALSE;
9058 }
9059 }
9060
9061 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_REGISTRATION_ID)) != 0)
9062 {
9063 if (!bcmbal_registration_id_pack(&this->registration_id, buf))
9064 {
9065 return BCMOS_FALSE;
9066 }
9067 }
9068
9069 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_SVC_PORT_ID)) != 0)
9070 {
9071 if (!bcmbal_buf_write_u16(buf, (uint16_t) this->svc_port_id))
9072 {
9073 return BCMOS_FALSE;
9074 }
9075 }
9076
9077 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_MAC_ADDRESS)) != 0)
9078 {
9079 if (!bcmbal_buf_write_mac_address(buf, this->mac_address))
9080 {
9081 return BCMOS_FALSE;
9082 }
9083 }
9084
9085 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_DS_TM)) != 0)
9086 {
9087 if (!bcmbal_buf_write_u32(buf, (uint32_t) this->ds_tm))
9088 {
9089 return BCMOS_FALSE;
9090 }
9091 }
9092
9093 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_US_TM)) != 0)
9094 {
9095 if (!bcmbal_buf_write_u32(buf, (uint32_t) this->us_tm))
9096 {
9097 return BCMOS_FALSE;
9098 }
9099 }
9100
9101 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_SVC_PORT_ID_LIST)) != 0)
9102 {
9103 if (!bcmbal_service_port_id_list_u8_pack(&this->svc_port_id_list, buf))
9104 {
9105 return BCMOS_FALSE;
9106 }
9107 }
9108
9109 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_AGG_PORT_ID_LIST)) != 0)
9110 {
9111 if (!bcmbal_aggregation_port_id_list_u8_pack(&this->agg_port_id_list, buf))
9112 {
9113 return BCMOS_FALSE;
9114 }
9115 }
9116
9117 return BCMOS_TRUE;
9118}
9119
9120/******************************************************************************/
9121uint32_t bcmbal_subscriber_terminal_cfg_data_get_packed_length(const bcmbal_subscriber_terminal_cfg_data *this, bcmbal_presence_mask fields_present)
9122{
9123 uint32_t count = 0;
9124 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_ADMIN_STATE)) != 0)
9125 {
9126 count += 4;
9127 }
9128
9129 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_OPER_STATUS)) != 0)
9130 {
9131 count += 4;
9132 }
9133
9134 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_SERIAL_NUMBER)) != 0)
9135 {
9136 count += 8;
9137 }
9138
9139 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_PASSWORD)) != 0)
9140 {
9141 count += 10;
9142 }
9143
9144 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_REGISTRATION_ID)) != 0)
9145 {
9146 count += 36;
9147 }
9148
9149 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_SVC_PORT_ID)) != 0)
9150 {
9151 count += 2;
9152 }
9153
9154 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_MAC_ADDRESS)) != 0)
9155 {
9156 count += 6;
9157 }
9158
9159 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_DS_TM)) != 0)
9160 {
9161 count += 4;
9162 }
9163
9164 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_US_TM)) != 0)
9165 {
9166 count += 4;
9167 }
9168
9169 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_SVC_PORT_ID_LIST)) != 0)
9170 {
9171 count += bcmbal_service_port_id_list_u8_get_packed_length(&this->svc_port_id_list);
9172 }
9173
9174 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_AGG_PORT_ID_LIST)) != 0)
9175 {
9176 count += bcmbal_aggregation_port_id_list_u8_get_packed_length(&this->agg_port_id_list);
9177 }
9178
9179 return count;
9180}
9181
9182/******************************************************************************/
9183bcmos_bool bcmbal_subscriber_terminal_cfg_data_unpack(bcmbal_subscriber_terminal_cfg_data *this, bcmbal_buf *buf, void **extra_mem, bcmbal_presence_mask fields_present)
9184{
9185 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_ADMIN_STATE)) != 0)
9186 {
9187 if (!bcmbal_state_unpack(&this->admin_state, buf))
9188 {
9189 return BCMOS_FALSE;
9190 }
9191 }
9192
9193 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_OPER_STATUS)) != 0)
9194 {
9195 if (!bcmbal_status_unpack(&this->oper_status, buf))
9196 {
9197 return BCMOS_FALSE;
9198 }
9199 }
9200
9201 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_SERIAL_NUMBER)) != 0)
9202 {
9203 if (!bcmbal_serial_number_unpack(&this->serial_number, buf, extra_mem))
9204 {
9205 return BCMOS_FALSE;
9206 }
9207 }
9208
9209 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_PASSWORD)) != 0)
9210 {
9211 if (!bcmbal_password_unpack(&this->password, buf, extra_mem))
9212 {
9213 return BCMOS_FALSE;
9214 }
9215 }
9216
9217 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_REGISTRATION_ID)) != 0)
9218 {
9219 if (!bcmbal_registration_id_unpack(&this->registration_id, buf, extra_mem))
9220 {
9221 return BCMOS_FALSE;
9222 }
9223 }
9224
9225 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_SVC_PORT_ID)) != 0)
9226 {
9227 if (!bcmbal_buf_read_u16(buf, (uint16_t *) &this->svc_port_id))
9228 {
9229 return BCMOS_FALSE;
9230 }
9231 }
9232
9233 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_MAC_ADDRESS)) != 0)
9234 {
9235 if (!bcmbal_buf_read_mac_address(buf, &this->mac_address))
9236 {
9237 return BCMOS_FALSE;
9238 }
9239 }
9240
9241 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_DS_TM)) != 0)
9242 {
9243 if (!bcmbal_buf_read_u32(buf, (uint32_t *) &this->ds_tm))
9244 {
9245 return BCMOS_FALSE;
9246 }
9247 }
9248
9249 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_US_TM)) != 0)
9250 {
9251 if (!bcmbal_buf_read_u32(buf, (uint32_t *) &this->us_tm))
9252 {
9253 return BCMOS_FALSE;
9254 }
9255 }
9256
9257 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_SVC_PORT_ID_LIST)) != 0)
9258 {
9259 if (!bcmbal_service_port_id_list_u8_unpack(&this->svc_port_id_list, buf, extra_mem))
9260 {
9261 return BCMOS_FALSE;
9262 }
9263 }
9264
9265 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_AGG_PORT_ID_LIST)) != 0)
9266 {
9267 if (!bcmbal_aggregation_port_id_list_u8_unpack(&this->agg_port_id_list, buf, extra_mem))
9268 {
9269 return BCMOS_FALSE;
9270 }
9271 }
9272
9273 return BCMOS_TRUE;
9274}
9275
9276/******************************************************************************/
9277bcmos_bool bcmbal_subscriber_terminal_cfg_data_scan(bcmbal_buf *packed, uint32_t *extra_mem, bcmbal_presence_mask fields_present)
9278{
9279 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_ADMIN_STATE)) != 0)
9280 {
9281 if (!bcmbal_buf_skip(packed, 4))
9282 {
9283 return BCMOS_FALSE;
9284 }
9285 }
9286
9287 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_OPER_STATUS)) != 0)
9288 {
9289 if (!bcmbal_buf_skip(packed, 4))
9290 {
9291 return BCMOS_FALSE;
9292 }
9293 }
9294
9295 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_SERIAL_NUMBER)) != 0)
9296 {
9297 if (!bcmbal_buf_skip(packed, 8))
9298 {
9299 return BCMOS_FALSE;
9300 }
9301 }
9302
9303 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_PASSWORD)) != 0)
9304 {
9305 if (!bcmbal_buf_skip(packed, 10))
9306 {
9307 return BCMOS_FALSE;
9308 }
9309 }
9310
9311 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_REGISTRATION_ID)) != 0)
9312 {
9313 if (!bcmbal_buf_skip(packed, 36))
9314 {
9315 return BCMOS_FALSE;
9316 }
9317 }
9318
9319 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_SVC_PORT_ID)) != 0)
9320 {
9321 if (!bcmbal_buf_skip(packed, 2))
9322 {
9323 return BCMOS_FALSE;
9324 }
9325 }
9326
9327 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_MAC_ADDRESS)) != 0)
9328 {
9329 if (!bcmbal_buf_skip(packed, 6))
9330 {
9331 return BCMOS_FALSE;
9332 }
9333 }
9334
9335 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_DS_TM)) != 0)
9336 {
9337 if (!bcmbal_buf_skip(packed, 4))
9338 {
9339 return BCMOS_FALSE;
9340 }
9341 }
9342
9343 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_US_TM)) != 0)
9344 {
9345 if (!bcmbal_buf_skip(packed, 4))
9346 {
9347 return BCMOS_FALSE;
9348 }
9349 }
9350
9351 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_SVC_PORT_ID_LIST)) != 0)
9352 {
9353 if (!bcmbal_service_port_id_list_u8_scan(packed, extra_mem))
9354 {
9355 return BCMOS_FALSE;
9356 }
9357 }
9358
9359 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_AGG_PORT_ID_LIST)) != 0)
9360 {
9361 if (!bcmbal_aggregation_port_id_list_u8_scan(packed, extra_mem))
9362 {
9363 return BCMOS_FALSE;
9364 }
9365 }
9366
9367 return BCMOS_TRUE;
9368}
9369
9370/******************************************************************************/
9371bcmos_bool bcmbal_subscriber_terminal_cfg_data_bounds_check(const bcmbal_subscriber_terminal_cfg_data *this, bcmbal_presence_mask fields_present, bcmbal_subscriber_terminal_cfg_id *failed_prop)
9372{
9373 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_ADMIN_STATE)) != 0)
9374 {
9375 switch (this->admin_state)
9376 {
9377 case BCMBAL_STATE_UP:
9378 break;
9379 case BCMBAL_STATE_DOWN:
9380 break;
9381 case BCMBAL_STATE_TESTING:
9382 break;
9383 default:
9384 *failed_prop = BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_ADMIN_STATE;
9385 return BCMOS_FALSE;
9386 }
9387 }
9388
9389 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_OPER_STATUS)) != 0)
9390 {
9391 switch (this->oper_status)
9392 {
9393 case BCMBAL_STATUS_UP:
9394 break;
9395 case BCMBAL_STATUS_DOWN:
9396 break;
9397 case BCMBAL_STATUS_TESTING:
9398 break;
9399 case BCMBAL_STATUS_NOT_PRESENT:
9400 break;
9401 case BCMBAL_STATUS_LOWER_LAYER_DOWN:
9402 break;
9403 case BCMBAL_STATUS_UNKNOWN:
9404 break;
9405 default:
9406 *failed_prop = BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_OPER_STATUS;
9407 return BCMOS_FALSE;
9408 }
9409 }
9410
9411 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_SERIAL_NUMBER)) != 0)
9412 {
9413 if (!bcmbal_serial_number_bounds_check(&this->serial_number))
9414 {
9415 *failed_prop = BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_SERIAL_NUMBER;
9416 return BCMOS_FALSE;
9417 }
9418 }
9419
9420 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_PASSWORD)) != 0)
9421 {
9422 if (!bcmbal_password_bounds_check(&this->password))
9423 {
9424 *failed_prop = BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_PASSWORD;
9425 return BCMOS_FALSE;
9426 }
9427 }
9428
9429 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_REGISTRATION_ID)) != 0)
9430 {
9431 if (!bcmbal_registration_id_bounds_check(&this->registration_id))
9432 {
9433 *failed_prop = BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_REGISTRATION_ID;
9434 return BCMOS_FALSE;
9435 }
9436 }
9437
9438 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_SVC_PORT_ID_LIST)) != 0)
9439 {
9440 if (!bcmbal_service_port_id_list_u8_bounds_check(&this->svc_port_id_list))
9441 {
9442 *failed_prop = BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_SVC_PORT_ID_LIST;
9443 return BCMOS_FALSE;
9444 }
9445 }
9446
9447 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_AGG_PORT_ID_LIST)) != 0)
9448 {
9449 if (!bcmbal_aggregation_port_id_list_u8_bounds_check(&this->agg_port_id_list))
9450 {
9451 *failed_prop = BCMBAL_SUBSCRIBER_TERMINAL_CFG_ID_AGG_PORT_ID_LIST;
9452 return BCMOS_FALSE;
9453 }
9454 }
9455
9456 return BCMOS_TRUE;
9457}
9458
9459/******************************************************************************/
9460void bcmbal_subscriber_terminal_stat_data_set_default(bcmbal_subscriber_terminal_stat_data *this, bcmbal_presence_mask fields_present)
9461{
9462 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_STAT_ID_RX_PACKETS)) != 0)
9463 {
9464 this->rx_packets = 0;
9465 }
9466
9467 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_STAT_ID_RX_BYTES)) != 0)
9468 {
9469 this->rx_bytes = 0;
9470 }
9471
9472 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_STAT_ID_TX_PACKETS)) != 0)
9473 {
9474 this->tx_packets = 0;
9475 }
9476
9477 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_STAT_ID_TX_BYTES)) != 0)
9478 {
9479 this->tx_bytes = 0;
9480 }
9481}
9482
9483/******************************************************************************/
9484bcmos_bool bcmbal_subscriber_terminal_stat_data_pack(const bcmbal_subscriber_terminal_stat_data *this, bcmbal_buf *buf, bcmbal_presence_mask fields_present)
9485{
9486 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_STAT_ID_RX_PACKETS)) != 0)
9487 {
9488 if (!bcmbal_buf_write_u64(buf, this->rx_packets))
9489 {
9490 return BCMOS_FALSE;
9491 }
9492 }
9493
9494 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_STAT_ID_RX_BYTES)) != 0)
9495 {
9496 if (!bcmbal_buf_write_u64(buf, this->rx_bytes))
9497 {
9498 return BCMOS_FALSE;
9499 }
9500 }
9501
9502 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_STAT_ID_TX_PACKETS)) != 0)
9503 {
9504 if (!bcmbal_buf_write_u64(buf, this->tx_packets))
9505 {
9506 return BCMOS_FALSE;
9507 }
9508 }
9509
9510 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_STAT_ID_TX_BYTES)) != 0)
9511 {
9512 if (!bcmbal_buf_write_u64(buf, this->tx_bytes))
9513 {
9514 return BCMOS_FALSE;
9515 }
9516 }
9517
9518 return BCMOS_TRUE;
9519}
9520
9521/******************************************************************************/
9522uint32_t bcmbal_subscriber_terminal_stat_data_get_packed_length(const bcmbal_subscriber_terminal_stat_data *this, bcmbal_presence_mask fields_present)
9523{
9524 uint32_t count = 0;
9525 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_STAT_ID_RX_PACKETS)) != 0)
9526 {
9527 count += 8;
9528 }
9529
9530 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_STAT_ID_RX_BYTES)) != 0)
9531 {
9532 count += 8;
9533 }
9534
9535 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_STAT_ID_TX_PACKETS)) != 0)
9536 {
9537 count += 8;
9538 }
9539
9540 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_STAT_ID_TX_BYTES)) != 0)
9541 {
9542 count += 8;
9543 }
9544
9545 return count;
9546}
9547
9548/******************************************************************************/
9549bcmos_bool bcmbal_subscriber_terminal_stat_data_unpack(bcmbal_subscriber_terminal_stat_data *this, bcmbal_buf *buf, void **extra_mem, bcmbal_presence_mask fields_present)
9550{
9551 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_STAT_ID_RX_PACKETS)) != 0)
9552 {
9553 if (!bcmbal_buf_read_u64(buf, &this->rx_packets))
9554 {
9555 return BCMOS_FALSE;
9556 }
9557 }
9558
9559 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_STAT_ID_RX_BYTES)) != 0)
9560 {
9561 if (!bcmbal_buf_read_u64(buf, &this->rx_bytes))
9562 {
9563 return BCMOS_FALSE;
9564 }
9565 }
9566
9567 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_STAT_ID_TX_PACKETS)) != 0)
9568 {
9569 if (!bcmbal_buf_read_u64(buf, &this->tx_packets))
9570 {
9571 return BCMOS_FALSE;
9572 }
9573 }
9574
9575 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_STAT_ID_TX_BYTES)) != 0)
9576 {
9577 if (!bcmbal_buf_read_u64(buf, &this->tx_bytes))
9578 {
9579 return BCMOS_FALSE;
9580 }
9581 }
9582
9583 return BCMOS_TRUE;
9584}
9585
9586/******************************************************************************/
9587bcmos_bool bcmbal_subscriber_terminal_stat_data_scan(bcmbal_buf *packed, uint32_t *extra_mem, bcmbal_presence_mask fields_present)
9588{
9589 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_STAT_ID_RX_PACKETS)) != 0)
9590 {
9591 if (!bcmbal_buf_skip(packed, 8))
9592 {
9593 return BCMOS_FALSE;
9594 }
9595 }
9596
9597 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_STAT_ID_RX_BYTES)) != 0)
9598 {
9599 if (!bcmbal_buf_skip(packed, 8))
9600 {
9601 return BCMOS_FALSE;
9602 }
9603 }
9604
9605 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_STAT_ID_TX_PACKETS)) != 0)
9606 {
9607 if (!bcmbal_buf_skip(packed, 8))
9608 {
9609 return BCMOS_FALSE;
9610 }
9611 }
9612
9613 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_STAT_ID_TX_BYTES)) != 0)
9614 {
9615 if (!bcmbal_buf_skip(packed, 8))
9616 {
9617 return BCMOS_FALSE;
9618 }
9619 }
9620
9621 return BCMOS_TRUE;
9622}
9623
9624/******************************************************************************/
9625bcmos_bool bcmbal_subscriber_terminal_stat_data_bounds_check(const bcmbal_subscriber_terminal_stat_data *this, bcmbal_presence_mask fields_present, bcmbal_subscriber_terminal_stat_id *failed_prop)
9626{
9627 return BCMOS_TRUE;
9628}
9629
9630/******************************************************************************/
9631void bcmbal_subscriber_terminal_ind_data_set_default(bcmbal_subscriber_terminal_ind_data *this, bcmbal_presence_mask fields_present)
9632{
9633 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_IND_ID_ADMIN_STATE)) != 0)
9634 {
9635 this->admin_state = (bcmbal_state) 0;
9636 }
9637
9638 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_IND_ID_OPER_STATUS)) != 0)
9639 {
9640 this->oper_status = (bcmbal_status) 0;
9641 }
9642
9643 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_IND_ID_SERIAL_NUMBER)) != 0)
9644 {
9645 memset(this->serial_number.vendor_id, 0, sizeof(this->serial_number.vendor_id));
9646 memset(this->serial_number.vendor_specific, 0, sizeof(this->serial_number.vendor_specific));
9647 }
9648
9649 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_IND_ID_PASSWORD)) != 0)
9650 {
9651 memset(this->password.arr, 0, sizeof(this->password.arr));
9652 }
9653
9654 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_IND_ID_REGISTRATION_ID)) != 0)
9655 {
9656 memset(this->registration_id.arr, 0, sizeof(this->registration_id.arr));
9657 }
9658
9659 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_IND_ID_SVC_PORT_ID)) != 0)
9660 {
9661 this->svc_port_id = 0;
9662 }
9663
9664 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_IND_ID_MAC_ADDRESS)) != 0)
9665 {
9666 bcmos_mac_address_init(&this->mac_address);
9667 }
9668
9669 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_IND_ID_DS_TM)) != 0)
9670 {
9671 this->ds_tm = (bcmbal_tm_sched_id) 0;
9672 }
9673
9674 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_IND_ID_US_TM)) != 0)
9675 {
9676 this->us_tm = (bcmbal_tm_sched_id) 0;
9677 }
9678}
9679
9680/******************************************************************************/
9681bcmos_bool bcmbal_subscriber_terminal_ind_data_pack(const bcmbal_subscriber_terminal_ind_data *this, bcmbal_buf *buf, bcmbal_presence_mask fields_present)
9682{
9683 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_IND_ID_ADMIN_STATE)) != 0)
9684 {
9685 if (!bcmbal_state_pack(this->admin_state, buf))
9686 {
9687 return BCMOS_FALSE;
9688 }
9689 }
9690
9691 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_IND_ID_OPER_STATUS)) != 0)
9692 {
9693 if (!bcmbal_status_pack(this->oper_status, buf))
9694 {
9695 return BCMOS_FALSE;
9696 }
9697 }
9698
9699 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_IND_ID_SERIAL_NUMBER)) != 0)
9700 {
9701 if (!bcmbal_serial_number_pack(&this->serial_number, buf))
9702 {
9703 return BCMOS_FALSE;
9704 }
9705 }
9706
9707 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_IND_ID_PASSWORD)) != 0)
9708 {
9709 if (!bcmbal_password_pack(&this->password, buf))
9710 {
9711 return BCMOS_FALSE;
9712 }
9713 }
9714
9715 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_IND_ID_REGISTRATION_ID)) != 0)
9716 {
9717 if (!bcmbal_registration_id_pack(&this->registration_id, buf))
9718 {
9719 return BCMOS_FALSE;
9720 }
9721 }
9722
9723 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_IND_ID_SVC_PORT_ID)) != 0)
9724 {
9725 if (!bcmbal_buf_write_u16(buf, this->svc_port_id))
9726 {
9727 return BCMOS_FALSE;
9728 }
9729 }
9730
9731 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_IND_ID_MAC_ADDRESS)) != 0)
9732 {
9733 if (!bcmbal_buf_write_mac_address(buf, this->mac_address))
9734 {
9735 return BCMOS_FALSE;
9736 }
9737 }
9738
9739 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_IND_ID_DS_TM)) != 0)
9740 {
9741 if (!bcmbal_buf_write_u32(buf, (uint32_t) this->ds_tm))
9742 {
9743 return BCMOS_FALSE;
9744 }
9745 }
9746
9747 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_IND_ID_US_TM)) != 0)
9748 {
9749 if (!bcmbal_buf_write_u32(buf, (uint32_t) this->us_tm))
9750 {
9751 return BCMOS_FALSE;
9752 }
9753 }
9754
9755 return BCMOS_TRUE;
9756}
9757
9758/******************************************************************************/
9759uint32_t bcmbal_subscriber_terminal_ind_data_get_packed_length(const bcmbal_subscriber_terminal_ind_data *this, bcmbal_presence_mask fields_present)
9760{
9761 uint32_t count = 0;
9762 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_IND_ID_ADMIN_STATE)) != 0)
9763 {
9764 count += 4;
9765 }
9766
9767 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_IND_ID_OPER_STATUS)) != 0)
9768 {
9769 count += 4;
9770 }
9771
9772 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_IND_ID_SERIAL_NUMBER)) != 0)
9773 {
9774 count += 8;
9775 }
9776
9777 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_IND_ID_PASSWORD)) != 0)
9778 {
9779 count += 10;
9780 }
9781
9782 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_IND_ID_REGISTRATION_ID)) != 0)
9783 {
9784 count += 36;
9785 }
9786
9787 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_IND_ID_SVC_PORT_ID)) != 0)
9788 {
9789 count += 2;
9790 }
9791
9792 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_IND_ID_MAC_ADDRESS)) != 0)
9793 {
9794 count += 6;
9795 }
9796
9797 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_IND_ID_DS_TM)) != 0)
9798 {
9799 count += 4;
9800 }
9801
9802 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_IND_ID_US_TM)) != 0)
9803 {
9804 count += 4;
9805 }
9806
9807 return count;
9808}
9809
9810/******************************************************************************/
9811bcmos_bool bcmbal_subscriber_terminal_ind_data_unpack(bcmbal_subscriber_terminal_ind_data *this, bcmbal_buf *buf, void **extra_mem, bcmbal_presence_mask fields_present)
9812{
9813 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_IND_ID_ADMIN_STATE)) != 0)
9814 {
9815 if (!bcmbal_state_unpack(&this->admin_state, buf))
9816 {
9817 return BCMOS_FALSE;
9818 }
9819 }
9820
9821 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_IND_ID_OPER_STATUS)) != 0)
9822 {
9823 if (!bcmbal_status_unpack(&this->oper_status, buf))
9824 {
9825 return BCMOS_FALSE;
9826 }
9827 }
9828
9829 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_IND_ID_SERIAL_NUMBER)) != 0)
9830 {
9831 if (!bcmbal_serial_number_unpack(&this->serial_number, buf, extra_mem))
9832 {
9833 return BCMOS_FALSE;
9834 }
9835 }
9836
9837 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_IND_ID_PASSWORD)) != 0)
9838 {
9839 if (!bcmbal_password_unpack(&this->password, buf, extra_mem))
9840 {
9841 return BCMOS_FALSE;
9842 }
9843 }
9844
9845 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_IND_ID_REGISTRATION_ID)) != 0)
9846 {
9847 if (!bcmbal_registration_id_unpack(&this->registration_id, buf, extra_mem))
9848 {
9849 return BCMOS_FALSE;
9850 }
9851 }
9852
9853 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_IND_ID_SVC_PORT_ID)) != 0)
9854 {
9855 if (!bcmbal_buf_read_u16(buf, &this->svc_port_id))
9856 {
9857 return BCMOS_FALSE;
9858 }
9859 }
9860
9861 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_IND_ID_MAC_ADDRESS)) != 0)
9862 {
9863 if (!bcmbal_buf_read_mac_address(buf, &this->mac_address))
9864 {
9865 return BCMOS_FALSE;
9866 }
9867 }
9868
9869 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_IND_ID_DS_TM)) != 0)
9870 {
9871 if (!bcmbal_buf_read_u32(buf, (uint32_t *) &this->ds_tm))
9872 {
9873 return BCMOS_FALSE;
9874 }
9875 }
9876
9877 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_IND_ID_US_TM)) != 0)
9878 {
9879 if (!bcmbal_buf_read_u32(buf, (uint32_t *) &this->us_tm))
9880 {
9881 return BCMOS_FALSE;
9882 }
9883 }
9884
9885 return BCMOS_TRUE;
9886}
9887
9888/******************************************************************************/
9889bcmos_bool bcmbal_subscriber_terminal_ind_data_scan(bcmbal_buf *packed, uint32_t *extra_mem, bcmbal_presence_mask fields_present)
9890{
9891 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_IND_ID_ADMIN_STATE)) != 0)
9892 {
9893 if (!bcmbal_buf_skip(packed, 4))
9894 {
9895 return BCMOS_FALSE;
9896 }
9897 }
9898
9899 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_IND_ID_OPER_STATUS)) != 0)
9900 {
9901 if (!bcmbal_buf_skip(packed, 4))
9902 {
9903 return BCMOS_FALSE;
9904 }
9905 }
9906
9907 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_IND_ID_SERIAL_NUMBER)) != 0)
9908 {
9909 if (!bcmbal_buf_skip(packed, 8))
9910 {
9911 return BCMOS_FALSE;
9912 }
9913 }
9914
9915 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_IND_ID_PASSWORD)) != 0)
9916 {
9917 if (!bcmbal_buf_skip(packed, 10))
9918 {
9919 return BCMOS_FALSE;
9920 }
9921 }
9922
9923 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_IND_ID_REGISTRATION_ID)) != 0)
9924 {
9925 if (!bcmbal_buf_skip(packed, 36))
9926 {
9927 return BCMOS_FALSE;
9928 }
9929 }
9930
9931 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_IND_ID_SVC_PORT_ID)) != 0)
9932 {
9933 if (!bcmbal_buf_skip(packed, 2))
9934 {
9935 return BCMOS_FALSE;
9936 }
9937 }
9938
9939 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_IND_ID_MAC_ADDRESS)) != 0)
9940 {
9941 if (!bcmbal_buf_skip(packed, 6))
9942 {
9943 return BCMOS_FALSE;
9944 }
9945 }
9946
9947 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_IND_ID_DS_TM)) != 0)
9948 {
9949 if (!bcmbal_buf_skip(packed, 4))
9950 {
9951 return BCMOS_FALSE;
9952 }
9953 }
9954
9955 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_IND_ID_US_TM)) != 0)
9956 {
9957 if (!bcmbal_buf_skip(packed, 4))
9958 {
9959 return BCMOS_FALSE;
9960 }
9961 }
9962
9963 return BCMOS_TRUE;
9964}
9965
9966/******************************************************************************/
9967bcmos_bool bcmbal_subscriber_terminal_ind_data_bounds_check(const bcmbal_subscriber_terminal_ind_data *this, bcmbal_presence_mask fields_present, bcmbal_subscriber_terminal_ind_id *failed_prop)
9968{
9969 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_IND_ID_ADMIN_STATE)) != 0)
9970 {
9971 switch (this->admin_state)
9972 {
9973 case BCMBAL_STATE_UP:
9974 break;
9975 case BCMBAL_STATE_DOWN:
9976 break;
9977 case BCMBAL_STATE_TESTING:
9978 break;
9979 default:
9980 *failed_prop = BCMBAL_SUBSCRIBER_TERMINAL_IND_ID_ADMIN_STATE;
9981 return BCMOS_FALSE;
9982 }
9983 }
9984
9985 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_IND_ID_OPER_STATUS)) != 0)
9986 {
9987 switch (this->oper_status)
9988 {
9989 case BCMBAL_STATUS_UP:
9990 break;
9991 case BCMBAL_STATUS_DOWN:
9992 break;
9993 case BCMBAL_STATUS_TESTING:
9994 break;
9995 case BCMBAL_STATUS_NOT_PRESENT:
9996 break;
9997 case BCMBAL_STATUS_LOWER_LAYER_DOWN:
9998 break;
9999 case BCMBAL_STATUS_UNKNOWN:
10000 break;
10001 default:
10002 *failed_prop = BCMBAL_SUBSCRIBER_TERMINAL_IND_ID_OPER_STATUS;
10003 return BCMOS_FALSE;
10004 }
10005 }
10006
10007 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_IND_ID_SERIAL_NUMBER)) != 0)
10008 {
10009 if (!bcmbal_serial_number_bounds_check(&this->serial_number))
10010 {
10011 *failed_prop = BCMBAL_SUBSCRIBER_TERMINAL_IND_ID_SERIAL_NUMBER;
10012 return BCMOS_FALSE;
10013 }
10014 }
10015
10016 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_IND_ID_PASSWORD)) != 0)
10017 {
10018 if (!bcmbal_password_bounds_check(&this->password))
10019 {
10020 *failed_prop = BCMBAL_SUBSCRIBER_TERMINAL_IND_ID_PASSWORD;
10021 return BCMOS_FALSE;
10022 }
10023 }
10024
10025 if ((fields_present & (1ULL << BCMBAL_SUBSCRIBER_TERMINAL_IND_ID_REGISTRATION_ID)) != 0)
10026 {
10027 if (!bcmbal_registration_id_bounds_check(&this->registration_id))
10028 {
10029 *failed_prop = BCMBAL_SUBSCRIBER_TERMINAL_IND_ID_REGISTRATION_ID;
10030 return BCMOS_FALSE;
10031 }
10032 }
10033
10034 return BCMOS_TRUE;
10035}
10036
10037/******************************************************************************/
10038void bcmbal_tm_queue_key_set_default(bcmbal_tm_queue_key *this, bcmbal_presence_mask fields_present)
10039{
10040 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_KEY_ID_SCHED_ID)) != 0)
10041 {
10042 this->sched_id = (bcmbal_tm_sched_id) 0;
10043 }
10044
10045 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_KEY_ID_SCHED_DIR)) != 0)
10046 {
10047 this->sched_dir = (bcmbal_tm_sched_dir) 0;
10048 }
10049
10050 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_KEY_ID_ID)) != 0)
10051 {
10052 this->id = (bcmbal_tm_queue_id) 0;
10053 }
10054}
10055
10056/******************************************************************************/
10057bcmos_bool bcmbal_tm_queue_key_pack(const bcmbal_tm_queue_key *this, bcmbal_buf *buf, bcmbal_presence_mask fields_present)
10058{
10059 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_KEY_ID_SCHED_ID)) != 0)
10060 {
10061 if (!bcmbal_buf_write_u32(buf, (uint32_t) this->sched_id))
10062 {
10063 return BCMOS_FALSE;
10064 }
10065 }
10066
10067 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_KEY_ID_SCHED_DIR)) != 0)
10068 {
10069 if (!bcmbal_tm_sched_dir_pack(this->sched_dir, buf))
10070 {
10071 return BCMOS_FALSE;
10072 }
10073 }
10074
10075 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_KEY_ID_ID)) != 0)
10076 {
10077 if (!bcmbal_buf_write_u8(buf, (uint8_t) this->id))
10078 {
10079 return BCMOS_FALSE;
10080 }
10081 }
10082
10083 return BCMOS_TRUE;
10084}
10085
10086/******************************************************************************/
10087uint32_t bcmbal_tm_queue_key_get_packed_length(const bcmbal_tm_queue_key *this, bcmbal_presence_mask fields_present)
10088{
10089 uint32_t count = 0;
10090 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_KEY_ID_SCHED_ID)) != 0)
10091 {
10092 count += 4;
10093 }
10094
10095 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_KEY_ID_SCHED_DIR)) != 0)
10096 {
10097 count += 1;
10098 }
10099
10100 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_KEY_ID_ID)) != 0)
10101 {
10102 count += 1;
10103 }
10104
10105 return count;
10106}
10107
10108/******************************************************************************/
10109bcmos_bool bcmbal_tm_queue_key_unpack(bcmbal_tm_queue_key *this, bcmbal_buf *buf, void **extra_mem, bcmbal_presence_mask fields_present)
10110{
10111 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_KEY_ID_SCHED_ID)) != 0)
10112 {
10113 if (!bcmbal_buf_read_u32(buf, (uint32_t *) &this->sched_id))
10114 {
10115 return BCMOS_FALSE;
10116 }
10117 }
10118
10119 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_KEY_ID_SCHED_DIR)) != 0)
10120 {
10121 if (!bcmbal_tm_sched_dir_unpack(&this->sched_dir, buf))
10122 {
10123 return BCMOS_FALSE;
10124 }
10125 }
10126
10127 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_KEY_ID_ID)) != 0)
10128 {
10129 if (!bcmbal_buf_read_u8(buf, (uint8_t *) &this->id))
10130 {
10131 return BCMOS_FALSE;
10132 }
10133 }
10134
10135 return BCMOS_TRUE;
10136}
10137
10138/******************************************************************************/
10139bcmos_bool bcmbal_tm_queue_key_scan(bcmbal_buf *packed, uint32_t *extra_mem, bcmbal_presence_mask fields_present)
10140{
10141 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_KEY_ID_SCHED_ID)) != 0)
10142 {
10143 if (!bcmbal_buf_skip(packed, 4))
10144 {
10145 return BCMOS_FALSE;
10146 }
10147 }
10148
10149 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_KEY_ID_SCHED_DIR)) != 0)
10150 {
10151 if (!bcmbal_buf_skip(packed, 1))
10152 {
10153 return BCMOS_FALSE;
10154 }
10155 }
10156
10157 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_KEY_ID_ID)) != 0)
10158 {
10159 if (!bcmbal_buf_skip(packed, 1))
10160 {
10161 return BCMOS_FALSE;
10162 }
10163 }
10164
10165 return BCMOS_TRUE;
10166}
10167
10168/******************************************************************************/
10169bcmos_bool bcmbal_tm_queue_key_bounds_check(const bcmbal_tm_queue_key *this, bcmbal_presence_mask fields_present, bcmbal_tm_queue_key_id *failed_prop)
10170{
10171 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_KEY_ID_SCHED_DIR)) != 0)
10172 {
10173 switch (this->sched_dir)
10174 {
10175 case BCMBAL_TM_SCHED_DIR_US:
10176 break;
10177 case BCMBAL_TM_SCHED_DIR_DS:
10178 break;
10179 default:
10180 *failed_prop = BCMBAL_TM_QUEUE_KEY_ID_SCHED_DIR;
10181 return BCMOS_FALSE;
10182 }
10183 }
10184
10185 return BCMOS_TRUE;
10186}
10187
10188/******************************************************************************/
10189void bcmbal_tm_queue_cfg_data_set_default(bcmbal_tm_queue_cfg_data *this, bcmbal_presence_mask fields_present)
10190{
10191 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_CFG_ID_PRIORITY)) != 0)
10192 {
10193 this->priority = (bcmbal_tm_priority) 0;
10194 }
10195
10196 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_CFG_ID_WEIGHT)) != 0)
10197 {
10198 this->weight = (bcmbal_tm_weight) 0;
10199 }
10200
10201 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_CFG_ID_RATE)) != 0)
10202 {
10203 this->rate.presence_mask = (bcmbal_tm_shaping_id) 0;
10204 this->rate.sbr = 0;
10205 this->rate.pbr = 0;
10206 this->rate.burst = 0;
10207 }
10208
10209 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_CFG_ID_BAC)) != 0)
10210 {
10211 this->bac.type = BCMBAL_TM_BAC_TYPE_TAILDROP;
10212 this->bac.u.taildrop.max_size = 0;
10213 }
10214
10215 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_CFG_ID_CREATION_MODE)) != 0)
10216 {
10217 this->creation_mode = BCMBAL_TM_CREATION_MODE_MANUAL;
10218 }
10219
10220 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_CFG_ID_REF_COUNT)) != 0)
10221 {
10222 this->ref_count = 0;
10223 }
10224}
10225
10226/******************************************************************************/
10227bcmos_bool bcmbal_tm_queue_cfg_data_pack(const bcmbal_tm_queue_cfg_data *this, bcmbal_buf *buf, bcmbal_presence_mask fields_present)
10228{
10229 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_CFG_ID_PRIORITY)) != 0)
10230 {
10231 if (!bcmbal_buf_write_u8(buf, (uint8_t) this->priority))
10232 {
10233 return BCMOS_FALSE;
10234 }
10235 }
10236
10237 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_CFG_ID_WEIGHT)) != 0)
10238 {
10239 if (!bcmbal_buf_write_u8(buf, (uint8_t) this->weight))
10240 {
10241 return BCMOS_FALSE;
10242 }
10243 }
10244
10245 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_CFG_ID_RATE)) != 0)
10246 {
10247 if (!bcmbal_tm_shaping_pack(&this->rate, buf))
10248 {
10249 return BCMOS_FALSE;
10250 }
10251 }
10252
10253 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_CFG_ID_BAC)) != 0)
10254 {
10255 if (!bcmbal_tm_bac_pack(&this->bac, buf))
10256 {
10257 return BCMOS_FALSE;
10258 }
10259 }
10260
10261 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_CFG_ID_CREATION_MODE)) != 0)
10262 {
10263 if (!bcmbal_tm_creation_mode_pack(this->creation_mode, buf))
10264 {
10265 return BCMOS_FALSE;
10266 }
10267 }
10268
10269 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_CFG_ID_REF_COUNT)) != 0)
10270 {
10271 if (!bcmbal_buf_write_u8(buf, this->ref_count))
10272 {
10273 return BCMOS_FALSE;
10274 }
10275 }
10276
10277 return BCMOS_TRUE;
10278}
10279
10280/******************************************************************************/
10281uint32_t bcmbal_tm_queue_cfg_data_get_packed_length(const bcmbal_tm_queue_cfg_data *this, bcmbal_presence_mask fields_present)
10282{
10283 uint32_t count = 0;
10284 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_CFG_ID_PRIORITY)) != 0)
10285 {
10286 count += 1;
10287 }
10288
10289 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_CFG_ID_WEIGHT)) != 0)
10290 {
10291 count += 1;
10292 }
10293
10294 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_CFG_ID_RATE)) != 0)
10295 {
10296 count += bcmbal_tm_shaping_get_packed_length(&this->rate);
10297 }
10298
10299 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_CFG_ID_BAC)) != 0)
10300 {
10301 count += bcmbal_tm_bac_get_packed_length(&this->bac);
10302 }
10303
10304 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_CFG_ID_CREATION_MODE)) != 0)
10305 {
10306 count += 1;
10307 }
10308
10309 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_CFG_ID_REF_COUNT)) != 0)
10310 {
10311 count += 1;
10312 }
10313
10314 return count;
10315}
10316
10317/******************************************************************************/
10318bcmos_bool bcmbal_tm_queue_cfg_data_unpack(bcmbal_tm_queue_cfg_data *this, bcmbal_buf *buf, void **extra_mem, bcmbal_presence_mask fields_present)
10319{
10320 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_CFG_ID_PRIORITY)) != 0)
10321 {
10322 if (!bcmbal_buf_read_u8(buf, (uint8_t *) &this->priority))
10323 {
10324 return BCMOS_FALSE;
10325 }
10326 }
10327
10328 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_CFG_ID_WEIGHT)) != 0)
10329 {
10330 if (!bcmbal_buf_read_u8(buf, (uint8_t *) &this->weight))
10331 {
10332 return BCMOS_FALSE;
10333 }
10334 }
10335
10336 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_CFG_ID_RATE)) != 0)
10337 {
10338 if (!bcmbal_tm_shaping_unpack(&this->rate, buf, extra_mem))
10339 {
10340 return BCMOS_FALSE;
10341 }
10342 }
10343
10344 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_CFG_ID_BAC)) != 0)
10345 {
10346 if (!bcmbal_tm_bac_unpack(&this->bac, buf, extra_mem))
10347 {
10348 return BCMOS_FALSE;
10349 }
10350 }
10351
10352 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_CFG_ID_CREATION_MODE)) != 0)
10353 {
10354 if (!bcmbal_tm_creation_mode_unpack(&this->creation_mode, buf))
10355 {
10356 return BCMOS_FALSE;
10357 }
10358 }
10359
10360 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_CFG_ID_REF_COUNT)) != 0)
10361 {
10362 if (!bcmbal_buf_read_u8(buf, &this->ref_count))
10363 {
10364 return BCMOS_FALSE;
10365 }
10366 }
10367
10368 return BCMOS_TRUE;
10369}
10370
10371/******************************************************************************/
10372bcmos_bool bcmbal_tm_queue_cfg_data_scan(bcmbal_buf *packed, uint32_t *extra_mem, bcmbal_presence_mask fields_present)
10373{
10374 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_CFG_ID_PRIORITY)) != 0)
10375 {
10376 if (!bcmbal_buf_skip(packed, 1))
10377 {
10378 return BCMOS_FALSE;
10379 }
10380 }
10381
10382 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_CFG_ID_WEIGHT)) != 0)
10383 {
10384 if (!bcmbal_buf_skip(packed, 1))
10385 {
10386 return BCMOS_FALSE;
10387 }
10388 }
10389
10390 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_CFG_ID_RATE)) != 0)
10391 {
10392 if (!bcmbal_tm_shaping_scan(packed, extra_mem))
10393 {
10394 return BCMOS_FALSE;
10395 }
10396 }
10397
10398 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_CFG_ID_BAC)) != 0)
10399 {
10400 if (!bcmbal_tm_bac_scan(packed, extra_mem))
10401 {
10402 return BCMOS_FALSE;
10403 }
10404 }
10405
10406 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_CFG_ID_CREATION_MODE)) != 0)
10407 {
10408 if (!bcmbal_buf_skip(packed, 1))
10409 {
10410 return BCMOS_FALSE;
10411 }
10412 }
10413
10414 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_CFG_ID_REF_COUNT)) != 0)
10415 {
10416 if (!bcmbal_buf_skip(packed, 1))
10417 {
10418 return BCMOS_FALSE;
10419 }
10420 }
10421
10422 return BCMOS_TRUE;
10423}
10424
10425/******************************************************************************/
10426bcmos_bool bcmbal_tm_queue_cfg_data_bounds_check(const bcmbal_tm_queue_cfg_data *this, bcmbal_presence_mask fields_present, bcmbal_tm_queue_cfg_id *failed_prop)
10427{
10428 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_CFG_ID_RATE)) != 0)
10429 {
10430 if (!bcmbal_tm_shaping_bounds_check(&this->rate))
10431 {
10432 *failed_prop = BCMBAL_TM_QUEUE_CFG_ID_RATE;
10433 return BCMOS_FALSE;
10434 }
10435 }
10436
10437 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_CFG_ID_BAC)) != 0)
10438 {
10439 if (!bcmbal_tm_bac_bounds_check(&this->bac))
10440 {
10441 *failed_prop = BCMBAL_TM_QUEUE_CFG_ID_BAC;
10442 return BCMOS_FALSE;
10443 }
10444 }
10445
10446 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_CFG_ID_CREATION_MODE)) != 0)
10447 {
10448 switch (this->creation_mode)
10449 {
10450 case BCMBAL_TM_CREATION_MODE_MANUAL:
10451 break;
10452 case BCMBAL_TM_CREATION_MODE_AUTO:
10453 break;
10454 default:
10455 *failed_prop = BCMBAL_TM_QUEUE_CFG_ID_CREATION_MODE;
10456 return BCMOS_FALSE;
10457 }
10458 }
10459
10460 return BCMOS_TRUE;
10461}
10462
10463/******************************************************************************/
10464void bcmbal_tm_queue_stat_data_set_default(bcmbal_tm_queue_stat_data *this, bcmbal_presence_mask fields_present)
10465{
10466 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_STAT_ID_PACKETS_OK)) != 0)
10467 {
10468 this->packets_ok = 0;
10469 }
10470
10471 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_STAT_ID_BYTES_OK)) != 0)
10472 {
10473 this->bytes_ok = 0;
10474 }
10475
10476 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_STAT_ID_PACKETS_DISCARDED)) != 0)
10477 {
10478 this->packets_discarded = 0;
10479 }
10480
10481 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_STAT_ID_BYTES_DISCARDED)) != 0)
10482 {
10483 this->bytes_discarded = 0;
10484 }
10485}
10486
10487/******************************************************************************/
10488bcmos_bool bcmbal_tm_queue_stat_data_pack(const bcmbal_tm_queue_stat_data *this, bcmbal_buf *buf, bcmbal_presence_mask fields_present)
10489{
10490 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_STAT_ID_PACKETS_OK)) != 0)
10491 {
10492 if (!bcmbal_buf_write_u64(buf, this->packets_ok))
10493 {
10494 return BCMOS_FALSE;
10495 }
10496 }
10497
10498 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_STAT_ID_BYTES_OK)) != 0)
10499 {
10500 if (!bcmbal_buf_write_u64(buf, this->bytes_ok))
10501 {
10502 return BCMOS_FALSE;
10503 }
10504 }
10505
10506 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_STAT_ID_PACKETS_DISCARDED)) != 0)
10507 {
10508 if (!bcmbal_buf_write_u64(buf, this->packets_discarded))
10509 {
10510 return BCMOS_FALSE;
10511 }
10512 }
10513
10514 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_STAT_ID_BYTES_DISCARDED)) != 0)
10515 {
10516 if (!bcmbal_buf_write_u64(buf, this->bytes_discarded))
10517 {
10518 return BCMOS_FALSE;
10519 }
10520 }
10521
10522 return BCMOS_TRUE;
10523}
10524
10525/******************************************************************************/
10526uint32_t bcmbal_tm_queue_stat_data_get_packed_length(const bcmbal_tm_queue_stat_data *this, bcmbal_presence_mask fields_present)
10527{
10528 uint32_t count = 0;
10529 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_STAT_ID_PACKETS_OK)) != 0)
10530 {
10531 count += 8;
10532 }
10533
10534 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_STAT_ID_BYTES_OK)) != 0)
10535 {
10536 count += 8;
10537 }
10538
10539 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_STAT_ID_PACKETS_DISCARDED)) != 0)
10540 {
10541 count += 8;
10542 }
10543
10544 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_STAT_ID_BYTES_DISCARDED)) != 0)
10545 {
10546 count += 8;
10547 }
10548
10549 return count;
10550}
10551
10552/******************************************************************************/
10553bcmos_bool bcmbal_tm_queue_stat_data_unpack(bcmbal_tm_queue_stat_data *this, bcmbal_buf *buf, void **extra_mem, bcmbal_presence_mask fields_present)
10554{
10555 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_STAT_ID_PACKETS_OK)) != 0)
10556 {
10557 if (!bcmbal_buf_read_u64(buf, &this->packets_ok))
10558 {
10559 return BCMOS_FALSE;
10560 }
10561 }
10562
10563 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_STAT_ID_BYTES_OK)) != 0)
10564 {
10565 if (!bcmbal_buf_read_u64(buf, &this->bytes_ok))
10566 {
10567 return BCMOS_FALSE;
10568 }
10569 }
10570
10571 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_STAT_ID_PACKETS_DISCARDED)) != 0)
10572 {
10573 if (!bcmbal_buf_read_u64(buf, &this->packets_discarded))
10574 {
10575 return BCMOS_FALSE;
10576 }
10577 }
10578
10579 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_STAT_ID_BYTES_DISCARDED)) != 0)
10580 {
10581 if (!bcmbal_buf_read_u64(buf, &this->bytes_discarded))
10582 {
10583 return BCMOS_FALSE;
10584 }
10585 }
10586
10587 return BCMOS_TRUE;
10588}
10589
10590/******************************************************************************/
10591bcmos_bool bcmbal_tm_queue_stat_data_scan(bcmbal_buf *packed, uint32_t *extra_mem, bcmbal_presence_mask fields_present)
10592{
10593 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_STAT_ID_PACKETS_OK)) != 0)
10594 {
10595 if (!bcmbal_buf_skip(packed, 8))
10596 {
10597 return BCMOS_FALSE;
10598 }
10599 }
10600
10601 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_STAT_ID_BYTES_OK)) != 0)
10602 {
10603 if (!bcmbal_buf_skip(packed, 8))
10604 {
10605 return BCMOS_FALSE;
10606 }
10607 }
10608
10609 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_STAT_ID_PACKETS_DISCARDED)) != 0)
10610 {
10611 if (!bcmbal_buf_skip(packed, 8))
10612 {
10613 return BCMOS_FALSE;
10614 }
10615 }
10616
10617 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_STAT_ID_BYTES_DISCARDED)) != 0)
10618 {
10619 if (!bcmbal_buf_skip(packed, 8))
10620 {
10621 return BCMOS_FALSE;
10622 }
10623 }
10624
10625 return BCMOS_TRUE;
10626}
10627
10628/******************************************************************************/
10629bcmos_bool bcmbal_tm_queue_stat_data_bounds_check(const bcmbal_tm_queue_stat_data *this, bcmbal_presence_mask fields_present, bcmbal_tm_queue_stat_id *failed_prop)
10630{
10631 return BCMOS_TRUE;
10632}
10633
10634/******************************************************************************/
10635void bcmbal_tm_queue_ind_data_set_default(bcmbal_tm_queue_ind_data *this, bcmbal_presence_mask fields_present)
10636{
10637 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_IND_ID_RET)) != 0)
10638 {
10639 this->ret = 0;
10640 }
10641}
10642
10643/******************************************************************************/
10644bcmos_bool bcmbal_tm_queue_ind_data_pack(const bcmbal_tm_queue_ind_data *this, bcmbal_buf *buf, bcmbal_presence_mask fields_present)
10645{
10646 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_IND_ID_RET)) != 0)
10647 {
10648 if (!bcmbal_buf_write_u32(buf, this->ret))
10649 {
10650 return BCMOS_FALSE;
10651 }
10652 }
10653
10654 return BCMOS_TRUE;
10655}
10656
10657/******************************************************************************/
10658uint32_t bcmbal_tm_queue_ind_data_get_packed_length(const bcmbal_tm_queue_ind_data *this, bcmbal_presence_mask fields_present)
10659{
10660 uint32_t count = 0;
10661 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_IND_ID_RET)) != 0)
10662 {
10663 count += 4;
10664 }
10665
10666 return count;
10667}
10668
10669/******************************************************************************/
10670bcmos_bool bcmbal_tm_queue_ind_data_unpack(bcmbal_tm_queue_ind_data *this, bcmbal_buf *buf, void **extra_mem, bcmbal_presence_mask fields_present)
10671{
10672 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_IND_ID_RET)) != 0)
10673 {
10674 if (!bcmbal_buf_read_u32(buf, &this->ret))
10675 {
10676 return BCMOS_FALSE;
10677 }
10678 }
10679
10680 return BCMOS_TRUE;
10681}
10682
10683/******************************************************************************/
10684bcmos_bool bcmbal_tm_queue_ind_data_scan(bcmbal_buf *packed, uint32_t *extra_mem, bcmbal_presence_mask fields_present)
10685{
10686 if ((fields_present & (1ULL << BCMBAL_TM_QUEUE_IND_ID_RET)) != 0)
10687 {
10688 if (!bcmbal_buf_skip(packed, 4))
10689 {
10690 return BCMOS_FALSE;
10691 }
10692 }
10693
10694 return BCMOS_TRUE;
10695}
10696
10697/******************************************************************************/
10698bcmos_bool bcmbal_tm_queue_ind_data_bounds_check(const bcmbal_tm_queue_ind_data *this, bcmbal_presence_mask fields_present, bcmbal_tm_queue_ind_id *failed_prop)
10699{
10700 return BCMOS_TRUE;
10701}
10702
10703/******************************************************************************/
10704void bcmbal_tm_sched_key_set_default(bcmbal_tm_sched_key *this, bcmbal_presence_mask fields_present)
10705{
10706 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_KEY_ID_DIR)) != 0)
10707 {
10708 this->dir = (bcmbal_tm_sched_dir) 0;
10709 }
10710
10711 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_KEY_ID_ID)) != 0)
10712 {
10713 this->id = (bcmbal_tm_sched_id) 0;
10714 }
10715}
10716
10717/******************************************************************************/
10718bcmos_bool bcmbal_tm_sched_key_pack(const bcmbal_tm_sched_key *this, bcmbal_buf *buf, bcmbal_presence_mask fields_present)
10719{
10720 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_KEY_ID_DIR)) != 0)
10721 {
10722 if (!bcmbal_tm_sched_dir_pack(this->dir, buf))
10723 {
10724 return BCMOS_FALSE;
10725 }
10726 }
10727
10728 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_KEY_ID_ID)) != 0)
10729 {
10730 if (!bcmbal_buf_write_u32(buf, (uint32_t) this->id))
10731 {
10732 return BCMOS_FALSE;
10733 }
10734 }
10735
10736 return BCMOS_TRUE;
10737}
10738
10739/******************************************************************************/
10740uint32_t bcmbal_tm_sched_key_get_packed_length(const bcmbal_tm_sched_key *this, bcmbal_presence_mask fields_present)
10741{
10742 uint32_t count = 0;
10743 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_KEY_ID_DIR)) != 0)
10744 {
10745 count += 1;
10746 }
10747
10748 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_KEY_ID_ID)) != 0)
10749 {
10750 count += 4;
10751 }
10752
10753 return count;
10754}
10755
10756/******************************************************************************/
10757bcmos_bool bcmbal_tm_sched_key_unpack(bcmbal_tm_sched_key *this, bcmbal_buf *buf, void **extra_mem, bcmbal_presence_mask fields_present)
10758{
10759 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_KEY_ID_DIR)) != 0)
10760 {
10761 if (!bcmbal_tm_sched_dir_unpack(&this->dir, buf))
10762 {
10763 return BCMOS_FALSE;
10764 }
10765 }
10766
10767 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_KEY_ID_ID)) != 0)
10768 {
10769 if (!bcmbal_buf_read_u32(buf, (uint32_t *) &this->id))
10770 {
10771 return BCMOS_FALSE;
10772 }
10773 }
10774
10775 return BCMOS_TRUE;
10776}
10777
10778/******************************************************************************/
10779bcmos_bool bcmbal_tm_sched_key_scan(bcmbal_buf *packed, uint32_t *extra_mem, bcmbal_presence_mask fields_present)
10780{
10781 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_KEY_ID_DIR)) != 0)
10782 {
10783 if (!bcmbal_buf_skip(packed, 1))
10784 {
10785 return BCMOS_FALSE;
10786 }
10787 }
10788
10789 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_KEY_ID_ID)) != 0)
10790 {
10791 if (!bcmbal_buf_skip(packed, 4))
10792 {
10793 return BCMOS_FALSE;
10794 }
10795 }
10796
10797 return BCMOS_TRUE;
10798}
10799
10800/******************************************************************************/
10801bcmos_bool bcmbal_tm_sched_key_bounds_check(const bcmbal_tm_sched_key *this, bcmbal_presence_mask fields_present, bcmbal_tm_sched_key_id *failed_prop)
10802{
10803 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_KEY_ID_DIR)) != 0)
10804 {
10805 switch (this->dir)
10806 {
10807 case BCMBAL_TM_SCHED_DIR_US:
10808 break;
10809 case BCMBAL_TM_SCHED_DIR_DS:
10810 break;
10811 default:
10812 *failed_prop = BCMBAL_TM_SCHED_KEY_ID_DIR;
10813 return BCMOS_FALSE;
10814 }
10815 }
10816
10817 return BCMOS_TRUE;
10818}
10819
10820/******************************************************************************/
10821void bcmbal_tm_sched_cfg_data_set_default(bcmbal_tm_sched_cfg_data *this, bcmbal_presence_mask fields_present)
10822{
10823 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_OWNER)) != 0)
10824 {
10825 this->owner.type = BCMBAL_TM_SCHED_OWNER_TYPE_UNDEFINED;
10826 }
10827
10828 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_SCHED_TYPE)) != 0)
10829 {
10830 this->sched_type = BCMBAL_TM_SCHED_TYPE_NONE;
10831 }
10832
10833 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_SCHED_PARENT)) != 0)
10834 {
10835 this->sched_parent.presence_mask = (bcmbal_tm_sched_parent_id) 0;
10836 this->sched_parent.sched_id = (bcmbal_tm_sched_id) 0;
10837 this->sched_parent.priority = (bcmbal_tm_priority) 0;
10838 this->sched_parent.weight = (bcmbal_tm_weight) 0;
10839 }
10840
10841 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_SCHED_CHILD_TYPE)) != 0)
10842 {
10843 this->sched_child_type = BCMBAL_TM_SCHED_CHILD_TYPE_QUEUE;
10844 }
10845
10846 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_RATE)) != 0)
10847 {
10848 this->rate.presence_mask = (bcmbal_tm_shaping_id) 0;
10849 this->rate.sbr = 0;
10850 this->rate.pbr = 0;
10851 this->rate.burst = 0;
10852 }
10853
10854 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_TCONT_SLA)) != 0)
10855 {
10856 this->tcont_sla.presence_mask = (bcmbal_tm_tcont_sla_id) 0;
10857 this->tcont_sla.extra_bw_elig = BCMBAL_EXTRA_BW_ELIGIBILITY_TYPE_NONE;
10858 this->tcont_sla.nrt_cbr = 0;
10859 this->tcont_sla.rt_cbr = 0;
10860 this->tcont_sla.rt_profile = 0;
10861 this->tcont_sla.nrt_profile = 0;
10862 }
10863
10864 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_CREATION_MODE)) != 0)
10865 {
10866 this->creation_mode = BCMBAL_TM_CREATION_MODE_MANUAL;
10867 }
10868
10869 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_QUEUES)) != 0)
10870 {
10871 this->queues.len = 0;
10872 this->queues.val = NULL;
10873 }
10874
10875 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_SUB_SCHEDS)) != 0)
10876 {
10877 this->sub_scheds.len = 0;
10878 this->sub_scheds.val = NULL;
10879 }
10880
10881 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_NUM_PRIORITIES)) != 0)
10882 {
10883 this->num_priorities = 0;
10884 }
10885}
10886
10887/******************************************************************************/
10888bcmos_bool bcmbal_tm_sched_cfg_data_pack(const bcmbal_tm_sched_cfg_data *this, bcmbal_buf *buf, bcmbal_presence_mask fields_present)
10889{
10890 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_OWNER)) != 0)
10891 {
10892 if (!bcmbal_tm_sched_owner_pack(&this->owner, buf))
10893 {
10894 return BCMOS_FALSE;
10895 }
10896 }
10897
10898 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_SCHED_TYPE)) != 0)
10899 {
10900 if (!bcmbal_tm_sched_type_pack(this->sched_type, buf))
10901 {
10902 return BCMOS_FALSE;
10903 }
10904 }
10905
10906 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_SCHED_PARENT)) != 0)
10907 {
10908 if (!bcmbal_tm_sched_parent_pack(&this->sched_parent, buf))
10909 {
10910 return BCMOS_FALSE;
10911 }
10912 }
10913
10914 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_SCHED_CHILD_TYPE)) != 0)
10915 {
10916 if (!bcmbal_tm_sched_child_type_pack(this->sched_child_type, buf))
10917 {
10918 return BCMOS_FALSE;
10919 }
10920 }
10921
10922 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_RATE)) != 0)
10923 {
10924 if (!bcmbal_tm_shaping_pack(&this->rate, buf))
10925 {
10926 return BCMOS_FALSE;
10927 }
10928 }
10929
10930 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_TCONT_SLA)) != 0)
10931 {
10932 if (!bcmbal_tm_tcont_sla_pack(&this->tcont_sla, buf))
10933 {
10934 return BCMOS_FALSE;
10935 }
10936 }
10937
10938 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_CREATION_MODE)) != 0)
10939 {
10940 if (!bcmbal_tm_creation_mode_pack(this->creation_mode, buf))
10941 {
10942 return BCMOS_FALSE;
10943 }
10944 }
10945
10946 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_QUEUES)) != 0)
10947 {
10948 if (!bcmbal_tm_queue_id_list_u8_pack(&this->queues, buf))
10949 {
10950 return BCMOS_FALSE;
10951 }
10952 }
10953
10954 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_SUB_SCHEDS)) != 0)
10955 {
10956 if (!bcmbal_tm_sched_id_list_u8_pack(&this->sub_scheds, buf))
10957 {
10958 return BCMOS_FALSE;
10959 }
10960 }
10961
10962 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_NUM_PRIORITIES)) != 0)
10963 {
10964 if (!bcmbal_buf_write_u8(buf, this->num_priorities))
10965 {
10966 return BCMOS_FALSE;
10967 }
10968 }
10969
10970 return BCMOS_TRUE;
10971}
10972
10973/******************************************************************************/
10974uint32_t bcmbal_tm_sched_cfg_data_get_packed_length(const bcmbal_tm_sched_cfg_data *this, bcmbal_presence_mask fields_present)
10975{
10976 uint32_t count = 0;
10977 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_OWNER)) != 0)
10978 {
10979 count += bcmbal_tm_sched_owner_get_packed_length(&this->owner);
10980 }
10981
10982 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_SCHED_TYPE)) != 0)
10983 {
10984 count += 1;
10985 }
10986
10987 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_SCHED_PARENT)) != 0)
10988 {
10989 count += bcmbal_tm_sched_parent_get_packed_length(&this->sched_parent);
10990 }
10991
10992 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_SCHED_CHILD_TYPE)) != 0)
10993 {
10994 count += 1;
10995 }
10996
10997 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_RATE)) != 0)
10998 {
10999 count += bcmbal_tm_shaping_get_packed_length(&this->rate);
11000 }
11001
11002 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_TCONT_SLA)) != 0)
11003 {
11004 count += bcmbal_tm_tcont_sla_get_packed_length(&this->tcont_sla);
11005 }
11006
11007 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_CREATION_MODE)) != 0)
11008 {
11009 count += 1;
11010 }
11011
11012 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_QUEUES)) != 0)
11013 {
11014 count += bcmbal_tm_queue_id_list_u8_get_packed_length(&this->queues);
11015 }
11016
11017 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_SUB_SCHEDS)) != 0)
11018 {
11019 count += bcmbal_tm_sched_id_list_u8_get_packed_length(&this->sub_scheds);
11020 }
11021
11022 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_NUM_PRIORITIES)) != 0)
11023 {
11024 count += 1;
11025 }
11026
11027 return count;
11028}
11029
11030/******************************************************************************/
11031bcmos_bool bcmbal_tm_sched_cfg_data_unpack(bcmbal_tm_sched_cfg_data *this, bcmbal_buf *buf, void **extra_mem, bcmbal_presence_mask fields_present)
11032{
11033 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_OWNER)) != 0)
11034 {
11035 if (!bcmbal_tm_sched_owner_unpack(&this->owner, buf, extra_mem))
11036 {
11037 return BCMOS_FALSE;
11038 }
11039 }
11040
11041 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_SCHED_TYPE)) != 0)
11042 {
11043 if (!bcmbal_tm_sched_type_unpack(&this->sched_type, buf))
11044 {
11045 return BCMOS_FALSE;
11046 }
11047 }
11048
11049 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_SCHED_PARENT)) != 0)
11050 {
11051 if (!bcmbal_tm_sched_parent_unpack(&this->sched_parent, buf, extra_mem))
11052 {
11053 return BCMOS_FALSE;
11054 }
11055 }
11056
11057 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_SCHED_CHILD_TYPE)) != 0)
11058 {
11059 if (!bcmbal_tm_sched_child_type_unpack(&this->sched_child_type, buf))
11060 {
11061 return BCMOS_FALSE;
11062 }
11063 }
11064
11065 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_RATE)) != 0)
11066 {
11067 if (!bcmbal_tm_shaping_unpack(&this->rate, buf, extra_mem))
11068 {
11069 return BCMOS_FALSE;
11070 }
11071 }
11072
11073 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_TCONT_SLA)) != 0)
11074 {
11075 if (!bcmbal_tm_tcont_sla_unpack(&this->tcont_sla, buf, extra_mem))
11076 {
11077 return BCMOS_FALSE;
11078 }
11079 }
11080
11081 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_CREATION_MODE)) != 0)
11082 {
11083 if (!bcmbal_tm_creation_mode_unpack(&this->creation_mode, buf))
11084 {
11085 return BCMOS_FALSE;
11086 }
11087 }
11088
11089 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_QUEUES)) != 0)
11090 {
11091 if (!bcmbal_tm_queue_id_list_u8_unpack(&this->queues, buf, extra_mem))
11092 {
11093 return BCMOS_FALSE;
11094 }
11095 }
11096
11097 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_SUB_SCHEDS)) != 0)
11098 {
11099 if (!bcmbal_tm_sched_id_list_u8_unpack(&this->sub_scheds, buf, extra_mem))
11100 {
11101 return BCMOS_FALSE;
11102 }
11103 }
11104
11105 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_NUM_PRIORITIES)) != 0)
11106 {
11107 if (!bcmbal_buf_read_u8(buf, &this->num_priorities))
11108 {
11109 return BCMOS_FALSE;
11110 }
11111 }
11112
11113 return BCMOS_TRUE;
11114}
11115
11116/******************************************************************************/
11117bcmos_bool bcmbal_tm_sched_cfg_data_scan(bcmbal_buf *packed, uint32_t *extra_mem, bcmbal_presence_mask fields_present)
11118{
11119 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_OWNER)) != 0)
11120 {
11121 if (!bcmbal_tm_sched_owner_scan(packed, extra_mem))
11122 {
11123 return BCMOS_FALSE;
11124 }
11125 }
11126
11127 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_SCHED_TYPE)) != 0)
11128 {
11129 if (!bcmbal_buf_skip(packed, 1))
11130 {
11131 return BCMOS_FALSE;
11132 }
11133 }
11134
11135 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_SCHED_PARENT)) != 0)
11136 {
11137 if (!bcmbal_tm_sched_parent_scan(packed, extra_mem))
11138 {
11139 return BCMOS_FALSE;
11140 }
11141 }
11142
11143 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_SCHED_CHILD_TYPE)) != 0)
11144 {
11145 if (!bcmbal_buf_skip(packed, 1))
11146 {
11147 return BCMOS_FALSE;
11148 }
11149 }
11150
11151 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_RATE)) != 0)
11152 {
11153 if (!bcmbal_tm_shaping_scan(packed, extra_mem))
11154 {
11155 return BCMOS_FALSE;
11156 }
11157 }
11158
11159 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_TCONT_SLA)) != 0)
11160 {
11161 if (!bcmbal_tm_tcont_sla_scan(packed, extra_mem))
11162 {
11163 return BCMOS_FALSE;
11164 }
11165 }
11166
11167 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_CREATION_MODE)) != 0)
11168 {
11169 if (!bcmbal_buf_skip(packed, 1))
11170 {
11171 return BCMOS_FALSE;
11172 }
11173 }
11174
11175 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_QUEUES)) != 0)
11176 {
11177 if (!bcmbal_tm_queue_id_list_u8_scan(packed, extra_mem))
11178 {
11179 return BCMOS_FALSE;
11180 }
11181 }
11182
11183 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_SUB_SCHEDS)) != 0)
11184 {
11185 if (!bcmbal_tm_sched_id_list_u8_scan(packed, extra_mem))
11186 {
11187 return BCMOS_FALSE;
11188 }
11189 }
11190
11191 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_NUM_PRIORITIES)) != 0)
11192 {
11193 if (!bcmbal_buf_skip(packed, 1))
11194 {
11195 return BCMOS_FALSE;
11196 }
11197 }
11198
11199 return BCMOS_TRUE;
11200}
11201
11202/******************************************************************************/
11203bcmos_bool bcmbal_tm_sched_cfg_data_bounds_check(const bcmbal_tm_sched_cfg_data *this, bcmbal_presence_mask fields_present, bcmbal_tm_sched_cfg_id *failed_prop)
11204{
11205 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_OWNER)) != 0)
11206 {
11207 if (!bcmbal_tm_sched_owner_bounds_check(&this->owner))
11208 {
11209 *failed_prop = BCMBAL_TM_SCHED_CFG_ID_OWNER;
11210 return BCMOS_FALSE;
11211 }
11212 }
11213
11214 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_SCHED_TYPE)) != 0)
11215 {
11216 switch (this->sched_type)
11217 {
11218 case BCMBAL_TM_SCHED_TYPE_NONE:
11219 break;
11220 case BCMBAL_TM_SCHED_TYPE_WFQ:
11221 break;
11222 case BCMBAL_TM_SCHED_TYPE_SP:
11223 break;
11224 case BCMBAL_TM_SCHED_TYPE_SP_WFQ:
11225 break;
11226 default:
11227 *failed_prop = BCMBAL_TM_SCHED_CFG_ID_SCHED_TYPE;
11228 return BCMOS_FALSE;
11229 }
11230 }
11231
11232 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_SCHED_PARENT)) != 0)
11233 {
11234 if (!bcmbal_tm_sched_parent_bounds_check(&this->sched_parent))
11235 {
11236 *failed_prop = BCMBAL_TM_SCHED_CFG_ID_SCHED_PARENT;
11237 return BCMOS_FALSE;
11238 }
11239 }
11240
11241 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_SCHED_CHILD_TYPE)) != 0)
11242 {
11243 switch (this->sched_child_type)
11244 {
11245 case BCMBAL_TM_SCHED_CHILD_TYPE_QUEUE:
11246 break;
11247 case BCMBAL_TM_SCHED_CHILD_TYPE_SCHED:
11248 break;
11249 default:
11250 *failed_prop = BCMBAL_TM_SCHED_CFG_ID_SCHED_CHILD_TYPE;
11251 return BCMOS_FALSE;
11252 }
11253 }
11254
11255 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_RATE)) != 0)
11256 {
11257 if (!bcmbal_tm_shaping_bounds_check(&this->rate))
11258 {
11259 *failed_prop = BCMBAL_TM_SCHED_CFG_ID_RATE;
11260 return BCMOS_FALSE;
11261 }
11262 }
11263
11264 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_TCONT_SLA)) != 0)
11265 {
11266 if (!bcmbal_tm_tcont_sla_bounds_check(&this->tcont_sla))
11267 {
11268 *failed_prop = BCMBAL_TM_SCHED_CFG_ID_TCONT_SLA;
11269 return BCMOS_FALSE;
11270 }
11271 }
11272
11273 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_CREATION_MODE)) != 0)
11274 {
11275 switch (this->creation_mode)
11276 {
11277 case BCMBAL_TM_CREATION_MODE_MANUAL:
11278 break;
11279 case BCMBAL_TM_CREATION_MODE_AUTO:
11280 break;
11281 default:
11282 *failed_prop = BCMBAL_TM_SCHED_CFG_ID_CREATION_MODE;
11283 return BCMOS_FALSE;
11284 }
11285 }
11286
11287 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_QUEUES)) != 0)
11288 {
11289 if (!bcmbal_tm_queue_id_list_u8_bounds_check(&this->queues))
11290 {
11291 *failed_prop = BCMBAL_TM_SCHED_CFG_ID_QUEUES;
11292 return BCMOS_FALSE;
11293 }
11294 }
11295
11296 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_CFG_ID_SUB_SCHEDS)) != 0)
11297 {
11298 if (!bcmbal_tm_sched_id_list_u8_bounds_check(&this->sub_scheds))
11299 {
11300 *failed_prop = BCMBAL_TM_SCHED_CFG_ID_SUB_SCHEDS;
11301 return BCMOS_FALSE;
11302 }
11303 }
11304
11305 return BCMOS_TRUE;
11306}
11307
11308/******************************************************************************/
11309void bcmbal_tm_sched_ind_data_set_default(bcmbal_tm_sched_ind_data *this, bcmbal_presence_mask fields_present)
11310{
11311 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_IND_ID_RET)) != 0)
11312 {
11313 this->ret = 0;
11314 }
11315}
11316
11317/******************************************************************************/
11318bcmos_bool bcmbal_tm_sched_ind_data_pack(const bcmbal_tm_sched_ind_data *this, bcmbal_buf *buf, bcmbal_presence_mask fields_present)
11319{
11320 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_IND_ID_RET)) != 0)
11321 {
11322 if (!bcmbal_buf_write_u32(buf, this->ret))
11323 {
11324 return BCMOS_FALSE;
11325 }
11326 }
11327
11328 return BCMOS_TRUE;
11329}
11330
11331/******************************************************************************/
11332uint32_t bcmbal_tm_sched_ind_data_get_packed_length(const bcmbal_tm_sched_ind_data *this, bcmbal_presence_mask fields_present)
11333{
11334 uint32_t count = 0;
11335 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_IND_ID_RET)) != 0)
11336 {
11337 count += 4;
11338 }
11339
11340 return count;
11341}
11342
11343/******************************************************************************/
11344bcmos_bool bcmbal_tm_sched_ind_data_unpack(bcmbal_tm_sched_ind_data *this, bcmbal_buf *buf, void **extra_mem, bcmbal_presence_mask fields_present)
11345{
11346 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_IND_ID_RET)) != 0)
11347 {
11348 if (!bcmbal_buf_read_u32(buf, &this->ret))
11349 {
11350 return BCMOS_FALSE;
11351 }
11352 }
11353
11354 return BCMOS_TRUE;
11355}
11356
11357/******************************************************************************/
11358bcmos_bool bcmbal_tm_sched_ind_data_scan(bcmbal_buf *packed, uint32_t *extra_mem, bcmbal_presence_mask fields_present)
11359{
11360 if ((fields_present & (1ULL << BCMBAL_TM_SCHED_IND_ID_RET)) != 0)
11361 {
11362 if (!bcmbal_buf_skip(packed, 4))
11363 {
11364 return BCMOS_FALSE;
11365 }
11366 }
11367
11368 return BCMOS_TRUE;
11369}
11370
11371/******************************************************************************/
11372bcmos_bool bcmbal_tm_sched_ind_data_bounds_check(const bcmbal_tm_sched_ind_data *this, bcmbal_presence_mask fields_present, bcmbal_tm_sched_ind_id *failed_prop)
11373{
11374 return BCMOS_TRUE;
11375}
11376
11377bcmos_bool bcmbal_obj_has_tag(bcmbal_obj_id obj, bcmbal_obj_tag tag)
11378{
11379 switch (obj)
11380 {
11381 default:
11382 return BCMOS_FALSE;
11383 }
11384}