openbcm

Git mirror of https://github.com/Broadcom-Network-Switching-Software/OpenBCM
git clone git://git.finwo.net/mirror/broadcom/openbcm
Log | Files | Refs | README

alpm_th3_acc.h (87796B)


      1 /*
      2  * 
      3  * This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file.
      4  * 
      5  * Copyright 2007-2019 Broadcom Inc. All rights reserved.
      6  *
      7  * File:        alpm_th3_acc.h
      8  * Purpose:     Function declarations for ALPM Internal functions.
      9  */
     10 
     11 #ifndef _BCM_INT_ALPM_TH3_ACC_H_
     12 #define _BCM_INT_ALPM_TH3_ACC_H_
     13 
     14 #include <soc/defs.h>
     15 
     16 typedef struct {
     17 #ifdef  LE_HOST
     18     uint32  DEST_TYPE:1,
     19             DESTINATION:15,
     20             PRI:4,
     21             RPE:1,
     22             DST_DISCARD:1,
     23             CLASS_ID:6,
     24             FLEX_CTR_POOL_NUMBER:4;
     25 #else
     26     uint32  FLEX_CTR_POOL_NUMBER:4,
     27             CLASS_ID:6,
     28             DST_DISCARD:1,
     29             RPE:1,
     30             PRI:4,
     31             DESTINATION:15,
     32             DEST_TYPE:1;
     33 #endif  /* LE_HOST */
     34 
     35 #ifdef  LE_HOST
     36     uint32  FLEX_CTR_OFFSET_MODE:2,
     37             FLEX_CTR_BASE_COUNTER_IDX:12,
     38             __PAD0:18;
     39 #else
     40     uint32  __PAD0:18,
     41             FLEX_CTR_BASE_COUNTER_IDX:12,
     42             FLEX_CTR_OFFSET_MODE:2;
     43 #endif  /* LE_HOST */
     44 } th3_fmt_ASSOC_DATA_FULL_t;
     45 
     46 typedef struct {
     47 #ifdef  LE_HOST
     48     uint32  DEST_TYPE:1,
     49             DESTINATION:15,
     50             __PAD0:16;
     51 #else
     52     uint32  __PAD0:16,
     53             DESTINATION:15,
     54             DEST_TYPE:1;
     55 #endif  /* LE_HOST */
     56 
     57 } th3_fmt_ASSOC_DATA_REDUCED_t;
     58 
     59 typedef struct {
     60 #ifdef  LE_HOST
     61     uint32  SUB_DB_PRIORITY:2,
     62             __PAD0:30;
     63 #else
     64     uint32  __PAD0:30,
     65             SUB_DB_PRIORITY:2;
     66 #endif  /* LE_HOST */
     67 } th3_fmt_FIXED_DATA_t;
     68 
     69 typedef struct {
     70 #ifdef  LE_HOST
     71     uint32  KEY_MODE:2,
     72             KEY_TYPE:1,
     73             IP_ADDR_0_28:29;
     74 #else
     75     uint32  IP_ADDR_0_28:29,
     76             KEY_TYPE:1,
     77             KEY_MODE:2;
     78 #endif  /* LE_HOST */
     79 
     80 #ifdef  LE_HOST
     81     uint32  IP_ADDR_29_31:3,
     82             VRF_ID:12,
     83             RESERVED:1,
     84             __PAD0:16;
     85 #else
     86     uint32  __PAD0:16,
     87             RESERVED:1,
     88             VRF_ID:12,
     89             IP_ADDR_29_31:3;
     90 #endif  /* LE_HOST */
     91 } th3_fmt_L3_DEFIP_TCAM_KEY_t;
     92 
     93 typedef struct {
     94 #ifdef  LE_HOST
     95     uint32  DEFAULT_MISS:1,
     96             DIRECT_ROUTE:1,
     97             BKT_PTR:10,
     98             KSHIFT:7,
     99             ROFS:3,
    100             FMT0:4,
    101             FMT1:4,
    102             FMT2_0_1:2;
    103 #else
    104     uint32  FMT2_0_1:2,
    105             FMT1:4,
    106             FMT0:4,
    107             ROFS:3,
    108             KSHIFT:7,
    109             BKT_PTR:10,
    110             DIRECT_ROUTE:1,
    111             DEFAULT_MISS:1;
    112 #endif  /* LE_HOST */
    113 
    114 #ifdef  LE_HOST
    115     uint32  FMT2_2_3:2,
    116             FMT3:4,
    117             FMT4:4,
    118             __PAD0:22;
    119 #else
    120     uint32  __PAD0:22,
    121             FMT4:4,
    122             FMT3:4,
    123             FMT2_2_3:2;
    124 #endif  /* LE_HOST */
    125 } th3_fmt_ALPM1_DATA_t;
    126 
    127 typedef struct {
    128 #ifdef  LE_HOST
    129     uint32  DEFAULT_MISS:1,
    130             BKT_PTR:13,
    131             KSHIFT:7,
    132             ROFS:3,
    133             FMT0:4,
    134             FMT1:4;
    135 #else
    136     uint32  FMT1:4,
    137             FMT0:4,
    138             ROFS:3,
    139             KSHIFT:7,
    140             BKT_PTR:13,
    141             DEFAULT_MISS:1;
    142 #endif  /* LE_HOST */
    143 
    144 #ifdef  LE_HOST
    145     uint32  FMT2:4,
    146             FMT3:4,
    147             FMT4:4,
    148             FMT5:4,
    149             FMT6:4,
    150             FMT7:4,
    151             __PAD0:8;
    152 #else
    153     uint32  __PAD0:8,
    154             FMT7:4,
    155             FMT6:4,
    156             FMT5:4,
    157             FMT4:4,
    158             FMT3:4,
    159             FMT2:4;
    160 #endif  /* LE_HOST */
    161 } th3_fmt_ALPM2_DATA_t;
    162 
    163 #if 0
    164 /* L3_DEFIP_ALPM_PIVOT_FMT type */
    165 typedef struct {
    166 #ifdef  LE_HOST
    167     uint32  PREFIX:8,
    168             ASSOC_DATA:16,
    169             ALPM2_DATA_0_7:8;
    170 #else
    171     uint32  ALPM2_DATA_0_7:8,
    172             ASSOC_DATA:16,
    173             PREFIX:8;
    174 #endif  /* LE_HOST */
    175 
    176     uint32 ALPM2_DATA_8_39;
    177 
    178 #ifdef  LE_HOST
    179     uint32  ALPM2_DATA_40_55:16,
    180             __PAD0:16;
    181 #else
    182     uint32  __PAD0:16,
    183             ALPM2_DATA_40_55:16;
    184 #endif  /* LE_HOST */
    185 } th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT1_t;
    186 
    187 typedef struct {
    188 #ifdef  LE_HOST
    189     uint32  PREFIX:24,
    190             ASSOC_DATA_0_7:8;
    191 #else
    192     uint32  ASSOC_DATA_0_7:8,
    193             PREFIX:24;
    194 #endif  /* LE_HOST */
    195 
    196 #ifdef  LE_HOST
    197     uint32  ASSOC_DATA_8_15:8,
    198             ALPM2_DATA_0_23:24;
    199 #else
    200     uint32  ALPM2_DATA_0_23:24,
    201             ASSOC_DATA_8_15:8;
    202 #endif  /* LE_HOST */
    203 
    204     uint32  ALPM2_DATA_24_55;
    205 } th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT2_t;
    206 
    207 typedef struct {
    208     uint32  PREFIX_0_31;
    209 
    210 #ifdef  LE_HOST
    211     uint32  PREFIX_32_47:16,
    212             ASSOC_DATA:16;
    213 #else
    214     uint32  ASSOC_DATA:16,
    215             PREFIX_32_47:16;
    216 #endif  /* LE_HOST */
    217 
    218     uint32  ALPM2_DATA_0_31;
    219 
    220 #ifdef  LE_HOST
    221     uint32  ALPM2_DATA_32_55:24,
    222             __PAD0:8;
    223 #else
    224     uint32  __PAD0:8,
    225             ALPM2_DATA_32_55:24;
    226 #endif  /* LE_HOST */
    227 
    228 } th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT3_t;
    229 
    230 typedef struct {
    231     uint32  PREFIX_0_31;
    232     uint32  PREFIX_32_63;
    233 
    234 #ifdef  LE_HOST
    235     uint32  PREFIX_64_87:24,
    236             ASSOC_DATA_0_7:8;
    237 #else
    238     uint32  ASSOC_DATA_0_7:8,
    239             PREFIX_64_87:24;
    240 #endif  /* LE_HOST */
    241 
    242 #ifdef  LE_HOST
    243     uint32  ASSOC_DATA_8_15:8,
    244             ALPM2_DATA_0_23:24;
    245 #else
    246     uint32  ALPM2_DATA_0_23:24,
    247             ASSOC_DATA_8_15:8;
    248 #endif  /* LE_HOST */
    249 
    250     uint32  ALPM2_DATA_24_55;
    251 
    252 } th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT4_t;
    253 
    254 typedef struct {
    255     uint32  PREFIX_0_31;
    256     uint32  PREFIX_32_63;
    257     uint32  PREFIX_64_95;
    258     uint32  PREFIX_96_127;
    259 
    260 #ifdef  LE_HOST
    261     uint32  PREFIX_128:1,
    262             RESERVED:7,
    263             ASSOC_DATA:16,
    264             ALPM2_DATA_0_7:8;
    265 #else
    266     uint32  ALPM2_DATA_0_7:8,
    267             ASSOC_DATA:16,
    268             RESERVED:7,
    269             PREFIX_128:1;
    270 #endif  /* LE_HOST */
    271 
    272     uint32  ALPM2_DATA_8_39;
    273 
    274 #ifdef  LE_HOST
    275     uint32  ALPM2_DATA_40_55:16,
    276             __PAD0:16;
    277 #else
    278     uint32  __PAD0:16,
    279             ALPM2_DATA_40_55:16;
    280 #endif  /* LE_HOST */
    281 
    282 } th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT5_t;
    283 
    284 typedef struct {
    285 #ifdef  LE_HOST
    286     uint32  PREFIX:18,
    287             ASSOC_DATA_0_13:14;
    288 #else
    289     uint32  ASSOC_DATA_0_13:14,
    290             PREFIX:18;
    291 #endif  /* LE_HOST */
    292 
    293     uint32  ASSOC_DATA_14_45;
    294     uint32  ALPM2_DATA_0_31;
    295 
    296 #ifdef  LE_HOST
    297     uint32  ALPM2_DATA_32_55:24,
    298             __PAD0:8;
    299 #else
    300     uint32  __PAD0:8,
    301             ALPM2_DATA_32_55:24;
    302 #endif  /* LE_HOST */
    303 
    304 } th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT6_t;
    305 
    306 typedef struct {
    307     uint32  PREFIX_0_31;
    308 #ifdef  LE_HOST
    309     uint32  PREFIX_32_57:26,
    310             ASSOC_DATA_0_5:6;
    311 #else
    312     uint32  ASSOC_DATA_0_5:6,
    313             PREFIX_32_57:26;
    314 #endif  /* LE_HOST */
    315 
    316     uint32  ASSOC_DATA_6_37;
    317 
    318 #ifdef  LE_HOST
    319     uint32  ASSOC_DATA_38_45:8,
    320             ALPM2_DATA_0_23:24;
    321 #else
    322     uint32  ALPM2_DATA_0_23:24,
    323             ASSOC_DATA_38_45:8;
    324 #endif  /* LE_HOST */
    325     uint32  ALPM2_DATA_24_55;
    326 
    327 } th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT7_t;
    328 
    329 typedef struct {
    330     uint32  PREFIX_0_31;
    331     uint32  PREFIX_32_63;
    332     uint32  PREFIX_64_95;
    333     uint32  PREFIX_96_127;
    334 
    335 #ifdef  LE_HOST
    336     uint32  PREFIX_128:1,
    337             RESERVED:1,
    338             ASSOC_DATA_0_29:30;
    339 #else
    340     uint32  ASSOC_DATA_0_29:30,
    341             RESERVED:1,
    342             PREFIX_128:1;
    343 #endif  /* LE_HOST */
    344 
    345 #ifdef  LE_HOST
    346     uint32  ASSOC_DATA_30_45:16,
    347             ALPM2_DATA_0_15:16;
    348 #else
    349     uint32  ALPM2_DATA_0_15:16,
    350             ASSOC_DATA_30_45:16;
    351 #endif  /* LE_HOST */
    352 
    353     uint32  ALPM2_DATA_16_47;
    354 
    355 #ifdef  LE_HOST
    356     uint32  ALPM2_DATA_48_55:8,
    357             __PAD0:24;
    358 #else
    359     uint32  __PAD0:24,
    360             ALPM2_DATA_48_55:8;
    361 #endif  /* LE_HOST */
    362 
    363 } th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT8_t;
    364 
    365 /* L3_DEFIP_ALPM_ROUTE_FMT type */
    366 typedef struct {
    367 #ifdef  LE_HOST
    368     uint32  PREFIX:16,
    369             ASSOC_DATA:16;
    370 #else
    371     uint32  ASSOC_DATA:16,
    372             PREFIX:16;
    373 #endif  /* LE_HOST */
    374 } th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT1_t;
    375 
    376 typedef struct {
    377 #ifdef  LE_HOST
    378     uint32  PREFIX:24,
    379             ASSOC_DATA_0_7:8;
    380 #else
    381     uint32  ASSOC_DATA_0_7:8,
    382             PREFIX:24;
    383 #endif  /* LE_HOST */
    384 
    385 #ifdef  LE_HOST
    386     uint32  ASSOC_DATA_8_15:8,
    387             __PAD0:24;
    388 #else
    389     uint32  __PAD0:24,
    390             ASSOC_DATA_8_15:8;
    391 #endif  /* LE_HOST */
    392 } th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT2_t;
    393 
    394 typedef struct {
    395     uint32  PREFIX;
    396 
    397 #ifdef  LE_HOST
    398     uint32  ASSOC_DATA:16,
    399             __PAD0:16;
    400 #else
    401     uint32  __PAD0:16,
    402             ASSOC_DATA:16;
    403 #endif  /* LE_HOST */
    404 } th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT3_t;
    405 
    406 typedef struct {
    407     uint32  PREFIX_0_31;
    408 
    409 #ifdef  LE_HOST
    410     uint32  PREFIX_32_39:8,
    411             ASSOC_DATA:16,
    412             __PAD0:8;
    413 #else
    414     uint32  __PAD0:8,
    415             ASSOC_DATA:16,
    416             PREFIX_32_39:8;
    417 #endif  /* LE_HOST */
    418 } th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT4_t;
    419 
    420 typedef struct {
    421     uint32  PREFIX_0_31;
    422 
    423 #ifdef  LE_HOST
    424     uint32  PREFIX_32_47:16,
    425             ASSOC_DATA:16;
    426 #else
    427     uint32  ASSOC_DATA:16,
    428             PREFIX_32_47:16;
    429 #endif  /* LE_HOST */
    430 } th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT5_t;
    431 
    432 typedef struct {
    433     uint32  PREFIX_0_31;
    434     uint32  PREFIX_32_63;
    435 
    436 #ifdef  LE_HOST
    437     uint32  ASSOC_DATA:16,
    438             __PAD0:16;
    439 #else
    440     uint32  __PAD0:16,
    441             ASSOC_DATA:16;
    442 #endif  /* LE_HOST */
    443 } th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT6_t;
    444 
    445 typedef struct {
    446     uint32  PREFIX_0_31;
    447     uint32  PREFIX_32_63;
    448 
    449 #ifdef  LE_HOST
    450     uint32  PREFIX_64_79:16,
    451             ASSOC_DATA:16;
    452 #else
    453     uint32  ASSOC_DATA:16,
    454             PREFIX_64_79:16;
    455 #endif  /* LE_HOST */
    456 } th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT7_t;
    457 
    458 typedef struct {
    459     uint32  PREFIX_0_31;
    460     uint32  PREFIX_32_63;
    461     uint32  PREFIX_64_95;
    462 
    463 #ifdef  LE_HOST
    464     uint32  PREFIX_96_103:8,
    465             ASSOC_DATA:16,
    466             __PAD0:8;
    467 #else
    468     uint32  __PAD0:8,
    469             ASSOC_DATA:16,
    470             PREFIX_96_103:8;
    471 #endif  /* LE_HOST */
    472 } th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT8_t;
    473 
    474 typedef struct {
    475     uint32  PREFIX_0_31;
    476     uint32  PREFIX_32_63;
    477     uint32  PREFIX_64_95;
    478     uint32  PREFIX_96_127;
    479 
    480 #ifdef  LE_HOST
    481     uint32  PREFIX_128:1,
    482             RESERVED:7,
    483             ASSOC_DATA:16,
    484             __PAD0:8;
    485 #else
    486     uint32  __PAD0:8,
    487             ASSOC_DATA:16,
    488             RESERVED:7,
    489             PREFIX_128:1;
    490 #endif  /* LE_HOST */
    491 } th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT9_t;
    492 
    493 typedef struct {
    494     uint32  PREFIX_0_31;
    495 
    496 #ifdef  LE_HOST
    497     uint32  PREFIX_32_33:2,
    498             ASSOC_DATA_0_29:30;
    499 #else
    500     uint32  ASSOC_DATA_0_29:30,
    501             PREFIX_32_33:2;
    502 #endif  /* LE_HOST */
    503 
    504 #ifdef  LE_HOST
    505     uint32  ASSOC_DATA_30_45:16,
    506             __PAD0:16;
    507 #else
    508     uint32  __PAD0:16,
    509             ASSOC_DATA_30_45:16;
    510 #endif  /* LE_HOST */
    511 
    512 } th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT10_t;
    513 
    514 typedef struct {
    515     uint32  PREFIX_0_31;
    516     uint32  PREFIX_32_63;
    517 
    518 #ifdef  LE_HOST
    519     uint32  PREFIX_64_73:10,
    520             ASSOC_DATA_0_21:22;
    521 #else
    522     uint32  ASSOC_DATA_0_21:22,
    523             PREFIX_64_73:10;
    524 #endif  /* LE_HOST */
    525 
    526 #ifdef  LE_HOST
    527     uint32  ASSOC_DATA_22_45:24,
    528             __PAD0:8;
    529 #else
    530     uint32  __PAD0:8,
    531             ASSOC_DATA_22_45:24;
    532 #endif  /* LE_HOST */
    533 
    534 } th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT11_t;
    535 
    536 typedef struct {
    537     uint32  PREFIX_0_31;
    538     uint32  PREFIX_32_63;
    539     uint32  PREFIX_64_95;
    540     uint32  PREFIX_96_127;
    541 
    542 #ifdef  LE_HOST
    543     uint32  PREFIX_128:1,
    544             RESERVED:1,
    545             ASSOC_DATA_0_29:30;
    546 #else
    547     uint32  ASSOC_DATA_0_29:30,
    548             RESERVED:1,
    549             PREFIX_128:1;
    550 #endif  /* LE_HOST */
    551 
    552 #ifdef  LE_HOST
    553     uint32  ASSOC_DATA_30_45:16,
    554             __PAD0:16;
    555 #else
    556     uint32  __PAD0:16,
    557             ASSOC_DATA_30_45:16;
    558 #endif  /* LE_HOST */
    559 
    560 } th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT12_t;
    561 
    562 
    563 /* PIVOT FULL */
    564 typedef struct {
    565     uint32  ENTRY_0_0_31;
    566     uint32  ENTRY_0_32_63;
    567 
    568 #ifdef  LE_HOST
    569     uint32  ENTRY_0_64_79:16,
    570             ENTRY_1_0_15:16;
    571 #else
    572     uint32  ENTRY_1_0_15:16,
    573             ENTRY_0_64_79:16;
    574 #endif  /* LE_HOST */
    575 
    576     uint32  ENTRY_1_16_47;
    577     uint32  ENTRY_1_48_79;
    578     uint32  ENTRY_2_0_31;
    579     uint32  ENTRY_2_32_63;
    580 
    581 #ifdef  LE_HOST
    582     uint32  ENTRY_2_64_79:16,
    583             ENTRY_3_0_15:16;
    584 #else
    585     uint32  ENTRY_3_0_15:16,
    586             ENTRY_2_64_79:16;
    587 #endif  /* LE_HOST */
    588 
    589     uint32  ENTRY_3_16_47;
    590     uint32  ENTRY_3_48_79;
    591     uint32  ENTRY_4_0_31;
    592     uint32  ENTRY_4_32_63;
    593 
    594 #ifdef  LE_HOST
    595     uint32  ENTRY_4_64_79:16,
    596             ENTRY_5_0_15:16;
    597 #else
    598     uint32  ENTRY_5_0_15:16,
    599             ENTRY_4_64_79:16;
    600 #endif  /* LE_HOST */
    601     uint32  ENTRY_5_16_47;
    602     uint32  ENTRY_5_48_79;
    603 
    604 } th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT1_FULL_t;
    605 
    606 typedef struct {
    607     uint32  ENTRY_0_0_31;
    608     uint32  ENTRY_0_32_63;
    609     uint32  ENTRY_0_64_95;
    610 
    611     uint32  ENTRY_1_0_31;
    612     uint32  ENTRY_1_32_63;
    613     uint32  ENTRY_1_64_95;
    614 
    615     uint32  ENTRY_2_0_31;
    616     uint32  ENTRY_2_32_63;
    617     uint32  ENTRY_2_64_95;
    618 
    619     uint32  ENTRY_3_0_31;
    620     uint32  ENTRY_3_32_63;
    621     uint32  ENTRY_3_64_95;
    622 
    623     uint32  ENTRY_4_0_31;
    624     uint32  ENTRY_4_32_63;
    625     uint32  ENTRY_4_64_95;
    626 } th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT2_FULL_t;
    627 
    628 typedef struct {
    629     uint32  ENTRY_0_0_31;
    630     uint32  ENTRY_0_32_63;
    631     uint32  ENTRY_0_64_95;
    632 
    633 #ifdef  LE_HOST
    634     uint32  ENTRY_0_96_119:24,
    635             ENTRY_1_0_7:8;
    636 #else
    637     uint32  ENTRY_1_0_7:8,
    638             ENTRY_0_96_119:24;
    639 #endif  /* LE_HOST */
    640 
    641     uint32  ENTRY_1_8_39;
    642     uint32  ENTRY_1_40_71;
    643     uint32  ENTRY_1_72_103;
    644 
    645 #ifdef  LE_HOST
    646     uint32  ENTRY_1_104_119:16,
    647             ENTRY_2_0_15:16;
    648 #else
    649     uint32  ENTRY_2_0_15:16,
    650             ENTRY_1_104_119:16;
    651 #endif  /* LE_HOST */
    652 
    653     uint32  ENTRY_2_16_47;
    654     uint32  ENTRY_2_48_79;
    655     uint32  ENTRY_2_80_111;
    656 
    657 #ifdef  LE_HOST
    658     uint32  ENTRY_2_112_119:8,
    659             ENTRY_3_0_23:24;
    660 #else
    661     uint32  ENTRY_3_0_23:24,
    662             ENTRY_2_112_119:8;
    663 #endif  /* LE_HOST */
    664 
    665     uint32  ENTRY_3_24_55;
    666     uint32  ENTRY_3_56_87;
    667     uint32  ENTRY_3_88_119;
    668 
    669 } th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT3_FULL_t;
    670 
    671 typedef struct {
    672     uint32  ENTRY_0_0_31;
    673     uint32  ENTRY_0_32_63;
    674     uint32  ENTRY_0_64_95;
    675     uint32  ENTRY_0_96_127;
    676     uint32  ENTRY_0_128_159;
    677 
    678     uint32  ENTRY_1_0_31;
    679     uint32  ENTRY_1_32_63;
    680     uint32  ENTRY_1_64_95;
    681     uint32  ENTRY_1_96_127;
    682     uint32  ENTRY_1_128_159;
    683 
    684     uint32  ENTRY_2_0_31;
    685     uint32  ENTRY_2_32_63;
    686     uint32  ENTRY_2_64_95;
    687     uint32  ENTRY_2_96_127;
    688     uint32  ENTRY_2_128_159;
    689 } th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT4_FULL_t;
    690 
    691 typedef struct {
    692     uint32  ENTRY_0_0_31;
    693     uint32  ENTRY_0_32_63;
    694     uint32  ENTRY_0_64_95;
    695     uint32  ENTRY_0_96_127;
    696     uint32  ENTRY_0_128_159;
    697     uint32  ENTRY_0_160_191;
    698 
    699 #ifdef  LE_HOST
    700     uint32  ENTRY_0_192_207:16,
    701             ENTRY_1_0_15:16;
    702 #else
    703     uint32  ENTRY_1_0_15:16,
    704             ENTRY_0_192_207:16;
    705 #endif  /* LE_HOST */
    706 
    707     uint32  ENTRY_1_16_47;
    708     uint32  ENTRY_1_48_79;
    709     uint32  ENTRY_1_80_111;
    710     uint32  ENTRY_1_112_143;
    711     uint32  ENTRY_1_144_175;
    712     uint32  ENTRY_1_176_207;
    713 
    714     uint32  RESERVED_0_31;
    715     uint32  RESERVED_32_63;
    716 } th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT5_FULL_t;
    717 
    718 typedef th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT3_FULL_t th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT6_FULL_t;
    719 typedef th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT4_FULL_t th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT7_FULL_t;
    720 
    721 typedef struct {
    722     uint32  ENTRY_0_0_31;
    723     uint32  ENTRY_0_32_63;
    724     uint32  ENTRY_0_64_95;
    725     uint32  ENTRY_0_96_127;
    726     uint32  ENTRY_0_128_159;
    727     uint32  ENTRY_0_160_191;
    728     uint32  ENTRY_0_192_223;
    729 
    730 #ifdef  LE_HOST
    731     uint32  ENTRY_0_224_231:8,
    732             ENTRY_1_0_23:24;
    733 #else
    734     uint32  ENTRY_1_0_23:24,
    735             ENTRY_0_224_231:8;
    736 #endif  /* LE_HOST */
    737 
    738     uint32  ENTRY_1_24_55;
    739     uint32  ENTRY_1_56_87;
    740     uint32  ENTRY_1_88_119;
    741     uint32  ENTRY_1_120_151;
    742     uint32  ENTRY_1_152_183;
    743     uint32  ENTRY_1_184_215;
    744 
    745 #ifdef  LE_HOST
    746     uint32  ENTRY_1_216_231:16,
    747             RESERVED:16;
    748 #else
    749     uint32  RESERVED:24,
    750             ENTRY_1_216_231:8;
    751 #endif  /* LE_HOST */
    752 } th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT8_FULL_t;
    753 
    754 /* ROUTE FULL fmt */
    755 typedef struct {
    756     uint32  ENTRY_0;
    757     uint32  ENTRY_1;
    758     uint32  ENTRY_2;
    759     uint32  ENTRY_3;
    760     uint32  ENTRY_4;
    761     uint32  ENTRY_5;
    762     uint32  ENTRY_6;
    763     uint32  ENTRY_7;
    764     uint32  ENTRY_8;
    765     uint32  ENTRY_9;
    766     uint32  ENTRY_10;
    767     uint32  ENTRY_11;
    768     uint32  ENTRY_12;
    769     uint32  ENTRY_13;
    770     uint32  ENTRY_14;
    771 } th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT1_FULL_t;
    772 
    773 typedef struct {
    774     uint32  ENTRY_0_0_31;
    775 #ifdef  LE_HOST
    776     uint32  ENTRY_0_32_39:8,
    777             ENTRY_1_0_23:24;
    778 #else
    779     uint32  ENTRY_1_0_23:24,
    780             ENTRY_0_32_39:8;
    781 #endif  /* LE_HOST */
    782 
    783 #ifdef  LE_HOST
    784     uint32  ENTRY_1_24_39:16,
    785             ENTRY_2_0_15:16;
    786 #else
    787     uint32  ENTRY_2_0_15:16,
    788             ENTRY_1_24_39:16;
    789 #endif  /* LE_HOST */
    790 
    791 #ifdef  LE_HOST
    792     uint32  ENTRY_2_16_39:24,
    793             ENTRY_3_0_7:8;
    794 #else
    795     uint32  ENTRY_3_0_7:8,
    796             ENTRY_2_16_39:24;
    797 #endif  /* LE_HOST */
    798 
    799     uint32  ENTRY_3_8_39;
    800 
    801     uint32  ENTRY_4_0_31;
    802 #ifdef  LE_HOST
    803     uint32  ENTRY_4_32_39:8,
    804             ENTRY_5_0_23:24;
    805 #else
    806     uint32  ENTRY_5_0_23:24,
    807             ENTRY_4_32_39:8;
    808 #endif  /* LE_HOST */
    809 
    810 #ifdef  LE_HOST
    811     uint32  ENTRY_5_24_39:16,
    812             ENTRY_6_0_15:16;
    813 #else
    814     uint32  ENTRY_6_0_15:16,
    815             ENTRY_5_24_39:16;
    816 #endif  /* LE_HOST */
    817 
    818 #ifdef  LE_HOST
    819     uint32  ENTRY_6_16_39:24,
    820             ENTRY_7_0_7:8;
    821 #else
    822     uint32  ENTRY_7_0_7:8,
    823             ENTRY_6_16_39:24;
    824 #endif  /* LE_HOST */
    825 
    826     uint32  ENTRY_7_8_39;
    827 
    828     uint32  ENTRY_8_0_31;
    829 #ifdef  LE_HOST
    830     uint32  ENTRY_8_32_39:8,
    831             ENTRY_9_0_23:24;
    832 #else
    833     uint32  ENTRY_9_0_23:24,
    834             ENTRY_8_32_39:8;
    835 #endif  /* LE_HOST */
    836 
    837 #ifdef  LE_HOST
    838     uint32  ENTRY_9_24_39:16,
    839             ENTRY_10_0_15:16;
    840 #else
    841     uint32  ENTRY_10_0_15:16,
    842             ENTRY_9_24_39:16;
    843 #endif  /* LE_HOST */
    844 
    845 #ifdef  LE_HOST
    846     uint32  ENTRY_10_16_39:24,
    847             ENTRY_11_0_7:8;
    848 #else
    849     uint32  ENTRY_11_0_7:8,
    850             ENTRY_10_16_39:24;
    851 #endif  /* LE_HOST */
    852     uint32  ENTRY_11_8_39;
    853 } th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT2_FULL_t;
    854 
    855 typedef struct {
    856     uint32  ENTRY_0_0_31;
    857 #ifdef  LE_HOST
    858     uint32  ENTRY_0_32_47:16,
    859             ENTRY_1_0_15:16;
    860 #else
    861     uint32  ENTRY_1_0_15:16,
    862             ENTRY_0_32_47:16;
    863 #endif  /* LE_HOST */
    864     uint32  ENTRY_1_16_47;
    865 
    866     uint32  ENTRY_2_0_31;
    867 #ifdef  LE_HOST
    868     uint32  ENTRY_2_32_47:16,
    869             ENTRY_3_0_15:16;
    870 #else
    871     uint32  ENTRY_3_0_15:16,
    872             ENTRY_2_32_47:16;
    873 #endif  /* LE_HOST */
    874     uint32  ENTRY_3_16_47;
    875 
    876     uint32  ENTRY_4_0_31;
    877 #ifdef  LE_HOST
    878     uint32  ENTRY_4_32_47:16,
    879             ENTRY_5_0_15:16;
    880 #else
    881     uint32  ENTRY_5_0_15:16,
    882             ENTRY_4_32_47:16;
    883 #endif  /* LE_HOST */
    884     uint32  ENTRY_5_16_47;
    885 
    886     uint32  ENTRY_6_0_31;
    887 #ifdef  LE_HOST
    888     uint32  ENTRY_6_32_47:16,
    889             ENTRY_7_0_15:16;
    890 #else
    891     uint32  ENTRY_7_0_15:16,
    892             ENTRY_6_32_47:16;
    893 #endif  /* LE_HOST */
    894     uint32  ENTRY_7_16_47;
    895 
    896     uint32  ENTRY_8_0_31;
    897 #ifdef  LE_HOST
    898     uint32  ENTRY_8_32_47:16,
    899             ENTRY_9_0_15:16;
    900 #else
    901     uint32  ENTRY_9_0_15:16,
    902             ENTRY_8_32_47:16;
    903 #endif  /* LE_HOST */
    904     uint32  ENTRY_9_16_47;
    905 } th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT3_FULL_t;
    906 
    907 typedef struct {
    908     uint32  ENTRY_0_0_31;
    909 #ifdef  LE_HOST
    910     uint32  ENTRY_0_32_55:24,
    911             ENTRY_1_0_7:8;
    912 #else
    913     uint32  ENTRY_1_0_7:8,
    914             ENTRY_0_32_55:24;
    915 #endif  /* LE_HOST */
    916     uint32  ENTRY_1_8_39;
    917 #ifdef  LE_HOST
    918     uint32  ENTRY_1_40_55:16,
    919             ENTRY_2_0_15:16;
    920 #else
    921     uint32  ENTRY_2_0_15:16,
    922             ENTRY_1_40_55:16;
    923 #endif  /* LE_HOST */
    924     uint32  ENTRY_2_16_47;
    925 #ifdef  LE_HOST
    926     uint32  ENTRY_2_48_55:8,
    927             ENTRY_3_0_23:24;
    928 #else
    929     uint32  ENTRY_3_0_23:24,
    930             ENTRY_2_48_55:8;
    931 #endif  /* LE_HOST */
    932     uint32  ENTRY_3_24_55;
    933 
    934     uint32  ENTRY_4_0_31;
    935 #ifdef  LE_HOST
    936     uint32  ENTRY_4_32_55:24,
    937             ENTRY_5_0_7:8;
    938 #else
    939     uint32  ENTRY_5_0_7:8,
    940             ENTRY_4_32_55:24;
    941 #endif  /* LE_HOST */
    942     uint32  ENTRY_5_8_39;
    943 #ifdef  LE_HOST
    944     uint32  ENTRY_5_40_55:16,
    945             ENTRY_6_0_15:16;
    946 #else
    947     uint32  ENTRY_6_0_15:16,
    948             ENTRY_5_40_55:16;
    949 #endif  /* LE_HOST */
    950     uint32  ENTRY_6_16_47;
    951 #ifdef  LE_HOST
    952     uint32  ENTRY_6_48_55:8,
    953             ENTRY_7_0_23:24;
    954 #else
    955     uint32  ENTRY_7_0_23:24,
    956             ENTRY_6_48_55:8;
    957 #endif  /* LE_HOST */
    958     uint32  ENTRY_7_24_55;
    959 
    960     uint32  RESERVED;
    961 } th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT4_FULL_t;
    962 
    963 typedef struct {
    964     uint32  ENTRY_0_0_31;
    965     uint32  ENTRY_0_32_63;
    966 
    967     uint32  ENTRY_1_0_31;
    968     uint32  ENTRY_1_32_63;
    969 
    970     uint32  ENTRY_2_0_31;
    971     uint32  ENTRY_2_32_63;
    972 
    973     uint32  ENTRY_3_0_31;
    974     uint32  ENTRY_3_32_63;
    975 
    976     uint32  ENTRY_4_0_31;
    977     uint32  ENTRY_4_32_63;
    978 
    979     uint32  ENTRY_5_0_31;
    980     uint32  ENTRY_5_32_63;
    981 
    982     uint32  ENTRY_6_0_31;
    983     uint32  ENTRY_6_32_63;
    984 
    985     uint32  RESERVED;
    986 } th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT5_FULL_t;
    987 
    988 typedef th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT1_FULL_t th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT6_FULL_t;
    989 typedef th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT2_FULL_t th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT7_FULL_t;
    990 typedef th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT3_FULL_t th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT8_FULL_t;
    991 
    992 typedef struct {
    993     uint32  ENTRY_0_0_31;
    994     uint32  ENTRY_0_32_63;
    995     uint32  ENTRY_0_64_95;
    996     uint32  ENTRY_0_96_127;
    997 
    998 #ifdef  LE_HOST
    999     uint32  ENTRY_0_128_151:24,
   1000             ENTRY_1_0_7:8;
   1001 #else
   1002     uint32  ENTRY_1_0_7:8,
   1003             ENTRY_0_128_151:24;
   1004 #endif  /* LE_HOST */
   1005 
   1006     uint32  ENTRY_1_8_39;
   1007     uint32  ENTRY_1_40_71;
   1008     uint32  ENTRY_1_72_103;
   1009     uint32  ENTRY_1_104_135;
   1010 
   1011 #ifdef  LE_HOST
   1012     uint32  ENTRY_1_136_151:16,
   1013             ENTRY_2_0_15:16;
   1014 #else
   1015     uint32  ENTRY_2_0_15:16,
   1016             ENTRY_1_136_151:16;
   1017 #endif  /* LE_HOST */
   1018 
   1019     uint32  ENTRY_2_16_47;
   1020     uint32  ENTRY_2_48_79;
   1021     uint32  ENTRY_2_80_111;
   1022     uint32  ENTRY_2_112_143;
   1023 
   1024 #ifdef  LE_HOST
   1025     uint32  ENTRY_2_144_151:8,
   1026             RESERVED:24;
   1027 #else
   1028     uint32  RESERVED:24,
   1029             ENTRY_2_144_151:8;
   1030 #endif  /* LE_HOST */
   1031 } th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT9_FULL_t;
   1032 
   1033 typedef th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT1_FULL_t th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT10_FULL_t;
   1034 typedef th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT3_FULL_t th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT11_FULL_t;
   1035 
   1036 typedef struct {
   1037     uint32  ENTRY_0_0_31;
   1038     uint32  ENTRY_0_32_63;
   1039     uint32  ENTRY_0_64_95;
   1040     uint32  ENTRY_0_96_127;
   1041     uint32  ENTRY_0_128_159;
   1042 
   1043 #ifdef  LE_HOST
   1044     uint32  ENTRY_0_160_175:16,
   1045             ENTRY_1_0_15:16;
   1046 #else
   1047     uint32  ENTRY_1_0_15:16,
   1048             ENTRY_0_160_175:16;
   1049 #endif  /* LE_HOST */
   1050 
   1051     uint32  ENTRY_1_16_47;
   1052     uint32  ENTRY_1_48_79;
   1053     uint32  ENTRY_1_80_111;
   1054     uint32  ENTRY_1_112_143;
   1055     uint32  ENTRY_1_144_175;
   1056 
   1057     uint32  RESERVED_0_31;
   1058     uint32  RESERVED_32_63;
   1059     uint32  RESERVED_64_95;
   1060     uint32  RESERVED_96_127;
   1061 } th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT12_FULL_t;
   1062 
   1063 static void
   1064 th3_format_field_get(int unit, soc_format_t format, const uint32 *entbuf,
   1065                      soc_field_t field, uint32 *fldbuf)
   1066 {
   1067     switch (format) {
   1068     /* PIVOT format */
   1069     case L3_DEFIP_ALPM_PIVOT_FMT1fmt: {
   1070             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT1_t *fmt1 = (void *)entbuf;
   1071             if (field == PREFIXf) {
   1072                 fldbuf[0] = fmt1->PREFIX;
   1073             } else if (field == ASSOC_DATAf) {
   1074                 fldbuf[0] = fmt1->ASSOC_DATA;
   1075             } else if (field == ALPM2_DATAf) {
   1076                 fldbuf[0] = ((fmt1->ALPM2_DATA_8_39 & 0xffffff) << 8 ) | fmt1->ALPM2_DATA_0_7;
   1077                 fldbuf[1] = (fmt1->ALPM2_DATA_40_55 << 8) | ((fmt1->ALPM2_DATA_8_39 >> 24) & 0xff);
   1078             }
   1079         }
   1080         break;
   1081     case L3_DEFIP_ALPM_PIVOT_FMT2fmt: {
   1082             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT2_t *fmt2 = (void *)entbuf;
   1083             if (field == PREFIXf) {
   1084                 fldbuf[0] = fmt2->PREFIX;
   1085             } else if (field == ASSOC_DATAf) {
   1086                 fldbuf[0] = (fmt2->ASSOC_DATA_8_15 << 8) | fmt2->ASSOC_DATA_0_7;
   1087             } else if (field == ALPM2_DATAf) {
   1088                 fldbuf[0] = ((fmt2->ALPM2_DATA_24_55 & 0xff) << 24) | fmt2->ALPM2_DATA_0_23;
   1089                 fldbuf[1] = (fmt2->ALPM2_DATA_24_55 >> 8) & 0xffffff;
   1090             }
   1091         }
   1092         break;
   1093     case L3_DEFIP_ALPM_PIVOT_FMT3fmt: {
   1094             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT3_t *fmt3 = (void *)entbuf;
   1095             if (field == PREFIXf) {
   1096                 fldbuf[0] = fmt3->PREFIX_0_31;
   1097                 fldbuf[1] = fmt3->PREFIX_32_47;
   1098             } else if (field == ASSOC_DATAf) {
   1099                 fldbuf[0] = fmt3->ASSOC_DATA;
   1100             } else if (field == ALPM2_DATAf) {
   1101                 fldbuf[0] = fmt3->ALPM2_DATA_0_31;
   1102                 fldbuf[1] = fmt3->ALPM2_DATA_32_55;
   1103             }
   1104         }
   1105         break;
   1106     case L3_DEFIP_ALPM_PIVOT_FMT4fmt: {
   1107             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT4_t *fmt4 = (void *)entbuf;
   1108             if (field == PREFIXf) {
   1109                 fldbuf[0] = fmt4->PREFIX_0_31;
   1110                 fldbuf[1] = fmt4->PREFIX_32_63;
   1111                 fldbuf[2] = fmt4->PREFIX_64_87;
   1112             } else if (field == ASSOC_DATAf) {
   1113                 fldbuf[0] = (fmt4->ASSOC_DATA_8_15 << 8) | fmt4->ASSOC_DATA_0_7;
   1114             } else if (field == ALPM2_DATAf) {
   1115                 fldbuf[0] = ((fmt4->ALPM2_DATA_24_55 & 0xff) << 24) | fmt4->ALPM2_DATA_0_23;
   1116                 fldbuf[1] = (fmt4->ALPM2_DATA_24_55 >> 8) & 0xffffff;
   1117             }
   1118         }
   1119         break;
   1120     case L3_DEFIP_ALPM_PIVOT_FMT5fmt: {
   1121             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT5_t *fmt5 = (void *)entbuf;
   1122             if (field == PREFIXf) {
   1123                 fldbuf[0] = fmt5->PREFIX_0_31;
   1124                 fldbuf[1] = fmt5->PREFIX_32_63;
   1125                 fldbuf[2] = fmt5->PREFIX_64_95;
   1126                 fldbuf[3] = fmt5->PREFIX_96_127;
   1127                 fldbuf[4] = fmt5->PREFIX_128;
   1128             } else if (field == ASSOC_DATAf) {
   1129                 fldbuf[0] = fmt5->ASSOC_DATA;
   1130             } else if (field == ALPM2_DATAf) {
   1131                 fldbuf[0] = ((fmt5->ALPM2_DATA_8_39 & 0xffffff) << 8) | fmt5->ALPM2_DATA_0_7;
   1132                 fldbuf[1] = ((fmt5->ALPM2_DATA_40_55 & 0xffff) << 8) | ((fmt5->ALPM2_DATA_8_39 >> 24) & 0xff);
   1133             }
   1134         }
   1135         break;
   1136     case L3_DEFIP_ALPM_PIVOT_FMT6fmt: {
   1137             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT6_t *fmt6 = (void *)entbuf;
   1138             if (field == PREFIXf) {
   1139                 fldbuf[0] = fmt6->PREFIX;
   1140             } else if (field == ASSOC_DATAf) {
   1141                 fldbuf[0] = ((fmt6->ASSOC_DATA_14_45 & 0x3ffff) << 14) | fmt6->ASSOC_DATA_0_13;
   1142                 fldbuf[1] = (fmt6->ASSOC_DATA_14_45 >> 18) & 0x3fff;
   1143             } else if (field == ALPM2_DATAf) {
   1144                 fldbuf[0] = fmt6->ALPM2_DATA_0_31;
   1145                 fldbuf[1] = fmt6->ALPM2_DATA_32_55;
   1146             }
   1147         }
   1148         break;
   1149     case L3_DEFIP_ALPM_PIVOT_FMT7fmt: {
   1150             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT7_t *fmt7 = (void *)entbuf;
   1151             if (field == PREFIXf) {
   1152                 fldbuf[0] = fmt7->PREFIX_0_31;
   1153                 fldbuf[1] = fmt7->PREFIX_32_57;
   1154             } else if (field == ASSOC_DATAf) {
   1155                 fldbuf[0] = ((fmt7->ASSOC_DATA_6_37 & 0x3ffffff) << 6) | fmt7->ASSOC_DATA_0_5;
   1156                 fldbuf[1] = (fmt7->ASSOC_DATA_6_37 >> 26) & 0x3f;
   1157             } else if (field == ALPM2_DATAf) {
   1158                 fldbuf[0] = ((fmt7->ALPM2_DATA_24_55 & 0xff) << 24) | fmt7->ALPM2_DATA_0_23;
   1159                 fldbuf[1] = (fmt7->ALPM2_DATA_24_55 >> 8) & 0xffffff;
   1160             }
   1161         }
   1162         break;
   1163     case L3_DEFIP_ALPM_PIVOT_FMT8fmt: {
   1164             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT8_t *fmt8 = (void *)entbuf;
   1165             if (field == PREFIXf) {
   1166                 fldbuf[0] = fmt8->PREFIX_0_31;
   1167                 fldbuf[1] = fmt8->PREFIX_32_63;
   1168                 fldbuf[2] = fmt8->PREFIX_64_95;
   1169                 fldbuf[3] = fmt8->PREFIX_96_127;
   1170                 fldbuf[4] = fmt8->PREFIX_128;
   1171             } else if (field == ASSOC_DATAf) {
   1172                 fldbuf[0] = ((fmt8->ASSOC_DATA_30_45 & 0x3) << 30) | fmt8->ASSOC_DATA_0_29;
   1173                 fldbuf[1] = (fmt8->ASSOC_DATA_30_45 >> 2) & 0x3fff;
   1174             } else if (field == ALPM2_DATAf) {
   1175                 fldbuf[0] = ((fmt8->ALPM2_DATA_16_47 & 0xffff) << 16) | fmt8->ALPM2_DATA_0_15;
   1176                 fldbuf[1] = ((fmt8->ALPM2_DATA_48_55 & 0xff) << 16) | ((fmt8->ALPM2_DATA_16_47 >> 16) & 0xffff);
   1177             }
   1178         }
   1179         break;
   1180 
   1181     /* ROUTE format */
   1182     case L3_DEFIP_ALPM_ROUTE_FMT1fmt: {
   1183             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT1_t *fmt1 = (void *)entbuf;
   1184             if (field == PREFIXf) {
   1185                 fldbuf[0] = fmt1->PREFIX;
   1186             } else if (field == ASSOC_DATAf) {
   1187                 fldbuf[0] = fmt1->ASSOC_DATA;
   1188             }
   1189         }
   1190         break;
   1191     case L3_DEFIP_ALPM_ROUTE_FMT2fmt: {
   1192             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT2_t *fmt2 = (void *)entbuf;
   1193             if (field == PREFIXf) {
   1194                 fldbuf[0] = fmt2->PREFIX;
   1195             } else if (field == ASSOC_DATAf) {
   1196                 fldbuf[0] = ((fmt2->ASSOC_DATA_8_15 & 0xff) << 8) | fmt2->ASSOC_DATA_0_7;
   1197             }
   1198         }
   1199         break;
   1200     case L3_DEFIP_ALPM_ROUTE_FMT3fmt: {
   1201             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT3_t *fmt3 = (void *)entbuf;
   1202             if (field == PREFIXf) {
   1203                 fldbuf[0] = fmt3->PREFIX;
   1204             } else if (field == ASSOC_DATAf) {
   1205                 fldbuf[0] = fmt3->ASSOC_DATA;
   1206             }
   1207         }
   1208         break;
   1209     case L3_DEFIP_ALPM_ROUTE_FMT4fmt: {
   1210             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT4_t *fmt4 = (void *)entbuf;
   1211             if (field == PREFIXf) {
   1212                 fmt4->PREFIX_0_31 = fldbuf[0];
   1213                 fmt4->PREFIX_32_39 = fldbuf[1] & 0xff;
   1214             } else if (field == ASSOC_DATAf) {
   1215                 fmt4->ASSOC_DATA = fldbuf[0];
   1216             }
   1217         }
   1218         break;
   1219     case L3_DEFIP_ALPM_ROUTE_FMT5fmt: {
   1220             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT5_t *fmt5 = (void *)entbuf;
   1221             if (field == PREFIXf) {
   1222                 fldbuf[0] = fmt5->PREFIX_0_31;
   1223                 fldbuf[1] = fmt5->PREFIX_32_47;
   1224             } else if (field == ASSOC_DATAf) {
   1225                 fldbuf[0] = fmt5->ASSOC_DATA;
   1226             }
   1227         }
   1228         break;
   1229     case L3_DEFIP_ALPM_ROUTE_FMT6fmt: {
   1230             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT6_t *fmt6 = (void *)entbuf;
   1231             if (field == PREFIXf) {
   1232                 fldbuf[0] = fmt6->PREFIX_0_31;
   1233                 fldbuf[1] = fmt6->PREFIX_32_63;
   1234             } else if (field == ASSOC_DATAf) {
   1235                 fldbuf[0] = fmt6->ASSOC_DATA;
   1236             }
   1237         }
   1238         break;
   1239     case L3_DEFIP_ALPM_ROUTE_FMT7fmt: {
   1240             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT7_t *fmt7 = (void *)entbuf;
   1241             if (field == PREFIXf) {
   1242                 fldbuf[0] = fmt7->PREFIX_0_31;
   1243                 fldbuf[1] = fmt7->PREFIX_32_63;
   1244                 fldbuf[2] = fmt7->PREFIX_64_79;
   1245             } else if (field == ASSOC_DATAf) {
   1246                 fldbuf[0] = fmt7->ASSOC_DATA;
   1247             }
   1248         }
   1249         break;
   1250     case L3_DEFIP_ALPM_ROUTE_FMT8fmt: {
   1251             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT8_t *fmt8 = (void *)entbuf;
   1252             if (field == PREFIXf) {
   1253                 fldbuf[0] = fmt8->PREFIX_0_31;
   1254                 fldbuf[1] = fmt8->PREFIX_32_63;
   1255                 fldbuf[2] = fmt8->PREFIX_64_95;
   1256                 fldbuf[3] = fmt8->PREFIX_96_103;
   1257             } else if (field == ASSOC_DATAf) {
   1258                 fldbuf[0] = fmt8->ASSOC_DATA;
   1259             }
   1260         }
   1261         break;
   1262     case L3_DEFIP_ALPM_ROUTE_FMT9fmt: {
   1263             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT9_t *fmt9 = (void *)entbuf;
   1264             if (field == PREFIXf) {
   1265                 fldbuf[0] = fmt9->PREFIX_0_31;
   1266                 fldbuf[1] = fmt9->PREFIX_32_63;
   1267                 fldbuf[2] = fmt9->PREFIX_64_95;
   1268                 fldbuf[3] = fmt9->PREFIX_96_127;
   1269                 fldbuf[4] = fmt9->PREFIX_128;
   1270             } else if (field == ASSOC_DATAf) {
   1271                 fldbuf[0] = fmt9->ASSOC_DATA;
   1272             }
   1273         }
   1274         break;
   1275     case L3_DEFIP_ALPM_ROUTE_FMT10fmt: {
   1276             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT10_t *fmt10 = (void *)entbuf;
   1277             if (field == PREFIXf) {
   1278                 fldbuf[0] = fmt10->PREFIX_0_31;
   1279                 fldbuf[1] = fmt10->PREFIX_32_33;
   1280             } else if (field == ASSOC_DATAf) {
   1281                 fldbuf[0] = ((fmt10->ASSOC_DATA_30_45 & 0x3) << 30) | fmt10->ASSOC_DATA_0_29;
   1282                 fldbuf[1] = (fmt10->ASSOC_DATA_30_45 >> 2) & 0x3fff;
   1283             }
   1284         }
   1285         break;
   1286     case L3_DEFIP_ALPM_ROUTE_FMT11fmt: {
   1287             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT11_t *fmt11 = (void *)entbuf;
   1288             if (field == PREFIXf) {
   1289                 fldbuf[0] = fmt11->PREFIX_0_31;
   1290                 fldbuf[1] = fmt11->PREFIX_32_63;
   1291                 fldbuf[2] = fmt11->PREFIX_64_73;
   1292             } else if (field == ASSOC_DATAf) {
   1293                 fldbuf[0] = ((fmt11->ASSOC_DATA_22_45 & 0x3ff) << 22) | fmt11->ASSOC_DATA_0_21;
   1294                 fldbuf[1] = (fmt11->ASSOC_DATA_22_45 >> 10) & 0x3fff;
   1295             }
   1296         }
   1297         break;
   1298     case L3_DEFIP_ALPM_ROUTE_FMT12fmt: {
   1299             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT12_t *fmt12 = (void *)entbuf;
   1300             if (field == PREFIXf) {
   1301                 fldbuf[0] = fmt12->PREFIX_0_31;
   1302                 fldbuf[1] = fmt12->PREFIX_32_63;
   1303                 fldbuf[2] = fmt12->PREFIX_64_95;
   1304                 fldbuf[3] = fmt12->PREFIX_96_127;
   1305                 fldbuf[4] = fmt12->PREFIX_128;
   1306             } else if (field == ASSOC_DATAf) {
   1307                 fldbuf[0] = ((fmt12->ASSOC_DATA_30_45 & 0x3) << 30) | fmt12->ASSOC_DATA_0_29;
   1308                 fldbuf[1] = (fmt12->ASSOC_DATA_30_45 >> 2) & 0x3fff;
   1309             }
   1310         }
   1311         break;
   1312 
   1313     /* PIVOT FULL format */
   1314     case L3_DEFIP_ALPM_PIVOT_FMT1_FULLfmt:
   1315     case L3_DEFIP_ALPM_ROUTE_FMT6_FULLfmt:
   1316     case L3_DEFIP_ALPM_ROUTE_FMT10_FULLfmt: {
   1317             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT1_FULL_t *fmt1pf = (void *)entbuf;
   1318             if (field == ENTRY_0f) {
   1319                 fldbuf[0] = fmt1pf->ENTRY_0_0_31;
   1320                 fldbuf[1] = fmt1pf->ENTRY_0_32_63;
   1321                 fldbuf[2] = fmt1pf->ENTRY_0_64_79;
   1322             } else if (field == ENTRY_1f) {
   1323                 fldbuf[0] = ((fmt1pf->ENTRY_1_16_47 & 0xffff) << 16) | fmt1pf->ENTRY_1_0_15;
   1324                 fldbuf[1] = ((fmt1pf->ENTRY_1_48_79 & 0xffff) << 16) | ((fmt1pf->ENTRY_1_16_47 >> 16) & 0xffff);
   1325                 fldbuf[2] = (fmt1pf->ENTRY_1_48_79 >> 16) & 0xffff;
   1326             } else if (field == ENTRY_2f) {
   1327                 fldbuf[0] = fmt1pf->ENTRY_2_0_31;
   1328                 fldbuf[1] = fmt1pf->ENTRY_2_32_63;
   1329                 fldbuf[2] = fmt1pf->ENTRY_2_64_79;
   1330             } else if (field == ENTRY_3f) {
   1331                 fldbuf[0] = ((fmt1pf->ENTRY_3_16_47 & 0xffff) << 16) | fmt1pf->ENTRY_3_0_15;
   1332                 fldbuf[1] = ((fmt1pf->ENTRY_3_48_79 & 0xffff) << 16) | ((fmt1pf->ENTRY_3_16_47 >> 16) & 0xffff);
   1333                 fldbuf[2] = (fmt1pf->ENTRY_3_48_79 >> 16) & 0xffff;
   1334             } else if (field == ENTRY_4f) {
   1335                 fldbuf[0] = fmt1pf->ENTRY_4_0_31;
   1336                 fldbuf[1] = fmt1pf->ENTRY_4_32_63;
   1337                 fldbuf[2] = fmt1pf->ENTRY_4_64_79;
   1338             } else if (field == ENTRY_5f) {
   1339                 fldbuf[0] = ((fmt1pf->ENTRY_5_16_47 & 0xffff) << 16) | fmt1pf->ENTRY_5_0_15;
   1340                 fldbuf[1] = ((fmt1pf->ENTRY_5_48_79 & 0xffff) << 16) | ((fmt1pf->ENTRY_5_16_47 >> 16) & 0xffff);
   1341                 fldbuf[2] = (fmt1pf->ENTRY_5_48_79 >> 16) & 0xffff;
   1342             }
   1343         }
   1344         break;
   1345 
   1346     case L3_DEFIP_ALPM_PIVOT_FMT2_FULLfmt:
   1347     case L3_DEFIP_ALPM_ROUTE_FMT7_FULLfmt: {
   1348             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT2_FULL_t *fmt2pf = (void *)entbuf;
   1349             if (field == ENTRY_0f) {
   1350                 fldbuf[0] = fmt2pf->ENTRY_0_0_31;
   1351                 fldbuf[1] = fmt2pf->ENTRY_0_32_63;
   1352                 fldbuf[2] = fmt2pf->ENTRY_0_64_95;
   1353             } else if (field == ENTRY_1f) {
   1354                 fldbuf[0] = fmt2pf->ENTRY_1_0_31;
   1355                 fldbuf[1] = fmt2pf->ENTRY_1_32_63;
   1356                 fldbuf[2] = fmt2pf->ENTRY_1_64_95;
   1357             } else if (field == ENTRY_2f) {
   1358                 fldbuf[0] = fmt2pf->ENTRY_2_0_31;
   1359                 fldbuf[1] = fmt2pf->ENTRY_2_32_63;
   1360                 fldbuf[2] = fmt2pf->ENTRY_2_64_95;
   1361             } else if (field == ENTRY_3f) {
   1362                 fldbuf[0] = fmt2pf->ENTRY_3_0_31;
   1363                 fldbuf[1] = fmt2pf->ENTRY_3_32_63;
   1364                 fldbuf[2] = fmt2pf->ENTRY_3_64_95;
   1365             } else if (field == ENTRY_4f) {
   1366                 fldbuf[0] = fmt2pf->ENTRY_4_0_31;
   1367                 fldbuf[1] = fmt2pf->ENTRY_4_32_63;
   1368                 fldbuf[2] = fmt2pf->ENTRY_4_64_95;
   1369             }
   1370         }
   1371         break;
   1372 
   1373     case L3_DEFIP_ALPM_PIVOT_FMT3_FULLfmt:
   1374     case L3_DEFIP_ALPM_PIVOT_FMT6_FULLfmt:
   1375     case L3_DEFIP_ALPM_ROUTE_FMT8_FULLfmt:
   1376     case L3_DEFIP_ALPM_ROUTE_FMT11_FULLfmt: {
   1377             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT3_FULL_t *fmt3pf = (void *)entbuf;
   1378             if (field == ENTRY_0f) {
   1379                 fldbuf[0] = fmt3pf->ENTRY_0_0_31;
   1380                 fldbuf[1] = fmt3pf->ENTRY_0_32_63;
   1381                 fldbuf[2] = fmt3pf->ENTRY_0_64_95;
   1382                 fldbuf[3] = fmt3pf->ENTRY_0_96_119;
   1383             } else if (field == ENTRY_1f) {
   1384                 fldbuf[0] = ((fmt3pf->ENTRY_1_8_39 & 0xffffff) << 8) | fmt3pf->ENTRY_1_0_7;
   1385                 fldbuf[1] = ((fmt3pf->ENTRY_1_40_71 & 0xffffff) << 8) | ((fmt3pf->ENTRY_1_8_39 >> 24) & 0xff);
   1386                 fldbuf[2] = ((fmt3pf->ENTRY_1_72_103 & 0xffffff) << 8) | ((fmt3pf->ENTRY_1_40_71 >> 24) & 0xff);
   1387                 fldbuf[3] = (fmt3pf->ENTRY_1_104_119 << 8) | ((fmt3pf->ENTRY_1_72_103 >> 24) & 0xff);
   1388             } else if (field == ENTRY_2f) {
   1389                 fldbuf[0] = ((fmt3pf->ENTRY_2_16_47 & 0xffff) << 16) | fmt3pf->ENTRY_2_0_15;
   1390                 fldbuf[1] = ((fmt3pf->ENTRY_2_48_79 & 0xffff) << 16) | ((fmt3pf->ENTRY_2_16_47 >> 16) & 0xffff);
   1391                 fldbuf[2] = ((fmt3pf->ENTRY_2_80_111 & 0xffff) << 16) | ((fmt3pf->ENTRY_2_48_79 >> 16) & 0xffff);
   1392                 fldbuf[3] = (fmt3pf->ENTRY_2_112_119 << 16) | ((fmt3pf->ENTRY_2_80_111 >> 16) & 0xffff);
   1393             } else if (field == ENTRY_3f) {
   1394                 fldbuf[0] = ((fmt3pf->ENTRY_3_24_55 & 0xff) << 24) | fmt3pf->ENTRY_3_0_23;
   1395                 fldbuf[1] = ((fmt3pf->ENTRY_3_56_87 & 0xff) << 24) | ((fmt3pf->ENTRY_3_24_55 >> 8) & 0xffffff);
   1396                 fldbuf[2] = ((fmt3pf->ENTRY_3_88_119 & 0xff) << 24) | ((fmt3pf->ENTRY_3_56_87 >> 8) & 0xffffff);
   1397                 fldbuf[3] = (fmt3pf->ENTRY_3_88_119 >> 8) & 0xffffff;
   1398             }
   1399         }
   1400         break;
   1401 
   1402     case L3_DEFIP_ALPM_PIVOT_FMT4_FULLfmt:
   1403     case L3_DEFIP_ALPM_PIVOT_FMT7_FULLfmt: {
   1404             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT4_FULL_t *fmt4pf = (void *)entbuf;
   1405             if (field == ENTRY_0f) {
   1406                 fldbuf[0] = fmt4pf->ENTRY_0_0_31;
   1407                 fldbuf[1] = fmt4pf->ENTRY_0_32_63;
   1408                 fldbuf[2] = fmt4pf->ENTRY_0_64_95;
   1409                 fldbuf[3] = fmt4pf->ENTRY_0_96_127;
   1410                 fldbuf[4] = fmt4pf->ENTRY_0_128_159;
   1411             } else if (field == ENTRY_1f) {
   1412                 fldbuf[0] = fmt4pf->ENTRY_1_0_31;
   1413                 fldbuf[1] = fmt4pf->ENTRY_1_32_63;
   1414                 fldbuf[2] = fmt4pf->ENTRY_1_64_95;
   1415                 fldbuf[3] = fmt4pf->ENTRY_1_96_127;
   1416                 fldbuf[4] = fmt4pf->ENTRY_1_128_159;
   1417             } else if (field == ENTRY_2f) {
   1418                 fldbuf[0] = fmt4pf->ENTRY_2_0_31;
   1419                 fldbuf[1] = fmt4pf->ENTRY_2_32_63;
   1420                 fldbuf[2] = fmt4pf->ENTRY_2_64_95;
   1421                 fldbuf[3] = fmt4pf->ENTRY_2_96_127;
   1422                 fldbuf[4] = fmt4pf->ENTRY_2_128_159;
   1423             }
   1424         }
   1425         break;
   1426 
   1427     case L3_DEFIP_ALPM_PIVOT_FMT5_FULLfmt: {
   1428             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT5_FULL_t *fmt5pf = (void *)entbuf;
   1429             if (field == ENTRY_0f) {
   1430                 fldbuf[0] = fmt5pf->ENTRY_0_0_31;
   1431                 fldbuf[1] = fmt5pf->ENTRY_0_32_63;
   1432                 fldbuf[2] = fmt5pf->ENTRY_0_64_95;
   1433                 fldbuf[3] = fmt5pf->ENTRY_0_96_127;
   1434                 fldbuf[4] = fmt5pf->ENTRY_0_128_159;
   1435                 fldbuf[5] = fmt5pf->ENTRY_0_160_191;
   1436                 fldbuf[6] = fmt5pf->ENTRY_0_192_207;
   1437             } else if (field == ENTRY_1f) {
   1438                 fldbuf[0] = ((fmt5pf->ENTRY_1_16_47 & 0xffff) >> 16) | fmt5pf->ENTRY_1_0_15;
   1439                 fldbuf[1] = ((fmt5pf->ENTRY_1_48_79 & 0xffff) >> 16) | ((fmt5pf->ENTRY_1_16_47 >> 16) & 0xffff);
   1440                 fldbuf[2] = ((fmt5pf->ENTRY_1_80_111 & 0xffff) >> 16) | ((fmt5pf->ENTRY_1_48_79 >> 16) & 0xffff);
   1441                 fldbuf[3] = ((fmt5pf->ENTRY_1_112_143 & 0xffff) >> 16) | ((fmt5pf->ENTRY_1_80_111 >> 16) & 0xffff);
   1442                 fldbuf[4] = ((fmt5pf->ENTRY_1_144_175 & 0xffff) >> 16) | ((fmt5pf->ENTRY_1_112_143 >> 16) & 0xffff);
   1443                 fldbuf[5] = ((fmt5pf->ENTRY_1_176_207 & 0xffff) >> 16) | ((fmt5pf->ENTRY_1_144_175 >> 16) & 0xffff);
   1444                 fldbuf[6] = (fmt5pf->ENTRY_1_176_207 >> 16) & 0xffff;
   1445             }
   1446         }
   1447         break;
   1448 
   1449     case L3_DEFIP_ALPM_PIVOT_FMT8_FULLfmt: {
   1450             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT8_FULL_t *fmt8pf = (void *)entbuf;
   1451             if (field == ENTRY_0f) {
   1452                 fldbuf[0] = fmt8pf->ENTRY_0_0_31;
   1453                 fldbuf[1] = fmt8pf->ENTRY_0_32_63;
   1454                 fldbuf[2] = fmt8pf->ENTRY_0_64_95;
   1455                 fldbuf[3] = fmt8pf->ENTRY_0_96_127;
   1456                 fldbuf[4] = fmt8pf->ENTRY_0_128_159;
   1457                 fldbuf[5] = fmt8pf->ENTRY_0_160_191;
   1458                 fldbuf[6] = fmt8pf->ENTRY_0_192_223;
   1459                 fldbuf[7] = fmt8pf->ENTRY_0_224_231;
   1460             } else if (field == ENTRY_1f) {
   1461                 fldbuf[0] = ((fmt8pf->ENTRY_1_24_55 & 0xff) << 24) | fmt8pf->ENTRY_1_0_23;
   1462                 fldbuf[1] = ((fmt8pf->ENTRY_1_56_87 & 0xff) << 24) | ((fmt8pf->ENTRY_1_24_55 >> 8) & 0xffffff);
   1463                 fldbuf[2] = ((fmt8pf->ENTRY_1_88_119 & 0xff) << 24) | ((fmt8pf->ENTRY_1_56_87 >> 8) & 0xffffff);
   1464                 fldbuf[3] = ((fmt8pf->ENTRY_1_120_151 & 0xff) << 24) | ((fmt8pf->ENTRY_1_88_119 >> 8) & 0xffffff);
   1465                 fldbuf[4] = ((fmt8pf->ENTRY_1_152_183 & 0xff) << 24) | ((fmt8pf->ENTRY_1_120_151 >> 8) & 0xffffff);
   1466                 fldbuf[5] = ((fmt8pf->ENTRY_1_184_215 & 0xff) << 24) | ((fmt8pf->ENTRY_1_152_183 >> 8) & 0xffffff);
   1467                 fldbuf[6] = ((fmt8pf->ENTRY_1_216_231 & 0xff) << 24) | ((fmt8pf->ENTRY_1_184_215 >> 8) & 0xffffff);
   1468                 fldbuf[7] = (fmt8pf->ENTRY_1_216_231 >> 8) & 0xff;
   1469             }
   1470         }
   1471         break;
   1472 
   1473     /* ROUTE FULL fmt */
   1474     case L3_DEFIP_ALPM_ROUTE_FMT1_FULLfmt: {
   1475             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT1_FULL_t *fmt1rf = (void *)entbuf;
   1476             if (field == ENTRY_0f) {
   1477                 fldbuf[0] = fmt1rf->ENTRY_0;
   1478             } else if (field == ENTRY_1f) {
   1479                 fldbuf[0] = fmt1rf->ENTRY_1;
   1480             } else if (field == ENTRY_2f) {
   1481                 fldbuf[0] = fmt1rf->ENTRY_2;
   1482             } else if (field == ENTRY_3f) {
   1483                 fldbuf[0] = fmt1rf->ENTRY_3;
   1484             } else if (field == ENTRY_4f) {
   1485                 fldbuf[0] = fmt1rf->ENTRY_4;
   1486             } else if (field == ENTRY_5f) {
   1487                 fldbuf[0] = fmt1rf->ENTRY_5;
   1488             } else if (field == ENTRY_6f) {
   1489                 fldbuf[0] = fmt1rf->ENTRY_6;
   1490             } else if (field == ENTRY_7f) {
   1491                 fldbuf[0] = fmt1rf->ENTRY_7;
   1492             } else if (field == ENTRY_8f) {
   1493                 fldbuf[0] = fmt1rf->ENTRY_8;
   1494             } else if (field == ENTRY_9f) {
   1495                 fldbuf[0] = fmt1rf->ENTRY_9;
   1496             } else if (field == ENTRY_10f) {
   1497                 fldbuf[0] = fmt1rf->ENTRY_10;
   1498             } else if (field == ENTRY_11f) {
   1499                 fldbuf[0] = fmt1rf->ENTRY_11;
   1500             } else if (field == ENTRY_12f) {
   1501                 fldbuf[0] = fmt1rf->ENTRY_12;
   1502             } else if (field == ENTRY_13f) {
   1503                 fldbuf[0] = fmt1rf->ENTRY_13;
   1504             } else if (field == ENTRY_14f) {
   1505                 fldbuf[0] = fmt1rf->ENTRY_14;
   1506             }
   1507         }
   1508         break;
   1509 
   1510     case L3_DEFIP_ALPM_ROUTE_FMT2_FULLfmt: {
   1511             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT2_FULL_t *fmt2rf = (void *)entbuf;
   1512             if (field == ENTRY_0f) {
   1513                 fldbuf[0] = fmt2rf->ENTRY_0_0_31;
   1514                 fldbuf[1] = fmt2rf->ENTRY_0_32_39;
   1515             } else if (field == ENTRY_1f) {
   1516                 fldbuf[0] = ((fmt2rf->ENTRY_1_24_39 & 0xff) << 24) | fmt2rf->ENTRY_1_0_23;
   1517                 fldbuf[1] = (fmt2rf->ENTRY_1_24_39 >> 8) & 0xff;
   1518             } else if (field == ENTRY_2f) {
   1519                 fldbuf[0] = ((fmt2rf->ENTRY_2_16_39 & 0xffff) << 16) | fmt2rf->ENTRY_2_0_15;
   1520                 fldbuf[1] = (fmt2rf->ENTRY_2_16_39 >> 16) & 0xff;
   1521             } else if (field == ENTRY_3f) {
   1522                 fldbuf[0] = ((fmt2rf->ENTRY_3_8_39 & 0xffffff) << 8) | fmt2rf->ENTRY_3_0_7;
   1523                 fldbuf[1] = (fmt2rf->ENTRY_3_8_39 >> 24) & 0xff;
   1524             } else if (field == ENTRY_4f) {
   1525                 fldbuf[0] = fmt2rf->ENTRY_4_0_31;
   1526                 fldbuf[1] = fmt2rf->ENTRY_4_32_39;
   1527             } else if (field == ENTRY_5f) {
   1528                 fldbuf[0] = ((fmt2rf->ENTRY_5_24_39 & 0xff) << 24) | fmt2rf->ENTRY_5_0_23;
   1529                 fldbuf[1] = (fmt2rf->ENTRY_5_24_39 >> 8) & 0xff;
   1530             } else if (field == ENTRY_6f) {
   1531                 fldbuf[0] = ((fmt2rf->ENTRY_6_16_39 & 0xffff) << 16) | fmt2rf->ENTRY_6_0_15;
   1532                 fldbuf[1] = (fmt2rf->ENTRY_6_16_39 >> 16) & 0xff;
   1533             } else if (field == ENTRY_7f) {
   1534                 fldbuf[0] = ((fmt2rf->ENTRY_7_8_39 & 0xffffff) << 8) | fmt2rf->ENTRY_7_0_7;
   1535                 fldbuf[1] = (fmt2rf->ENTRY_7_8_39 >> 24) & 0xff;
   1536             } else if (field == ENTRY_8f) {
   1537                 fldbuf[0] = fmt2rf->ENTRY_8_0_31;
   1538                 fldbuf[1] = fmt2rf->ENTRY_8_32_39;
   1539             } else if (field == ENTRY_9f) {
   1540                 fldbuf[0] = ((fmt2rf->ENTRY_9_24_39 & 0xff) << 24) | fmt2rf->ENTRY_9_0_23;
   1541                 fldbuf[1] = (fmt2rf->ENTRY_9_24_39 >> 8) & 0xff;
   1542             } else if (field == ENTRY_10f) {
   1543                 fldbuf[0] = ((fmt2rf->ENTRY_10_16_39 & 0xffff) << 16) | fmt2rf->ENTRY_10_0_15;
   1544                 fldbuf[1] = (fmt2rf->ENTRY_10_16_39 >> 16) & 0xff;
   1545             } else if (field == ENTRY_11f) {
   1546                 fldbuf[0] = ((fmt2rf->ENTRY_11_8_39 & 0xffffff) << 8) | fmt2rf->ENTRY_11_0_7;
   1547                 fldbuf[1] = (fmt2rf->ENTRY_11_8_39 >> 24) & 0xff;
   1548             }
   1549         }
   1550         break;
   1551 
   1552     case L3_DEFIP_ALPM_ROUTE_FMT3_FULLfmt: {
   1553             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT3_FULL_t *fmt3rf = (void *)entbuf;
   1554             if (field == ENTRY_0f) {
   1555                 fldbuf[0] = fmt3rf->ENTRY_0_0_31;
   1556                 fldbuf[1] = fmt3rf->ENTRY_0_32_47;
   1557             } else if (field == ENTRY_1f) {
   1558                 fldbuf[0] = ((fmt3rf->ENTRY_1_16_47 & 0xffff) << 16) | ((fmt3rf->ENTRY_1_0_15 >> 16) & 0xffff);
   1559                 fldbuf[1] = (fmt3rf->ENTRY_1_16_47 >> 16) & 0xffff;
   1560             } else if (field == ENTRY_2f) {
   1561                 fldbuf[0] = fmt3rf->ENTRY_2_0_31;
   1562                 fldbuf[1] = fmt3rf->ENTRY_2_32_47;
   1563             } else if (field == ENTRY_3f) {
   1564                 fldbuf[0] = ((fmt3rf->ENTRY_3_16_47 & 0xffff) << 16) | ((fmt3rf->ENTRY_3_0_15 >> 16) & 0xffff);
   1565                 fldbuf[1] = (fmt3rf->ENTRY_3_16_47 >> 16) & 0xffff;
   1566             } else if (field == ENTRY_4f) {
   1567                 fldbuf[0] = fmt3rf->ENTRY_4_0_31;
   1568                 fldbuf[1] = fmt3rf->ENTRY_4_32_47;
   1569             } else if (field == ENTRY_5f) {
   1570                 fldbuf[0] = ((fmt3rf->ENTRY_5_16_47 & 0xffff) << 16) | ((fmt3rf->ENTRY_5_0_15 >> 16) & 0xffff);
   1571                 fldbuf[1] = (fmt3rf->ENTRY_5_16_47 >> 16) & 0xffff;
   1572             } else if (field == ENTRY_6f) {
   1573                 fldbuf[0] = fmt3rf->ENTRY_6_0_31;
   1574                 fldbuf[1] = fmt3rf->ENTRY_6_32_47;
   1575             } else if (field == ENTRY_7f) {
   1576                 fldbuf[0] = ((fmt3rf->ENTRY_7_16_47 & 0xffff) << 16) | ((fmt3rf->ENTRY_7_0_15 >> 16) & 0xffff);
   1577                 fldbuf[1] = (fmt3rf->ENTRY_7_16_47 >> 16) & 0xffff;
   1578             } else if (field == ENTRY_8f) {
   1579                 fldbuf[0] = fmt3rf->ENTRY_8_0_31;
   1580                 fldbuf[1] = fmt3rf->ENTRY_8_32_47;
   1581             } else if (field == ENTRY_9f) {
   1582                 fldbuf[0] = ((fmt3rf->ENTRY_9_16_47 & 0xffff) << 16) | ((fmt3rf->ENTRY_9_0_15 >> 16) & 0xffff);
   1583                 fldbuf[1] = (fmt3rf->ENTRY_9_16_47 >> 16) & 0xffff;
   1584             }
   1585         }
   1586         break;
   1587 
   1588     case L3_DEFIP_ALPM_ROUTE_FMT4_FULLfmt: {
   1589             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT4_FULL_t *fmt4rf = (void *)entbuf;
   1590             if (field == ENTRY_0f) {
   1591                 fldbuf[0] = fmt4rf->ENTRY_0_0_31;
   1592                 fldbuf[1] = fmt4rf->ENTRY_0_32_55;
   1593             } else if (field == ENTRY_1f) {
   1594                 fldbuf[0] = ((fmt4rf->ENTRY_1_8_39 & 0xffffff) << 8) | fmt4rf->ENTRY_1_0_7;
   1595                 fldbuf[1] = (fmt4rf->ENTRY_1_40_55 << 8) | ((fmt4rf->ENTRY_1_8_39 >> 24) & 0xff);
   1596             } else if (field == ENTRY_2f) {
   1597                 fldbuf[0] = ((fmt4rf->ENTRY_2_16_47 & 0xffff) << 16) | fmt4rf->ENTRY_2_0_15;
   1598                 fldbuf[1] = (fmt4rf->ENTRY_2_48_55 << 16) | ((fmt4rf->ENTRY_2_16_47 >> 16) & 0xffff);
   1599             } else if (field == ENTRY_3f) {
   1600                 fldbuf[0] = ((fmt4rf->ENTRY_3_24_55 & 0xff) << 24) | fmt4rf->ENTRY_3_0_23;
   1601                 fldbuf[1] = (fmt4rf->ENTRY_3_24_55 >> 8) & 0xffffff;
   1602             } else if (field == ENTRY_4f) {
   1603                 fldbuf[0] = fmt4rf->ENTRY_4_0_31;
   1604                 fldbuf[1] = fmt4rf->ENTRY_4_32_55;
   1605             } else if (field == ENTRY_5f) {
   1606                 fldbuf[0] = ((fmt4rf->ENTRY_5_8_39 & 0xffffff) << 8) | fmt4rf->ENTRY_5_0_7;
   1607                 fldbuf[1] = (fmt4rf->ENTRY_5_40_55 << 8) | ((fmt4rf->ENTRY_5_8_39 >> 24) & 0xff);
   1608             } else if (field == ENTRY_6f) {
   1609                 fldbuf[0] = ((fmt4rf->ENTRY_6_16_47 & 0xffff) << 16) | fmt4rf->ENTRY_6_0_15;
   1610                 fldbuf[1] = (fmt4rf->ENTRY_6_48_55 << 16) | ((fmt4rf->ENTRY_6_16_47 >> 16) & 0xffff);
   1611             } else if (field == ENTRY_7f) {
   1612                 fldbuf[0] = ((fmt4rf->ENTRY_7_24_55 & 0xff) << 24) | fmt4rf->ENTRY_7_0_23;
   1613                 fldbuf[1] = (fmt4rf->ENTRY_7_24_55 >> 8) & 0xffffff;
   1614             }
   1615         }
   1616         break;
   1617 
   1618     case L3_DEFIP_ALPM_ROUTE_FMT5_FULLfmt: {
   1619             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT5_FULL_t *fmt5rf = (void *)entbuf;
   1620             if (field == ENTRY_0f) {
   1621                 fldbuf[0] = fmt5rf->ENTRY_0_0_31;
   1622                 fldbuf[1] = fmt5rf->ENTRY_0_32_63;
   1623             } else if (field == ENTRY_1f) {
   1624                 fldbuf[0] = fmt5rf->ENTRY_1_0_31;
   1625                 fldbuf[1] = fmt5rf->ENTRY_1_32_63;
   1626             } else if (field == ENTRY_2f) {
   1627                 fldbuf[0] = fmt5rf->ENTRY_2_0_31;
   1628                 fldbuf[1] = fmt5rf->ENTRY_2_32_63;
   1629             } else if (field == ENTRY_3f) {
   1630                 fldbuf[0] = fmt5rf->ENTRY_3_0_31;
   1631                 fldbuf[1] = fmt5rf->ENTRY_3_32_63;
   1632             } else if (field == ENTRY_4f) {
   1633                 fldbuf[0] = fmt5rf->ENTRY_4_0_31;
   1634                 fldbuf[1] = fmt5rf->ENTRY_4_32_63;
   1635             } else if (field == ENTRY_5f) {
   1636                 fldbuf[0] = fmt5rf->ENTRY_5_0_31;
   1637                 fldbuf[1] = fmt5rf->ENTRY_5_32_63;
   1638             } else if (field == ENTRY_6f) {
   1639                 fldbuf[0] = fmt5rf->ENTRY_6_0_31;
   1640                 fldbuf[1] = fmt5rf->ENTRY_6_32_63;
   1641             }
   1642         }
   1643         break;
   1644 
   1645     case L3_DEFIP_ALPM_ROUTE_FMT9_FULLfmt: {
   1646             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT9_FULL_t *fmt9rf = (void *)entbuf;
   1647             if (field == ENTRY_0f) {
   1648                 fldbuf[0] = fmt9rf->ENTRY_0_0_31;
   1649                 fldbuf[1] = fmt9rf->ENTRY_0_32_63;
   1650                 fldbuf[2] = fmt9rf->ENTRY_0_64_95;
   1651                 fldbuf[3] = fmt9rf->ENTRY_0_96_127;
   1652                 fldbuf[4] = fmt9rf->ENTRY_0_128_151;
   1653             } else if (field == ENTRY_1f) {
   1654                 fldbuf[0] = ((fmt9rf->ENTRY_1_8_39 & 0xffffff) << 8) | fmt9rf->ENTRY_1_0_7;
   1655                 fldbuf[1] = ((fmt9rf->ENTRY_1_40_71 & 0xffffff) << 8) | ((fmt9rf->ENTRY_1_8_39 << 24) & 0xff);
   1656                 fldbuf[2] = ((fmt9rf->ENTRY_1_72_103 & 0xffffff) << 8) | ((fmt9rf->ENTRY_1_40_71 << 24) & 0xff);
   1657                 fldbuf[3] = ((fmt9rf->ENTRY_1_104_135 & 0xffffff) << 8) | ((fmt9rf->ENTRY_1_72_103 << 24) & 0xff);
   1658                 fldbuf[4] = (fmt9rf->ENTRY_1_136_151 << 8) | ((fmt9rf->ENTRY_1_104_135 << 24) & 0xff);
   1659             } else if (field == ENTRY_2f) {
   1660                 fldbuf[0] = ((fmt9rf->ENTRY_2_16_47 & 0xffff) << 16) | fmt9rf->ENTRY_2_0_15;
   1661                 fldbuf[1] = ((fmt9rf->ENTRY_2_48_79 & 0xffff) << 16) | ((fmt9rf->ENTRY_2_16_47 << 16) & 0xffff);
   1662                 fldbuf[2] = ((fmt9rf->ENTRY_2_80_111 & 0xffff) << 16) | ((fmt9rf->ENTRY_2_48_79 << 16) & 0xffff);
   1663                 fldbuf[3] = ((fmt9rf->ENTRY_2_112_143 & 0xffff) << 16) | ((fmt9rf->ENTRY_2_80_111 << 16) & 0xffff);
   1664                 fldbuf[4] = (fmt9rf->ENTRY_2_144_151 << 16) | ((fmt9rf->ENTRY_2_112_143 << 16) & 0xffff);
   1665             }
   1666         }
   1667         break;
   1668 
   1669     case L3_DEFIP_ALPM_ROUTE_FMT12_FULLfmt: {
   1670             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT12_FULL_t *fmt12rf = (void *)entbuf;
   1671             if (field == ENTRY_0f) {
   1672                 fldbuf[0] = fmt12rf->ENTRY_0_0_31;
   1673                 fldbuf[1] = fmt12rf->ENTRY_0_32_63;
   1674                 fldbuf[2] = fmt12rf->ENTRY_0_64_95;
   1675                 fldbuf[3] = fmt12rf->ENTRY_0_96_127;
   1676                 fldbuf[4] = fmt12rf->ENTRY_0_128_159;
   1677                 fldbuf[5] = fmt12rf->ENTRY_0_160_175;
   1678             } else if (field == ENTRY_1f) {
   1679                 fldbuf[0] = ((fmt12rf->ENTRY_1_16_47 & 0xffff) >> 16) | fmt12rf->ENTRY_1_0_15;
   1680                 fldbuf[1] = ((fmt12rf->ENTRY_1_48_79 & 0xffff) >> 16) | ((fmt12rf->ENTRY_1_16_47 >> 16) & 0xffff);
   1681                 fldbuf[2] = ((fmt12rf->ENTRY_1_80_111 & 0xffff) >> 16) | ((fmt12rf->ENTRY_1_48_79 >> 16) & 0xffff);
   1682                 fldbuf[3] = ((fmt12rf->ENTRY_1_112_143 & 0xffff) >> 16) | ((fmt12rf->ENTRY_1_80_111 >> 16) & 0xffff);
   1683                 fldbuf[4] = ((fmt12rf->ENTRY_1_144_175 & 0xffff) >> 16) | ((fmt12rf->ENTRY_1_112_143 >> 16) & 0xffff);
   1684                 fldbuf[5] = (fmt12rf->ENTRY_1_144_175 >> 16) & 0xffff;
   1685             }
   1686         }
   1687         break;
   1688 
   1689     default:
   1690         assert(0);
   1691         break;
   1692     }
   1693 }
   1694 
   1695 static void
   1696 th3_format_field_set(int u, soc_format_t format, uint32 *entbuf, soc_field_t field, uint32 *fldbuf)
   1697 {
   1698     switch (format) {
   1699     /* PIVOT format */
   1700     case L3_DEFIP_ALPM_PIVOT_FMT1fmt: {
   1701             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT1_t *fmt1 = (void *)entbuf;
   1702             if (field == PREFIXf) {
   1703                 fmt1->PREFIX = fldbuf[0];
   1704             } else if (field == ASSOC_DATAf) {
   1705                 fmt1->ASSOC_DATA = fldbuf[0];
   1706             } else if (field == ALPM2_DATAf) {
   1707                 fmt1->ALPM2_DATA_0_7 = fldbuf[0] & 0xff;
   1708                 fmt1->ALPM2_DATA_8_39 = ((fldbuf[1] & 0xff) << 24) | ((fldbuf[0] >> 8) & 0xffffff);
   1709                 fmt1->ALPM2_DATA_40_55 = (fldbuf[1] >> 8) & 0xffff;
   1710             }
   1711         }
   1712         break;
   1713     case L3_DEFIP_ALPM_PIVOT_FMT2fmt: {
   1714             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT2_t *fmt2 = (void *)entbuf;
   1715             if (field == PREFIXf) {
   1716                 fmt2->PREFIX = fldbuf[0];
   1717             } else if (field == ASSOC_DATAf) {
   1718                 fmt2->ASSOC_DATA_0_7 = fldbuf[0] & 0xff;
   1719                 fmt2->ASSOC_DATA_8_15 = (fldbuf[0] >> 8) & 0xff;
   1720             } else if (field == ALPM2_DATAf) {
   1721                 fmt2->ALPM2_DATA_0_23 = fldbuf[0] & 0xffffff;
   1722                 fmt2->ALPM2_DATA_24_55 = ((fldbuf[1] & 0xffffff) << 8) | ((fldbuf[0] >> 24) & 0xff);
   1723             }
   1724         }
   1725         break;
   1726     case L3_DEFIP_ALPM_PIVOT_FMT3fmt: {
   1727             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT3_t *fmt3 = (void *)entbuf;
   1728             if (field == PREFIXf) {
   1729                 fmt3->PREFIX_0_31 = fldbuf[0];
   1730                 fmt3->PREFIX_32_47 = fldbuf[1] & 0xffff;
   1731             } else if (field == ASSOC_DATAf) {
   1732                 fmt3->ASSOC_DATA = fldbuf[0];
   1733             } else if (field == ALPM2_DATAf) {
   1734                 fmt3->ALPM2_DATA_0_31 = fldbuf[0];
   1735                 fmt3->ALPM2_DATA_32_55 = fldbuf[1] & 0xffffff;
   1736             }
   1737         }
   1738         break;
   1739     case L3_DEFIP_ALPM_PIVOT_FMT4fmt: {
   1740             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT4_t *fmt4 = (void *)entbuf;
   1741             if (field == PREFIXf) {
   1742                 fmt4->PREFIX_0_31 = fldbuf[0];
   1743                 fmt4->PREFIX_32_63 = fldbuf[1];
   1744                 fmt4->PREFIX_64_87 = fldbuf[2] & 0xffffff;
   1745             } else if (field == ASSOC_DATAf) {
   1746                 fmt4->ASSOC_DATA_0_7 = fldbuf[0] & 0xff;
   1747                 fmt4->ASSOC_DATA_8_15 = (fldbuf[0] >> 8) & 0xff;
   1748             } else if (field == ALPM2_DATAf) {
   1749                 fmt4->ALPM2_DATA_0_23 = fldbuf[0] & 0xffffff;
   1750                 fmt4->ALPM2_DATA_24_55 = ((fldbuf[1] & 0xffffff) << 8) | ((fldbuf[0] >> 24) & 0xff);
   1751             }
   1752         }
   1753         break;
   1754     case L3_DEFIP_ALPM_PIVOT_FMT5fmt: {
   1755             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT5_t *fmt5 = (void *)entbuf;
   1756             if (field == PREFIXf) {
   1757                 fmt5->PREFIX_0_31 = fldbuf[0];
   1758                 fmt5->PREFIX_32_63 = fldbuf[1];
   1759                 fmt5->PREFIX_64_95 = fldbuf[2];
   1760                 fmt5->PREFIX_96_127 = fldbuf[3];
   1761                 fmt5->PREFIX_128 = fldbuf[4] & 0x1;
   1762             } else if (field == ASSOC_DATAf) {
   1763                 fmt5->ASSOC_DATA = fldbuf[0];
   1764             } else if (field == ALPM2_DATAf) {
   1765                 fmt5->ALPM2_DATA_0_7 = fldbuf[0] & 0xff;
   1766                 fmt5->ALPM2_DATA_8_39 = ((fldbuf[1] & 0xff) << 24) | ((fldbuf[0] >> 8) & 0xffffff);
   1767                 fmt5->ALPM2_DATA_40_55 = (fldbuf[1] >> 8) & 0xffff;
   1768             }
   1769         }
   1770         break;
   1771     case L3_DEFIP_ALPM_PIVOT_FMT6fmt: {
   1772             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT6_t *fmt6 = (void *)entbuf;
   1773             if (field == PREFIXf) {
   1774                 fmt6->PREFIX = fldbuf[0];
   1775             } else if (field == ASSOC_DATAf) {
   1776                 fmt6->ASSOC_DATA_0_13 = fldbuf[0] & 0x3fff;
   1777                 fmt6->ASSOC_DATA_14_45 = ((fldbuf[1] & 0x3fff) << 18) | ((fldbuf[0] >> 14) & 0x3ffff);
   1778             } else if (field == ALPM2_DATAf) {
   1779                 fmt6->ALPM2_DATA_0_31 = fldbuf[0];
   1780                 fmt6->ALPM2_DATA_32_55 = fldbuf[1] & 0xffffff;
   1781             }
   1782         }
   1783         break;
   1784     case L3_DEFIP_ALPM_PIVOT_FMT7fmt: {
   1785             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT7_t *fmt7 = (void *)entbuf;
   1786             if (field == PREFIXf) {
   1787                 fmt7->PREFIX_0_31 = fldbuf[0];
   1788                 fmt7->PREFIX_32_57 = fldbuf[1] & 0xffffff;
   1789             } else if (field == ASSOC_DATAf) {
   1790                 fmt7->ASSOC_DATA_0_5 = fldbuf[0] & 0x3f;
   1791                 fmt7->ASSOC_DATA_6_37 = ((fldbuf[1] & 0x3f) << 26) | ((fldbuf[0] >> 6) & 0x3ffffff);
   1792             } else if (field == ALPM2_DATAf) {
   1793                 fmt7->ALPM2_DATA_0_23 = fldbuf[0] & 0xffffff;
   1794                 fmt7->ALPM2_DATA_24_55 = ((fldbuf[1] & 0xffffff) << 8) | ((fldbuf[0] >> 24) & 0xff);
   1795             }
   1796         }
   1797         break;
   1798     case L3_DEFIP_ALPM_PIVOT_FMT8fmt: {
   1799             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT8_t *fmt8 = (void *)entbuf;
   1800             if (field == PREFIXf) {
   1801                 fmt8->PREFIX_0_31 = fldbuf[0];
   1802                 fmt8->PREFIX_32_63 = fldbuf[1];
   1803                 fmt8->PREFIX_64_95 = fldbuf[2];
   1804                 fmt8->PREFIX_96_127 = fldbuf[3];
   1805                 fmt8->PREFIX_128 = fldbuf[4] & 0x1;
   1806             } else if (field == ASSOC_DATAf) {
   1807                 fmt8->ASSOC_DATA_0_29 = fldbuf[0] & 0x3fffffff;
   1808                 fmt8->ASSOC_DATA_30_45 = ((fldbuf[1] & 0x3fff) << 2) | ((fldbuf[0] >> 30) & 0x3);
   1809             } else if (field == ALPM2_DATAf) {
   1810                 fmt8->ALPM2_DATA_0_15 = fldbuf[0] & 0xffff;
   1811                 fmt8->ALPM2_DATA_16_47 = ((fldbuf[1] & 0xffff) << 16) | ((fldbuf[0] >> 16) & 0xffff);
   1812                 fmt8->ALPM2_DATA_48_55 = (fldbuf[1] >> 16) & 0xff;
   1813             }
   1814         }
   1815         break;
   1816 
   1817     /* ROUTE format */
   1818     case L3_DEFIP_ALPM_ROUTE_FMT1fmt: {
   1819             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT1_t *fmt1 = (void *)entbuf;
   1820             if (field == PREFIXf) {
   1821                 fmt1->PREFIX = fldbuf[0] & 0xffff;
   1822             } else if (field == ASSOC_DATAf) {
   1823                 fmt1->ASSOC_DATA = fldbuf[0] & 0xffff;
   1824             }
   1825         }
   1826         break;
   1827     case L3_DEFIP_ALPM_ROUTE_FMT2fmt: {
   1828             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT2_t *fmt2 = (void *)entbuf;
   1829             if (field == PREFIXf) {
   1830                 fmt2->PREFIX = fldbuf[0] & 0xffffff;
   1831             } else if (field == ASSOC_DATAf) {
   1832                 fmt2->ASSOC_DATA_0_7 = fldbuf[0] & 0xff;
   1833                 fmt2->ASSOC_DATA_8_15 = (fldbuf[0] >> 8) & 0xff;
   1834             }
   1835         }
   1836         break;
   1837     case L3_DEFIP_ALPM_ROUTE_FMT3fmt: {
   1838             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT3_t *fmt3 = (void *)entbuf;
   1839             if (field == PREFIXf) {
   1840                 fmt3->PREFIX = fldbuf[0];
   1841             } else if (field == ASSOC_DATAf) {
   1842                 fmt3->ASSOC_DATA = fldbuf[0] & 0xffff;
   1843             }
   1844         }
   1845         break;
   1846     case L3_DEFIP_ALPM_ROUTE_FMT4fmt: {
   1847             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT4_t *fmt4 = (void *)entbuf;
   1848             if (field == PREFIXf) {
   1849                 fmt4->PREFIX_0_31 = fldbuf[0];
   1850                 fmt4->PREFIX_32_39 = fldbuf[1] & 0xff;
   1851             } else if (field == ASSOC_DATAf) {
   1852                 fmt4->ASSOC_DATA = fldbuf[0] & 0xffff;
   1853             }
   1854         }
   1855         break;
   1856     case L3_DEFIP_ALPM_ROUTE_FMT5fmt: {
   1857             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT5_t *fmt5 = (void *)entbuf;
   1858             if (field == PREFIXf) {
   1859                 fmt5->PREFIX_0_31 = fldbuf[0];
   1860                 fmt5->PREFIX_32_47 = fldbuf[1] & 0xffff;
   1861             } else if (field == ASSOC_DATAf) {
   1862                 fmt5->ASSOC_DATA = fldbuf[0] & 0xffff;
   1863             }
   1864         }
   1865         break;
   1866     case L3_DEFIP_ALPM_ROUTE_FMT6fmt: {
   1867             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT6_t *fmt6 = (void *)entbuf;
   1868             if (field == PREFIXf) {
   1869                 fmt6->PREFIX_0_31 = fldbuf[0];
   1870                 fmt6->PREFIX_32_63 = fldbuf[1];
   1871             } else if (field == ASSOC_DATAf) {
   1872                 fmt6->ASSOC_DATA = fldbuf[0] & 0xffff;
   1873             }
   1874         }
   1875         break;
   1876     case L3_DEFIP_ALPM_ROUTE_FMT7fmt: {
   1877             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT7_t *fmt7 = (void *)entbuf;
   1878             if (field == PREFIXf) {
   1879                 fmt7->PREFIX_0_31 = fldbuf[0];
   1880                 fmt7->PREFIX_32_63 = fldbuf[1];
   1881                 fmt7->PREFIX_64_79 = fldbuf[2] & 0xffff;
   1882             } else if (field == ASSOC_DATAf) {
   1883                 fmt7->ASSOC_DATA = fldbuf[0] & 0xffff;
   1884             }
   1885         }
   1886         break;
   1887     case L3_DEFIP_ALPM_ROUTE_FMT8fmt: {
   1888             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT8_t *fmt8 = (void *)entbuf;
   1889             if (field == PREFIXf) {
   1890                 fmt8->PREFIX_0_31 = fldbuf[0];
   1891                 fmt8->PREFIX_32_63 = fldbuf[1];
   1892                 fmt8->PREFIX_64_95 = fldbuf[2];
   1893                 fmt8->PREFIX_96_103 = fldbuf[3] & 0xff;
   1894             } else if (field == ASSOC_DATAf) {
   1895                 fmt8->ASSOC_DATA = fldbuf[0] & 0xffff;
   1896             }
   1897         }
   1898         break;
   1899     case L3_DEFIP_ALPM_ROUTE_FMT9fmt: {
   1900             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT9_t *fmt9 = (void *)entbuf;
   1901             if (field == PREFIXf) {
   1902                 fmt9->PREFIX_0_31 = fldbuf[0];
   1903                 fmt9->PREFIX_32_63 = fldbuf[1];
   1904                 fmt9->PREFIX_64_95 = fldbuf[2];
   1905                 fmt9->PREFIX_96_127 = fldbuf[3];
   1906                 fmt9->PREFIX_128 = fldbuf[4] & 0x1;
   1907             } else if (field == ASSOC_DATAf) {
   1908                 fmt9->ASSOC_DATA = fldbuf[0] & 0xffff;
   1909             }
   1910         }
   1911         break;
   1912     case L3_DEFIP_ALPM_ROUTE_FMT10fmt: {
   1913             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT10_t *fmt10 = (void *)entbuf;
   1914             if (field == PREFIXf) {
   1915                 fmt10->PREFIX_0_31 = fldbuf[0];
   1916                 fmt10->PREFIX_32_33 = fldbuf[1] & 0x3;
   1917             } else if (field == ASSOC_DATAf) {
   1918                 fmt10->ASSOC_DATA_0_29 = fldbuf[0] & 0x3fffffff;
   1919                 fmt10->ASSOC_DATA_30_45 = ((fldbuf[1] & 0x3fff) << 2) | ((fldbuf[0] >> 30) & 0x3);
   1920             }
   1921         }
   1922         break;
   1923     case L3_DEFIP_ALPM_ROUTE_FMT11fmt: {
   1924             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT11_t *fmt11 = (void *)entbuf;
   1925             if (field == PREFIXf) {
   1926                 fmt11->PREFIX_0_31 = fldbuf[0];
   1927                 fmt11->PREFIX_32_63 = fldbuf[1];
   1928                 fmt11->PREFIX_64_73 = fldbuf[2] & 0x3ff;
   1929             } else if (field == ASSOC_DATAf) {
   1930                 fmt11->ASSOC_DATA_0_21 = fldbuf[0] & 0x3fffff;
   1931                 fmt11->ASSOC_DATA_22_45 = ((fldbuf[1] & 0x3fff) << 10) | ((fldbuf[0] >> 22) & 0x3ff);
   1932             }
   1933         }
   1934         break;
   1935     case L3_DEFIP_ALPM_ROUTE_FMT12fmt: {
   1936             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT12_t *fmt12 = (void *)entbuf;
   1937             if (field == PREFIXf) {
   1938                 fmt12->PREFIX_0_31 = fldbuf[0];
   1939                 fmt12->PREFIX_32_63 = fldbuf[1];
   1940                 fmt12->PREFIX_64_95 = fldbuf[2];
   1941                 fmt12->PREFIX_96_127 = fldbuf[3];
   1942                 fmt12->PREFIX_128 = fldbuf[4] & 0x1;
   1943             } else if (field == ASSOC_DATAf) {
   1944                 fmt12->ASSOC_DATA_0_29 = fldbuf[0] & 0x3fffffff;
   1945                 fmt12->ASSOC_DATA_30_45 = ((fldbuf[1] & 0x3fff) << 2) | ((fldbuf[0] >> 30) & 0x3);
   1946             }
   1947         }
   1948         break;
   1949 
   1950     /* PIVOT FULL format */
   1951     case L3_DEFIP_ALPM_PIVOT_FMT1_FULLfmt:
   1952     case L3_DEFIP_ALPM_ROUTE_FMT6_FULLfmt:
   1953     case L3_DEFIP_ALPM_ROUTE_FMT10_FULLfmt: {
   1954             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT1_FULL_t *fmt1pf = (void *)entbuf;
   1955             if (field == ENTRY_0f) {
   1956                 fmt1pf->ENTRY_0_0_31 = fldbuf[0];
   1957                 fmt1pf->ENTRY_0_32_63 = fldbuf[1];
   1958                 fmt1pf->ENTRY_0_64_79 = fldbuf[2] & 0xffff;
   1959             } else if (field == ENTRY_1f) {
   1960                 fmt1pf->ENTRY_1_0_15 = fldbuf[0] & 0xffff;
   1961                 fmt1pf->ENTRY_1_16_47 = ((fldbuf[1] & 0xffff) << 16) | ((fldbuf[0] >> 16) & 0xffff);
   1962                 fmt1pf->ENTRY_1_48_79 = ((fldbuf[2] & 0xffff) << 16) | ((fldbuf[1] >> 16) & 0xffff);
   1963             } else if (field == ENTRY_2f) {
   1964                 fmt1pf->ENTRY_2_0_31 = fldbuf[0];
   1965                 fmt1pf->ENTRY_2_32_63 = fldbuf[1];
   1966                 fmt1pf->ENTRY_2_64_79 = fldbuf[2] & 0xffff;
   1967             } else if (field == ENTRY_3f) {
   1968                 fmt1pf->ENTRY_3_0_15 = fldbuf[0] & 0xffff;
   1969                 fmt1pf->ENTRY_3_16_47 = ((fldbuf[1] & 0xffff) << 16) | ((fldbuf[0] >> 16) & 0xffff);
   1970                 fmt1pf->ENTRY_3_48_79 = ((fldbuf[2] & 0xffff) << 16) | ((fldbuf[1] >> 16) & 0xffff);
   1971             } else if (field == ENTRY_4f) {
   1972                 fmt1pf->ENTRY_4_0_31 = fldbuf[0];
   1973                 fmt1pf->ENTRY_4_32_63 = fldbuf[1];
   1974                 fmt1pf->ENTRY_4_64_79 = fldbuf[2] & 0xffff;
   1975             } else if (field == ENTRY_5f) {
   1976                 fmt1pf->ENTRY_5_0_15 = fldbuf[0] & 0xffff;
   1977                 fmt1pf->ENTRY_5_16_47 = ((fldbuf[1] & 0xffff) << 16) | ((fldbuf[0] >> 16) & 0xffff);
   1978                 fmt1pf->ENTRY_5_48_79 = ((fldbuf[2] & 0xffff) << 16) | ((fldbuf[1] >> 16) & 0xffff);
   1979             }
   1980         }
   1981         break;
   1982 
   1983     case L3_DEFIP_ALPM_PIVOT_FMT2_FULLfmt:
   1984     case L3_DEFIP_ALPM_ROUTE_FMT7_FULLfmt: {
   1985             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT2_FULL_t *fmt2pf = (void *)entbuf;
   1986             if (field == ENTRY_0f) {
   1987                 fmt2pf->ENTRY_0_0_31 = fldbuf[0];
   1988                 fmt2pf->ENTRY_0_32_63 = fldbuf[1];
   1989                 fmt2pf->ENTRY_0_64_95 = fldbuf[2];
   1990             } else if (field == ENTRY_1f) {
   1991                 fmt2pf->ENTRY_1_0_31 = fldbuf[0];
   1992                 fmt2pf->ENTRY_1_32_63 = fldbuf[1];
   1993                 fmt2pf->ENTRY_1_64_95 = fldbuf[2];
   1994             } else if (field == ENTRY_2f) {
   1995                 fmt2pf->ENTRY_2_0_31 = fldbuf[0];
   1996                 fmt2pf->ENTRY_2_32_63 = fldbuf[1];
   1997                 fmt2pf->ENTRY_2_64_95 = fldbuf[2];
   1998             } else if (field == ENTRY_3f) {
   1999                 fmt2pf->ENTRY_3_0_31 = fldbuf[0];
   2000                 fmt2pf->ENTRY_3_32_63 = fldbuf[1];
   2001                 fmt2pf->ENTRY_3_64_95 = fldbuf[2];
   2002             } else if (field == ENTRY_4f) {
   2003                 fmt2pf->ENTRY_4_0_31 = fldbuf[0];
   2004                 fmt2pf->ENTRY_4_32_63 = fldbuf[1];
   2005                 fmt2pf->ENTRY_4_64_95 = fldbuf[2];
   2006             }
   2007         }
   2008         break;
   2009 
   2010     case L3_DEFIP_ALPM_PIVOT_FMT3_FULLfmt:
   2011     case L3_DEFIP_ALPM_PIVOT_FMT6_FULLfmt:
   2012     case L3_DEFIP_ALPM_ROUTE_FMT8_FULLfmt:
   2013     case L3_DEFIP_ALPM_ROUTE_FMT11_FULLfmt: {
   2014             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT3_FULL_t *fmt3pf = (void *)entbuf;
   2015             if (field == ENTRY_0f) {
   2016                 fmt3pf->ENTRY_0_0_31 = fldbuf[0];
   2017                 fmt3pf->ENTRY_0_32_63 = fldbuf[1];
   2018                 fmt3pf->ENTRY_0_64_95 = fldbuf[2];
   2019                 fmt3pf->ENTRY_0_96_119 = fldbuf[3] & 0xffffff;
   2020             } else if (field == ENTRY_1f) {
   2021                 fmt3pf->ENTRY_1_0_7 = fldbuf[0] & 0xff;
   2022                 fmt3pf->ENTRY_1_8_39 = ((fldbuf[1] & 0xff) << 24) | ((fldbuf[0] >> 8) & 0xffffff);
   2023                 fmt3pf->ENTRY_1_40_71 = ((fldbuf[2] & 0xff) << 24) | ((fldbuf[1] >> 8) & 0xffffff);
   2024                 fmt3pf->ENTRY_1_72_103 = ((fldbuf[3] & 0xff) << 24) | ((fldbuf[2] >> 8) & 0xffffff);
   2025                 fmt3pf->ENTRY_1_104_119 = ((fldbuf[3] >> 8) & 0xffff);
   2026             } else if (field == ENTRY_2f) {
   2027                 fmt3pf->ENTRY_2_0_15 = fldbuf[0] & 0xffff;
   2028                 fmt3pf->ENTRY_2_16_47 = ((fldbuf[1] & 0xffff) << 16) | ((fldbuf[0] >> 16) & 0xffff);
   2029                 fmt3pf->ENTRY_2_48_79 = ((fldbuf[2] & 0xffff) << 16) | ((fldbuf[1] >> 16) & 0xffff);
   2030                 fmt3pf->ENTRY_2_80_111 = ((fldbuf[3] & 0xffff) << 16) | ((fldbuf[2] >> 16) & 0xffff);
   2031                 fmt3pf->ENTRY_2_112_119 = ((fldbuf[3] >> 16) & 0xff);
   2032             } else if (field == ENTRY_3f) {
   2033                 fmt3pf->ENTRY_3_0_23 = fldbuf[0] & 0xffffff;
   2034                 fmt3pf->ENTRY_3_24_55 = ((fldbuf[1] & 0xffffff) << 8) | ((fldbuf[0] >> 24) & 0xff);
   2035                 fmt3pf->ENTRY_3_56_87 = ((fldbuf[2] & 0xffffff) << 8) | ((fldbuf[1] >> 24) & 0xff);
   2036                 fmt3pf->ENTRY_3_88_119 = ((fldbuf[3] & 0xffffff) << 8) | ((fldbuf[2] >> 24) & 0xff);
   2037             }
   2038         }
   2039         break;
   2040 
   2041     case L3_DEFIP_ALPM_PIVOT_FMT4_FULLfmt:
   2042     case L3_DEFIP_ALPM_PIVOT_FMT7_FULLfmt: {
   2043             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT4_FULL_t *fmt4pf = (void *)entbuf;
   2044             if (field == ENTRY_0f) {
   2045                 fmt4pf->ENTRY_0_0_31 = fldbuf[0];
   2046                 fmt4pf->ENTRY_0_32_63 = fldbuf[1];
   2047                 fmt4pf->ENTRY_0_64_95 = fldbuf[2];
   2048                 fmt4pf->ENTRY_0_96_127 = fldbuf[3];
   2049                 fmt4pf->ENTRY_0_128_159 = fldbuf[4];
   2050             } else if (field == ENTRY_1f) {
   2051                 fmt4pf->ENTRY_1_0_31 = fldbuf[0];
   2052                 fmt4pf->ENTRY_1_32_63 = fldbuf[1];
   2053                 fmt4pf->ENTRY_1_64_95 = fldbuf[2];
   2054                 fmt4pf->ENTRY_1_96_127 = fldbuf[3];
   2055                 fmt4pf->ENTRY_1_128_159 = fldbuf[4];
   2056             } else if (field == ENTRY_2f) {
   2057                 fmt4pf->ENTRY_2_0_31 = fldbuf[0];
   2058                 fmt4pf->ENTRY_2_32_63 = fldbuf[1];
   2059                 fmt4pf->ENTRY_2_64_95 = fldbuf[2];
   2060                 fmt4pf->ENTRY_2_96_127 = fldbuf[3];
   2061                 fmt4pf->ENTRY_2_128_159 = fldbuf[4];
   2062             }
   2063         }
   2064         break;
   2065 
   2066     case L3_DEFIP_ALPM_PIVOT_FMT5_FULLfmt: {
   2067             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT5_FULL_t *fmt5pf = (void *)entbuf;
   2068             if (field == ENTRY_0f) {
   2069                 fmt5pf->ENTRY_0_0_31 = fldbuf[0];
   2070                 fmt5pf->ENTRY_0_32_63 = fldbuf[1];
   2071                 fmt5pf->ENTRY_0_64_95 = fldbuf[2];
   2072                 fmt5pf->ENTRY_0_96_127 = fldbuf[3];
   2073                 fmt5pf->ENTRY_0_128_159 = fldbuf[4];
   2074                 fmt5pf->ENTRY_0_160_191 = fldbuf[5];
   2075                 fmt5pf->ENTRY_0_192_207 = fldbuf[6] & 0xffff;
   2076             } else if (field == ENTRY_1f) {
   2077                 fmt5pf->ENTRY_1_0_15 = fldbuf[0] & 0xffff;
   2078                 fmt5pf->ENTRY_1_16_47 = ((fldbuf[1] & 0xffff) << 16) | ((fldbuf[0] >> 16) & 0xffff);
   2079                 fmt5pf->ENTRY_1_48_79 = ((fldbuf[2] & 0xffff) << 16) | ((fldbuf[1] >> 16) & 0xffff);
   2080                 fmt5pf->ENTRY_1_80_111 = ((fldbuf[3] & 0xffff) << 16) | ((fldbuf[2] >> 16) & 0xffff);
   2081                 fmt5pf->ENTRY_1_112_143 = ((fldbuf[4] & 0xffff) << 16) | ((fldbuf[3] >> 16) & 0xffff);
   2082                 fmt5pf->ENTRY_1_144_175 = ((fldbuf[5] & 0xffff) << 16) | ((fldbuf[4] >> 16) & 0xffff);
   2083                 fmt5pf->ENTRY_1_176_207 = ((fldbuf[6] & 0xffff) << 16) | ((fldbuf[5] >> 16) & 0xffff);
   2084             }
   2085         }
   2086         break;
   2087 
   2088     case L3_DEFIP_ALPM_PIVOT_FMT8_FULLfmt: {
   2089             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT8_FULL_t *fmt8pf = (void *)entbuf;
   2090             if (field == ENTRY_0f) {
   2091                 fmt8pf->ENTRY_0_0_31 = fldbuf[0];
   2092                 fmt8pf->ENTRY_0_32_63 = fldbuf[1];
   2093                 fmt8pf->ENTRY_0_64_95 = fldbuf[2];
   2094                 fmt8pf->ENTRY_0_96_127 = fldbuf[3];
   2095                 fmt8pf->ENTRY_0_128_159 = fldbuf[4];
   2096                 fmt8pf->ENTRY_0_160_191 = fldbuf[5];
   2097                 fmt8pf->ENTRY_0_192_223 = fldbuf[6];
   2098                 fmt8pf->ENTRY_0_224_231 = fldbuf[7] & 0xff;
   2099             } else if (field == ENTRY_1f) {
   2100                 fmt8pf->ENTRY_1_0_23 = fldbuf[0] & 0xffffff;
   2101                 fmt8pf->ENTRY_1_24_55 = ((fldbuf[1] & 0xffffff) << 8) | ((fldbuf[0] >> 24) & 0xff);
   2102                 fmt8pf->ENTRY_1_56_87 = ((fldbuf[2] & 0xffffff) << 8) | ((fldbuf[1] >> 24) & 0xff);
   2103                 fmt8pf->ENTRY_1_88_119 = ((fldbuf[3] & 0xffffff) << 8) | ((fldbuf[2] >> 24) & 0xff);
   2104                 fmt8pf->ENTRY_1_120_151 = ((fldbuf[4] & 0xffffff) << 8) | ((fldbuf[3] >> 24) & 0xff);
   2105                 fmt8pf->ENTRY_1_152_183 = ((fldbuf[5] & 0xffffff) << 8) | ((fldbuf[4] >> 24) & 0xff);
   2106                 fmt8pf->ENTRY_1_184_215 = ((fldbuf[6] & 0xffffff) << 8) | ((fldbuf[5] >> 24) & 0xff);
   2107                 fmt8pf->ENTRY_1_216_231 = ((fldbuf[7] & 0xff) << 8) | ((fldbuf[6] >> 24) & 0xff);
   2108             }
   2109         }
   2110         break;
   2111 
   2112     /* ROUTE FULL fmt */
   2113     case L3_DEFIP_ALPM_ROUTE_FMT1_FULLfmt: {
   2114             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT1_FULL_t *fmt1rf = (void *)entbuf;
   2115             if (field == ENTRY_0f) {
   2116                 fmt1rf->ENTRY_0 = fldbuf[0];
   2117             } else if (field == ENTRY_1f) {
   2118                 fmt1rf->ENTRY_1 = fldbuf[0];
   2119             } else if (field == ENTRY_2f) {
   2120                 fmt1rf->ENTRY_2 = fldbuf[0];
   2121             } else if (field == ENTRY_3f) {
   2122                 fmt1rf->ENTRY_3 = fldbuf[0];
   2123             } else if (field == ENTRY_4f) {
   2124                 fmt1rf->ENTRY_4 = fldbuf[0];
   2125             } else if (field == ENTRY_5f) {
   2126                 fmt1rf->ENTRY_5 = fldbuf[0];
   2127             } else if (field == ENTRY_6f) {
   2128                 fmt1rf->ENTRY_6 = fldbuf[0];
   2129             } else if (field == ENTRY_7f) {
   2130                 fmt1rf->ENTRY_7 = fldbuf[0];
   2131             } else if (field == ENTRY_8f) {
   2132                 fmt1rf->ENTRY_8 = fldbuf[0];
   2133             } else if (field == ENTRY_9f) {
   2134                 fmt1rf->ENTRY_9 = fldbuf[0];
   2135             } else if (field == ENTRY_10f) {
   2136                 fmt1rf->ENTRY_10 = fldbuf[0];
   2137             } else if (field == ENTRY_11f) {
   2138                 fmt1rf->ENTRY_11 = fldbuf[0];
   2139             } else if (field == ENTRY_12f) {
   2140                 fmt1rf->ENTRY_12 = fldbuf[0];
   2141             } else if (field == ENTRY_13f) {
   2142                 fmt1rf->ENTRY_13 = fldbuf[0];
   2143             } else if (field == ENTRY_14f) {
   2144                 fmt1rf->ENTRY_14 = fldbuf[0];
   2145             }
   2146         }
   2147         break;
   2148 
   2149     case L3_DEFIP_ALPM_ROUTE_FMT2_FULLfmt: {
   2150             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT2_FULL_t *fmt2rf = (void *)entbuf;
   2151             if (field == ENTRY_0f) {
   2152                 fmt2rf->ENTRY_0_0_31 = fldbuf[0];
   2153                 fmt2rf->ENTRY_0_32_39 = fldbuf[1] & 0xff;
   2154             } else if (field == ENTRY_1f) {
   2155                 fmt2rf->ENTRY_1_0_23 = fldbuf[0] & 0xffffff;
   2156                 fmt2rf->ENTRY_1_24_39 = ((fldbuf[1] & 0xff) << 8) | ((fldbuf[0] >> 24) & 0xff);
   2157             } else if (field == ENTRY_2f) {
   2158                 fmt2rf->ENTRY_2_0_15 = fldbuf[0] & 0xffff;
   2159                 fmt2rf->ENTRY_2_16_39 = ((fldbuf[1] & 0xff) << 16) | ((fldbuf[0] >> 16) & 0xffff);
   2160             } else if (field == ENTRY_3f) {
   2161                 fmt2rf->ENTRY_3_0_7 = fldbuf[0] & 0xff;
   2162                 fmt2rf->ENTRY_3_8_39 = ((fldbuf[1] & 0xff) << 24) | ((fldbuf[0] >> 8) & 0xffffff);
   2163             } else if (field == ENTRY_4f) {
   2164                 fmt2rf->ENTRY_4_0_31 = fldbuf[0];
   2165                 fmt2rf->ENTRY_4_32_39 = fldbuf[1] & 0xff;
   2166             } else if (field == ENTRY_5f) {
   2167                 fmt2rf->ENTRY_5_0_23 = fldbuf[0] & 0xffffff;
   2168                 fmt2rf->ENTRY_5_24_39 = ((fldbuf[1] & 0xff) << 8) | ((fldbuf[0] >> 24) & 0xff);
   2169             } else if (field == ENTRY_6f) {
   2170                 fmt2rf->ENTRY_6_0_15 = fldbuf[0] & 0xffff;
   2171                 fmt2rf->ENTRY_6_16_39 = ((fldbuf[1] & 0xff) << 16) | ((fldbuf[0] >> 16) & 0xffff);
   2172             } else if (field == ENTRY_7f) {
   2173                 fmt2rf->ENTRY_7_0_7 = fldbuf[0] & 0xff;
   2174                 fmt2rf->ENTRY_7_8_39 = ((fldbuf[1] & 0xff) << 24) | ((fldbuf[0] >> 8) & 0xffffff);
   2175             } else if (field == ENTRY_8f) {
   2176                 fmt2rf->ENTRY_8_0_31 = fldbuf[0];
   2177                 fmt2rf->ENTRY_8_32_39 = fldbuf[1] & 0xff;
   2178             } else if (field == ENTRY_9f) {
   2179                 fmt2rf->ENTRY_9_0_23 = fldbuf[0] & 0xffffff;
   2180                 fmt2rf->ENTRY_9_24_39 = ((fldbuf[1] & 0xff) << 8) | ((fldbuf[0] >> 24) & 0xff);
   2181             } else if (field == ENTRY_10f) {
   2182                 fmt2rf->ENTRY_10_0_15 = fldbuf[0] & 0xffff;
   2183                 fmt2rf->ENTRY_10_16_39 = ((fldbuf[1] & 0xff) << 16) | ((fldbuf[0] >> 16) & 0xffff);
   2184             } else if (field == ENTRY_11f) {
   2185                 fmt2rf->ENTRY_11_0_7 = fldbuf[0] & 0xff;
   2186                 fmt2rf->ENTRY_11_8_39 = ((fldbuf[1] & 0xff) << 24) | ((fldbuf[0] >> 8) & 0xffffff);
   2187             }
   2188         }
   2189         break;
   2190 
   2191     case L3_DEFIP_ALPM_ROUTE_FMT3_FULLfmt: {
   2192             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT3_FULL_t *fmt3rf = (void *)entbuf;
   2193             if (field == ENTRY_0f) {
   2194                 fmt3rf->ENTRY_0_0_31 = fldbuf[0];
   2195                 fmt3rf->ENTRY_0_32_47 = fldbuf[1] & 0xff;
   2196             } else if (field == ENTRY_1f) {
   2197                 fmt3rf->ENTRY_1_0_15 = fldbuf[0] & 0xffff;
   2198                 fmt3rf->ENTRY_1_16_47 = ((fldbuf[1] & 0xffff) << 16) | ((fldbuf[0] >> 16) & 0xffff);
   2199             } else if (field == ENTRY_2f) {
   2200                 fmt3rf->ENTRY_2_0_31 = fldbuf[0];
   2201                 fmt3rf->ENTRY_2_32_47 = fldbuf[1] & 0xff;
   2202             } else if (field == ENTRY_3f) {
   2203                 fmt3rf->ENTRY_3_0_15 = fldbuf[0] & 0xffff;
   2204                 fmt3rf->ENTRY_3_16_47 = ((fldbuf[1] & 0xffff) << 16) | ((fldbuf[0] >> 16) & 0xffff);
   2205             } else if (field == ENTRY_4f) {
   2206                 fmt3rf->ENTRY_4_0_31 = fldbuf[0];
   2207                 fmt3rf->ENTRY_4_32_47 = fldbuf[1] & 0xff;
   2208             } else if (field == ENTRY_5f) {
   2209                 fmt3rf->ENTRY_5_0_15 = fldbuf[0] & 0xffff;
   2210                 fmt3rf->ENTRY_5_16_47 = ((fldbuf[1] & 0xffff) << 16) | ((fldbuf[0] >> 16) & 0xffff);
   2211             } else if (field == ENTRY_6f) {
   2212                 fmt3rf->ENTRY_6_0_31 = fldbuf[0];
   2213                 fmt3rf->ENTRY_6_32_47 = fldbuf[1] & 0xff;
   2214             } else if (field == ENTRY_7f) {
   2215                 fmt3rf->ENTRY_7_0_15 = fldbuf[0] & 0xffff;
   2216                 fmt3rf->ENTRY_7_16_47 = ((fldbuf[1] & 0xffff) << 16) | ((fldbuf[0] >> 16) & 0xffff);
   2217             } else if (field == ENTRY_8f) {
   2218                 fmt3rf->ENTRY_8_0_31 = fldbuf[0];
   2219                 fmt3rf->ENTRY_8_32_47 = fldbuf[1] & 0xff;
   2220             } else if (field == ENTRY_9f) {
   2221                 fmt3rf->ENTRY_9_0_15 = fldbuf[0] & 0xffff;
   2222                 fmt3rf->ENTRY_9_16_47 = ((fldbuf[1] & 0xffff) << 16) | ((fldbuf[0] >> 16) & 0xffff);
   2223             }
   2224         }
   2225         break;
   2226 
   2227     case L3_DEFIP_ALPM_ROUTE_FMT4_FULLfmt: {
   2228             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT4_FULL_t *fmt4rf = (void *)entbuf;
   2229             if (field == ENTRY_0f) {
   2230                 fmt4rf->ENTRY_0_0_31 = fldbuf[0];
   2231                 fmt4rf->ENTRY_0_32_55 = fldbuf[1] & 0xffffff;
   2232             } else if (field == ENTRY_1f) {
   2233                 fmt4rf->ENTRY_1_0_7 = fldbuf[0] & 0xff;
   2234                 fmt4rf->ENTRY_1_8_39 = ((fldbuf[1] & 0xff) << 24) | ((fldbuf[0] >> 8) & 0xffffff);
   2235                 fmt4rf->ENTRY_1_40_55 = ((fldbuf[1] >> 8) & 0xffff);
   2236             } else if (field == ENTRY_2f) {
   2237                 fmt4rf->ENTRY_2_0_15 = fldbuf[0] & 0xffff;
   2238                 fmt4rf->ENTRY_2_16_47 = ((fldbuf[1] & 0xffff) << 16) | ((fldbuf[0] >> 16) & 0xffff);
   2239                 fmt4rf->ENTRY_2_48_55 = (fldbuf[1] >> 16) & 0xff;
   2240             } else if (field == ENTRY_3f) {
   2241                 fmt4rf->ENTRY_3_0_23 = fldbuf[0] & 0xffffff;
   2242                 fmt4rf->ENTRY_3_24_55 = ((fldbuf[1] & 0xffffff) << 8) | ((fldbuf[0] >> 24) & 0xff);
   2243             } else if (field == ENTRY_4f) {
   2244                 fmt4rf->ENTRY_4_0_31 = fldbuf[0];
   2245                 fmt4rf->ENTRY_4_32_55 = fldbuf[1] & 0xffffff;
   2246             } else if (field == ENTRY_5f) {
   2247                 fmt4rf->ENTRY_5_0_7 = fldbuf[0] & 0xff;
   2248                 fmt4rf->ENTRY_5_8_39 = ((fldbuf[1] & 0xff) << 24) | ((fldbuf[0] >> 8) & 0xffffff);
   2249                 fmt4rf->ENTRY_5_40_55 = ((fldbuf[1] >> 8) & 0xffff);
   2250             } else if (field == ENTRY_6f) {
   2251                 fmt4rf->ENTRY_6_0_15 = fldbuf[0] & 0xffff;
   2252                 fmt4rf->ENTRY_6_16_47 = ((fldbuf[1] & 0xffff) << 16) | ((fldbuf[0] >> 16) & 0xffff);
   2253                 fmt4rf->ENTRY_6_48_55 = (fldbuf[1] >> 16) & 0xff;
   2254             } else if (field == ENTRY_7f) {
   2255                 fmt4rf->ENTRY_7_0_23 = fldbuf[0] & 0xffffff;
   2256                 fmt4rf->ENTRY_7_24_55 = ((fldbuf[1] & 0xffffff) << 8) | ((fldbuf[0] >> 24) & 0xff);
   2257             }
   2258         }
   2259         break;
   2260 
   2261     case L3_DEFIP_ALPM_ROUTE_FMT5_FULLfmt: {
   2262             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT5_FULL_t *fmt5rf = (void *)entbuf;
   2263             if (field == ENTRY_0f) {
   2264                 fmt5rf->ENTRY_0_0_31 = fldbuf[0];
   2265                 fmt5rf->ENTRY_0_32_63 = fldbuf[1];
   2266             } else if (field == ENTRY_1f) {
   2267                 fmt5rf->ENTRY_1_0_31 = fldbuf[0];
   2268                 fmt5rf->ENTRY_1_32_63 = fldbuf[1];
   2269             } else if (field == ENTRY_2f) {
   2270                 fmt5rf->ENTRY_2_0_31 = fldbuf[0];
   2271                 fmt5rf->ENTRY_2_32_63 = fldbuf[1];
   2272             } else if (field == ENTRY_3f) {
   2273                 fmt5rf->ENTRY_3_0_31 = fldbuf[0];
   2274                 fmt5rf->ENTRY_3_32_63 = fldbuf[1];
   2275             } else if (field == ENTRY_4f) {
   2276                 fmt5rf->ENTRY_4_0_31 = fldbuf[0];
   2277                 fmt5rf->ENTRY_4_32_63 = fldbuf[1];
   2278             } else if (field == ENTRY_5f) {
   2279                 fmt5rf->ENTRY_5_0_31 = fldbuf[0];
   2280                 fmt5rf->ENTRY_5_32_63 = fldbuf[1];
   2281             } else if (field == ENTRY_6f) {
   2282                 fmt5rf->ENTRY_6_0_31 = fldbuf[0];
   2283                 fmt5rf->ENTRY_6_32_63 = fldbuf[1];
   2284             }
   2285         }
   2286         break;
   2287 
   2288     case L3_DEFIP_ALPM_ROUTE_FMT9_FULLfmt: {
   2289             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT9_FULL_t *fmt9rf = (void *)entbuf;
   2290             if (field == ENTRY_0f) {
   2291                 fmt9rf->ENTRY_0_0_31 = fldbuf[0];
   2292                 fmt9rf->ENTRY_0_32_63 = fldbuf[1];
   2293                 fmt9rf->ENTRY_0_64_95 = fldbuf[2];
   2294                 fmt9rf->ENTRY_0_96_127 = fldbuf[3];
   2295                 fmt9rf->ENTRY_0_128_151 = fldbuf[4] & 0xffffff;
   2296             } else if (field == ENTRY_1f) {
   2297                 fmt9rf->ENTRY_1_0_7 = fldbuf[0] & 0xff;
   2298                 fmt9rf->ENTRY_1_8_39 = ((fldbuf[1] & 0xff) << 24) | ((fldbuf[0] >> 8) & 0xffffff);
   2299                 fmt9rf->ENTRY_1_40_71 = ((fldbuf[2] & 0xff) << 24) | ((fldbuf[1] >> 8) & 0xffffff);
   2300                 fmt9rf->ENTRY_1_72_103 = ((fldbuf[3] & 0xff) << 24) | ((fldbuf[2] >> 8) & 0xffffff);
   2301                 fmt9rf->ENTRY_1_104_135 = ((fldbuf[4] & 0xff) << 24) | ((fldbuf[3] >> 8) & 0xffffff);
   2302                 fmt9rf->ENTRY_1_136_151 = (fldbuf[4] >> 8) & 0xffff;
   2303             } else if (field == ENTRY_2f) {
   2304                 fmt9rf->ENTRY_2_0_15 = fldbuf[0] & 0xffff;
   2305                 fmt9rf->ENTRY_2_16_47 = ((fldbuf[1] & 0xffff) << 16) | ((fldbuf[0] >> 16) & 0xffff);
   2306                 fmt9rf->ENTRY_2_48_79 = ((fldbuf[2] & 0xffff) << 16) | ((fldbuf[1] >> 16) & 0xffff);
   2307                 fmt9rf->ENTRY_2_80_111 = ((fldbuf[3] & 0xffff) << 16) | ((fldbuf[2] >> 16) & 0xffff);
   2308                 fmt9rf->ENTRY_2_112_143 = ((fldbuf[4] & 0xffff) << 16) | ((fldbuf[3] >> 16) & 0xffff);
   2309                 fmt9rf->ENTRY_2_144_151 = (fldbuf[4] >> 16) & 0xff;
   2310             }
   2311         }
   2312         break;
   2313 
   2314     case L3_DEFIP_ALPM_ROUTE_FMT12_FULLfmt: {
   2315             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT12_FULL_t *fmt12rf = (void *)entbuf;
   2316             if (field == ENTRY_0f) {
   2317                 fmt12rf->ENTRY_0_0_31 = fldbuf[0];
   2318                 fmt12rf->ENTRY_0_32_63 = fldbuf[1];
   2319                 fmt12rf->ENTRY_0_64_95 = fldbuf[2];
   2320                 fmt12rf->ENTRY_0_96_127 = fldbuf[3];
   2321                 fmt12rf->ENTRY_0_128_159 = fldbuf[4];
   2322                 fmt12rf->ENTRY_0_160_175 = fldbuf[5] & 0xffff;
   2323             } else if (field == ENTRY_1f) {
   2324                 fmt12rf->ENTRY_1_0_15 = fldbuf[0] & 0xffff;
   2325                 fmt12rf->ENTRY_1_16_47 = ((fldbuf[1] & 0xffff) << 16) | ((fldbuf[0] >> 16) & 0xffff);
   2326                 fmt12rf->ENTRY_1_48_79 = ((fldbuf[2] & 0xffff) << 16) | ((fldbuf[1] >> 16) & 0xffff);
   2327                 fmt12rf->ENTRY_1_80_111 = ((fldbuf[3] & 0xffff) << 16) | ((fldbuf[2] >> 16) & 0xffff);
   2328                 fmt12rf->ENTRY_1_112_143 = ((fldbuf[4] & 0xffff) << 16) | ((fldbuf[3] >> 16) & 0xffff);
   2329                 fmt12rf->ENTRY_1_144_175 = ((fldbuf[5] & 0xffff) << 16) | ((fldbuf[4] >> 16) & 0xffff);
   2330             }
   2331         }
   2332         break;
   2333 
   2334     default:
   2335         assert(0);
   2336         break;
   2337     }
   2338 }
   2339 #endif
   2340 
   2341 typedef struct {
   2342 #ifdef  LE_HOST
   2343     uint32  VLAN_ID:12,
   2344             __PAD0:2,
   2345             PORT_NUM:8,
   2346             COPY_TO_CPU:1,
   2347             DROP:1,
   2348             ENTRY_TYPE:2,
   2349             T:1,
   2350             __PAD1:5;
   2351 #else
   2352     uint32  __PAD1:5,
   2353             T:1,
   2354             ENTRY_TYPE:2,
   2355             DROP:1,
   2356             COPY_TO_CPU:1,
   2357             PORT_NUM:8,
   2358             __PAD0:2,
   2359             VLAN_ID:12;
   2360 #endif  /* LE_HOST */
   2361 
   2362     uint32 __WORD_PAD0;
   2363 } th3_mem_ING_L3_NEXT_HOP_t;
   2364 
   2365 typedef struct {
   2366     /* Word0: bit 0 - bit 31 */
   2367 #ifdef  LE_HOST
   2368     uint32  ENTRY_TYPE:2,
   2369             __PAD0:8,
   2370             L3__CLASS_ID:7,
   2371             __PAD1:5,
   2372             IFP_ACTIONS__L3_UC_DA_DISABLE:1,
   2373             IFP_ACTIONS__L3_UC_SA_DISABLE:1,
   2374             IFP_ACTIONS__L3_UC_TTL_DISABLE:1,
   2375             IFP_ACTIONS__L3_UC_VLAN_DISABLE:1,
   2376             __PAD2:6;
   2377 #else
   2378     uint32  __PAD2:6,
   2379             IFP_ACTIONS__L3_UC_VLAN_DISABLE:1,
   2380             IFP_ACTIONS__L3_UC_TTL_DISABLE:1,
   2381             IFP_ACTIONS__L3_UC_SA_DISABLE:1,
   2382             IFP_ACTIONS__L3_UC_DA_DISABLE:1,
   2383             __PAD1:5,
   2384             L3__CLASS_ID:7,
   2385             __PAD0:8,
   2386             ENTRY_TYPE:2;
   2387 #endif  /* LE_HOST */
   2388 
   2389     /* Word1: bit 32 - bit 63 */
   2390 #ifdef  LE_HOST
   2391     uint32  __PAD3:1,
   2392             L3__L3_UC_DA_DISABLE:1,
   2393             L3__L3_UC_SA_DISABLE:1,
   2394             L3__L3_UC_TTL_DISABLE:1,
   2395             L3__L3_UC_VLAN_DISABLE:1,
   2396             __PAD4:11,
   2397             MPLS__MAC_DA_PROFILE_INDEX:9,
   2398             __PAD5:5,
   2399             MPLS__MPLS_LABEL_0_1:2;
   2400 #else
   2401     uint32  MPLS__MPLS_LABEL_0_1:2,
   2402             __PAD5:5,
   2403             MPLS__MAC_DA_PROFILE_INDEX:9,
   2404             __PAD4:11,
   2405             L3__L3_UC_VLAN_DISABLE:1,
   2406             L3__L3_UC_TTL_DISABLE:1,
   2407             L3__L3_UC_SA_DISABLE:1,
   2408             L3__L3_UC_DA_DISABLE:1,
   2409             __PAD3:1;
   2410 #endif  /* LE_HOST */
   2411 
   2412     /* Word2: bit 64 - bit 95 */
   2413 #ifdef  LE_HOST
   2414     uint32  MPLS__MPLS_LABEL_2_19:18,
   2415             __PAD6:14;
   2416 #else
   2417     uint32  __PAD6:14,
   2418             MPLS__MPLS_LABEL_2_19:18;
   2419 #endif  /* LE_HOST */
   2420 
   2421     /* Word3 */
   2422     uint32 __WORD_PAD0;
   2423 } th3_mem_EGR_L3_NEXT_HOP_t;
   2424 
   2425 typedef struct {
   2426 #ifdef  LE_HOST
   2427     uint32  INTF_NUM:13,
   2428             __PAD0:19;
   2429 #else
   2430     uint32  __PAD0:19,
   2431             INTF_NUM:13;
   2432 #endif  /* LE_HOST */
   2433 } th3_mem_EGR_L3_NEXT_HOP_2_t;
   2434 
   2435 #endif /* _BCM_INT_ALPM_TH3_ACC_H_ */
   2436