/*
<:copyright-BRCM:2016:proprietary:standard

   Broadcom Proprietary and Confidential.(c) 2016 Broadcom
   All Rights Reserved

This program is the proprietary software of Broadcom Corporation and/or its
licensors, and may only be used, duplicated, modified or distributed pursuant
to the terms and conditions of a separate, written license agreement executed
between you and Broadcom (an "Authorized License").  Except as set forth in
an Authorized License, Broadcom grants no license (express or implied), right
to use, or waiver of any kind with respect to the Software, and Broadcom
expressly reserves all rights in and to the Software and all intellectual
property rights therein.  IF YOU HAVE NO AUTHORIZED LICENSE, THEN YOU HAVE
NO RIGHT TO USE THIS SOFTWARE IN ANY WAY, AND SHOULD IMMEDIATELY NOTIFY
BROADCOM AND DISCONTINUE ALL USE OF THE SOFTWARE.

Except as expressly set forth in the Authorized License,

1. This program, including its structure, sequence and organization,
    constitutes the valuable trade secrets of Broadcom, and you shall use
    all reasonable efforts to protect the confidentiality thereof, and to
    use this information only in connection with your use of Broadcom
    integrated circuit products.

2. TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED "AS IS"
    AND WITH ALL FAULTS AND BROADCOM MAKES NO PROMISES, REPRESENTATIONS OR
    WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE, WITH
    RESPECT TO THE SOFTWARE.  BROADCOM SPECIFICALLY DISCLAIMS ANY AND
    ALL IMPLIED WARRANTIES OF TITLE, MERCHANTABILITY, NONINFRINGEMENT,
    FITNESS FOR A PARTICULAR PURPOSE, LACK OF VIRUSES, ACCURACY OR
    COMPLETENESS, QUIET ENJOYMENT, QUIET POSSESSION OR CORRESPONDENCE
    TO DESCRIPTION. YOU ASSUME THE ENTIRE RISK ARISING OUT OF USE OR
    PERFORMANCE OF THE SOFTWARE.

3. TO THE MAXIMUM EXTENT PERMITTED BY LAW, IN NO EVENT SHALL BROADCOM OR
    ITS LICENSORS BE LIABLE FOR (i) CONSEQUENTIAL, INCIDENTAL, SPECIAL,
    INDIRECT, OR EXEMPLARY DAMAGES WHATSOEVER ARISING OUT OF OR IN ANY
    WAY RELATING TO YOUR USE OF OR INABILITY TO USE THE SOFTWARE EVEN
    IF BROADCOM HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES;
    OR (ii) ANY AMOUNT IN EXCESS OF THE AMOUNT ACTUALLY PAID FOR THE
    SOFTWARE ITSELF OR U.S. $1, WHICHEVER IS GREATER. THESE LIMITATIONS
    SHALL APPLY NOTWITHSTANDING ANY FAILURE OF ESSENTIAL PURPOSE OF ANY
    LIMITED REMEDY.
:>
*/
#include <bcmos_system.h>
#include <bcmcli.h>
#include <bcmolt_model_types.h>

#include "bcm_api_cli_helpers.h"

/* allow possibly unused descriptors to make the code easier to generate */
#ifdef __GNUC__
#define BCM_DESCR   __attribute__((unused))
#else
#define BCM_DESCR
#endif

/* Unless specified in the XML model, dynamic arrays will have this max size (in bytes, will divide by element size) */
#define DEFAULT_DYN_ARR_MAX_SIZE    2048

/* ==== Base Type Descriptors ==== */
static bcmcli_type_descr BCM_DESCR type_descr_uint8_t = { .name = "uint8_t", .base_type = BCMOLT_BASE_TYPE_ID_UNUM, .size = sizeof(uint8_t) };

static bcmcli_type_descr BCM_DESCR type_descr_uint16_t = { .name = "uint16_t", .base_type = BCMOLT_BASE_TYPE_ID_UNUM, .size = sizeof(uint16_t) };

static bcmcli_type_descr BCM_DESCR type_descr_uint32_t = { .name = "uint32_t", .base_type = BCMOLT_BASE_TYPE_ID_UNUM, .size = sizeof(uint32_t) };

static bcmcli_type_descr BCM_DESCR type_descr_uint64_t = { .name = "uint64_t", .base_type = BCMOLT_BASE_TYPE_ID_UNUM, .size = sizeof(uint64_t) };

static bcmcli_type_descr BCM_DESCR type_descr_uint8_t_hex = { .name = "uint8_t", .base_type = BCMOLT_BASE_TYPE_ID_UNUM_HEX, .size = sizeof(uint8_t) };

static bcmcli_type_descr BCM_DESCR type_descr_uint16_t_hex = { .name = "uint16_t", .base_type = BCMOLT_BASE_TYPE_ID_UNUM_HEX, .size = sizeof(uint16_t) };

static bcmcli_type_descr BCM_DESCR type_descr_uint32_t_hex = { .name = "uint32_t", .base_type = BCMOLT_BASE_TYPE_ID_UNUM_HEX, .size = sizeof(uint32_t) };

static bcmcli_type_descr BCM_DESCR type_descr_uint64_t_hex = { .name = "uint64_t", .base_type = BCMOLT_BASE_TYPE_ID_UNUM_HEX, .size = sizeof(uint64_t) };

static bcmcli_type_descr BCM_DESCR type_descr_int8_t = { .name = "int8_t", .base_type = BCMOLT_BASE_TYPE_ID_SNUM, .size = sizeof(int8_t) };

static bcmcli_type_descr BCM_DESCR type_descr_int16_t = { .name = "int16_t", .base_type = BCMOLT_BASE_TYPE_ID_SNUM, .size = sizeof(int16_t) };

static bcmcli_type_descr BCM_DESCR type_descr_int32_t = { .name = "int32_t", .base_type = BCMOLT_BASE_TYPE_ID_SNUM, .size = sizeof(int32_t) };

static bcmcli_type_descr BCM_DESCR type_descr_int64_t = { .name = "int64_t", .base_type = BCMOLT_BASE_TYPE_ID_SNUM, .size = sizeof(int64_t) };

static bcmcli_type_descr BCM_DESCR type_descr_float = { .name = "float", .base_type = BCMOLT_BASE_TYPE_ID_FLOAT, .size = sizeof(float) };

static bcmcli_type_descr BCM_DESCR type_descr_double = { .name = "double", .base_type = BCMOLT_BASE_TYPE_ID_FLOAT, .size = sizeof(double) };

static bcmcli_type_descr BCM_DESCR type_descr_bcmos_mac_address = { .name = "bcmos_mac_address", .descr = "MAC address", .base_type = BCMOLT_BASE_TYPE_ID_MAC, .size = sizeof(bcmos_mac_address) };

static bcmcli_type_descr BCM_DESCR type_descr_bcmos_ipv4_address = { .name = "bcmos_ipv4_address", .descr = "IPv4 address", .base_type = BCMOLT_BASE_TYPE_ID_IPV4, .size = sizeof(bcmos_ipv4_address) };

static bcmcli_type_descr BCM_DESCR type_descr_bcmos_bool = { .name = "bcmos_bool", .descr = "Boolean", .base_type = BCMOLT_BASE_TYPE_ID_BOOL, .size = sizeof(bcmos_bool) };

/* ==== Object Type Information ==== */
static char *object_name[] = { "ae_ni", "ae_path_ds", "ae_path_us", "channel", "debug", "device", "epon_denied_link", "epon_link", "epon_ni", "epon_onu_10g_us", "epon_onu_1g_us", "epon_path_10g_ds", "epon_path_10g_us", "epon_path_1g_ds", "epon_path_1g_us", "epon_rp", "gpio", "gpon_alloc", "gpon_gem_port", "gpon_iwf", "gpon_iwf_ds_egress_flow", "gpon_iwf_ds_ingress_flow", "gpon_iwf_mac_table", "gpon_iwf_us_flow", "gpon_ni", "gpon_onu", "gpon_trx", "log_entry", "logger", "nni", "nni_serdes", "software_error", "trx_calibration", "xgpon_alloc", "xgpon_gem_port", "xgpon_iwf", "xgpon_ni", "xgpon_onu", "xgpon_trx", "xpon_serdes" };
static char *object_descr[] = { "AE Network Interface.", "AE downstream data path.", "AE upstream data path.", "Channel", "Debug Features", "Singleton object representing the device as a whole.", "Unicast EPON link that has been denied registration for some reason. To be an object of this type you must have at least one active alarm posted against you.", "Unicast EPON link", "EPON Network Interface.", "EPON ONU 10G US", "EPON ONU interface of one or more EPON links.", "EPON 10G downstream data path.", "EPON 10G upstream data path.", "EPON 1G downstream data path.", "EPON 1G upstream data path.", "10/10, 10/1 or 1/1 DS/US pair of EPON Paths", "GPIO control", "GPON Alloc", "GPON GEM Port", "GPON IWF", "GPON IWF DS egress flow", "GPON IWF DS ingress flow", "GPON IWF MAC table", "GPON IWF US flow", "GPON network interface", "GPON ONU", "GPON TRX", "log entry", "logger", "Use for loopbacks", "NNI SERDES parameters.", "Software Error", "TRX Calibration", "XGPON Alloc", "XGPON GEM port", "XGPON IWF", "XGPON network interface", "XGPON ONU", "XGPON TRX", "PON SERDES parameters." };

/* ==== Supporting Types ==== */
bcmcli_enum_val bcmolt_activation_fail_reason_string_table[] = { { .name = "none", .val = BCMOLT_ACTIVATION_FAIL_REASON_NONE }, { .name = "ranging", .val = BCMOLT_ACTIVATION_FAIL_REASON_RANGING }, { .name = "password_authentication", .val = BCMOLT_ACTIVATION_FAIL_REASON_PASSWORD_AUTHENTICATION }, { .name = "los", .val = BCMOLT_ACTIVATION_FAIL_REASON_LOS }, { .name = "onu_alarm", .val = BCMOLT_ACTIVATION_FAIL_REASON_ONU_ALARM }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_activation_fail_reason = { .name = "bcmolt_activation_fail_reason", .descr = "activation fail reason", .size = sizeof(bcmolt_activation_fail_reason), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_activation_fail_reason_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_actual_schedulershaper_fields[] = { { .name = "actual_mbs_tq", .descr = "Actual MBS (TQ)", .offset = offsetof(bcmolt_actual_schedulershaper, actual_mbs_tq), .type = &type_descr_uint32_t }, { .name = "actual_weight_tq", .descr = "Actual Weight (TQ)", .offset = offsetof(bcmolt_actual_schedulershaper, actual_weight_tq), .type = &type_descr_uint32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_actual_schedulershaper = { .name = "bcmolt_actual_schedulershaper", .descr = "Actual Scheduler/Shaper", .size = sizeof(bcmolt_actual_schedulershaper), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_actual_schedulershaper_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_actual_schedulershaper_fields } } };
bcmcli_enum_val bcmolt_additional_bw_eligibility_string_table[] = { { .name = "none", .val = BCMOLT_ADDITIONAL_BW_ELIGIBILITY_NONE }, { .name = "non_assured", .val = BCMOLT_ADDITIONAL_BW_ELIGIBILITY_NON_ASSURED }, { .name = "best_effort", .val = BCMOLT_ADDITIONAL_BW_ELIGIBILITY_BEST_EFFORT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_additional_bw_eligibility = { .name = "bcmolt_additional_bw_eligibility", .descr = "Additional BW eligibility", .size = sizeof(bcmolt_additional_bw_eligibility), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_additional_bw_eligibility_string_table } };
bcmcli_enum_val bcmolt_ae_ni_cfg_id_string_table[] = { { .name = "mac_address", .val = BCMOLT_AE_NI_CFG_ID_MAC_ADDRESS }, { .name = "ae_ni_en", .val = BCMOLT_AE_NI_CFG_ID_AE_NI_EN }, { .name = "mtu_10g", .val = BCMOLT_AE_NI_CFG_ID_MTU_10G }, { .name = "prbs_generator", .val = BCMOLT_AE_NI_CFG_ID_PRBS_GENERATOR }, { .name = "prbs_checker", .val = BCMOLT_AE_NI_CFG_ID_PRBS_CHECKER }, { .name = "prbs_status", .val = BCMOLT_AE_NI_CFG_ID_PRBS_STATUS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_ae_ni_cfg_id = { .name = "bcmolt_ae_ni_cfg_id", .descr = "Identifiers for all properties contained in the ae_ni_cfg group.", .size = sizeof(bcmolt_ae_ni_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_ae_ni_cfg_id_string_table } };
bcmcli_enum_val bcmolt_ae_ni_en_state_string_table[] = { { .name = "disabled", .val = BCMOLT_AE_NI_EN_STATE_DISABLED }, { .name = "enabled", .val = BCMOLT_AE_NI_EN_STATE_ENABLED }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_ae_ni_en_state = { .name = "bcmolt_ae_ni_en_state", .descr = "Enable state of the AE NI.", .size = sizeof(bcmolt_ae_ni_en_state), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_ae_ni_en_state_string_table } };
bcmcli_enum_val bcmolt_ae_ni_key_id_string_table[] = { { .name = "ae_ni", .val = BCMOLT_AE_NI_KEY_ID_AE_NI }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_ae_ni_key_id = { .name = "bcmolt_ae_ni_key_id", .descr = "Identifiers for all properties contained in the ae_ni_key group.", .size = sizeof(bcmolt_ae_ni_key_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_ae_ni_key_id_string_table } };
bcmcli_enum_val bcmolt_ae_ni_set_ae_ni_en_state_id_string_table[] = { { .name = "new_state", .val = BCMOLT_AE_NI_SET_AE_NI_EN_STATE_ID_NEW_STATE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_ae_ni_set_ae_ni_en_state_id = { .name = "bcmolt_ae_ni_set_ae_ni_en_state_id", .descr = "Identifiers for all properties contained in the ae_ni_set_ae_ni_en_state group.", .size = sizeof(bcmolt_ae_ni_set_ae_ni_en_state_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_ae_ni_set_ae_ni_en_state_id_string_table } };
bcmcli_enum_val bcmolt_ae_path_ds_auto_cfg_id_string_table[] = { { .name = "stat_alarm_cleared", .val = BCMOLT_AE_PATH_DS_AUTO_CFG_ID_STAT_ALARM_CLEARED }, { .name = "stat_alarm_raised", .val = BCMOLT_AE_PATH_DS_AUTO_CFG_ID_STAT_ALARM_RAISED }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_ae_path_ds_auto_cfg_id = { .name = "bcmolt_ae_path_ds_auto_cfg_id", .descr = "Identifiers for all properties contained in the ae_path_ds_auto_cfg group.", .size = sizeof(bcmolt_ae_path_ds_auto_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_ae_path_ds_auto_cfg_id_string_table } };
bcmcli_enum_val bcmolt_ae_path_ds_key_id_string_table[] = { { .name = "ae_ni", .val = BCMOLT_AE_PATH_DS_KEY_ID_AE_NI }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_ae_path_ds_key_id = { .name = "bcmolt_ae_path_ds_key_id", .descr = "Identifiers for all properties contained in the ae_path_ds_key group.", .size = sizeof(bcmolt_ae_path_ds_key_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_ae_path_ds_key_id_string_table } };
bcmcli_enum_val bcmolt_ae_path_ds_stat_alarm_cleared_id_string_table[] = { { .name = "stat", .val = BCMOLT_AE_PATH_DS_STAT_ALARM_CLEARED_ID_STAT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_ae_path_ds_stat_alarm_cleared_id = { .name = "bcmolt_ae_path_ds_stat_alarm_cleared_id", .descr = "Identifiers for all properties contained in the ae_path_ds_stat_alarm_cleared group.", .size = sizeof(bcmolt_ae_path_ds_stat_alarm_cleared_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_ae_path_ds_stat_alarm_cleared_id_string_table } };
bcmcli_enum_val bcmolt_ae_path_ds_stat_alarm_raised_id_string_table[] = { { .name = "stat", .val = BCMOLT_AE_PATH_DS_STAT_ALARM_RAISED_ID_STAT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_ae_path_ds_stat_alarm_raised_id = { .name = "bcmolt_ae_path_ds_stat_alarm_raised_id", .descr = "Identifiers for all properties contained in the ae_path_ds_stat_alarm_raised group.", .size = sizeof(bcmolt_ae_path_ds_stat_alarm_raised_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_ae_path_ds_stat_alarm_raised_id_string_table } };
bcmcli_enum_val bcmolt_ae_path_ds_stat_cfg_id_string_table[] = { { .name = "cfg", .val = BCMOLT_AE_PATH_DS_STAT_CFG_ID_CFG }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_ae_path_ds_stat_cfg_id = { .name = "bcmolt_ae_path_ds_stat_cfg_id", .descr = "Identifiers for all properties contained in the ae_path_ds_stat_cfg group.", .size = sizeof(bcmolt_ae_path_ds_stat_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_ae_path_ds_stat_cfg_id_string_table } };
bcmcli_enum_val bcmolt_ae_path_ds_stat_id_string_table[] = { { .name = "bytes", .val = BCMOLT_AE_PATH_DS_STAT_ID_BYTES }, { .name = "frames", .val = BCMOLT_AE_PATH_DS_STAT_ID_FRAMES }, { .name = "frames_64", .val = BCMOLT_AE_PATH_DS_STAT_ID_FRAMES_64 }, { .name = "frames_65_127", .val = BCMOLT_AE_PATH_DS_STAT_ID_FRAMES_65_127 }, { .name = "frames_128_255", .val = BCMOLT_AE_PATH_DS_STAT_ID_FRAMES_128_255 }, { .name = "frames_256_511", .val = BCMOLT_AE_PATH_DS_STAT_ID_FRAMES_256_511 }, { .name = "frames_512_1023", .val = BCMOLT_AE_PATH_DS_STAT_ID_FRAMES_512_1023 }, { .name = "frames_1024_1518", .val = BCMOLT_AE_PATH_DS_STAT_ID_FRAMES_1024_1518 }, { .name = "frames_1519_2047", .val = BCMOLT_AE_PATH_DS_STAT_ID_FRAMES_1519_2047 }, { .name = "frames_2048_4095", .val = BCMOLT_AE_PATH_DS_STAT_ID_FRAMES_2048_4095 }, { .name = "frames_4096_9216", .val = BCMOLT_AE_PATH_DS_STAT_ID_FRAMES_4096_9216 }, { .name = "frames_9217_16383", .val = BCMOLT_AE_PATH_DS_STAT_ID_FRAMES_9217_16383 }, { .name = "broadcast_frames", .val = BCMOLT_AE_PATH_DS_STAT_ID_BROADCAST_FRAMES }, { .name = "data_bytes", .val = BCMOLT_AE_PATH_DS_STAT_ID_DATA_BYTES }, { .name = "multicast_frames", .val = BCMOLT_AE_PATH_DS_STAT_ID_MULTICAST_FRAMES }, { .name = "unicast_frames", .val = BCMOLT_AE_PATH_DS_STAT_ID_UNICAST_FRAMES }, { .name = "abort_frames", .val = BCMOLT_AE_PATH_DS_STAT_ID_ABORT_FRAMES }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_ae_path_ds_stat_id = { .name = "bcmolt_ae_path_ds_stat_id", .descr = "Identifiers for all properties contained in the ae_path_ds_stat group.", .size = sizeof(bcmolt_ae_path_ds_stat_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_ae_path_ds_stat_id_string_table } };
bcmcli_enum_val bcmolt_ae_path_us_auto_cfg_id_string_table[] = { { .name = "stat_alarm_cleared", .val = BCMOLT_AE_PATH_US_AUTO_CFG_ID_STAT_ALARM_CLEARED }, { .name = "stat_alarm_raised", .val = BCMOLT_AE_PATH_US_AUTO_CFG_ID_STAT_ALARM_RAISED }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_ae_path_us_auto_cfg_id = { .name = "bcmolt_ae_path_us_auto_cfg_id", .descr = "Identifiers for all properties contained in the ae_path_us_auto_cfg group.", .size = sizeof(bcmolt_ae_path_us_auto_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_ae_path_us_auto_cfg_id_string_table } };
bcmcli_enum_val bcmolt_ae_path_us_key_id_string_table[] = { { .name = "ae_ni", .val = BCMOLT_AE_PATH_US_KEY_ID_AE_NI }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_ae_path_us_key_id = { .name = "bcmolt_ae_path_us_key_id", .descr = "Identifiers for all properties contained in the ae_path_us_key group.", .size = sizeof(bcmolt_ae_path_us_key_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_ae_path_us_key_id_string_table } };
bcmcli_enum_val bcmolt_ae_path_us_stat_alarm_cleared_id_string_table[] = { { .name = "stat", .val = BCMOLT_AE_PATH_US_STAT_ALARM_CLEARED_ID_STAT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_ae_path_us_stat_alarm_cleared_id = { .name = "bcmolt_ae_path_us_stat_alarm_cleared_id", .descr = "Identifiers for all properties contained in the ae_path_us_stat_alarm_cleared group.", .size = sizeof(bcmolt_ae_path_us_stat_alarm_cleared_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_ae_path_us_stat_alarm_cleared_id_string_table } };
bcmcli_enum_val bcmolt_ae_path_us_stat_alarm_raised_id_string_table[] = { { .name = "stat", .val = BCMOLT_AE_PATH_US_STAT_ALARM_RAISED_ID_STAT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_ae_path_us_stat_alarm_raised_id = { .name = "bcmolt_ae_path_us_stat_alarm_raised_id", .descr = "Identifiers for all properties contained in the ae_path_us_stat_alarm_raised group.", .size = sizeof(bcmolt_ae_path_us_stat_alarm_raised_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_ae_path_us_stat_alarm_raised_id_string_table } };
bcmcli_enum_val bcmolt_ae_path_us_stat_cfg_id_string_table[] = { { .name = "cfg", .val = BCMOLT_AE_PATH_US_STAT_CFG_ID_CFG }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_ae_path_us_stat_cfg_id = { .name = "bcmolt_ae_path_us_stat_cfg_id", .descr = "Identifiers for all properties contained in the ae_path_us_stat_cfg group.", .size = sizeof(bcmolt_ae_path_us_stat_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_ae_path_us_stat_cfg_id_string_table } };
bcmcli_enum_val bcmolt_ae_path_us_stat_id_string_table[] = { { .name = "bytes", .val = BCMOLT_AE_PATH_US_STAT_ID_BYTES }, { .name = "frames", .val = BCMOLT_AE_PATH_US_STAT_ID_FRAMES }, { .name = "frames_64", .val = BCMOLT_AE_PATH_US_STAT_ID_FRAMES_64 }, { .name = "frames_65_127", .val = BCMOLT_AE_PATH_US_STAT_ID_FRAMES_65_127 }, { .name = "frames_128_255", .val = BCMOLT_AE_PATH_US_STAT_ID_FRAMES_128_255 }, { .name = "frames_256_511", .val = BCMOLT_AE_PATH_US_STAT_ID_FRAMES_256_511 }, { .name = "frames_512_1023", .val = BCMOLT_AE_PATH_US_STAT_ID_FRAMES_512_1023 }, { .name = "frames_1024_1518", .val = BCMOLT_AE_PATH_US_STAT_ID_FRAMES_1024_1518 }, { .name = "frames_1519_2047", .val = BCMOLT_AE_PATH_US_STAT_ID_FRAMES_1519_2047 }, { .name = "frames_2048_4095", .val = BCMOLT_AE_PATH_US_STAT_ID_FRAMES_2048_4095 }, { .name = "frames_4096_9216", .val = BCMOLT_AE_PATH_US_STAT_ID_FRAMES_4096_9216 }, { .name = "frames_9217_16383", .val = BCMOLT_AE_PATH_US_STAT_ID_FRAMES_9217_16383 }, { .name = "broadcast_frames", .val = BCMOLT_AE_PATH_US_STAT_ID_BROADCAST_FRAMES }, { .name = "data_bytes", .val = BCMOLT_AE_PATH_US_STAT_ID_DATA_BYTES }, { .name = "multicast_frames", .val = BCMOLT_AE_PATH_US_STAT_ID_MULTICAST_FRAMES }, { .name = "unicast_frames", .val = BCMOLT_AE_PATH_US_STAT_ID_UNICAST_FRAMES }, { .name = "abort_frames", .val = BCMOLT_AE_PATH_US_STAT_ID_ABORT_FRAMES }, { .name = "fcs_error", .val = BCMOLT_AE_PATH_US_STAT_ID_FCS_ERROR }, { .name = "oversize_error", .val = BCMOLT_AE_PATH_US_STAT_ID_OVERSIZE_ERROR }, { .name = "runt_error", .val = BCMOLT_AE_PATH_US_STAT_ID_RUNT_ERROR }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_ae_path_us_stat_id = { .name = "bcmolt_ae_path_us_stat_id", .descr = "Identifiers for all properties contained in the ae_path_us_stat group.", .size = sizeof(bcmolt_ae_path_us_stat_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_ae_path_us_stat_id_string_table } };
static bcmcli_type_descr BCM_DESCR type_descr_uint8_t_arr_16 = { .name = "uint8_t[16]", .descr = "Array of 16 elements of type uint8_t", .size = sizeof(uint8_t[16]), .base_type = BCMOLT_BASE_TYPE_ID_ARR_FIXED, .x = { .arr_fixed = { .elem_type = &type_descr_uint8_t, .size = 16 } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_aes_key_fields[] = { { .name = "bytes", .descr = "Bytes that comprise the key.", .offset = offsetof(bcmolt_aes_key, bytes), .type = &type_descr_uint8_t_arr_16 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_aes_key = { .name = "bcmolt_aes_key", .descr = "128-bit AES key used for ONU authentication.", .size = sizeof(bcmolt_aes_key), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_aes_key_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_aes_key_fields } } };
bcmcli_enum_val bcmolt_alloc_operation_string_table[] = { { .name = "activate", .val = BCMOLT_ALLOC_OPERATION_ACTIVATE }, { .name = "deactivate", .val = BCMOLT_ALLOC_OPERATION_DEACTIVATE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_alloc_operation = { .name = "bcmolt_alloc_operation", .descr = "Alloc operation", .size = sizeof(bcmolt_alloc_operation), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_alloc_operation_string_table } };
bcmcli_enum_val bcmolt_alloc_state_string_table[] = { { .name = "not_configured", .val = BCMOLT_ALLOC_STATE_NOT_CONFIGURED }, { .name = "inactive", .val = BCMOLT_ALLOC_STATE_INACTIVE }, { .name = "processing", .val = BCMOLT_ALLOC_STATE_PROCESSING }, { .name = "active", .val = BCMOLT_ALLOC_STATE_ACTIVE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_alloc_state = { .name = "bcmolt_alloc_state", .descr = "Alloc State", .size = sizeof(bcmolt_alloc_state), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_alloc_state_string_table } };
bcmcli_enum_val bcmolt_alloc_type_string_table[] = { { .name = "none", .val = BCMOLT_ALLOC_TYPE_NONE }, { .name = "nsr", .val = BCMOLT_ALLOC_TYPE_NSR }, { .name = "sr", .val = BCMOLT_ALLOC_TYPE_SR }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_alloc_type = { .name = "bcmolt_alloc_type", .descr = "Alloc Type", .size = sizeof(bcmolt_alloc_type), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_alloc_type_string_table } };
bcmcli_enum_val bcmolt_alloc_type_to_scan_string_table[] = { { .name = "unused", .val = BCMOLT_ALLOC_TYPE_TO_SCAN_UNUSED }, { .name = "previously_used", .val = BCMOLT_ALLOC_TYPE_TO_SCAN_PREVIOUSLY_USED }, { .name = "all", .val = BCMOLT_ALLOC_TYPE_TO_SCAN_ALL }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_alloc_type_to_scan = { .name = "bcmolt_alloc_type_to_scan", .descr = "Alloc Type to scan during the rogue onu detection process.", .size = sizeof(bcmolt_alloc_type_to_scan), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_alloc_type_to_scan_string_table } };
bcmcli_enum_val bcmolt_api_capture_buffer_mode_string_table[] = { { .name = "overflow", .val = BCMOLT_API_CAPTURE_BUFFER_MODE_OVERFLOW }, { .name = "wrap", .val = BCMOLT_API_CAPTURE_BUFFER_MODE_WRAP }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_api_capture_buffer_mode = { .name = "bcmolt_api_capture_buffer_mode", .descr = "What to do when the capture buffer is full.", .size = sizeof(bcmolt_api_capture_buffer_mode), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_api_capture_buffer_mode_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_api_capture_buffer_reader_fields[] = { { .name = "offset", .descr = "The bytes offset to read from.", .offset = offsetof(bcmolt_api_capture_buffer_reader, offset), .type = &type_descr_uint32_t }, { .name = "size", .descr = "The number of bytes to read.", .offset = offsetof(bcmolt_api_capture_buffer_reader, size), .type = &type_descr_uint32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_api_capture_buffer_reader = { .name = "bcmolt_api_capture_buffer_reader", .descr = "What portion of the capture buffer to read.", .size = sizeof(bcmolt_api_capture_buffer_reader), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_api_capture_buffer_reader_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_api_capture_buffer_reader_fields } } };
bcmcli_enum_val bcmolt_api_capture_location_string_table[] = { { .name = "device", .val = BCMOLT_API_CAPTURE_LOCATION_DEVICE }, { .name = "host", .val = BCMOLT_API_CAPTURE_LOCATION_HOST }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_api_capture_location = { .name = "bcmolt_api_capture_location", .descr = "Where to perform the API capture.", .size = sizeof(bcmolt_api_capture_location), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_api_capture_location_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_api_capture_config_fields[] = { { .name = "location", .descr = "Where to perform the API capture.", .offset = offsetof(bcmolt_api_capture_config, location), .type = &type_descr_bcmolt_api_capture_location }, { .name = "buffer_size_bytes", .descr = "Maximum number of bytes to capture.", .offset = offsetof(bcmolt_api_capture_config, buffer_size_bytes), .type = &type_descr_uint32_t }, { .name = "buffer_mode", .descr = "What to do when the capture buffer is full.", .offset = offsetof(bcmolt_api_capture_config, buffer_mode), .type = &type_descr_bcmolt_api_capture_buffer_mode } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_api_capture_config = { .name = "bcmolt_api_capture_config", .descr = "Configuration for API capture.", .size = sizeof(bcmolt_api_capture_config), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_api_capture_config_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_api_capture_config_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_api_capture_stats_fields[] = { { .name = "buffer_used_bytes", .descr = "Used space in the capture buffer (in bytes).", .offset = offsetof(bcmolt_api_capture_stats, buffer_used_bytes), .type = &type_descr_uint32_t }, { .name = "buffer_wrap_count", .descr = "Number of times the capture buffer has wrapped.", .offset = offsetof(bcmolt_api_capture_stats, buffer_wrap_count), .type = &type_descr_uint32_t }, { .name = "events_recorded", .descr = "Number of events recorded in the capture buffer.", .offset = offsetof(bcmolt_api_capture_stats, events_recorded), .type = &type_descr_uint32_t }, { .name = "events_dropped", .descr = "Number of events dropped due to overflow.", .offset = offsetof(bcmolt_api_capture_stats, events_dropped), .type = &type_descr_uint32_t }, { .name = "readable_bytes", .descr = "Number of bytes needed to retrieve capture buffer.", .offset = offsetof(bcmolt_api_capture_stats, readable_bytes), .type = &type_descr_uint32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_api_capture_stats = { .name = "bcmolt_api_capture_stats", .descr = "Statistics on the most recent API capture.", .size = sizeof(bcmolt_api_capture_stats), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_api_capture_stats_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_api_capture_stats_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_bounds_fields[] = { { .name = "best_case", .descr = "Best Case", .offset = offsetof(bcmolt_bounds, best_case), .type = &type_descr_uint32_t }, { .name = "worst_case", .descr = "Worst Case", .offset = offsetof(bcmolt_bounds, worst_case), .type = &type_descr_uint32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_bounds = { .name = "bcmolt_bounds", .descr = "Bounds", .size = sizeof(bcmolt_bounds), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_bounds_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_bounds_fields } } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_bounds_arr_8 = { .name = "bcmolt_bounds[8]", .descr = "Array of 8 elements of type bcmolt_bounds", .size = sizeof(bcmolt_bounds[8]), .base_type = BCMOLT_BASE_TYPE_ID_ARR_FIXED, .x = { .arr_fixed = { .elem_type = &type_descr_bcmolt_bounds, .size = 8 } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_arr_bounds_8_fields[] = { { .name = "arr", .descr = "Array", .offset = offsetof(bcmolt_arr_bounds_8, arr), .type = &type_descr_bcmolt_bounds_arr_8 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_arr_bounds_8 = { .name = "bcmolt_arr_bounds_8", .descr = "Fixed-Length list: 8x bounds", .size = sizeof(bcmolt_arr_bounds_8), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_arr_bounds_8_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_arr_bounds_8_fields } } };
bcmcli_enum_val bcmolt_calibration_record_string_table[] = { { .name = "unspecified", .val = BCMOLT_CALIBRATION_RECORD_UNSPECIFIED }, { .name = "uncalibrated", .val = BCMOLT_CALIBRATION_RECORD_UNCALIBRATED }, { .name = "loose", .val = BCMOLT_CALIBRATION_RECORD_LOOSE }, { .name = "sufficient", .val = BCMOLT_CALIBRATION_RECORD_SUFFICIENT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_calibration_record = { .name = "bcmolt_calibration_record", .descr = "Calibration Record", .size = sizeof(bcmolt_calibration_record), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_calibration_record_string_table } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_calibration_record_arr_8 = { .name = "bcmolt_calibration_record[8]", .descr = "Array of 8 elements of type bcmolt_calibration_record", .size = sizeof(bcmolt_calibration_record[8]), .base_type = BCMOLT_BASE_TYPE_ID_ARR_FIXED, .x = { .arr_fixed = { .elem_type = &type_descr_bcmolt_calibration_record, .size = 8 } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_arr_calibration_record_8_fields[] = { { .name = "arr", .descr = "Array", .offset = offsetof(bcmolt_arr_calibration_record_8, arr), .type = &type_descr_bcmolt_calibration_record_arr_8 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_arr_calibration_record_8 = { .name = "bcmolt_arr_calibration_record_8", .descr = "Fixed-Length list: 8x calibration_record", .size = sizeof(bcmolt_arr_calibration_record_8), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_arr_calibration_record_8_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_arr_calibration_record_8_fields } } };
bcmcli_enum_val bcmolt_sign_string_table[] = { { .name = "positive", .val = BCMOLT_SIGN_POSITIVE }, { .name = "negative", .val = BCMOLT_SIGN_NEGATIVE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_sign = { .name = "bcmolt_sign", .descr = "sign", .size = sizeof(bcmolt_sign), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_sign_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_ds_frequency_offset_fields[] = { { .name = "sign", .descr = "sign", .offset = offsetof(bcmolt_ds_frequency_offset, sign), .type = &type_descr_bcmolt_sign }, { .name = "value", .descr = "value", .offset = offsetof(bcmolt_ds_frequency_offset, value), .type = &type_descr_uint8_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_ds_frequency_offset = { .name = "bcmolt_ds_frequency_offset", .descr = "DS frequency offset", .size = sizeof(bcmolt_ds_frequency_offset), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_ds_frequency_offset_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_ds_frequency_offset_fields } } };
bcmcli_enum_val bcmolt_upstream_line_rate_capabilities_string_table[] = { { .name = "rate_2_p_5_g", .val = BCMOLT_UPSTREAM_LINE_RATE_CAPABILITIES_RATE_2_P_5_G }, { .name = "rate_10_g", .val = BCMOLT_UPSTREAM_LINE_RATE_CAPABILITIES_RATE_10_G }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_upstream_line_rate_capabilities = { .name = "bcmolt_upstream_line_rate_capabilities", .descr = "XGPON ni upstream line rate capabilities", .size = sizeof(bcmolt_upstream_line_rate_capabilities), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_upstream_line_rate_capabilities_string_table } };
bcmcli_enum_val bcmolt_link_type_string_table[] = { { .name = "unspecified", .val = BCMOLT_LINK_TYPE_UNSPECIFIED }, { .name = "b", .val = BCMOLT_LINK_TYPE_B }, { .name = "a", .val = BCMOLT_LINK_TYPE_A }, { .name = "a_and_b", .val = BCMOLT_LINK_TYPE_A_AND_B }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_link_type = { .name = "bcmolt_link_type", .descr = "Link type", .size = sizeof(bcmolt_link_type), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_link_type_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_channel_profile_fields[] = { { .name = "version", .descr = "Channel profile version", .offset = offsetof(bcmolt_channel_profile, version), .type = &type_descr_uint8_t }, { .name = "channel_index", .descr = "Channel profile index", .offset = offsetof(bcmolt_channel_profile, channel_index), .type = &type_descr_uint8_t }, { .name = "ds_frequency_offset", .descr = "The difference between the actual OLT CT Tx frequency and the nominal central frequency for the given DWLCH ID, expressed in units of 0.1GHz", .offset = offsetof(bcmolt_channel_profile, ds_frequency_offset), .type = &type_descr_bcmolt_ds_frequency_offset }, { .name = "channel_partition", .descr = "Channel partition", .offset = offsetof(bcmolt_channel_profile, channel_partition), .type = &type_descr_uint8_t }, { .name = "uwlch_id", .descr = "The assigned upstream wavelength channel ID", .offset = offsetof(bcmolt_channel_profile, uwlch_id), .type = &type_descr_uint8_t }, { .name = "us_frequency", .descr = "The nominal central frequency of the upstream wavelength channel or a root frequency of the cyclic set of central frequencies forming an upstream wavelength channel, indicates the value in units of 0.1 GHz.", .offset = offsetof(bcmolt_channel_profile, us_frequency), .type = &type_descr_uint32_t }, { .name = "us_rate", .descr = "US rate", .offset = offsetof(bcmolt_channel_profile, us_rate), .type = &type_descr_bcmolt_upstream_line_rate_capabilities }, { .name = "default_onu_attenuation", .descr = "The default ONU attenuation level in steps of 3dB", .offset = offsetof(bcmolt_channel_profile, default_onu_attenuation), .type = &type_descr_uint8_t }, { .name = "response_threshold", .descr = "Threshold represent the maximum number of Ploams the ONU can transmit at non-zero attenuation level while attempting to establish communication with OLT CT", .offset = offsetof(bcmolt_channel_profile, response_threshold), .type = &type_descr_uint8_t }, { .name = "us_link_type", .descr = "US link type", .offset = offsetof(bcmolt_channel_profile, us_link_type), .type = &type_descr_bcmolt_link_type }, { .name = "is_valid", .descr = "is valid", .offset = offsetof(bcmolt_channel_profile, is_valid), .type = &type_descr_bcmos_bool } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_channel_profile = { .name = "bcmolt_channel_profile", .descr = "Channel Profile", .size = sizeof(bcmolt_channel_profile), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_channel_profile_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_channel_profile_fields } } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_channel_profile_arr_8 = { .name = "bcmolt_channel_profile[8]", .descr = "Array of 8 elements of type bcmolt_channel_profile", .size = sizeof(bcmolt_channel_profile[8]), .base_type = BCMOLT_BASE_TYPE_ID_ARR_FIXED, .x = { .arr_fixed = { .elem_type = &type_descr_bcmolt_channel_profile, .size = 8 } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_arr_channel_profile_8_fields[] = { { .name = "arr", .descr = "Array", .offset = offsetof(bcmolt_arr_channel_profile_8, arr), .type = &type_descr_bcmolt_channel_profile_arr_8 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_arr_channel_profile_8 = { .name = "bcmolt_arr_channel_profile_8", .descr = "Fixed-Length list: 8x channel_profile", .size = sizeof(bcmolt_arr_channel_profile_8), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_arr_channel_profile_8_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_arr_channel_profile_8_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_power_consumption_channel_report_fields[] = { { .name = "ds_wavelength_channel_id", .descr = "Downstream wavelength channel ID", .offset = offsetof(bcmolt_power_consumption_channel_report, ds_wavelength_channel_id), .type = &type_descr_uint8_t }, { .name = "us_wavelength_channel_id", .descr = "Upstream wavelength channel ID", .offset = offsetof(bcmolt_power_consumption_channel_report, us_wavelength_channel_id), .type = &type_descr_uint8_t }, { .name = "power_consumption", .descr = "Power consumption", .offset = offsetof(bcmolt_power_consumption_channel_report, power_consumption), .type = &type_descr_uint16_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_power_consumption_channel_report = { .name = "bcmolt_power_consumption_channel_report", .descr = "Power consumption report per channel", .size = sizeof(bcmolt_power_consumption_channel_report), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_power_consumption_channel_report_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_power_consumption_channel_report_fields } } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_power_consumption_channel_report_arr_8 = { .name = "bcmolt_power_consumption_channel_report[8]", .descr = "Array of 8 elements of type bcmolt_power_consumption_channel_report", .size = sizeof(bcmolt_power_consumption_channel_report[8]), .base_type = BCMOLT_BASE_TYPE_ID_ARR_FIXED, .x = { .arr_fixed = { .elem_type = &type_descr_bcmolt_power_consumption_channel_report, .size = 8 } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_arr_power_consumption_channel_report_8_fields[] = { { .name = "arr", .descr = "Array", .offset = offsetof(bcmolt_arr_power_consumption_channel_report_8, arr), .type = &type_descr_bcmolt_power_consumption_channel_report_arr_8 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_arr_power_consumption_channel_report_8 = { .name = "bcmolt_arr_power_consumption_channel_report_8", .descr = "Fixed-Length list: 8x power_consumption_channel_report", .size = sizeof(bcmolt_arr_power_consumption_channel_report_8), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_arr_power_consumption_channel_report_8_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_arr_power_consumption_channel_report_8_fields } } };
static bcmcli_type_descr BCM_DESCR type_descr_uint16_t_arr_2 = { .name = "uint16_t[2]", .descr = "Array of 2 elements of type uint16_t", .size = sizeof(uint16_t[2]), .base_type = BCMOLT_BASE_TYPE_ID_ARR_FIXED, .x = { .arr_fixed = { .elem_type = &type_descr_uint16_t, .size = 2 } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_arr_u16_2_fields[] = { { .name = "arr", .descr = "Array", .offset = offsetof(bcmolt_arr_u16_2, arr), .type = &type_descr_uint16_t_arr_2 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_arr_u16_2 = { .name = "bcmolt_arr_u16_2", .descr = "Fixed-Length list: 2x U16", .size = sizeof(bcmolt_arr_u16_2), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_arr_u16_2_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_arr_u16_2_fields } } };
static bcmcli_type_descr BCM_DESCR type_descr_uint16_t_arr_2_hex = { .name = "uint16_t[2]", .descr = "Array of 2 elements of type uint16_t", .size = sizeof(uint16_t[2]), .base_type = BCMOLT_BASE_TYPE_ID_ARR_FIXED, .x = { .arr_fixed = { .elem_type = &type_descr_uint16_t_hex, .size = 2 } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_arr_u16_2_hex_fields[] = { { .name = "arr", .descr = "Array", .offset = offsetof(bcmolt_arr_u16_2_hex, arr), .type = &type_descr_uint16_t_arr_2_hex } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_arr_u16_2_hex = { .name = "bcmolt_arr_u16_2_hex", .descr = "Fixed-Length list: 2x U16", .size = sizeof(bcmolt_arr_u16_2_hex), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_arr_u16_2_hex_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_arr_u16_2_hex_fields } } };
static bcmcli_type_descr BCM_DESCR type_descr_uint16_t_arr_5_hex = { .name = "uint16_t[5]", .descr = "Array of 5 elements of type uint16_t", .size = sizeof(uint16_t[5]), .base_type = BCMOLT_BASE_TYPE_ID_ARR_FIXED, .x = { .arr_fixed = { .elem_type = &type_descr_uint16_t_hex, .size = 5 } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_arr_u16_5_hex_fields[] = { { .name = "arr", .descr = "Array", .offset = offsetof(bcmolt_arr_u16_5_hex, arr), .type = &type_descr_uint16_t_arr_5_hex } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_arr_u16_5_hex = { .name = "bcmolt_arr_u16_5_hex", .descr = "Fixed-Length list: 5x U16", .size = sizeof(bcmolt_arr_u16_5_hex), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_arr_u16_5_hex_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_arr_u16_5_hex_fields } } };
static bcmcli_type_descr BCM_DESCR type_descr_uint16_t_arr_7 = { .name = "uint16_t[7]", .descr = "Array of 7 elements of type uint16_t", .size = sizeof(uint16_t[7]), .base_type = BCMOLT_BASE_TYPE_ID_ARR_FIXED, .x = { .arr_fixed = { .elem_type = &type_descr_uint16_t, .size = 7 } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_arr_u16_7_fields[] = { { .name = "arr", .descr = "Array", .offset = offsetof(bcmolt_arr_u16_7, arr), .type = &type_descr_uint16_t_arr_7 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_arr_u16_7 = { .name = "bcmolt_arr_u16_7", .descr = "Fixed-Length list: 7x U16", .size = sizeof(bcmolt_arr_u16_7), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_arr_u16_7_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_arr_u16_7_fields } } };
static bcmcli_type_descr BCM_DESCR type_descr_uint32_t_arr_6 = { .name = "uint32_t[6]", .descr = "Array of 6 elements of type uint32_t", .size = sizeof(uint32_t[6]), .base_type = BCMOLT_BASE_TYPE_ID_ARR_FIXED, .x = { .arr_fixed = { .elem_type = &type_descr_uint32_t, .size = 6 } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_arr_u32_6_fields[] = { { .name = "arr", .descr = "Array", .offset = offsetof(bcmolt_arr_u32_6, arr), .type = &type_descr_uint32_t_arr_6 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_arr_u32_6 = { .name = "bcmolt_arr_u32_6", .descr = "Fixed-Length list: 6x U32", .size = sizeof(bcmolt_arr_u32_6), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_arr_u32_6_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_arr_u32_6_fields } } };
static bcmcli_type_descr BCM_DESCR type_descr_uint8_t_arr_10 = { .name = "uint8_t[10]", .descr = "Array of 10 elements of type uint8_t", .size = sizeof(uint8_t[10]), .base_type = BCMOLT_BASE_TYPE_ID_ARR_FIXED, .x = { .arr_fixed = { .elem_type = &type_descr_uint8_t, .size = 10 } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_arr_u8_10_fields[] = { { .name = "arr", .descr = "Array", .offset = offsetof(bcmolt_arr_u8_10, arr), .type = &type_descr_uint8_t_arr_10 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_arr_u8_10 = { .name = "bcmolt_arr_u8_10", .descr = "Fixed-Length list: 10x U8", .size = sizeof(bcmolt_arr_u8_10), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_arr_u8_10_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_arr_u8_10_fields } } };
static bcmcli_type_descr BCM_DESCR type_descr_uint8_t_arr_12 = { .name = "uint8_t[12]", .descr = "Array of 12 elements of type uint8_t", .size = sizeof(uint8_t[12]), .base_type = BCMOLT_BASE_TYPE_ID_ARR_FIXED, .x = { .arr_fixed = { .elem_type = &type_descr_uint8_t, .size = 12 } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_arr_u8_12_fields[] = { { .name = "arr", .descr = "Array", .offset = offsetof(bcmolt_arr_u8_12, arr), .type = &type_descr_uint8_t_arr_12 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_arr_u8_12 = { .name = "bcmolt_arr_u8_12", .descr = "Fixed-Length list: 12x U8", .size = sizeof(bcmolt_arr_u8_12), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_arr_u8_12_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_arr_u8_12_fields } } };
static bcmcli_type_descr BCM_DESCR type_descr_uint8_t_arr_13 = { .name = "uint8_t[13]", .descr = "Array of 13 elements of type uint8_t", .size = sizeof(uint8_t[13]), .base_type = BCMOLT_BASE_TYPE_ID_ARR_FIXED, .x = { .arr_fixed = { .elem_type = &type_descr_uint8_t, .size = 13 } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_arr_u8_13_fields[] = { { .name = "arr", .descr = "Array", .offset = offsetof(bcmolt_arr_u8_13, arr), .type = &type_descr_uint8_t_arr_13 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_arr_u8_13 = { .name = "bcmolt_arr_u8_13", .descr = "Fixed-Length list: 13x U8", .size = sizeof(bcmolt_arr_u8_13), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_arr_u8_13_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_arr_u8_13_fields } } };
static bcmcli_type_descr BCM_DESCR type_descr_uint8_t_arr_36 = { .name = "uint8_t[36]", .descr = "Array of 36 elements of type uint8_t", .size = sizeof(uint8_t[36]), .base_type = BCMOLT_BASE_TYPE_ID_ARR_FIXED, .x = { .arr_fixed = { .elem_type = &type_descr_uint8_t, .size = 36 } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_arr_u8_36_fields[] = { { .name = "arr", .descr = "Array", .offset = offsetof(bcmolt_arr_u8_36, arr), .type = &type_descr_uint8_t_arr_36 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_arr_u8_36 = { .name = "bcmolt_arr_u8_36", .descr = "Fixed-Length list: 36x U8", .size = sizeof(bcmolt_arr_u8_36), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_arr_u8_36_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_arr_u8_36_fields } } };
static bcmcli_type_descr BCM_DESCR type_descr_uint8_t_arr_4 = { .name = "uint8_t[4]", .descr = "Array of 4 elements of type uint8_t", .size = sizeof(uint8_t[4]), .base_type = BCMOLT_BASE_TYPE_ID_ARR_FIXED, .x = { .arr_fixed = { .elem_type = &type_descr_uint8_t, .size = 4 } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_arr_u8_4_fields[] = { { .name = "arr", .descr = "Array", .offset = offsetof(bcmolt_arr_u8_4, arr), .type = &type_descr_uint8_t_arr_4 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_arr_u8_4 = { .name = "bcmolt_arr_u8_4", .descr = "Fixed-Length list: 4x U8", .size = sizeof(bcmolt_arr_u8_4), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_arr_u8_4_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_arr_u8_4_fields } } };
static bcmcli_type_descr BCM_DESCR type_descr_uint8_t_arr_40 = { .name = "uint8_t[40]", .descr = "Array of 40 elements of type uint8_t", .size = sizeof(uint8_t[40]), .base_type = BCMOLT_BASE_TYPE_ID_ARR_FIXED, .x = { .arr_fixed = { .elem_type = &type_descr_uint8_t, .size = 40 } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_arr_u8_40_fields[] = { { .name = "arr", .descr = "Array", .offset = offsetof(bcmolt_arr_u8_40, arr), .type = &type_descr_uint8_t_arr_40 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_arr_u8_40 = { .name = "bcmolt_arr_u8_40", .descr = "Fixed-Length list: 40x U8", .size = sizeof(bcmolt_arr_u8_40), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_arr_u8_40_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_arr_u8_40_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_burst_profile_fields[] = { { .name = "profile_version", .descr = "profile version", .offset = offsetof(bcmolt_xgpon_burst_profile, profile_version), .type = &type_descr_uint8_t_hex }, { .name = "is_fec_on", .descr = "is fec on", .offset = offsetof(bcmolt_xgpon_burst_profile, is_fec_on), .type = &type_descr_bcmos_bool }, { .name = "delimiter_size_in_bytes", .descr = "delimiter size in bytes", .offset = offsetof(bcmolt_xgpon_burst_profile, delimiter_size_in_bytes), .type = &type_descr_uint8_t }, { .name = "delimiter_pattern_high", .descr = "delimiter pattern high", .offset = offsetof(bcmolt_xgpon_burst_profile, delimiter_pattern_high), .type = &type_descr_uint32_t_hex }, { .name = "delimiter_pattern_low", .descr = "delimiter pattern low", .offset = offsetof(bcmolt_xgpon_burst_profile, delimiter_pattern_low), .type = &type_descr_uint32_t_hex }, { .name = "preamble_length_in_bytes", .descr = "preamble length in bytes", .offset = offsetof(bcmolt_xgpon_burst_profile, preamble_length_in_bytes), .type = &type_descr_uint8_t }, { .name = "preamble_repeats_count", .descr = "preamble repeats count", .offset = offsetof(bcmolt_xgpon_burst_profile, preamble_repeats_count), .type = &type_descr_uint8_t }, { .name = "preamble_pattern_high", .descr = "preamble pattern high", .offset = offsetof(bcmolt_xgpon_burst_profile, preamble_pattern_high), .type = &type_descr_uint32_t_hex }, { .name = "preamble_pattern_low", .descr = "preamble pattern low", .offset = offsetof(bcmolt_xgpon_burst_profile, preamble_pattern_low), .type = &type_descr_uint32_t_hex }, { .name = "pon_tag", .descr = "PON tag", .offset = offsetof(bcmolt_xgpon_burst_profile, pon_tag), .type = &type_descr_uint64_t }, { .name = "num_of_guard_bytes", .descr = "number of guard bytes", .offset = offsetof(bcmolt_xgpon_burst_profile, num_of_guard_bytes), .type = &type_descr_uint32_t }, { .name = "is_profile_valid", .descr = "is profile valid", .offset = offsetof(bcmolt_xgpon_burst_profile, is_profile_valid), .type = &type_descr_bcmos_bool }, { .name = "burst_overhead_size_in_words", .descr = "Burst overhead size in 4-byte words (word size is 4 bytes regardless of upstream data rate).", .offset = offsetof(bcmolt_xgpon_burst_profile, burst_overhead_size_in_words), .type = &type_descr_uint32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_burst_profile = { .name = "bcmolt_xgpon_burst_profile", .descr = "XGPON burst profile", .size = sizeof(bcmolt_xgpon_burst_profile), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_burst_profile_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_burst_profile_fields } } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_burst_profile_arr_4 = { .name = "bcmolt_xgpon_burst_profile[4]", .descr = "Array of 4 elements of type bcmolt_xgpon_burst_profile", .size = sizeof(bcmolt_xgpon_burst_profile[4]), .base_type = BCMOLT_BASE_TYPE_ID_ARR_FIXED, .x = { .arr_fixed = { .elem_type = &type_descr_bcmolt_xgpon_burst_profile, .size = 4 } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_arr_xgpon_burst_profile_4_fields[] = { { .name = "arr", .descr = "Array", .offset = offsetof(bcmolt_arr_xgpon_burst_profile_4, arr), .type = &type_descr_bcmolt_xgpon_burst_profile_arr_4 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_arr_xgpon_burst_profile_4 = { .name = "bcmolt_arr_xgpon_burst_profile_4", .descr = "Fixed-Length list: 4x xgpon_burst_profile", .size = sizeof(bcmolt_arr_xgpon_burst_profile_4), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_arr_xgpon_burst_profile_4_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_arr_xgpon_burst_profile_4_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_trx_configuration_fields[] = { { .name = "trx_reset_pattern_first", .descr = "trx reset pattern first", .offset = offsetof(bcmolt_xgpon_trx_configuration, trx_reset_pattern_first), .type = &type_descr_uint32_t_hex }, { .name = "trx_reset_pattern_middle", .descr = "trx reset pattern middle", .offset = offsetof(bcmolt_xgpon_trx_configuration, trx_reset_pattern_middle), .type = &type_descr_uint32_t_hex }, { .name = "trx_reset_pattern_last", .descr = "trx reset pattern last", .offset = offsetof(bcmolt_xgpon_trx_configuration, trx_reset_pattern_last), .type = &type_descr_uint32_t_hex }, { .name = "trx_reset_middle_repeats_count", .descr = "trx reset middle repeats count", .offset = offsetof(bcmolt_xgpon_trx_configuration, trx_reset_middle_repeats_count), .type = &type_descr_uint8_t }, { .name = "trx_reset_location", .descr = "trx reset location", .offset = offsetof(bcmolt_xgpon_trx_configuration, trx_reset_location), .type = &type_descr_uint16_t }, { .name = "trx_reset_polarity", .descr = "trx reset polarity", .offset = offsetof(bcmolt_xgpon_trx_configuration, trx_reset_polarity), .type = &type_descr_bcmos_bool }, { .name = "bcdr_reset_pattern_first", .descr = "bcdr reset pattern first", .offset = offsetof(bcmolt_xgpon_trx_configuration, bcdr_reset_pattern_first), .type = &type_descr_uint32_t_hex }, { .name = "bcdr_reset_pattern_middle", .descr = "bcdr reset pattern middle", .offset = offsetof(bcmolt_xgpon_trx_configuration, bcdr_reset_pattern_middle), .type = &type_descr_uint32_t_hex }, { .name = "bcdr_reset_pattern_last", .descr = "bcdr reset pattern last", .offset = offsetof(bcmolt_xgpon_trx_configuration, bcdr_reset_pattern_last), .type = &type_descr_uint32_t_hex }, { .name = "bcdr_reset_middle_repeats_count", .descr = "bcdr reset middle repeats count", .offset = offsetof(bcmolt_xgpon_trx_configuration, bcdr_reset_middle_repeats_count), .type = &type_descr_uint8_t }, { .name = "bcdr_reset_location", .descr = "bcdr reset location", .offset = offsetof(bcmolt_xgpon_trx_configuration, bcdr_reset_location), .type = &type_descr_uint8_t }, { .name = "bcdr_reset_polarity", .descr = "bcdr reset polarity", .offset = offsetof(bcmolt_xgpon_trx_configuration, bcdr_reset_polarity), .type = &type_descr_bcmos_bool } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_trx_configuration = { .name = "bcmolt_xgpon_trx_configuration", .descr = "XGPON TRX configuration", .size = sizeof(bcmolt_xgpon_trx_configuration), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_trx_configuration_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_trx_configuration_fields } } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_trx_configuration_arr_4 = { .name = "bcmolt_xgpon_trx_configuration[4]", .descr = "Array of 4 elements of type bcmolt_xgpon_trx_configuration", .size = sizeof(bcmolt_xgpon_trx_configuration[4]), .base_type = BCMOLT_BASE_TYPE_ID_ARR_FIXED, .x = { .arr_fixed = { .elem_type = &type_descr_bcmolt_xgpon_trx_configuration, .size = 4 } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_arr_xgpon_trx_configuration_4_fields[] = { { .name = "arr", .descr = "Array", .offset = offsetof(bcmolt_arr_xgpon_trx_configuration_4, arr), .type = &type_descr_bcmolt_xgpon_trx_configuration_arr_4 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_arr_xgpon_trx_configuration_4 = { .name = "bcmolt_arr_xgpon_trx_configuration_4", .descr = "Fixed-Length list: 4x xgpon_trx_configuration", .size = sizeof(bcmolt_arr_xgpon_trx_configuration_4), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_arr_xgpon_trx_configuration_4_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_arr_xgpon_trx_configuration_4_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_automatic_onu_deactivation_fields[] = { { .name = "los", .descr = "Auto deactivate ONU due to LOS", .offset = offsetof(bcmolt_automatic_onu_deactivation, los), .type = &type_descr_bcmos_bool }, { .name = "onu_alarms", .descr = "Auto deactivate ONU due to ONU alarms", .offset = offsetof(bcmolt_automatic_onu_deactivation, onu_alarms), .type = &type_descr_bcmos_bool }, { .name = "tiwi", .descr = "Auto deactivate ONU due to TIWi alarm", .offset = offsetof(bcmolt_automatic_onu_deactivation, tiwi), .type = &type_descr_bcmos_bool }, { .name = "ack_timeout", .descr = "Auto deactivate ONU due to Ack timeout", .offset = offsetof(bcmolt_automatic_onu_deactivation, ack_timeout), .type = &type_descr_bcmos_bool }, { .name = "sfi", .descr = "Auto deactivate ONU due to SFi alarm", .offset = offsetof(bcmolt_automatic_onu_deactivation, sfi), .type = &type_descr_bcmos_bool }, { .name = "loki", .descr = "Auto deactivate ONU due to Loki alarm", .offset = offsetof(bcmolt_automatic_onu_deactivation, loki), .type = &type_descr_bcmos_bool } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_automatic_onu_deactivation = { .name = "bcmolt_automatic_onu_deactivation", .descr = "Automatic ONU deactivation", .size = sizeof(bcmolt_automatic_onu_deactivation), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_automatic_onu_deactivation_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_automatic_onu_deactivation_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_resync_control_fields[] = { { .name = "start_pattern", .descr = "start pattern", .offset = offsetof(bcmolt_resync_control, start_pattern), .type = &type_descr_uint8_t }, { .name = "middle_pattern", .descr = "middle pattern", .offset = offsetof(bcmolt_resync_control, middle_pattern), .type = &type_descr_uint8_t }, { .name = "last_pattern", .descr = "last pattern", .offset = offsetof(bcmolt_resync_control, last_pattern), .type = &type_descr_uint8_t }, { .name = "middle_repetition", .descr = "middle repetition", .offset = offsetof(bcmolt_resync_control, middle_repetition), .type = &type_descr_uint8_t }, { .name = "location", .descr = "location", .offset = offsetof(bcmolt_resync_control, location), .type = &type_descr_uint8_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_resync_control = { .name = "bcmolt_resync_control", .descr = "TRX Resync pattern control", .size = sizeof(bcmolt_resync_control), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_resync_control_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_resync_control_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_bcdr_resync_pattern_configuration_fields[] = { { .name = "resync_control", .descr = "resync control", .offset = offsetof(bcmolt_bcdr_resync_pattern_configuration, resync_control), .type = &type_descr_bcmolt_resync_control }, { .name = "ranging_resync_control", .descr = "ranging resync control", .offset = offsetof(bcmolt_bcdr_resync_pattern_configuration, ranging_resync_control), .type = &type_descr_bcmolt_resync_control } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_bcdr_resync_pattern_configuration = { .name = "bcmolt_bcdr_resync_pattern_configuration", .descr = "BCDR resync pattern configuration", .size = sizeof(bcmolt_bcdr_resync_pattern_configuration), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_bcdr_resync_pattern_configuration_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_bcdr_resync_pattern_configuration_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_ber_monitor_params_fields[] = { { .name = "us_ber_interval", .descr = "Interval in milliseconds for upstream BER monitoring (0 = disabled).", .offset = offsetof(bcmolt_ber_monitor_params, us_ber_interval), .type = &type_descr_uint32_t }, { .name = "sf_threshold", .descr = "Signal fail alarm is raised when BER raises to 10^-x, where x is this number.", .offset = offsetof(bcmolt_ber_monitor_params, sf_threshold), .type = &type_descr_uint8_t }, { .name = "sd_threshold", .descr = "Signal degrade alarm is raised when BER raises to 10^-x, where x is this number.", .offset = offsetof(bcmolt_ber_monitor_params, sd_threshold), .type = &type_descr_uint8_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_ber_monitor_params = { .name = "bcmolt_ber_monitor_params", .descr = "BER monitoring parameters", .size = sizeof(bcmolt_ber_monitor_params), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_ber_monitor_params_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_ber_monitor_params_fields } } };
bcmcli_enum_val bcmolt_capture_strobe_signal_string_table[] = { { .name = "gpon_bcdr_reset", .val = BCMOLT_CAPTURE_STROBE_SIGNAL_GPON_BCDR_RESET }, { .name = "gpon_trx_ed", .val = BCMOLT_CAPTURE_STROBE_SIGNAL_GPON_TRX_ED }, { .name = "gpon_rssi", .val = BCMOLT_CAPTURE_STROBE_SIGNAL_GPON_RSSI }, { .name = "gpon_eob", .val = BCMOLT_CAPTURE_STROBE_SIGNAL_GPON_EOB }, { .name = "serdes_burst_en", .val = BCMOLT_CAPTURE_STROBE_SIGNAL_SERDES_BURST_EN }, { .name = "serdes_rx_lock", .val = BCMOLT_CAPTURE_STROBE_SIGNAL_SERDES_RX_LOCK }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_capture_strobe_signal = { .name = "bcmolt_capture_strobe_signal", .descr = "capture strobe signal", .size = sizeof(bcmolt_capture_strobe_signal), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_capture_strobe_signal_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_cbr_rt_allocation_profile_fields[] = { { .name = "ma_7", .descr = "CBA maximum allocation size for frame gap 7", .offset = offsetof(bcmolt_cbr_rt_allocation_profile, ma_7), .type = &type_descr_uint16_t }, { .name = "ma_3", .descr = "CBA maximum allocation size for frame gap 3", .offset = offsetof(bcmolt_cbr_rt_allocation_profile, ma_3), .type = &type_descr_uint16_t }, { .name = "ma_1", .descr = "CBA maximum allocation size for frame gap 1", .offset = offsetof(bcmolt_cbr_rt_allocation_profile, ma_1), .type = &type_descr_uint16_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_cbr_rt_allocation_profile = { .name = "bcmolt_cbr_rt_allocation_profile", .descr = "CBR RT Allocation profile", .size = sizeof(bcmolt_cbr_rt_allocation_profile), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_cbr_rt_allocation_profile_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_cbr_rt_allocation_profile_fields } } };
bcmcli_enum_val bcmolt_channel_cfg_id_string_table[] = { { .name = "operation_control", .val = BCMOLT_CHANNEL_CFG_ID_OPERATION_CONTROL }, { .name = "tol", .val = BCMOLT_CHANNEL_CFG_ID_TOL }, { .name = "system_profile", .val = BCMOLT_CHANNEL_CFG_ID_SYSTEM_PROFILE }, { .name = "channel_profile", .val = BCMOLT_CHANNEL_CFG_ID_CHANNEL_PROFILE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_channel_cfg_id = { .name = "bcmolt_channel_cfg_id", .descr = "Identifiers for all properties contained in the channel_cfg group.", .size = sizeof(bcmolt_channel_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_channel_cfg_id_string_table } };
bcmcli_enum_val bcmolt_channel_key_id_string_table[] = { { .name = "pon_ni", .val = BCMOLT_CHANNEL_KEY_ID_PON_NI }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_channel_key_id = { .name = "bcmolt_channel_key_id", .descr = "Identifiers for all properties contained in the channel_key group.", .size = sizeof(bcmolt_channel_key_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_channel_key_id_string_table } };
bcmcli_enum_val bcmolt_console_redirection_string_table[] = { { .name = "none", .val = BCMOLT_CONSOLE_REDIRECTION_NONE }, { .name = "redirect", .val = BCMOLT_CONSOLE_REDIRECTION_REDIRECT }, { .name = "clone", .val = BCMOLT_CONSOLE_REDIRECTION_CLONE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_console_redirection = { .name = "bcmolt_console_redirection", .descr = "Console Redirection Type", .size = sizeof(bcmolt_console_redirection), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_console_redirection_string_table } };
bcmcli_enum_val bcmolt_control_state_string_table[] = { { .name = "disable", .val = BCMOLT_CONTROL_STATE_DISABLE }, { .name = "enable", .val = BCMOLT_CONTROL_STATE_ENABLE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_control_state = { .name = "bcmolt_control_state", .descr = "control state", .size = sizeof(bcmolt_control_state), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_control_state_string_table } };
bcmcli_enum_val bcmolt_dba_mode_string_table[] = { { .name = "normal", .val = BCMOLT_DBA_MODE_NORMAL }, { .name = "extended", .val = BCMOLT_DBA_MODE_EXTENDED }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_dba_mode = { .name = "bcmolt_dba_mode", .descr = "dba mode", .size = sizeof(bcmolt_dba_mode), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_dba_mode_string_table } };
bcmcli_enum_val bcmolt_dba_ram_string_table[] = { { .name = "grant_fifo_ram_0", .val = BCMOLT_DBA_RAM_GRANT_FIFO_RAM_0 }, { .name = "grant_fifo_ram_1", .val = BCMOLT_DBA_RAM_GRANT_FIFO_RAM_1 }, { .name = "grant_fifo_ram_2", .val = BCMOLT_DBA_RAM_GRANT_FIFO_RAM_2 }, { .name = "grant_fifo_ram_3", .val = BCMOLT_DBA_RAM_GRANT_FIFO_RAM_3 }, { .name = "grant_fifo_ram_4", .val = BCMOLT_DBA_RAM_GRANT_FIFO_RAM_4 }, { .name = "grant_fifo_ram_5", .val = BCMOLT_DBA_RAM_GRANT_FIFO_RAM_5 }, { .name = "grant_fifo_ram_6", .val = BCMOLT_DBA_RAM_GRANT_FIFO_RAM_6 }, { .name = "grant_fifo_ram_7", .val = BCMOLT_DBA_RAM_GRANT_FIFO_RAM_7 }, { .name = "grants_out_ram", .val = BCMOLT_DBA_RAM_GRANTS_OUT_RAM }, { .name = "grants_in_ram", .val = BCMOLT_DBA_RAM_GRANTS_IN_RAM }, { .name = "grants_retired_ram", .val = BCMOLT_DBA_RAM_GRANTS_RETIRED_RAM }, { .name = "report_ram", .val = BCMOLT_DBA_RAM_REPORT_RAM }, { .name = "grant_cfg_ram", .val = BCMOLT_DBA_RAM_GRANT_CFG_RAM }, { .name = "default_tokens_ram", .val = BCMOLT_DBA_RAM_DEFAULT_TOKENS_RAM }, { .name = "poll_records_ram", .val = BCMOLT_DBA_RAM_POLL_RECORDS_RAM }, { .name = "heir_poll_ram", .val = BCMOLT_DBA_RAM_HEIR_POLL_RAM }, { .name = "last_poll_time_ram", .val = BCMOLT_DBA_RAM_LAST_POLL_TIME_RAM }, { .name = "poll_order_ram", .val = BCMOLT_DBA_RAM_POLL_ORDER_RAM }, { .name = "tdm_ram_0", .val = BCMOLT_DBA_RAM_TDM_RAM_0 }, { .name = "tdm_ram_1", .val = BCMOLT_DBA_RAM_TDM_RAM_1 }, { .name = "tdm_ram_2", .val = BCMOLT_DBA_RAM_TDM_RAM_2 }, { .name = "tdm_ram_3", .val = BCMOLT_DBA_RAM_TDM_RAM_3 }, { .name = "tdm_ram_4", .val = BCMOLT_DBA_RAM_TDM_RAM_4 }, { .name = "tdm_ram_5", .val = BCMOLT_DBA_RAM_TDM_RAM_5 }, { .name = "tdm_ram_6", .val = BCMOLT_DBA_RAM_TDM_RAM_6 }, { .name = "tdm_ram_7", .val = BCMOLT_DBA_RAM_TDM_RAM_7 }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_dba_ram = { .name = "bcmolt_dba_ram", .descr = "DBA RAM", .size = sizeof(bcmolt_dba_ram), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_dba_ram_string_table } };
bcmcli_enum_val bcmolt_dba_type_string_table[] = { { .name = "internal", .val = BCMOLT_DBA_TYPE_INTERNAL }, { .name = "partial_external", .val = BCMOLT_DBA_TYPE_PARTIAL_EXTERNAL }, { .name = "external", .val = BCMOLT_DBA_TYPE_EXTERNAL }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_dba_type = { .name = "bcmolt_dba_type", .descr = "DBA type", .size = sizeof(bcmolt_dba_type), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_dba_type_string_table } };
bcmcli_enum_val bcmolt_ddr_test_status_string_table[] = { { .name = "completed", .val = BCMOLT_DDR_TEST_STATUS_COMPLETED }, { .name = "connection_failed", .val = BCMOLT_DDR_TEST_STATUS_CONNECTION_FAILED }, { .name = "timeout", .val = BCMOLT_DDR_TEST_STATUS_TIMEOUT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_ddr_test_status = { .name = "bcmolt_ddr_test_status", .descr = "DDR Test Status", .size = sizeof(bcmolt_ddr_test_status), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_ddr_test_status_string_table } };
bcmcli_enum_val bcmolt_ddr_test_result_string_table[] = { { .name = "success", .val = BCMOLT_DDR_TEST_RESULT_SUCCESS }, { .name = "phy_init_error", .val = BCMOLT_DDR_TEST_RESULT_PHY_INIT_ERROR }, { .name = "dram_init_error", .val = BCMOLT_DDR_TEST_RESULT_DRAM_INIT_ERROR }, { .name = "shmoo_error", .val = BCMOLT_DDR_TEST_RESULT_SHMOO_ERROR }, { .name = "edis_test_error", .val = BCMOLT_DDR_TEST_RESULT_EDIS_TEST_ERROR }, { .name = "mem_test_error", .val = BCMOLT_DDR_TEST_RESULT_MEM_TEST_ERROR }, { .name = "not_tested", .val = BCMOLT_DDR_TEST_RESULT_NOT_TESTED }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_ddr_test_result = { .name = "bcmolt_ddr_test_result", .descr = "DDR Test Result", .size = sizeof(bcmolt_ddr_test_result), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_ddr_test_result_string_table } };
bcmcli_enum_val bcmolt_host_connection_fail_reason_string_table[] = { { .name = "timeout", .val = BCMOLT_HOST_CONNECTION_FAIL_REASON_TIMEOUT }, { .name = "keepalive", .val = BCMOLT_HOST_CONNECTION_FAIL_REASON_KEEPALIVE }, { .name = "user_callback_error", .val = BCMOLT_HOST_CONNECTION_FAIL_REASON_USER_CALLBACK_ERROR }, { .name = "software_version_mismatch", .val = BCMOLT_HOST_CONNECTION_FAIL_REASON_SOFTWARE_VERSION_MISMATCH }, { .name = "system_mode_mismatch", .val = BCMOLT_HOST_CONNECTION_FAIL_REASON_SYSTEM_MODE_MISMATCH }, { .name = "nni_speed_mismatch", .val = BCMOLT_HOST_CONNECTION_FAIL_REASON_NNI_SPEED_MISMATCH }, { .name = "reconnect_timeout", .val = BCMOLT_HOST_CONNECTION_FAIL_REASON_RECONNECT_TIMEOUT }, { .name = "internal_error", .val = BCMOLT_HOST_CONNECTION_FAIL_REASON_INTERNAL_ERROR }, { .name = "system_mode_not_supported", .val = BCMOLT_HOST_CONNECTION_FAIL_REASON_SYSTEM_MODE_NOT_SUPPORTED }, { .name = "parameter", .val = BCMOLT_HOST_CONNECTION_FAIL_REASON_PARAMETER }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_host_connection_fail_reason = { .name = "bcmolt_host_connection_fail_reason", .descr = "Reasons why the connection between the host and the device failed", .size = sizeof(bcmolt_host_connection_fail_reason), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_host_connection_fail_reason_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_ddr_test_completed_fields[] = { { .name = "status", .descr = "Outcome of the DDR test", .offset = offsetof(bcmolt_ddr_test_completed, status), .type = &type_descr_bcmolt_ddr_test_status } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_ddr_test_completed_completed_fields[] = { { .name = "cpu_result", .descr = "CPU Result", .offset = offsetof(bcmolt_ddr_test_completed, u.completed.cpu_result) - offsetof(bcmolt_ddr_test_completed, u.completed.cpu_result), .type = &type_descr_bcmolt_ddr_test_result }, { .name = "ras_0_result", .descr = "RAS 0 Result", .offset = offsetof(bcmolt_ddr_test_completed, u.completed.ras_0_result) - offsetof(bcmolt_ddr_test_completed, u.completed.cpu_result), .type = &type_descr_bcmolt_ddr_test_result }, { .name = "ras_1_result", .descr = "RAS 1 Result", .offset = offsetof(bcmolt_ddr_test_completed, u.completed.ras_1_result) - offsetof(bcmolt_ddr_test_completed, u.completed.cpu_result), .type = &type_descr_bcmolt_ddr_test_result } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_ddr_test_completed_completed = { .name = "bcmolt_ddr_test_completed_completed", .descr = "DDR Test Completed Completed", .size = sizeof(((bcmolt_ddr_test_completed *)0)->u.completed), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_ddr_test_completed_completed_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_ddr_test_completed_completed_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_ddr_test_completed_connection_failed_fields[] = { { .name = "reason", .descr = "Connection fail reason", .offset = offsetof(bcmolt_ddr_test_completed, u.connection_failed.reason) - offsetof(bcmolt_ddr_test_completed, u.connection_failed.reason), .type = &type_descr_bcmolt_host_connection_fail_reason } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_ddr_test_completed_connection_failed = { .name = "bcmolt_ddr_test_completed_connection_failed", .descr = "DDR Test Completed Connection Failed", .size = sizeof(((bcmolt_ddr_test_completed *)0)->u.connection_failed), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_ddr_test_completed_connection_failed_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_ddr_test_completed_connection_failed_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_ddr_test_completed_union_fields[] = { { .name = "u.completed", .descr = "", .offset = offsetof(bcmolt_ddr_test_completed, u.completed), .type = &type_descr_bcmolt_ddr_test_completed_completed }, { .name = "u.connection_failed", .descr = "", .offset = offsetof(bcmolt_ddr_test_completed, u.connection_failed), .type = &type_descr_bcmolt_ddr_test_completed_connection_failed }, { }, { } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_ddr_test_completed = { .name = "bcmolt_ddr_test_completed", .descr = "Results of the DDR test", .size = sizeof(bcmolt_ddr_test_completed), .base_type = BCMOLT_BASE_TYPE_ID_UNION, .x = { .u = { .num_common_fields = sizeof(type_descr_bcmolt_ddr_test_completed_fields) / sizeof(bcmcli_field_descr), .common_fields = type_descr_bcmolt_ddr_test_completed_fields, .classifier_idx = 0, .union_fields = type_descr_bcmolt_ddr_test_completed_union_fields } } };
bcmcli_enum_val bcmolt_deactivation_reason_string_table[] = { { .name = "none", .val = BCMOLT_DEACTIVATION_REASON_NONE }, { .name = "deactivation", .val = BCMOLT_DEACTIVATION_REASON_DEACTIVATION }, { .name = "ack_timeout", .val = BCMOLT_DEACTIVATION_REASON_ACK_TIMEOUT }, { .name = "sfi", .val = BCMOLT_DEACTIVATION_REASON_SFI }, { .name = "tiwi", .val = BCMOLT_DEACTIVATION_REASON_TIWI }, { .name = "password_authentication", .val = BCMOLT_DEACTIVATION_REASON_PASSWORD_AUTHENTICATION }, { .name = "onu_alarm", .val = BCMOLT_DEACTIVATION_REASON_ONU_ALARM }, { .name = "los", .val = BCMOLT_DEACTIVATION_REASON_LOS }, { .name = "loki", .val = BCMOLT_DEACTIVATION_REASON_LOKI }, { .name = "rerange_failure", .val = BCMOLT_DEACTIVATION_REASON_RERANGE_FAILURE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_deactivation_reason = { .name = "bcmolt_deactivation_reason", .descr = "deactivation reason", .size = sizeof(bcmolt_deactivation_reason), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_deactivation_reason_string_table } };
bcmcli_enum_val bcmolt_debug_auto_cfg_id_string_table[] = { { .name = "cli_output", .val = BCMOLT_DEBUG_AUTO_CFG_ID_CLI_OUTPUT }, { .name = "file_almost_full", .val = BCMOLT_DEBUG_AUTO_CFG_ID_FILE_ALMOST_FULL }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_debug_auto_cfg_id = { .name = "bcmolt_debug_auto_cfg_id", .descr = "Identifiers for all properties contained in the debug_auto_cfg group.", .size = sizeof(bcmolt_debug_auto_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_debug_auto_cfg_id_string_table } };
bcmcli_enum_val bcmolt_debug_cfg_id_string_table[] = { { .name = "console_redirection", .val = BCMOLT_DEBUG_CFG_ID_CONSOLE_REDIRECTION }, { .name = "indications_dropped", .val = BCMOLT_DEBUG_CFG_ID_INDICATIONS_DROPPED }, { .name = "file_used_percent", .val = BCMOLT_DEBUG_CFG_ID_FILE_USED_PERCENT }, { .name = "api_capture_cfg", .val = BCMOLT_DEBUG_CFG_ID_API_CAPTURE_CFG }, { .name = "api_capture_stats", .val = BCMOLT_DEBUG_CFG_ID_API_CAPTURE_STATS }, { .name = "api_capture_buffer_read", .val = BCMOLT_DEBUG_CFG_ID_API_CAPTURE_BUFFER_READ }, { .name = "api_capture_buffer", .val = BCMOLT_DEBUG_CFG_ID_API_CAPTURE_BUFFER }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_debug_cfg_id = { .name = "bcmolt_debug_cfg_id", .descr = "Identifiers for all properties contained in the debug_cfg group.", .size = sizeof(bcmolt_debug_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_debug_cfg_id_string_table } };
bcmcli_enum_val bcmolt_debug_cli_input_id_string_table[] = { { .name = "data", .val = BCMOLT_DEBUG_CLI_INPUT_ID_DATA }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_debug_cli_input_id = { .name = "bcmolt_debug_cli_input_id", .descr = "Identifiers for all properties contained in the debug_cli_input group.", .size = sizeof(bcmolt_debug_cli_input_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_debug_cli_input_id_string_table } };
bcmcli_enum_val bcmolt_debug_cli_output_id_string_table[] = { { .name = "data", .val = BCMOLT_DEBUG_CLI_OUTPUT_ID_DATA }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_debug_cli_output_id = { .name = "bcmolt_debug_cli_output_id", .descr = "Identifiers for all properties contained in the debug_cli_output group.", .size = sizeof(bcmolt_debug_cli_output_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_debug_cli_output_id_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_debug_device_cfg_fields[] = { { .name = "host_dma_rx_queue_size", .descr = "RX Queue size of the host DMA    ", .offset = offsetof(bcmolt_debug_device_cfg, host_dma_rx_queue_size), .type = &type_descr_uint16_t }, { .name = "host_dma_tx_queue_size", .descr = "TX Queue size of the host DMA    ", .offset = offsetof(bcmolt_debug_device_cfg, host_dma_tx_queue_size), .type = &type_descr_uint16_t }, { .name = "avs_control", .descr = "AVS control", .offset = offsetof(bcmolt_debug_device_cfg, avs_control), .type = &type_descr_bcmos_bool }, { .name = "use_prev_pon_serdes_firmware", .descr = "This is a fallback option if there are issues with the new firmware", .offset = offsetof(bcmolt_debug_device_cfg, use_prev_pon_serdes_firmware), .type = &type_descr_bcmos_bool }, { .name = "use_prev_nni_serdes_firmware", .descr = "This is a fallback option if there are issues with the new firmware", .offset = offsetof(bcmolt_debug_device_cfg, use_prev_nni_serdes_firmware), .type = &type_descr_bcmos_bool } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_debug_device_cfg = { .name = "bcmolt_debug_device_cfg", .descr = "Debug parameters for device configuration", .size = sizeof(bcmolt_debug_device_cfg), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_debug_device_cfg_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_debug_device_cfg_fields } } };
bcmcli_enum_val bcmolt_debug_file_almost_full_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_debug_file_almost_full_id = { .name = "bcmolt_debug_file_almost_full_id", .descr = "Identifiers for all properties contained in the debug_file_almost_full group.", .size = sizeof(bcmolt_debug_file_almost_full_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_debug_file_almost_full_id_string_table } };
bcmcli_enum_val bcmolt_debug_key_id_string_table[] = { { .name = "reserved", .val = BCMOLT_DEBUG_KEY_ID_RESERVED }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_debug_key_id = { .name = "bcmolt_debug_key_id", .descr = "Identifiers for all properties contained in the debug_key group.", .size = sizeof(bcmolt_debug_key_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_debug_key_id_string_table } };
bcmcli_enum_val bcmolt_debug_reset_api_capture_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_debug_reset_api_capture_id = { .name = "bcmolt_debug_reset_api_capture_id", .descr = "Identifiers for all properties contained in the debug_reset_api_capture group.", .size = sizeof(bcmolt_debug_reset_api_capture_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_debug_reset_api_capture_id_string_table } };
bcmcli_enum_val bcmolt_debug_start_api_capture_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_debug_start_api_capture_id = { .name = "bcmolt_debug_start_api_capture_id", .descr = "Identifiers for all properties contained in the debug_start_api_capture group.", .size = sizeof(bcmolt_debug_start_api_capture_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_debug_start_api_capture_id_string_table } };
bcmcli_enum_val bcmolt_debug_stop_api_capture_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_debug_stop_api_capture_id = { .name = "bcmolt_debug_stop_api_capture_id", .descr = "Identifiers for all properties contained in the debug_stop_api_capture group.", .size = sizeof(bcmolt_debug_stop_api_capture_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_debug_stop_api_capture_id_string_table } };
bcmcli_enum_val bcmolt_device_auto_cfg_id_string_table[] = { { .name = "connection_complete", .val = BCMOLT_DEVICE_AUTO_CFG_ID_CONNECTION_COMPLETE }, { .name = "connection_established", .val = BCMOLT_DEVICE_AUTO_CFG_ID_CONNECTION_ESTABLISHED }, { .name = "connection_failure", .val = BCMOLT_DEVICE_AUTO_CFG_ID_CONNECTION_FAILURE }, { .name = "ddr_test_complete", .val = BCMOLT_DEVICE_AUTO_CFG_ID_DDR_TEST_COMPLETE }, { .name = "device_keep_alive", .val = BCMOLT_DEVICE_AUTO_CFG_ID_DEVICE_KEEP_ALIVE }, { .name = "device_ready", .val = BCMOLT_DEVICE_AUTO_CFG_ID_DEVICE_READY }, { .name = "disconnection_complete", .val = BCMOLT_DEVICE_AUTO_CFG_ID_DISCONNECTION_COMPLETE }, { .name = "image_transfer_complete", .val = BCMOLT_DEVICE_AUTO_CFG_ID_IMAGE_TRANSFER_COMPLETE }, { .name = "indications_dropped", .val = BCMOLT_DEVICE_AUTO_CFG_ID_INDICATIONS_DROPPED }, { .name = "sw_error", .val = BCMOLT_DEVICE_AUTO_CFG_ID_SW_ERROR }, { .name = "sw_exception", .val = BCMOLT_DEVICE_AUTO_CFG_ID_SW_EXCEPTION }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_device_auto_cfg_id = { .name = "bcmolt_device_auto_cfg_id", .descr = "Identifiers for all properties contained in the device_auto_cfg group.", .size = sizeof(bcmolt_device_auto_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_device_auto_cfg_id_string_table } };
bcmcli_enum_val bcmolt_device_cfg_id_string_table[] = { { .name = "system_mode", .val = BCMOLT_DEVICE_CFG_ID_SYSTEM_MODE }, { .name = "keepalive_interval", .val = BCMOLT_DEVICE_CFG_ID_KEEPALIVE_INTERVAL }, { .name = "keepalive_tolerance", .val = BCMOLT_DEVICE_CFG_ID_KEEPALIVE_TOLERANCE }, { .name = "firmware_sw_version", .val = BCMOLT_DEVICE_CFG_ID_FIRMWARE_SW_VERSION }, { .name = "host_sw_version", .val = BCMOLT_DEVICE_CFG_ID_HOST_SW_VERSION }, { .name = "chip_revision", .val = BCMOLT_DEVICE_CFG_ID_CHIP_REVISION }, { .name = "state", .val = BCMOLT_DEVICE_CFG_ID_STATE }, { .name = "debug", .val = BCMOLT_DEVICE_CFG_ID_DEBUG }, { .name = "nni_speed", .val = BCMOLT_DEVICE_CFG_ID_NNI_SPEED }, { .name = "protection_switching_ext_irq", .val = BCMOLT_DEVICE_CFG_ID_PROTECTION_SWITCHING_EXT_IRQ }, { .name = "epon_clock_transport_sample_delay", .val = BCMOLT_DEVICE_CFG_ID_EPON_CLOCK_TRANSPORT_SAMPLE_DELAY }, { .name = "indication_shaping", .val = BCMOLT_DEVICE_CFG_ID_INDICATION_SHAPING }, { .name = "chip_temperature", .val = BCMOLT_DEVICE_CFG_ID_CHIP_TEMPERATURE }, { .name = "gpon_xgpon_tod_enable", .val = BCMOLT_DEVICE_CFG_ID_GPON_XGPON_TOD_ENABLE }, { .name = "gpon_xgpon_tod_gpio_pin", .val = BCMOLT_DEVICE_CFG_ID_GPON_XGPON_TOD_GPIO_PIN }, { .name = "gpon_xgpon_tod_connected_internally", .val = BCMOLT_DEVICE_CFG_ID_GPON_XGPON_TOD_CONNECTED_INTERNALLY }, { .name = "epon_8021_as_tod_format", .val = BCMOLT_DEVICE_CFG_ID_EPON_8021_AS_TOD_FORMAT }, { .name = "epon_shaper_mode", .val = BCMOLT_DEVICE_CFG_ID_EPON_SHAPER_MODE }, { .name = "embedded_image_list", .val = BCMOLT_DEVICE_CFG_ID_EMBEDDED_IMAGE_LIST }, { .name = "chip_voltage", .val = BCMOLT_DEVICE_CFG_ID_CHIP_VOLTAGE }, { .name = "epon_tod_string", .val = BCMOLT_DEVICE_CFG_ID_EPON_TOD_STRING }, { .name = "xgpon_num_of_onus", .val = BCMOLT_DEVICE_CFG_ID_XGPON_NUM_OF_ONUS }, { .name = "device_ip_address", .val = BCMOLT_DEVICE_CFG_ID_DEVICE_IP_ADDRESS }, { .name = "device_udp_port", .val = BCMOLT_DEVICE_CFG_ID_DEVICE_UDP_PORT }, { .name = "tod_uart_baudrate", .val = BCMOLT_DEVICE_CFG_ID_TOD_UART_BAUDRATE }, { .name = "gpon_xgpon_tod_string_length", .val = BCMOLT_DEVICE_CFG_ID_GPON_XGPON_TOD_STRING_LENGTH }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_device_cfg_id = { .name = "bcmolt_device_cfg_id", .descr = "Identifiers for all properties contained in the device_cfg group.", .size = sizeof(bcmolt_device_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_device_cfg_id_string_table } };
bcmcli_enum_val bcmolt_device_chip_revision_string_table[] = { { .name = "a0", .val = BCMOLT_DEVICE_CHIP_REVISION_A0 }, { .name = "b0", .val = BCMOLT_DEVICE_CHIP_REVISION_B0 }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_device_chip_revision = { .name = "bcmolt_device_chip_revision", .descr = "Revision of the BCM68620 device.", .size = sizeof(bcmolt_device_chip_revision), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_device_chip_revision_string_table } };
bcmcli_enum_val bcmolt_device_connect_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_device_connect_id = { .name = "bcmolt_device_connect_id", .descr = "Identifiers for all properties contained in the device_connect group.", .size = sizeof(bcmolt_device_connect_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_device_connect_id_string_table } };
bcmcli_enum_val bcmolt_device_connection_complete_id_string_table[] = { { .name = "standalone", .val = BCMOLT_DEVICE_CONNECTION_COMPLETE_ID_STANDALONE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_device_connection_complete_id = { .name = "bcmolt_device_connection_complete_id", .descr = "Identifiers for all properties contained in the device_connection_complete group.", .size = sizeof(bcmolt_device_connection_complete_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_device_connection_complete_id_string_table } };
bcmcli_enum_val bcmolt_device_connection_established_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_device_connection_established_id = { .name = "bcmolt_device_connection_established_id", .descr = "Identifiers for all properties contained in the device_connection_established group.", .size = sizeof(bcmolt_device_connection_established_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_device_connection_established_id_string_table } };
bcmcli_enum_val bcmolt_device_connection_failure_id_string_table[] = { { .name = "reason", .val = BCMOLT_DEVICE_CONNECTION_FAILURE_ID_REASON }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_device_connection_failure_id = { .name = "bcmolt_device_connection_failure_id", .descr = "Identifiers for all properties contained in the device_connection_failure group.", .size = sizeof(bcmolt_device_connection_failure_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_device_connection_failure_id_string_table } };
bcmcli_enum_val bcmolt_device_ddr_test_complete_id_string_table[] = { { .name = "ddr_test", .val = BCMOLT_DEVICE_DDR_TEST_COMPLETE_ID_DDR_TEST }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_device_ddr_test_complete_id = { .name = "bcmolt_device_ddr_test_complete_id", .descr = "Identifiers for all properties contained in the device_ddr_test_complete group.", .size = sizeof(bcmolt_device_ddr_test_complete_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_device_ddr_test_complete_id_string_table } };
bcmcli_enum_val bcmolt_device_device_keep_alive_id_string_table[] = { { .name = "sequence_number", .val = BCMOLT_DEVICE_DEVICE_KEEP_ALIVE_ID_SEQUENCE_NUMBER }, { .name = "time_stamp", .val = BCMOLT_DEVICE_DEVICE_KEEP_ALIVE_ID_TIME_STAMP }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_device_device_keep_alive_id = { .name = "bcmolt_device_device_keep_alive_id", .descr = "Identifiers for all properties contained in the device_device_keep_alive group.", .size = sizeof(bcmolt_device_device_keep_alive_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_device_device_keep_alive_id_string_table } };
bcmcli_enum_val bcmolt_device_device_ready_id_string_table[] = { { .name = "firmware_sw_version", .val = BCMOLT_DEVICE_DEVICE_READY_ID_FIRMWARE_SW_VERSION }, { .name = "system_mode", .val = BCMOLT_DEVICE_DEVICE_READY_ID_SYSTEM_MODE }, { .name = "nni_speed", .val = BCMOLT_DEVICE_DEVICE_READY_ID_NNI_SPEED }, { .name = "chip_revision", .val = BCMOLT_DEVICE_DEVICE_READY_ID_CHIP_REVISION }, { .name = "tod_enable", .val = BCMOLT_DEVICE_DEVICE_READY_ID_TOD_ENABLE }, { .name = "tod_gpio_pin", .val = BCMOLT_DEVICE_DEVICE_READY_ID_TOD_GPIO_PIN }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_device_device_ready_id = { .name = "bcmolt_device_device_ready_id", .descr = "Identifiers for all properties contained in the device_device_ready group.", .size = sizeof(bcmolt_device_device_ready_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_device_device_ready_id_string_table } };
bcmcli_enum_val bcmolt_device_disconnect_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_device_disconnect_id = { .name = "bcmolt_device_disconnect_id", .descr = "Identifiers for all properties contained in the device_disconnect group.", .size = sizeof(bcmolt_device_disconnect_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_device_disconnect_id_string_table } };
bcmcli_enum_val bcmolt_device_disconnection_complete_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_device_disconnection_complete_id = { .name = "bcmolt_device_disconnection_complete_id", .descr = "Identifiers for all properties contained in the device_disconnection_complete group.", .size = sizeof(bcmolt_device_disconnection_complete_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_device_disconnection_complete_id_string_table } };
bcmcli_enum_val bcmolt_device_host_keep_alive_id_string_table[] = { { .name = "sequence_number", .val = BCMOLT_DEVICE_HOST_KEEP_ALIVE_ID_SEQUENCE_NUMBER }, { .name = "time_stamp", .val = BCMOLT_DEVICE_HOST_KEEP_ALIVE_ID_TIME_STAMP }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_device_host_keep_alive_id = { .name = "bcmolt_device_host_keep_alive_id", .descr = "Identifiers for all properties contained in the device_host_keep_alive group.", .size = sizeof(bcmolt_device_host_keep_alive_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_device_host_keep_alive_id_string_table } };
bcmcli_enum_val bcmolt_device_image_transfer_complete_id_string_table[] = { { .name = "image_type", .val = BCMOLT_DEVICE_IMAGE_TRANSFER_COMPLETE_ID_IMAGE_TYPE }, { .name = "block_number", .val = BCMOLT_DEVICE_IMAGE_TRANSFER_COMPLETE_ID_BLOCK_NUMBER }, { .name = "status", .val = BCMOLT_DEVICE_IMAGE_TRANSFER_COMPLETE_ID_STATUS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_device_image_transfer_complete_id = { .name = "bcmolt_device_image_transfer_complete_id", .descr = "Identifiers for all properties contained in the device_image_transfer_complete group.", .size = sizeof(bcmolt_device_image_transfer_complete_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_device_image_transfer_complete_id_string_table } };
bcmcli_enum_val bcmolt_device_image_transfer_data_id_string_table[] = { { .name = "block_number", .val = BCMOLT_DEVICE_IMAGE_TRANSFER_DATA_ID_BLOCK_NUMBER }, { .name = "more_data", .val = BCMOLT_DEVICE_IMAGE_TRANSFER_DATA_ID_MORE_DATA }, { .name = "data", .val = BCMOLT_DEVICE_IMAGE_TRANSFER_DATA_ID_DATA }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_device_image_transfer_data_id = { .name = "bcmolt_device_image_transfer_data_id", .descr = "Identifiers for all properties contained in the device_image_transfer_data group.", .size = sizeof(bcmolt_device_image_transfer_data_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_device_image_transfer_data_id_string_table } };
bcmcli_enum_val bcmolt_device_image_transfer_start_id_string_table[] = { { .name = "image_type", .val = BCMOLT_DEVICE_IMAGE_TRANSFER_START_ID_IMAGE_TYPE }, { .name = "image_size", .val = BCMOLT_DEVICE_IMAGE_TRANSFER_START_ID_IMAGE_SIZE }, { .name = "crc32", .val = BCMOLT_DEVICE_IMAGE_TRANSFER_START_ID_CRC32 }, { .name = "image_name", .val = BCMOLT_DEVICE_IMAGE_TRANSFER_START_ID_IMAGE_NAME }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_device_image_transfer_start_id = { .name = "bcmolt_device_image_transfer_start_id", .descr = "Identifiers for all properties contained in the device_image_transfer_start group.", .size = sizeof(bcmolt_device_image_transfer_start_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_device_image_transfer_start_id_string_table } };
bcmcli_enum_val bcmolt_device_image_type_string_table[] = { { .name = "bootloader", .val = BCMOLT_DEVICE_IMAGE_TYPE_BOOTLOADER }, { .name = "application", .val = BCMOLT_DEVICE_IMAGE_TYPE_APPLICATION }, { .name = "itu_pon_onu_firmware", .val = BCMOLT_DEVICE_IMAGE_TYPE_ITU_PON_ONU_FIRMWARE }, { .name = "epon_onu_firmware", .val = BCMOLT_DEVICE_IMAGE_TYPE_EPON_ONU_FIRMWARE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_device_image_type = { .name = "bcmolt_device_image_type", .descr = "Device Image Type", .size = sizeof(bcmolt_device_image_type), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_device_image_type_string_table } };
bcmcli_enum_val bcmolt_device_indications_dropped_id_string_table[] = { { .name = "total_count", .val = BCMOLT_DEVICE_INDICATIONS_DROPPED_ID_TOTAL_COUNT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_device_indications_dropped_id = { .name = "bcmolt_device_indications_dropped_id", .descr = "Identifiers for all properties contained in the device_indications_dropped group.", .size = sizeof(bcmolt_device_indications_dropped_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_device_indications_dropped_id_string_table } };
bcmcli_enum_val bcmolt_device_key_id_string_table[] = { { .name = "reserved", .val = BCMOLT_DEVICE_KEY_ID_RESERVED }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_device_key_id = { .name = "bcmolt_device_key_id", .descr = "Identifiers for all properties contained in the device_key group.", .size = sizeof(bcmolt_device_key_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_device_key_id_string_table } };
bcmcli_enum_val bcmolt_nni_speed_string_table[] = { { .name = "gbps_1", .val = BCMOLT_NNI_SPEED_GBPS_1 }, { .name = "gbps_2p5", .val = BCMOLT_NNI_SPEED_GBPS_2P5 }, { .name = "gbps_10", .val = BCMOLT_NNI_SPEED_GBPS_10 }, { .name = "gbps_12p5", .val = BCMOLT_NNI_SPEED_GBPS_12P5 }, { .name = "gbps_10_g_mux", .val = BCMOLT_NNI_SPEED_GBPS_10_G_MUX }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_nni_speed = { .name = "bcmolt_nni_speed", .descr = "Network interface speed", .size = sizeof(bcmolt_nni_speed), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_nni_speed_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_device_nni_speed_fields[] = { { .name = "first_half", .descr = "Interface speed for the first half of the NNI ports on the system.", .offset = offsetof(bcmolt_device_nni_speed, first_half), .type = &type_descr_bcmolt_nni_speed }, { .name = "second_half", .descr = "Interface speed for the second half of the NNI ports on the system.", .offset = offsetof(bcmolt_device_nni_speed, second_half), .type = &type_descr_bcmolt_nni_speed } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_device_nni_speed = { .name = "bcmolt_device_nni_speed", .descr = "Device NNI Speed", .size = sizeof(bcmolt_device_nni_speed), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_device_nni_speed_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_device_nni_speed_fields } } };
bcmcli_enum_val bcmolt_device_reset_id_string_table[] = { { .name = "mode", .val = BCMOLT_DEVICE_RESET_ID_MODE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_device_reset_id = { .name = "bcmolt_device_reset_id", .descr = "Identifiers for all properties contained in the device_reset group.", .size = sizeof(bcmolt_device_reset_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_device_reset_id_string_table } };
bcmcli_enum_val bcmolt_device_reset_mode_string_table[] = { { .name = "device", .val = BCMOLT_DEVICE_RESET_MODE_DEVICE }, { .name = "host", .val = BCMOLT_DEVICE_RESET_MODE_HOST }, { .name = "all", .val = BCMOLT_DEVICE_RESET_MODE_ALL }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_device_reset_mode = { .name = "bcmolt_device_reset_mode", .descr = "Options for the reset operation.", .size = sizeof(bcmolt_device_reset_mode), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_device_reset_mode_string_table } };
bcmcli_enum_val bcmolt_device_run_ddr_test_id_string_table[] = { { .name = "cpu", .val = BCMOLT_DEVICE_RUN_DDR_TEST_ID_CPU }, { .name = "ras_0", .val = BCMOLT_DEVICE_RUN_DDR_TEST_ID_RAS_0 }, { .name = "ras_1", .val = BCMOLT_DEVICE_RUN_DDR_TEST_ID_RAS_1 }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_device_run_ddr_test_id = { .name = "bcmolt_device_run_ddr_test_id", .descr = "Identifiers for all properties contained in the device_run_ddr_test group.", .size = sizeof(bcmolt_device_run_ddr_test_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_device_run_ddr_test_id_string_table } };
bcmcli_enum_val bcmolt_device_state_string_table[] = { { .name = "disconnected", .val = BCMOLT_DEVICE_STATE_DISCONNECTED }, { .name = "connecting", .val = BCMOLT_DEVICE_STATE_CONNECTING }, { .name = "ready", .val = BCMOLT_DEVICE_STATE_READY }, { .name = "waiting_for_device", .val = BCMOLT_DEVICE_STATE_WAITING_FOR_DEVICE }, { .name = "testing_ddr", .val = BCMOLT_DEVICE_STATE_TESTING_DDR }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_device_state = { .name = "bcmolt_device_state", .descr = "The overall state of the host's connection to the device.", .size = sizeof(bcmolt_device_state), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_device_state_string_table } };
bcmcli_enum_val bcmolt_device_sw_error_id_string_table[] = { { .name = "task_name", .val = BCMOLT_DEVICE_SW_ERROR_ID_TASK_NAME }, { .name = "file_name", .val = BCMOLT_DEVICE_SW_ERROR_ID_FILE_NAME }, { .name = "line_number", .val = BCMOLT_DEVICE_SW_ERROR_ID_LINE_NUMBER }, { .name = "pon_ni", .val = BCMOLT_DEVICE_SW_ERROR_ID_PON_NI }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_device_sw_error_id = { .name = "bcmolt_device_sw_error_id", .descr = "Identifiers for all properties contained in the device_sw_error group.", .size = sizeof(bcmolt_device_sw_error_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_device_sw_error_id_string_table } };
bcmcli_enum_val bcmolt_device_sw_exception_id_string_table[] = { { .name = "cpu_id", .val = BCMOLT_DEVICE_SW_EXCEPTION_ID_CPU_ID }, { .name = "text", .val = BCMOLT_DEVICE_SW_EXCEPTION_ID_TEXT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_device_sw_exception_id = { .name = "bcmolt_device_sw_exception_id", .descr = "Identifiers for all properties contained in the device_sw_exception group.", .size = sizeof(bcmolt_device_sw_exception_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_device_sw_exception_id_string_table } };
bcmcli_enum_val bcmolt_device_sw_upgrade_activate_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_device_sw_upgrade_activate_id = { .name = "bcmolt_device_sw_upgrade_activate_id", .descr = "Identifiers for all properties contained in the device_sw_upgrade_activate group.", .size = sizeof(bcmolt_device_sw_upgrade_activate_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_device_sw_upgrade_activate_id_string_table } };
bcmcli_enum_val bcmolt_disable_serial_number_control_string_table[] = { { .name = "unicast_disable", .val = BCMOLT_DISABLE_SERIAL_NUMBER_CONTROL_UNICAST_DISABLE }, { .name = "unicast_enable", .val = BCMOLT_DISABLE_SERIAL_NUMBER_CONTROL_UNICAST_ENABLE }, { .name = "broadcast_enable", .val = BCMOLT_DISABLE_SERIAL_NUMBER_CONTROL_BROADCAST_ENABLE }, { .name = "broadcast_disable", .val = BCMOLT_DISABLE_SERIAL_NUMBER_CONTROL_BROADCAST_DISABLE }, { .name = "disable_discovery", .val = BCMOLT_DISABLE_SERIAL_NUMBER_CONTROL_DISABLE_DISCOVERY }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_disable_serial_number_control = { .name = "bcmolt_disable_serial_number_control", .descr = "Disable Serial Number Control", .size = sizeof(bcmolt_disable_serial_number_control), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_disable_serial_number_control_string_table } };
bcmcli_enum_val bcmolt_drv_icf_id_string_table[] = { { .name = "idx0", .val = BCMOLT_DRV_ICF_ID_IDX0 }, { .name = "idx1", .val = BCMOLT_DRV_ICF_ID_IDX1 }, { .name = "idx2", .val = BCMOLT_DRV_ICF_ID_IDX2 }, { .name = "idx3", .val = BCMOLT_DRV_ICF_ID_IDX3 }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_drv_icf_id = { .name = "bcmolt_drv_icf_id", .descr = "drv_icf_id", .size = sizeof(bcmolt_drv_icf_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_drv_icf_id_string_table } };
bcmcli_enum_val bcmolt_drv_sgb_id_string_table[] = { { .name = "idx0", .val = BCMOLT_DRV_SGB_ID_IDX0 }, { .name = "idx1", .val = BCMOLT_DRV_SGB_ID_IDX1 }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_drv_sgb_id = { .name = "bcmolt_drv_sgb_id", .descr = "drv_sgb_id", .size = sizeof(bcmolt_drv_sgb_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_drv_sgb_id_string_table } };
bcmcli_enum_val bcmolt_ds_vlan_action_string_table[] = { { .name = "remove", .val = BCMOLT_DS_VLAN_ACTION_REMOVE }, { .name = "transparent", .val = BCMOLT_DS_VLAN_ACTION_TRANSPARENT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_ds_vlan_action = { .name = "bcmolt_ds_vlan_action", .descr = "DS VLAN action", .size = sizeof(bcmolt_ds_vlan_action), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_ds_vlan_action_string_table } };
bcmcli_enum_val bcmolt_tfb_trap_behavior_string_table[] = { { .name = "drop", .val = BCMOLT_TFB_TRAP_BEHAVIOR_DROP }, { .name = "forward_nni", .val = BCMOLT_TFB_TRAP_BEHAVIOR_FORWARD_NNI }, { .name = "forward_cpu", .val = BCMOLT_TFB_TRAP_BEHAVIOR_FORWARD_CPU }, { .name = "snoop", .val = BCMOLT_TFB_TRAP_BEHAVIOR_SNOOP }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_tfb_trap_behavior = { .name = "bcmolt_tfb_trap_behavior", .descr = "TFB Trap Behavior", .size = sizeof(bcmolt_tfb_trap_behavior), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_tfb_trap_behavior_string_table } };
bcmcli_enum_val bcmolt_tfb_mode_string_table[] = { { .name = "gpon", .val = BCMOLT_TFB_MODE_GPON }, { .name = "xgpon", .val = BCMOLT_TFB_MODE_XGPON }, { .name = "epon", .val = BCMOLT_TFB_MODE_EPON }, { .name = "xepon", .val = BCMOLT_TFB_MODE_XEPON }, { .name = "coex", .val = BCMOLT_TFB_MODE_COEX }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_tfb_mode = { .name = "bcmolt_tfb_mode", .descr = "TFB Mode", .size = sizeof(bcmolt_tfb_mode), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_tfb_mode_string_table } };
bcmcli_enum_val bcmolt_lim_sec_mode_up_string_table[] = { { .name = "tek", .val = BCMOLT_LIM_SEC_MODE_UP_TEK }, { .name = "per_llid", .val = BCMOLT_LIM_SEC_MODE_UP_PER_LLID }, { .name = "ntt", .val = BCMOLT_LIM_SEC_MODE_UP_NTT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_lim_sec_mode_up = { .name = "bcmolt_lim_sec_mode_up", .descr = "LIM SEC Mode Up", .size = sizeof(bcmolt_lim_sec_mode_up), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_lim_sec_mode_up_string_table } };
bcmcli_enum_val bcmolt_lim_sec_mode_dn_string_table[] = { { .name = "tek", .val = BCMOLT_LIM_SEC_MODE_DN_TEK }, { .name = "per_llid", .val = BCMOLT_LIM_SEC_MODE_DN_PER_LLID }, { .name = "ntt", .val = BCMOLT_LIM_SEC_MODE_DN_NTT }, { .name = "cepon", .val = BCMOLT_LIM_SEC_MODE_DN_CEPON }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_lim_sec_mode_dn = { .name = "bcmolt_lim_sec_mode_dn", .descr = "LIM SEC Mode Dn", .size = sizeof(bcmolt_lim_sec_mode_dn), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_lim_sec_mode_dn_string_table } };
bcmcli_enum_val bcmolt_xim_sec_mode_string_table[] = { { .name = "reserved_0", .val = BCMOLT_XIM_SEC_MODE_RESERVED_0 }, { .name = "per_llid", .val = BCMOLT_XIM_SEC_MODE_PER_LLID }, { .name = "reserved_2", .val = BCMOLT_XIM_SEC_MODE_RESERVED_2 }, { .name = "cepon", .val = BCMOLT_XIM_SEC_MODE_CEPON }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xim_sec_mode = { .name = "bcmolt_xim_sec_mode", .descr = "XIM SEC Mode", .size = sizeof(bcmolt_xim_sec_mode), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xim_sec_mode_string_table } };
bcmcli_enum_val bcmolt_hsc_ram_string_table[] = { { .name = "llc_t1", .val = BCMOLT_HSC_RAM_LLC_T1 }, { .name = "llc_t2", .val = BCMOLT_HSC_RAM_LLC_T2 }, { .name = "llc_t3", .val = BCMOLT_HSC_RAM_LLC_T3 }, { .name = "grp_t2", .val = BCMOLT_HSC_RAM_GRP_T2 }, { .name = "grp_t3", .val = BCMOLT_HSC_RAM_GRP_T3 }, { .name = "shp_t1", .val = BCMOLT_HSC_RAM_SHP_T1 }, { .name = "shp_t2", .val = BCMOLT_HSC_RAM_SHP_T2 }, { .name = "shp_t3", .val = BCMOLT_HSC_RAM_SHP_T3 }, { .name = "prf_t1", .val = BCMOLT_HSC_RAM_PRF_T1 }, { .name = "prf_t2", .val = BCMOLT_HSC_RAM_PRF_T2 }, { .name = "prf_t3", .val = BCMOLT_HSC_RAM_PRF_T3 }, { .name = "cre_t1", .val = BCMOLT_HSC_RAM_CRE_T1 }, { .name = "cre_t2", .val = BCMOLT_HSC_RAM_CRE_T2 }, { .name = "cre_t3", .val = BCMOLT_HSC_RAM_CRE_T3 }, { .name = "elu", .val = BCMOLT_HSC_RAM_ELU }, { .name = "ptr_t1", .val = BCMOLT_HSC_RAM_PTR_T1 }, { .name = "ptr_t2", .val = BCMOLT_HSC_RAM_PTR_T2 }, { .name = "agr_shp_t1", .val = BCMOLT_HSC_RAM_AGR_SHP_T1 }, { .name = "aem", .val = BCMOLT_HSC_RAM_AEM }, { .name = "all_llc", .val = BCMOLT_HSC_RAM_ALL_LLC }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_hsc_ram = { .name = "bcmolt_hsc_ram", .descr = "HSC RAM", .size = sizeof(bcmolt_hsc_ram), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_hsc_ram_string_table } };
bcmcli_enum_val bcmolt_lim_ram_string_table[] = { { .name = "llid_up", .val = BCMOLT_LIM_RAM_LLID_UP }, { .name = "per_onu_stat", .val = BCMOLT_LIM_RAM_PER_ONU_STAT }, { .name = "fec_up_full_s", .val = BCMOLT_LIM_RAM_FEC_UP_FULL_S }, { .name = "fec_up_data", .val = BCMOLT_LIM_RAM_FEC_UP_DATA }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_lim_ram = { .name = "bcmolt_lim_ram", .descr = "LIM RAM", .size = sizeof(bcmolt_lim_ram), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_lim_ram_string_table } };
bcmcli_enum_val bcmolt_lky_ram_string_table[] = { { .name = "tx_key_ram", .val = BCMOLT_LKY_RAM_TX_KEY_RAM }, { .name = "tx_key_buffer", .val = BCMOLT_LKY_RAM_TX_KEY_BUFFER }, { .name = "rx_key_ram", .val = BCMOLT_LKY_RAM_RX_KEY_RAM }, { .name = "rx_key_buffer", .val = BCMOLT_LKY_RAM_RX_KEY_BUFFER }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_lky_ram = { .name = "bcmolt_lky_ram", .descr = "LKY RAM", .size = sizeof(bcmolt_lky_ram), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_lky_ram_string_table } };
bcmcli_enum_val bcmolt_mic_ram_string_table[] = { { .name = "range", .val = BCMOLT_MIC_RAM_RANGE }, { .name = "llid", .val = BCMOLT_MIC_RAM_LLID }, { .name = "index", .val = BCMOLT_MIC_RAM_IDX }, { .name = "grant_miss", .val = BCMOLT_MIC_RAM_GRANT_MISS }, { .name = "grant_id", .val = BCMOLT_MIC_RAM_GRANT_ID }, { .name = "tx_iv", .val = BCMOLT_MIC_RAM_TX_IV }, { .name = "rx_iv", .val = BCMOLT_MIC_RAM_RX_IV }, { .name = "tx_port_stat", .val = BCMOLT_MIC_RAM_TX_PORT_STAT }, { .name = "rx_port_stat", .val = BCMOLT_MIC_RAM_RX_PORT_STAT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_mic_ram = { .name = "bcmolt_mic_ram", .descr = "MIC RAM", .size = sizeof(bcmolt_mic_ram), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_mic_ram_string_table } };
bcmcli_enum_val bcmolt_xpcsrm_ram_string_table[] = { { .name = "capture_fifo", .val = BCMOLT_XPCSRM_RAM_CAPTURE_FIFO }, { .name = "fec_decode", .val = BCMOLT_XPCSRM_RAM_FEC_DECODE }, { .name = "fec_stats", .val = BCMOLT_XPCSRM_RAM_FEC_STATS }, { .name = "fec_enqueue", .val = BCMOLT_XPCSRM_RAM_FEC_ENQUEUE }, { .name = "idle_insert", .val = BCMOLT_XPCSRM_RAM_IDLE_INSERT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xpcsrm_ram = { .name = "bcmolt_xpcsrm_ram", .descr = "XPCSRM RAM", .size = sizeof(bcmolt_xpcsrm_ram), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xpcsrm_ram_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_dummy_struct_for_embedded_types_fields[] = { { .name = "ad", .descr = "ad", .offset = offsetof(bcmolt_dummy_struct_for_embedded_types, ad), .type = &type_descr_uint8_t }, { .name = "et", .descr = "et", .offset = offsetof(bcmolt_dummy_struct_for_embedded_types, et), .type = &type_descr_uint8_t }, { .name = "elg", .descr = "elg", .offset = offsetof(bcmolt_dummy_struct_for_embedded_types, elg), .type = &type_descr_uint8_t }, { .name = "dba_port", .descr = "dba port", .offset = offsetof(bcmolt_dummy_struct_for_embedded_types, dba_port), .type = &type_descr_uint8_t }, { .name = "sgb", .descr = "sgb", .offset = offsetof(bcmolt_dummy_struct_for_embedded_types, sgb), .type = &type_descr_bcmolt_drv_sgb_id }, { .name = "icf", .descr = "icf", .offset = offsetof(bcmolt_dummy_struct_for_embedded_types, icf), .type = &type_descr_bcmolt_drv_icf_id }, { .name = "tfb_trap_behavior", .descr = "tfb trap behavior", .offset = offsetof(bcmolt_dummy_struct_for_embedded_types, tfb_trap_behavior), .type = &type_descr_bcmolt_tfb_trap_behavior }, { .name = "tfb_mode", .descr = "tfb mode", .offset = offsetof(bcmolt_dummy_struct_for_embedded_types, tfb_mode), .type = &type_descr_bcmolt_tfb_mode }, { .name = "lim_sec_mode_up", .descr = "lim sec mode up", .offset = offsetof(bcmolt_dummy_struct_for_embedded_types, lim_sec_mode_up), .type = &type_descr_bcmolt_lim_sec_mode_up }, { .name = "lim_sec_mode_dn", .descr = "lim sec mode dn", .offset = offsetof(bcmolt_dummy_struct_for_embedded_types, lim_sec_mode_dn), .type = &type_descr_bcmolt_lim_sec_mode_dn }, { .name = "xim_sec_mode", .descr = "xim sec mode", .offset = offsetof(bcmolt_dummy_struct_for_embedded_types, xim_sec_mode), .type = &type_descr_bcmolt_xim_sec_mode }, { .name = "dba_ram", .descr = "dba ram", .offset = offsetof(bcmolt_dummy_struct_for_embedded_types, dba_ram), .type = &type_descr_bcmolt_dba_ram }, { .name = "hsc_ram", .descr = "hsc ram", .offset = offsetof(bcmolt_dummy_struct_for_embedded_types, hsc_ram), .type = &type_descr_bcmolt_hsc_ram }, { .name = "lim_ram", .descr = "lim ram", .offset = offsetof(bcmolt_dummy_struct_for_embedded_types, lim_ram), .type = &type_descr_bcmolt_lim_ram }, { .name = "lky_ram", .descr = "lky ram", .offset = offsetof(bcmolt_dummy_struct_for_embedded_types, lky_ram), .type = &type_descr_bcmolt_lky_ram }, { .name = "mic_ram", .descr = "mic ram", .offset = offsetof(bcmolt_dummy_struct_for_embedded_types, mic_ram), .type = &type_descr_bcmolt_mic_ram }, { .name = "xpcs_ram", .descr = "xpcs ram", .offset = offsetof(bcmolt_dummy_struct_for_embedded_types, xpcs_ram), .type = &type_descr_bcmolt_xpcsrm_ram }, { .name = "xg2g_id", .descr = "xg2g id", .offset = offsetof(bcmolt_dummy_struct_for_embedded_types, xg2g_id), .type = &type_descr_uint8_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_dummy_struct_for_embedded_types = { .name = "bcmolt_dummy_struct_for_embedded_types", .descr = "Dummy Struct For Embedded Types", .size = sizeof(bcmolt_dummy_struct_for_embedded_types), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_dummy_struct_for_embedded_types_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_dummy_struct_for_embedded_types_fields } } };
bcmcli_enum_val bcmolt_embedded_image_transfer_status_string_table[] = { { .name = "none", .val = BCMOLT_EMBEDDED_IMAGE_TRANSFER_STATUS_NONE }, { .name = "in_progress", .val = BCMOLT_EMBEDDED_IMAGE_TRANSFER_STATUS_IN_PROGRESS }, { .name = "success", .val = BCMOLT_EMBEDDED_IMAGE_TRANSFER_STATUS_SUCCESS }, { .name = "failure", .val = BCMOLT_EMBEDDED_IMAGE_TRANSFER_STATUS_FAILURE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_embedded_image_transfer_status = { .name = "bcmolt_embedded_image_transfer_status", .descr = "embedded image transfer status", .size = sizeof(bcmolt_embedded_image_transfer_status), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_embedded_image_transfer_status_string_table } };
static bcmcli_type_descr BCM_DESCR string_64 = { .name = "string[64]", .descr = "ASCII string with max length 64", .size = sizeof(char[64]), .base_type = BCMOLT_BASE_TYPE_ID_STRING };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_embedded_image_entry_fields[] = { { .name = "image_type", .descr = "Type of the embedded file image.", .offset = offsetof(bcmolt_embedded_image_entry, image_type), .type = &type_descr_bcmolt_device_image_type }, { .name = "image_size", .descr = "Size of the embedded file image.  Unit is bytes.", .offset = offsetof(bcmolt_embedded_image_entry, image_size), .type = &type_descr_uint32_t }, { .name = "crc32", .descr = "CRC 32 checksum of entire file image data.", .offset = offsetof(bcmolt_embedded_image_entry, crc32), .type = &type_descr_uint32_t_hex }, { .name = "status", .descr = "Image transfer status.", .offset = offsetof(bcmolt_embedded_image_entry, status), .type = &type_descr_bcmolt_embedded_image_transfer_status }, { .name = "image_name", .descr = "Name of the file image.  Null-terminated string.  This is required for the DPoE ONU only.  DPoE requires the write request OAM contains the name of the file.", .offset = offsetof(bcmolt_embedded_image_entry, image_name), .type = &string_64 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_embedded_image_entry = { .name = "bcmolt_embedded_image_entry", .descr = "Embedded image entry", .size = sizeof(bcmolt_embedded_image_entry), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_embedded_image_entry_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_embedded_image_entry_fields } } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_embedded_image_entry_list_u8 = { .name = "bcmolt_embedded_image_entry_list_u8", .descr = "Variable-length list of embedded_image_entry", .size = sizeof(bcmolt_embedded_image_entry_list_u8), .base_type = BCMOLT_BASE_TYPE_ID_ARR_DYN, .x = { .arr_dyn = { .elem_type = &type_descr_bcmolt_embedded_image_entry, .len_size = 1, .max_size = DEFAULT_DYN_ARR_MAX_SIZE / sizeof(bcmolt_embedded_image_entry) } } };
bcmcli_enum_val bcmolt_epon_encryption_information_format_string_table[] = { { .name = "cfb", .val = BCMOLT_EPON_ENCRYPTION_INFORMATION_FORMAT_CFB }, { .name = "ctr", .val = BCMOLT_EPON_ENCRYPTION_INFORMATION_FORMAT_CTR }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_encryption_information_format = { .name = "bcmolt_epon_encryption_information_format", .descr = "EPON Encryption information format", .size = sizeof(bcmolt_epon_encryption_information_format), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_encryption_information_format_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_encryption_information_container_fields[] = { { .name = "format", .descr = "Format", .offset = offsetof(bcmolt_encryption_information_container, format), .type = &type_descr_bcmolt_epon_encryption_information_format } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_encryption_information_container_cfb_fields[] = { { .name = "key", .descr = "Key", .offset = offsetof(bcmolt_encryption_information_container, u.cfb.key) - offsetof(bcmolt_encryption_information_container, u.cfb.key), .type = &type_descr_uint8_t_arr_16 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_encryption_information_container_cfb = { .name = "bcmolt_encryption_information_container_cfb", .descr = "Encryption_information_container CFB", .size = sizeof(((bcmolt_encryption_information_container *)0)->u.cfb), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_encryption_information_container_cfb_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_encryption_information_container_cfb_fields } } };
static bcmcli_type_descr BCM_DESCR type_descr_uint8_t_arr_8 = { .name = "uint8_t[8]", .descr = "Array of 8 elements of type uint8_t", .size = sizeof(uint8_t[8]), .base_type = BCMOLT_BASE_TYPE_ID_ARR_FIXED, .x = { .arr_fixed = { .elem_type = &type_descr_uint8_t, .size = 8 } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_encryption_information_container_ctr_fields[] = { { .name = "key", .descr = "Key", .offset = offsetof(bcmolt_encryption_information_container, u.ctr.key) - offsetof(bcmolt_encryption_information_container, u.ctr.key), .type = &type_descr_uint8_t_arr_16 }, { .name = "sci", .descr = "SCI", .offset = offsetof(bcmolt_encryption_information_container, u.ctr.sci) - offsetof(bcmolt_encryption_information_container, u.ctr.key), .type = &type_descr_uint8_t_arr_8 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_encryption_information_container_ctr = { .name = "bcmolt_encryption_information_container_ctr", .descr = "Encryption_information_container CTR", .size = sizeof(((bcmolt_encryption_information_container *)0)->u.ctr), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_encryption_information_container_ctr_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_encryption_information_container_ctr_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_encryption_information_container_union_fields[] = { { .name = "u.cfb", .descr = "", .offset = offsetof(bcmolt_encryption_information_container, u.cfb), .type = &type_descr_bcmolt_encryption_information_container_cfb }, { .name = "u.ctr", .descr = "", .offset = offsetof(bcmolt_encryption_information_container, u.ctr), .type = &type_descr_bcmolt_encryption_information_container_ctr }, { } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_encryption_information_container = { .name = "bcmolt_encryption_information_container", .descr = "Encryption_information_container", .size = sizeof(bcmolt_encryption_information_container), .base_type = BCMOLT_BASE_TYPE_ID_UNION, .x = { .u = { .num_common_fields = sizeof(type_descr_bcmolt_encryption_information_container_fields) / sizeof(bcmcli_field_descr), .common_fields = type_descr_bcmolt_encryption_information_container_fields, .classifier_idx = 0, .union_fields = type_descr_bcmolt_encryption_information_container_union_fields } } };
bcmcli_enum_val bcmolt_energy_detect_source_string_table[] = { { .name = "internal", .val = BCMOLT_ENERGY_DETECT_SOURCE_INTERNAL }, { .name = "trx", .val = BCMOLT_ENERGY_DETECT_SOURCE_TRX }, { .name = "bcdr", .val = BCMOLT_ENERGY_DETECT_SOURCE_BCDR }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_energy_detect_source = { .name = "bcmolt_energy_detect_source", .descr = "energy detect source", .size = sizeof(bcmolt_energy_detect_source), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_energy_detect_source_string_table } };
bcmcli_enum_val bcmolt_epon_1g_turbo_mode_string_table[] = { { .name = "disabled", .val = BCMOLT_EPON_1G_TURBO_MODE_DISABLED }, { .name = "enabled", .val = BCMOLT_EPON_1G_TURBO_MODE_ENABLED }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_1g_turbo_mode = { .name = "bcmolt_epon_1g_turbo_mode", .descr = "EPON turbo mode.  Enables double downstream speed (2G) on 1G EPON NIs", .size = sizeof(bcmolt_epon_1g_turbo_mode), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_1g_turbo_mode_string_table } };
bcmcli_enum_val bcmolt_epon_clock_transport_mode_string_table[] = { { .name = "host_driven", .val = BCMOLT_EPON_CLOCK_TRANSPORT_MODE_HOST_DRIVEN }, { .name = "embedded_driven", .val = BCMOLT_EPON_CLOCK_TRANSPORT_MODE_EMBEDDED_DRIVEN }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_clock_transport_mode = { .name = "bcmolt_epon_clock_transport_mode", .descr = "EPON Clock Transport Mode", .size = sizeof(bcmolt_epon_clock_transport_mode), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_clock_transport_mode_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_clock_transport_configuration_fields[] = { { .name = "epon_clock_transport_mode", .descr = "Clock Transport mode on this OLT PON Port.", .offset = offsetof(bcmolt_epon_clock_transport_configuration, epon_clock_transport_mode), .type = &type_descr_bcmolt_epon_clock_transport_mode } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_clock_transport_configuration = { .name = "bcmolt_epon_clock_transport_configuration", .descr = "EPON clock transport configuration", .size = sizeof(bcmolt_epon_clock_transport_configuration), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_clock_transport_configuration_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_clock_transport_configuration_fields } } };
bcmcli_enum_val bcmolt_epon_dba_reporting_mode_string_table[] = { { .name = "siepon_a", .val = BCMOLT_EPON_DBA_REPORTING_MODE_SIEPON_A }, { .name = "siepon_b", .val = BCMOLT_EPON_DBA_REPORTING_MODE_SIEPON_B }, { .name = "siepon_c", .val = BCMOLT_EPON_DBA_REPORTING_MODE_SIEPON_C }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_dba_reporting_mode = { .name = "bcmolt_epon_dba_reporting_mode", .descr = "Control for how the DBA handles received MPCP report frames.", .size = sizeof(bcmolt_epon_dba_reporting_mode), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_dba_reporting_mode_string_table } };
bcmcli_enum_val bcmolt_epon_link_rate_string_table[] = { { .name = "ten_ten", .val = BCMOLT_EPON_LINK_RATE_TEN_TEN }, { .name = "ten_one", .val = BCMOLT_EPON_LINK_RATE_TEN_ONE }, { .name = "one_one", .val = BCMOLT_EPON_LINK_RATE_ONE_ONE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_rate = { .name = "bcmolt_epon_link_rate", .descr = "EPON link rate", .size = sizeof(bcmolt_epon_link_rate), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_link_rate_string_table } };
bcmcli_enum_val bcmolt_status_string_table[] = { { .name = "off", .val = BCMOLT_STATUS_OFF }, { .name = "on", .val = BCMOLT_STATUS_ON }, { .name = "no_change", .val = BCMOLT_STATUS_NO_CHANGE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_status = { .name = "bcmolt_status", .descr = "Status", .size = sizeof(bcmolt_status), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_status_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_unknown_link_status_fields[] = { { .name = "link_rate", .descr = "The rate of the unknown link", .offset = offsetof(bcmolt_unknown_link_status, link_rate), .type = &type_descr_bcmolt_epon_link_rate }, { .name = "alarm_status", .descr = "Whether the unknown link alarm is raised or cleared.", .offset = offsetof(bcmolt_unknown_link_status, alarm_status), .type = &type_descr_bcmolt_status } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_unknown_link_status = { .name = "bcmolt_unknown_link_status", .descr = "Data of unknown link, including rate and alarm status", .size = sizeof(bcmolt_unknown_link_status), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_unknown_link_status_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_unknown_link_status_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_laser_on_off_status_fields[] = { { .name = "laser_on_time", .descr = "The laser on time of the ONU that is violating.", .offset = offsetof(bcmolt_laser_on_off_status, laser_on_time), .type = &type_descr_uint32_t }, { .name = "laser_off_time", .descr = "The laser off time of the ONU that is violating.", .offset = offsetof(bcmolt_laser_on_off_status, laser_off_time), .type = &type_descr_uint32_t }, { .name = "alarm_status", .descr = "Whether the laser on/off violation alarm is raised or cleared.", .offset = offsetof(bcmolt_laser_on_off_status, alarm_status), .type = &type_descr_bcmolt_status } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_laser_on_off_status = { .name = "bcmolt_laser_on_off_status", .descr = "Data of laser on/off violating link, including attempted laser on time, attempted laser off time, and alarm status.", .size = sizeof(bcmolt_laser_on_off_status), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_laser_on_off_status_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_laser_on_off_status_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_range_status_fields[] = { { .name = "range", .descr = "The range that the violating link attempted to register at.", .offset = offsetof(bcmolt_range_status, range), .type = &type_descr_uint32_t }, { .name = "alarm_status", .descr = "Whether the range violation alarm is raised or cleared.", .offset = offsetof(bcmolt_range_status, alarm_status), .type = &type_descr_bcmolt_status } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_range_status = { .name = "bcmolt_range_status", .descr = "Data of range violating link, including the range it attempted to use, and alarm status.", .size = sizeof(bcmolt_range_status), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_range_status_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_range_status_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_rogue_status_fields[] = { { .name = "denied_llid", .descr = "LLID", .offset = offsetof(bcmolt_rogue_status, denied_llid), .type = &type_descr_uint16_t }, { .name = "denied_range", .descr = "ONU Range", .offset = offsetof(bcmolt_rogue_status, denied_range), .type = &type_descr_uint32_t }, { .name = "alarm_status", .descr = "Alarm State", .offset = offsetof(bcmolt_rogue_status, alarm_status), .type = &type_descr_bcmolt_status } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_rogue_status = { .name = "bcmolt_rogue_status", .descr = "Details of Suspected Rogue ONU provided in Denied Link Alarm", .size = sizeof(bcmolt_rogue_status), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_rogue_status_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_rogue_status_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_denied_link_alarm_state_fields[] = { { .name = "unknown_link_violation", .descr = "Unknown Link Violation", .offset = offsetof(bcmolt_epon_denied_link_alarm_state, unknown_link_violation), .type = &type_descr_bcmolt_unknown_link_status }, { .name = "overhead_profile_violation", .descr = "Overhead Profile Violation", .offset = offsetof(bcmolt_epon_denied_link_alarm_state, overhead_profile_violation), .type = &type_descr_bcmolt_status }, { .name = "max_link_violation", .descr = "Max Link Violation", .offset = offsetof(bcmolt_epon_denied_link_alarm_state, max_link_violation), .type = &type_descr_bcmolt_status }, { .name = "llid_pool_empty_violation", .descr = "LLID Pool Empty Violation", .offset = offsetof(bcmolt_epon_denied_link_alarm_state, llid_pool_empty_violation), .type = &type_descr_bcmolt_status }, { .name = "laser_on_off_violation", .descr = "Laser On/Off Violation", .offset = offsetof(bcmolt_epon_denied_link_alarm_state, laser_on_off_violation), .type = &type_descr_bcmolt_laser_on_off_status }, { .name = "system_resource_violation", .descr = "System Resource Violation", .offset = offsetof(bcmolt_epon_denied_link_alarm_state, system_resource_violation), .type = &type_descr_bcmolt_status }, { .name = "range_violation", .descr = "Range Violation", .offset = offsetof(bcmolt_epon_denied_link_alarm_state, range_violation), .type = &type_descr_bcmolt_range_status }, { .name = "tdm_channels_exhausted", .descr = "TDM Channels Exhausted", .offset = offsetof(bcmolt_epon_denied_link_alarm_state, tdm_channels_exhausted), .type = &type_descr_bcmolt_status }, { .name = "rogue_violation", .descr = "Rogue ONU Violation", .offset = offsetof(bcmolt_epon_denied_link_alarm_state, rogue_violation), .type = &type_descr_bcmolt_rogue_status }, { .name = "upstream_bandwidth_violation", .descr = "Upstream Bandwidth Violation", .offset = offsetof(bcmolt_epon_denied_link_alarm_state, upstream_bandwidth_violation), .type = &type_descr_bcmolt_status } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_denied_link_alarm_state = { .name = "bcmolt_epon_denied_link_alarm_state", .descr = "The state of all alarms on an EPON Denied Link.", .size = sizeof(bcmolt_epon_denied_link_alarm_state), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_denied_link_alarm_state_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_denied_link_alarm_state_fields } } };
bcmcli_enum_val bcmolt_epon_denied_link_auto_cfg_id_string_table[] = { { .name = "laser_on_off_violation", .val = BCMOLT_EPON_DENIED_LINK_AUTO_CFG_ID_LASER_ON_OFF_VIOLATION }, { .name = "llid_pool_empty_violation", .val = BCMOLT_EPON_DENIED_LINK_AUTO_CFG_ID_LLID_POOL_EMPTY_VIOLATION }, { .name = "max_link_violation", .val = BCMOLT_EPON_DENIED_LINK_AUTO_CFG_ID_MAX_LINK_VIOLATION }, { .name = "overhead_profile_violation", .val = BCMOLT_EPON_DENIED_LINK_AUTO_CFG_ID_OVERHEAD_PROFILE_VIOLATION }, { .name = "range_violation", .val = BCMOLT_EPON_DENIED_LINK_AUTO_CFG_ID_RANGE_VIOLATION }, { .name = "rogue_violation", .val = BCMOLT_EPON_DENIED_LINK_AUTO_CFG_ID_ROGUE_VIOLATION }, { .name = "system_resource_violation", .val = BCMOLT_EPON_DENIED_LINK_AUTO_CFG_ID_SYSTEM_RESOURCE_VIOLATION }, { .name = "tdm_channels_exhausted", .val = BCMOLT_EPON_DENIED_LINK_AUTO_CFG_ID_TDM_CHANNELS_EXHAUSTED }, { .name = "unknown_link_violation", .val = BCMOLT_EPON_DENIED_LINK_AUTO_CFG_ID_UNKNOWN_LINK_VIOLATION }, { .name = "upstream_bandwidth_violation", .val = BCMOLT_EPON_DENIED_LINK_AUTO_CFG_ID_UPSTREAM_BANDWIDTH_VIOLATION }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_denied_link_auto_cfg_id = { .name = "bcmolt_epon_denied_link_auto_cfg_id", .descr = "Identifiers for all properties contained in the epon_denied_link_auto_cfg group.", .size = sizeof(bcmolt_epon_denied_link_auto_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_denied_link_auto_cfg_id_string_table } };
bcmcli_enum_val bcmolt_epon_denied_link_cfg_id_string_table[] = { { .name = "alarm_state", .val = BCMOLT_EPON_DENIED_LINK_CFG_ID_ALARM_STATE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_denied_link_cfg_id = { .name = "bcmolt_epon_denied_link_cfg_id", .descr = "Identifiers for all properties contained in the epon_denied_link_cfg group.", .size = sizeof(bcmolt_epon_denied_link_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_denied_link_cfg_id_string_table } };
bcmcli_enum_val bcmolt_epon_denied_link_key_id_string_table[] = { { .name = "epon_ni", .val = BCMOLT_EPON_DENIED_LINK_KEY_ID_EPON_NI }, { .name = "mac_address", .val = BCMOLT_EPON_DENIED_LINK_KEY_ID_MAC_ADDRESS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_denied_link_key_id = { .name = "bcmolt_epon_denied_link_key_id", .descr = "Identifiers for all properties contained in the epon_denied_link_key group.", .size = sizeof(bcmolt_epon_denied_link_key_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_denied_link_key_id_string_table } };
bcmcli_enum_val bcmolt_epon_denied_link_laser_on_off_violation_id_string_table[] = { { .name = "alarm_status", .val = BCMOLT_EPON_DENIED_LINK_LASER_ON_OFF_VIOLATION_ID_ALARM_STATUS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_denied_link_laser_on_off_violation_id = { .name = "bcmolt_epon_denied_link_laser_on_off_violation_id", .descr = "Identifiers for all properties contained in the epon_denied_link_laser_on_off_violation group.", .size = sizeof(bcmolt_epon_denied_link_laser_on_off_violation_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_denied_link_laser_on_off_violation_id_string_table } };
bcmcli_enum_val bcmolt_epon_denied_link_llid_pool_empty_violation_id_string_table[] = { { .name = "alarm_status", .val = BCMOLT_EPON_DENIED_LINK_LLID_POOL_EMPTY_VIOLATION_ID_ALARM_STATUS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_denied_link_llid_pool_empty_violation_id = { .name = "bcmolt_epon_denied_link_llid_pool_empty_violation_id", .descr = "Identifiers for all properties contained in the epon_denied_link_llid_pool_empty_violation group.", .size = sizeof(bcmolt_epon_denied_link_llid_pool_empty_violation_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_denied_link_llid_pool_empty_violation_id_string_table } };
bcmcli_enum_val bcmolt_epon_denied_link_max_link_violation_id_string_table[] = { { .name = "alarm_status", .val = BCMOLT_EPON_DENIED_LINK_MAX_LINK_VIOLATION_ID_ALARM_STATUS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_denied_link_max_link_violation_id = { .name = "bcmolt_epon_denied_link_max_link_violation_id", .descr = "Identifiers for all properties contained in the epon_denied_link_max_link_violation group.", .size = sizeof(bcmolt_epon_denied_link_max_link_violation_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_denied_link_max_link_violation_id_string_table } };
bcmcli_enum_val bcmolt_epon_denied_link_overhead_profile_violation_id_string_table[] = { { .name = "alarm_status", .val = BCMOLT_EPON_DENIED_LINK_OVERHEAD_PROFILE_VIOLATION_ID_ALARM_STATUS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_denied_link_overhead_profile_violation_id = { .name = "bcmolt_epon_denied_link_overhead_profile_violation_id", .descr = "Identifiers for all properties contained in the epon_denied_link_overhead_profile_violation group.", .size = sizeof(bcmolt_epon_denied_link_overhead_profile_violation_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_denied_link_overhead_profile_violation_id_string_table } };
bcmcli_enum_val bcmolt_epon_denied_link_range_violation_id_string_table[] = { { .name = "alarm_status", .val = BCMOLT_EPON_DENIED_LINK_RANGE_VIOLATION_ID_ALARM_STATUS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_denied_link_range_violation_id = { .name = "bcmolt_epon_denied_link_range_violation_id", .descr = "Identifiers for all properties contained in the epon_denied_link_range_violation group.", .size = sizeof(bcmolt_epon_denied_link_range_violation_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_denied_link_range_violation_id_string_table } };
bcmcli_enum_val bcmolt_epon_denied_link_rogue_violation_id_string_table[] = { { .name = "alarm_status", .val = BCMOLT_EPON_DENIED_LINK_ROGUE_VIOLATION_ID_ALARM_STATUS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_denied_link_rogue_violation_id = { .name = "bcmolt_epon_denied_link_rogue_violation_id", .descr = "Identifiers for all properties contained in the epon_denied_link_rogue_violation group.", .size = sizeof(bcmolt_epon_denied_link_rogue_violation_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_denied_link_rogue_violation_id_string_table } };
bcmcli_enum_val bcmolt_epon_denied_link_system_resource_violation_id_string_table[] = { { .name = "alarm_status", .val = BCMOLT_EPON_DENIED_LINK_SYSTEM_RESOURCE_VIOLATION_ID_ALARM_STATUS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_denied_link_system_resource_violation_id = { .name = "bcmolt_epon_denied_link_system_resource_violation_id", .descr = "Identifiers for all properties contained in the epon_denied_link_system_resource_violation group.", .size = sizeof(bcmolt_epon_denied_link_system_resource_violation_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_denied_link_system_resource_violation_id_string_table } };
bcmcli_enum_val bcmolt_epon_denied_link_tdm_channels_exhausted_id_string_table[] = { { .name = "alarm_status", .val = BCMOLT_EPON_DENIED_LINK_TDM_CHANNELS_EXHAUSTED_ID_ALARM_STATUS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_denied_link_tdm_channels_exhausted_id = { .name = "bcmolt_epon_denied_link_tdm_channels_exhausted_id", .descr = "Identifiers for all properties contained in the epon_denied_link_tdm_channels_exhausted group.", .size = sizeof(bcmolt_epon_denied_link_tdm_channels_exhausted_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_denied_link_tdm_channels_exhausted_id_string_table } };
bcmcli_enum_val bcmolt_epon_denied_link_unknown_link_violation_id_string_table[] = { { .name = "alarm_status", .val = BCMOLT_EPON_DENIED_LINK_UNKNOWN_LINK_VIOLATION_ID_ALARM_STATUS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_denied_link_unknown_link_violation_id = { .name = "bcmolt_epon_denied_link_unknown_link_violation_id", .descr = "Identifiers for all properties contained in the epon_denied_link_unknown_link_violation group.", .size = sizeof(bcmolt_epon_denied_link_unknown_link_violation_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_denied_link_unknown_link_violation_id_string_table } };
bcmcli_enum_val bcmolt_epon_denied_link_upstream_bandwidth_violation_id_string_table[] = { { .name = "alarm_status", .val = BCMOLT_EPON_DENIED_LINK_UPSTREAM_BANDWIDTH_VIOLATION_ID_ALARM_STATUS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_denied_link_upstream_bandwidth_violation_id = { .name = "bcmolt_epon_denied_link_upstream_bandwidth_violation_id", .descr = "Identifiers for all properties contained in the epon_denied_link_upstream_bandwidth_violation group.", .size = sizeof(bcmolt_epon_denied_link_upstream_bandwidth_violation_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_denied_link_upstream_bandwidth_violation_id_string_table } };
bcmcli_enum_val bcmolt_epon_encryption_mode_string_table[] = { { .name = "no_encryption", .val = BCMOLT_EPON_ENCRYPTION_MODE_NO_ENCRYPTION }, { .name = "epon_triple_churning", .val = BCMOLT_EPON_ENCRYPTION_MODE_EPON_TRIPLE_CHURNING }, { .name = "epon_zero_overhead_aes", .val = BCMOLT_EPON_ENCRYPTION_MODE_EPON_ZERO_OVERHEAD_AES }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_encryption_mode = { .name = "bcmolt_epon_encryption_mode", .descr = "EPON encryption mode", .size = sizeof(bcmolt_epon_encryption_mode), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_encryption_mode_string_table } };
bcmcli_enum_val bcmolt_epon_key_choice_string_table[] = { { .name = "key_0", .val = BCMOLT_EPON_KEY_CHOICE_KEY_0 }, { .name = "key_1", .val = BCMOLT_EPON_KEY_CHOICE_KEY_1 }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_key_choice = { .name = "bcmolt_epon_key_choice", .descr = "Epon Key Choice", .size = sizeof(bcmolt_epon_key_choice), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_key_choice_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_encryption_config_fields[] = { { .name = "downstream_mode", .descr = "Downstream Mode", .offset = offsetof(bcmolt_epon_encryption_config, downstream_mode), .type = &type_descr_bcmolt_epon_encryption_mode }, { .name = "downstream_key_choice", .descr = "Downstream Key Choice", .offset = offsetof(bcmolt_epon_encryption_config, downstream_key_choice), .type = &type_descr_bcmolt_epon_key_choice }, { .name = "downstream_encryption_information", .descr = "Downstream Encryption Information", .offset = offsetof(bcmolt_epon_encryption_config, downstream_encryption_information), .type = &type_descr_bcmolt_encryption_information_container }, { .name = "upstream_mode", .descr = "Upstream Mode", .offset = offsetof(bcmolt_epon_encryption_config, upstream_mode), .type = &type_descr_bcmolt_epon_encryption_mode }, { .name = "upstream_key_choice", .descr = "Upstream Key Choice", .offset = offsetof(bcmolt_epon_encryption_config, upstream_key_choice), .type = &type_descr_bcmolt_epon_key_choice }, { .name = "upstream_encryption_information", .descr = "Upstream Encryption Information", .offset = offsetof(bcmolt_epon_encryption_config, upstream_encryption_information), .type = &type_descr_bcmolt_encryption_information_container } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_encryption_config = { .name = "bcmolt_epon_encryption_config", .descr = "Keys and mode for encrypting the EPON logical link.", .size = sizeof(bcmolt_epon_encryption_config), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_encryption_config_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_encryption_config_fields } } };
bcmcli_enum_val bcmolt_epon_encryption_direction_string_table[] = { { .name = "downstream_only", .val = BCMOLT_EPON_ENCRYPTION_DIRECTION_DOWNSTREAM_ONLY }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_encryption_direction = { .name = "bcmolt_epon_encryption_direction", .descr = "EPON Encryption Direction", .size = sizeof(bcmolt_epon_encryption_direction), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_encryption_direction_string_table } };
bcmcli_enum_val bcmolt_epon_fec_en_state_string_table[] = { { .name = "disabled", .val = BCMOLT_EPON_FEC_EN_STATE_DISABLED }, { .name = "enabled", .val = BCMOLT_EPON_FEC_EN_STATE_ENABLED }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_fec_en_state = { .name = "bcmolt_epon_fec_en_state", .descr = "EPON FEC enable state.  See flag descriptions for restrictions.", .size = sizeof(bcmolt_epon_fec_en_state), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_fec_en_state_string_table } };
bcmcli_enum_val bcmolt_epon_oam_type_string_table[] = { { .name = "broadcom", .val = BCMOLT_EPON_OAM_TYPE_BROADCOM }, { .name = "ctc", .val = BCMOLT_EPON_OAM_TYPE_CTC }, { .name = "dpoe", .val = BCMOLT_EPON_OAM_TYPE_DPOE }, { .name = "siepona", .val = BCMOLT_EPON_OAM_TYPE_SIEPONA }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_oam_type = { .name = "bcmolt_epon_oam_type", .descr = "The types of OAM to choose from.", .size = sizeof(bcmolt_epon_oam_type), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_oam_type_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_key_exchange_config_fields[] = { { .name = "oam_type", .descr = "The type of OAM that is sent to start the key exchange.", .offset = offsetof(bcmolt_epon_key_exchange_config, oam_type), .type = &type_descr_bcmolt_epon_oam_type }, { .name = "period", .descr = "period", .offset = offsetof(bcmolt_epon_key_exchange_config, period), .type = &type_descr_uint16_t }, { .name = "direction", .descr = "Encryption direction: Downstream only or Bi-directional.", .offset = offsetof(bcmolt_epon_key_exchange_config, direction), .type = &type_descr_bcmolt_epon_encryption_direction } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_key_exchange_config = { .name = "bcmolt_epon_key_exchange_config", .descr = "Key exchange configuration that applies to the EPON link.", .size = sizeof(bcmolt_epon_key_exchange_config), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_key_exchange_config_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_key_exchange_config_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_laser_overhead_parameters_fields[] = { { .name = "laser_on_time", .descr = "Number of time quanta to allow for ONUs' laser-on transition.", .offset = offsetof(bcmolt_epon_laser_overhead_parameters, laser_on_time), .type = &type_descr_uint32_t }, { .name = "laser_off_time", .descr = "Number of time quanta to allow for ONUs' laser-off transition.", .offset = offsetof(bcmolt_epon_laser_overhead_parameters, laser_off_time), .type = &type_descr_uint32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_laser_overhead_parameters = { .name = "bcmolt_epon_laser_overhead_parameters", .descr = "EPON laser overhead parameters. (Laser On and Laser Off times)", .size = sizeof(bcmolt_epon_laser_overhead_parameters), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_laser_overhead_parameters_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_laser_overhead_parameters_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_link_alarm_state_fields[] = { { .name = "key_exchange_failure", .descr = "Key Exchange Failure", .offset = offsetof(bcmolt_epon_link_alarm_state, key_exchange_failure), .type = &type_descr_bcmolt_status }, { .name = "invalid_mpcp_report_received", .descr = "Invalid MPCP Report Received", .offset = offsetof(bcmolt_epon_link_alarm_state, invalid_mpcp_report_received), .type = &type_descr_bcmolt_status }, { .name = "mpcp_report_timeout", .descr = "MPCP Report Timeout", .offset = offsetof(bcmolt_epon_link_alarm_state, mpcp_report_timeout), .type = &type_descr_bcmolt_status }, { .name = "oam_keepalive_timeout", .descr = "OAM Keepalive Timeout", .offset = offsetof(bcmolt_epon_link_alarm_state, oam_keepalive_timeout), .type = &type_descr_bcmolt_status } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_alarm_state = { .name = "bcmolt_epon_link_alarm_state", .descr = "The state of all alarms on an EPON Link.", .size = sizeof(bcmolt_epon_link_alarm_state), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_link_alarm_state_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_link_alarm_state_fields } } };
bcmcli_enum_val bcmolt_epon_link_auto_cfg_id_string_table[] = { { .name = "duplicate_mpcp_registration_request", .val = BCMOLT_EPON_LINK_AUTO_CFG_ID_DUPLICATE_MPCP_REGISTRATION_REQUEST }, { .name = "encryption_enabled", .val = BCMOLT_EPON_LINK_AUTO_CFG_ID_ENCRYPTION_ENABLED }, { .name = "key_exchange_failure", .val = BCMOLT_EPON_LINK_AUTO_CFG_ID_KEY_EXCHANGE_FAILURE }, { .name = "key_exchange_started", .val = BCMOLT_EPON_LINK_AUTO_CFG_ID_KEY_EXCHANGE_STARTED }, { .name = "key_exchange_stopped", .val = BCMOLT_EPON_LINK_AUTO_CFG_ID_KEY_EXCHANGE_STOPPED }, { .name = "link_deleted", .val = BCMOLT_EPON_LINK_AUTO_CFG_ID_LINK_DELETED }, { .name = "link_speed_mismatch", .val = BCMOLT_EPON_LINK_AUTO_CFG_ID_LINK_SPEED_MISMATCH }, { .name = "mpcp_deregistered", .val = BCMOLT_EPON_LINK_AUTO_CFG_ID_MPCP_DEREGISTERED }, { .name = "mpcp_discovered", .val = BCMOLT_EPON_LINK_AUTO_CFG_ID_MPCP_DISCOVERED }, { .name = "mpcp_reg_ack_timeout", .val = BCMOLT_EPON_LINK_AUTO_CFG_ID_MPCP_REG_ACK_TIMEOUT }, { .name = "mpcp_report_timeout", .val = BCMOLT_EPON_LINK_AUTO_CFG_ID_MPCP_REPORT_TIMEOUT }, { .name = "oam_keepalive_timeout", .val = BCMOLT_EPON_LINK_AUTO_CFG_ID_OAM_KEEPALIVE_TIMEOUT }, { .name = "oam_keepalive_timer_started", .val = BCMOLT_EPON_LINK_AUTO_CFG_ID_OAM_KEEPALIVE_TIMER_STARTED }, { .name = "oam_keepalive_timer_stopped", .val = BCMOLT_EPON_LINK_AUTO_CFG_ID_OAM_KEEPALIVE_TIMER_STOPPED }, { .name = "preprovisioned_link_created", .val = BCMOLT_EPON_LINK_AUTO_CFG_ID_PREPROVISIONED_LINK_CREATED }, { .name = "protection_switch_occurred", .val = BCMOLT_EPON_LINK_AUTO_CFG_ID_PROTECTION_SWITCH_OCCURRED }, { .name = "range_value_changed", .val = BCMOLT_EPON_LINK_AUTO_CFG_ID_RANGE_VALUE_CHANGED }, { .name = "rerange_failure", .val = BCMOLT_EPON_LINK_AUTO_CFG_ID_RERANGE_FAILURE }, { .name = "stat_alarm_cleared", .val = BCMOLT_EPON_LINK_AUTO_CFG_ID_STAT_ALARM_CLEARED }, { .name = "stat_alarm_raised", .val = BCMOLT_EPON_LINK_AUTO_CFG_ID_STAT_ALARM_RAISED }, { .name = "static_registration_done", .val = BCMOLT_EPON_LINK_AUTO_CFG_ID_STATIC_REGISTRATION_DONE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_auto_cfg_id = { .name = "bcmolt_epon_link_auto_cfg_id", .descr = "Identifiers for all properties contained in the epon_link_auto_cfg group.", .size = sizeof(bcmolt_epon_link_auto_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_link_auto_cfg_id_string_table } };
bcmcli_enum_val bcmolt_epon_link_cfg_id_string_table[] = { { .name = "link_rate", .val = BCMOLT_EPON_LINK_CFG_ID_LINK_RATE }, { .name = "state_flags", .val = BCMOLT_EPON_LINK_CFG_ID_STATE_FLAGS }, { .name = "llid", .val = BCMOLT_EPON_LINK_CFG_ID_LLID }, { .name = "laser_on_time_tq", .val = BCMOLT_EPON_LINK_CFG_ID_LASER_ON_TIME_TQ }, { .name = "laser_off_time_tq", .val = BCMOLT_EPON_LINK_CFG_ID_LASER_OFF_TIME_TQ }, { .name = "range_value_tq", .val = BCMOLT_EPON_LINK_CFG_ID_RANGE_VALUE_TQ }, { .name = "distance", .val = BCMOLT_EPON_LINK_CFG_ID_DISTANCE }, { .name = "alarm_state", .val = BCMOLT_EPON_LINK_CFG_ID_ALARM_STATE }, { .name = "tunnel_id", .val = BCMOLT_EPON_LINK_CFG_ID_TUNNEL_ID }, { .name = "onu_id", .val = BCMOLT_EPON_LINK_CFG_ID_ONU_ID }, { .name = "min_laser_overhead", .val = BCMOLT_EPON_LINK_CFG_ID_MIN_LASER_OVERHEAD }, { .name = "key_exchange_config", .val = BCMOLT_EPON_LINK_CFG_ID_KEY_EXCHANGE_CONFIG }, { .name = "epon_encryption", .val = BCMOLT_EPON_LINK_CFG_ID_EPON_ENCRYPTION }, { .name = "fec_enable", .val = BCMOLT_EPON_LINK_CFG_ID_FEC_ENABLE }, { .name = "oam_heartbeat_config", .val = BCMOLT_EPON_LINK_CFG_ID_OAM_HEARTBEAT_CONFIG }, { .name = "upstream_bandwidth", .val = BCMOLT_EPON_LINK_CFG_ID_UPSTREAM_BANDWIDTH }, { .name = "ubd_info", .val = BCMOLT_EPON_LINK_CFG_ID_UBD_INFO }, { .name = "clock_transport_enable", .val = BCMOLT_EPON_LINK_CFG_ID_CLOCK_TRANSPORT_ENABLE }, { .name = "pending_grants", .val = BCMOLT_EPON_LINK_CFG_ID_PENDING_GRANTS }, { .name = "link_type", .val = BCMOLT_EPON_LINK_CFG_ID_LINK_TYPE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_cfg_id = { .name = "bcmolt_epon_link_cfg_id", .descr = "Identifiers for all properties contained in the epon_link_cfg group.", .size = sizeof(bcmolt_epon_link_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_link_cfg_id_string_table } };
bcmcli_enum_val bcmolt_epon_link_delete_link_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_delete_link_id = { .name = "bcmolt_epon_link_delete_link_id", .descr = "Identifiers for all properties contained in the epon_link_delete_link group.", .size = sizeof(bcmolt_epon_link_delete_link_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_link_delete_link_id_string_table } };
bcmcli_enum_val bcmolt_epon_link_duplicate_mpcp_registration_request_id_string_table[] = { { .name = "initial_range_tq", .val = BCMOLT_EPON_LINK_DUPLICATE_MPCP_REGISTRATION_REQUEST_ID_INITIAL_RANGE_TQ }, { .name = "current_range_tq", .val = BCMOLT_EPON_LINK_DUPLICATE_MPCP_REGISTRATION_REQUEST_ID_CURRENT_RANGE_TQ }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_duplicate_mpcp_registration_request_id = { .name = "bcmolt_epon_link_duplicate_mpcp_registration_request_id", .descr = "Identifiers for all properties contained in the epon_link_duplicate_mpcp_registration_request group.", .size = sizeof(bcmolt_epon_link_duplicate_mpcp_registration_request_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_link_duplicate_mpcp_registration_request_id_string_table } };
bcmcli_enum_val bcmolt_epon_link_encryption_enabled_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_encryption_enabled_id = { .name = "bcmolt_epon_link_encryption_enabled_id", .descr = "Identifiers for all properties contained in the epon_link_encryption_enabled group.", .size = sizeof(bcmolt_epon_link_encryption_enabled_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_link_encryption_enabled_id_string_table } };
bcmcli_enum_val bcmolt_epon_link_fec_state_string_table[] = { { .name = "disabled", .val = BCMOLT_EPON_LINK_FEC_STATE_DISABLED }, { .name = "enabled", .val = BCMOLT_EPON_LINK_FEC_STATE_ENABLED }, { .name = "use_default", .val = BCMOLT_EPON_LINK_FEC_STATE_USE_DEFAULT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_fec_state = { .name = "bcmolt_epon_link_fec_state", .descr = "epon link fec state", .size = sizeof(bcmolt_epon_link_fec_state), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_link_fec_state_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_link_fec_en_fields[] = { { .name = "upstream", .descr = "FEC enable state for upstream path.", .offset = offsetof(bcmolt_epon_link_fec_en, upstream), .type = &type_descr_bcmolt_epon_link_fec_state }, { .name = "downstream", .descr = "FEC enable state for downstream path.", .offset = offsetof(bcmolt_epon_link_fec_en, downstream), .type = &type_descr_bcmolt_epon_link_fec_state } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_fec_en = { .name = "bcmolt_epon_link_fec_en", .descr = "Downstream and upstream FEC enable state for an EPON link.", .size = sizeof(bcmolt_epon_link_fec_en), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_link_fec_en_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_link_fec_en_fields } } };
bcmcli_enum_val bcmolt_epon_link_force_rediscovery_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_force_rediscovery_id = { .name = "bcmolt_epon_link_force_rediscovery_id", .descr = "Identifiers for all properties contained in the epon_link_force_rediscovery group.", .size = sizeof(bcmolt_epon_link_force_rediscovery_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_link_force_rediscovery_id_string_table } };
bcmcli_enum_val bcmolt_epon_link_frame_captured_id_string_table[] = { { .name = "frame", .val = BCMOLT_EPON_LINK_FRAME_CAPTURED_ID_FRAME }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_frame_captured_id = { .name = "bcmolt_epon_link_frame_captured_id", .descr = "Identifiers for all properties contained in the epon_link_frame_captured group.", .size = sizeof(bcmolt_epon_link_frame_captured_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_link_frame_captured_id_string_table } };
bcmcli_enum_val bcmolt_epon_link_status_string_table[] = { { .name = "none", .val = BCMOLT_EPON_LINK_STATUS_NONE }, { .name = "discovered", .val = BCMOLT_EPON_LINK_STATUS_DISCOVERED }, { .name = "registration_prevented", .val = BCMOLT_EPON_LINK_STATUS_REGISTRATION_PREVENTED }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_status = { .name = "bcmolt_epon_link_status", .descr = "The current registration status of a link.", .size = sizeof(bcmolt_epon_link_status), .base_type = BCMOLT_BASE_TYPE_ID_ENUM_MASK, .x = { .e = bcmolt_epon_link_status_string_table } };
bcmcli_enum_val bcmolt_mpcp_discovery_info_string_table[] = { { .name = "none", .val = BCMOLT_MPCP_DISCOVERY_INFO_NONE }, { .name = "one_g_capable", .val = BCMOLT_MPCP_DISCOVERY_INFO_ONE_G_CAPABLE }, { .name = "ten_g_capable", .val = BCMOLT_MPCP_DISCOVERY_INFO_TEN_G_CAPABLE }, { .name = "one_g_window", .val = BCMOLT_MPCP_DISCOVERY_INFO_ONE_G_WINDOW }, { .name = "ten_g_window", .val = BCMOLT_MPCP_DISCOVERY_INFO_TEN_G_WINDOW }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_mpcp_discovery_info = { .name = "bcmolt_mpcp_discovery_info", .descr = "MPCP discovery info", .size = sizeof(bcmolt_mpcp_discovery_info), .base_type = BCMOLT_BASE_TYPE_ID_ENUM_MASK, .x = { .e = bcmolt_mpcp_discovery_info_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_link_info_fields[] = { { .name = "link_status", .descr = "Link status flags.", .offset = offsetof(bcmolt_epon_link_info, link_status), .type = &type_descr_bcmolt_epon_link_status }, { .name = "rate", .descr = "The rate at which the link operates.", .offset = offsetof(bcmolt_epon_link_info, rate), .type = &type_descr_bcmolt_epon_link_rate }, { .name = "llid", .descr = "The LLID of the link.", .offset = offsetof(bcmolt_epon_link_info, llid), .type = &type_descr_uint16_t_hex }, { .name = "mpcp_discovery_info", .descr = "Flags from MPCP discovery.", .offset = offsetof(bcmolt_epon_link_info, mpcp_discovery_info), .type = &type_descr_bcmolt_mpcp_discovery_info }, { .name = "onu_laser_on_time_tq", .descr = "Laser on time reported by ONU.  This is set to 0 for 1G/1G links as 1G MPCP does not include this field.", .offset = offsetof(bcmolt_epon_link_info, onu_laser_on_time_tq), .type = &type_descr_uint32_t }, { .name = "onu_laser_off_time_tq", .descr = "Laser off time reported by ONU.", .offset = offsetof(bcmolt_epon_link_info, onu_laser_off_time_tq), .type = &type_descr_uint32_t }, { .name = "pending_grants", .descr = "The number of pending grants.", .offset = offsetof(bcmolt_epon_link_info, pending_grants), .type = &type_descr_uint8_t }, { .name = "range_value_tq", .descr = "The link's range value in TQ.", .offset = offsetof(bcmolt_epon_link_info, range_value_tq), .type = &type_descr_uint32_t }, { .name = "tunnel_id", .descr = "The tunnel ID to use when sending traffic to the link.", .offset = offsetof(bcmolt_epon_link_info, tunnel_id), .type = &type_descr_uint32_t_hex } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_info = { .name = "bcmolt_epon_link_info", .descr = "EPON logical link.", .size = sizeof(bcmolt_epon_link_info), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_link_info_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_link_info_fields } } };
bcmcli_enum_val bcmolt_epon_link_inject_frame_id_string_table[] = { { .name = "frame", .val = BCMOLT_EPON_LINK_INJECT_FRAME_ID_FRAME }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_inject_frame_id = { .name = "bcmolt_epon_link_inject_frame_id", .descr = "Identifiers for all properties contained in the epon_link_inject_frame group.", .size = sizeof(bcmolt_epon_link_inject_frame_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_link_inject_frame_id_string_table } };
bcmcli_enum_val bcmolt_epon_link_key_exchange_failure_id_string_table[] = { { .name = "alarm_status", .val = BCMOLT_EPON_LINK_KEY_EXCHANGE_FAILURE_ID_ALARM_STATUS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_key_exchange_failure_id = { .name = "bcmolt_epon_link_key_exchange_failure_id", .descr = "Identifiers for all properties contained in the epon_link_key_exchange_failure group.", .size = sizeof(bcmolt_epon_link_key_exchange_failure_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_link_key_exchange_failure_id_string_table } };
bcmcli_enum_val bcmolt_epon_link_key_exchange_start_id_string_table[] = { { .name = "period", .val = BCMOLT_EPON_LINK_KEY_EXCHANGE_START_ID_PERIOD }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_key_exchange_start_id = { .name = "bcmolt_epon_link_key_exchange_start_id", .descr = "Identifiers for all properties contained in the epon_link_key_exchange_start group.", .size = sizeof(bcmolt_epon_link_key_exchange_start_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_link_key_exchange_start_id_string_table } };
bcmcli_enum_val bcmolt_epon_link_key_exchange_started_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_key_exchange_started_id = { .name = "bcmolt_epon_link_key_exchange_started_id", .descr = "Identifiers for all properties contained in the epon_link_key_exchange_started group.", .size = sizeof(bcmolt_epon_link_key_exchange_started_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_link_key_exchange_started_id_string_table } };
bcmcli_enum_val bcmolt_epon_link_key_exchange_stop_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_key_exchange_stop_id = { .name = "bcmolt_epon_link_key_exchange_stop_id", .descr = "Identifiers for all properties contained in the epon_link_key_exchange_stop group.", .size = sizeof(bcmolt_epon_link_key_exchange_stop_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_link_key_exchange_stop_id_string_table } };
bcmcli_enum_val bcmolt_epon_link_key_exchange_stopped_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_key_exchange_stopped_id = { .name = "bcmolt_epon_link_key_exchange_stopped_id", .descr = "Identifiers for all properties contained in the epon_link_key_exchange_stopped group.", .size = sizeof(bcmolt_epon_link_key_exchange_stopped_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_link_key_exchange_stopped_id_string_table } };
bcmcli_enum_val bcmolt_epon_link_key_id_string_table[] = { { .name = "epon_ni", .val = BCMOLT_EPON_LINK_KEY_ID_EPON_NI }, { .name = "mac_address", .val = BCMOLT_EPON_LINK_KEY_ID_MAC_ADDRESS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_key_id = { .name = "bcmolt_epon_link_key_id", .descr = "Identifiers for all properties contained in the epon_link_key group.", .size = sizeof(bcmolt_epon_link_key_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_link_key_id_string_table } };
bcmcli_enum_val bcmolt_epon_link_link_deleted_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_link_deleted_id = { .name = "bcmolt_epon_link_link_deleted_id", .descr = "Identifiers for all properties contained in the epon_link_link_deleted group.", .size = sizeof(bcmolt_epon_link_link_deleted_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_link_link_deleted_id_string_table } };
bcmcli_enum_val bcmolt_epon_link_link_speed_mismatch_id_string_table[] = { { .name = "previous_rate", .val = BCMOLT_EPON_LINK_LINK_SPEED_MISMATCH_ID_PREVIOUS_RATE }, { .name = "current_rate", .val = BCMOLT_EPON_LINK_LINK_SPEED_MISMATCH_ID_CURRENT_RATE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_link_speed_mismatch_id = { .name = "bcmolt_epon_link_link_speed_mismatch_id", .descr = "Identifiers for all properties contained in the epon_link_link_speed_mismatch group.", .size = sizeof(bcmolt_epon_link_link_speed_mismatch_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_link_link_speed_mismatch_id_string_table } };
bcmcli_enum_val bcmolt_epon_link_mpcp_deregistered_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_mpcp_deregistered_id = { .name = "bcmolt_epon_link_mpcp_deregistered_id", .descr = "Identifiers for all properties contained in the epon_link_mpcp_deregistered group.", .size = sizeof(bcmolt_epon_link_mpcp_deregistered_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_link_mpcp_deregistered_id_string_table } };
bcmcli_enum_val bcmolt_epon_link_mpcp_discovered_id_string_table[] = { { .name = "link_info", .val = BCMOLT_EPON_LINK_MPCP_DISCOVERED_ID_LINK_INFO }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_mpcp_discovered_id = { .name = "bcmolt_epon_link_mpcp_discovered_id", .descr = "Identifiers for all properties contained in the epon_link_mpcp_discovered group.", .size = sizeof(bcmolt_epon_link_mpcp_discovered_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_link_mpcp_discovered_id_string_table } };
bcmcli_enum_val bcmolt_epon_link_mpcp_reg_ack_timeout_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_mpcp_reg_ack_timeout_id = { .name = "bcmolt_epon_link_mpcp_reg_ack_timeout_id", .descr = "Identifiers for all properties contained in the epon_link_mpcp_reg_ack_timeout group.", .size = sizeof(bcmolt_epon_link_mpcp_reg_ack_timeout_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_link_mpcp_reg_ack_timeout_id_string_table } };
bcmcli_enum_val bcmolt_epon_link_mpcp_report_timeout_id_string_table[] = { { .name = "alarm_status", .val = BCMOLT_EPON_LINK_MPCP_REPORT_TIMEOUT_ID_ALARM_STATUS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_mpcp_report_timeout_id = { .name = "bcmolt_epon_link_mpcp_report_timeout_id", .descr = "Identifiers for all properties contained in the epon_link_mpcp_report_timeout group.", .size = sizeof(bcmolt_epon_link_mpcp_report_timeout_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_link_mpcp_report_timeout_id_string_table } };
bcmcli_enum_val bcmolt_epon_link_oam_keepalive_timeout_id_string_table[] = { { .name = "alarm_status", .val = BCMOLT_EPON_LINK_OAM_KEEPALIVE_TIMEOUT_ID_ALARM_STATUS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_oam_keepalive_timeout_id = { .name = "bcmolt_epon_link_oam_keepalive_timeout_id", .descr = "Identifiers for all properties contained in the epon_link_oam_keepalive_timeout group.", .size = sizeof(bcmolt_epon_link_oam_keepalive_timeout_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_link_oam_keepalive_timeout_id_string_table } };
bcmcli_enum_val bcmolt_epon_link_oam_keepalive_timer_start_id_string_table[] = { { .name = "send_period", .val = BCMOLT_EPON_LINK_OAM_KEEPALIVE_TIMER_START_ID_SEND_PERIOD }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_oam_keepalive_timer_start_id = { .name = "bcmolt_epon_link_oam_keepalive_timer_start_id", .descr = "Identifiers for all properties contained in the epon_link_oam_keepalive_timer_start group.", .size = sizeof(bcmolt_epon_link_oam_keepalive_timer_start_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_link_oam_keepalive_timer_start_id_string_table } };
bcmcli_enum_val bcmolt_epon_link_oam_keepalive_timer_started_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_oam_keepalive_timer_started_id = { .name = "bcmolt_epon_link_oam_keepalive_timer_started_id", .descr = "Identifiers for all properties contained in the epon_link_oam_keepalive_timer_started group.", .size = sizeof(bcmolt_epon_link_oam_keepalive_timer_started_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_link_oam_keepalive_timer_started_id_string_table } };
bcmcli_enum_val bcmolt_epon_link_oam_keepalive_timer_stop_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_oam_keepalive_timer_stop_id = { .name = "bcmolt_epon_link_oam_keepalive_timer_stop_id", .descr = "Identifiers for all properties contained in the epon_link_oam_keepalive_timer_stop group.", .size = sizeof(bcmolt_epon_link_oam_keepalive_timer_stop_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_link_oam_keepalive_timer_stop_id_string_table } };
bcmcli_enum_val bcmolt_epon_link_oam_keepalive_timer_stopped_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_oam_keepalive_timer_stopped_id = { .name = "bcmolt_epon_link_oam_keepalive_timer_stopped_id", .descr = "Identifiers for all properties contained in the epon_link_oam_keepalive_timer_stopped group.", .size = sizeof(bcmolt_epon_link_oam_keepalive_timer_stopped_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_link_oam_keepalive_timer_stopped_id_string_table } };
bcmcli_enum_val bcmolt_epon_link_preprovisioned_link_created_id_string_table[] = { { .name = "link_info", .val = BCMOLT_EPON_LINK_PREPROVISIONED_LINK_CREATED_ID_LINK_INFO }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_preprovisioned_link_created_id = { .name = "bcmolt_epon_link_preprovisioned_link_created_id", .descr = "Identifiers for all properties contained in the epon_link_preprovisioned_link_created group.", .size = sizeof(bcmolt_epon_link_preprovisioned_link_created_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_link_preprovisioned_link_created_id_string_table } };
bcmcli_enum_val bcmolt_epon_link_protection_switch_occurred_id_string_table[] = { { .name = "protection_status", .val = BCMOLT_EPON_LINK_PROTECTION_SWITCH_OCCURRED_ID_PROTECTION_STATUS }, { .name = "range_value_tq", .val = BCMOLT_EPON_LINK_PROTECTION_SWITCH_OCCURRED_ID_RANGE_VALUE_TQ }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_protection_switch_occurred_id = { .name = "bcmolt_epon_link_protection_switch_occurred_id", .descr = "Identifiers for all properties contained in the epon_link_protection_switch_occurred group.", .size = sizeof(bcmolt_epon_link_protection_switch_occurred_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_link_protection_switch_occurred_id_string_table } };
bcmcli_enum_val bcmolt_epon_link_range_value_changed_id_string_table[] = { { .name = "range_value_tq", .val = BCMOLT_EPON_LINK_RANGE_VALUE_CHANGED_ID_RANGE_VALUE_TQ }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_range_value_changed_id = { .name = "bcmolt_epon_link_range_value_changed_id", .descr = "Identifiers for all properties contained in the epon_link_range_value_changed group.", .size = sizeof(bcmolt_epon_link_range_value_changed_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_link_range_value_changed_id_string_table } };
bcmcli_enum_val bcmolt_epon_link_rerange_failure_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_rerange_failure_id = { .name = "bcmolt_epon_link_rerange_failure_id", .descr = "Identifiers for all properties contained in the epon_link_rerange_failure group.", .size = sizeof(bcmolt_epon_link_rerange_failure_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_link_rerange_failure_id_string_table } };
bcmcli_enum_val bcmolt_epon_link_stat_alarm_cleared_id_string_table[] = { { .name = "stat", .val = BCMOLT_EPON_LINK_STAT_ALARM_CLEARED_ID_STAT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_stat_alarm_cleared_id = { .name = "bcmolt_epon_link_stat_alarm_cleared_id", .descr = "Identifiers for all properties contained in the epon_link_stat_alarm_cleared group.", .size = sizeof(bcmolt_epon_link_stat_alarm_cleared_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_link_stat_alarm_cleared_id_string_table } };
bcmcli_enum_val bcmolt_epon_link_stat_alarm_raised_id_string_table[] = { { .name = "stat", .val = BCMOLT_EPON_LINK_STAT_ALARM_RAISED_ID_STAT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_stat_alarm_raised_id = { .name = "bcmolt_epon_link_stat_alarm_raised_id", .descr = "Identifiers for all properties contained in the epon_link_stat_alarm_raised group.", .size = sizeof(bcmolt_epon_link_stat_alarm_raised_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_link_stat_alarm_raised_id_string_table } };
bcmcli_enum_val bcmolt_epon_link_stat_cfg_id_string_table[] = { { .name = "cfg", .val = BCMOLT_EPON_LINK_STAT_CFG_ID_CFG }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_stat_cfg_id = { .name = "bcmolt_epon_link_stat_cfg_id", .descr = "Identifiers for all properties contained in the epon_link_stat_cfg group.", .size = sizeof(bcmolt_epon_link_stat_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_link_stat_cfg_id_string_table } };
bcmcli_enum_val bcmolt_epon_link_stat_id_string_table[] = { { .name = "rx_data_bytes", .val = BCMOLT_EPON_LINK_STAT_ID_RX_DATA_BYTES }, { .name = "rx_data_frames", .val = BCMOLT_EPON_LINK_STAT_ID_RX_DATA_FRAMES }, { .name = "rx_frames_64", .val = BCMOLT_EPON_LINK_STAT_ID_RX_FRAMES_64 }, { .name = "rx_frames_65_127", .val = BCMOLT_EPON_LINK_STAT_ID_RX_FRAMES_65_127 }, { .name = "rx_frames_128_255", .val = BCMOLT_EPON_LINK_STAT_ID_RX_FRAMES_128_255 }, { .name = "rx_frames_256_511", .val = BCMOLT_EPON_LINK_STAT_ID_RX_FRAMES_256_511 }, { .name = "rx_frames_512_1023", .val = BCMOLT_EPON_LINK_STAT_ID_RX_FRAMES_512_1023 }, { .name = "rx_frames_1024_1518", .val = BCMOLT_EPON_LINK_STAT_ID_RX_FRAMES_1024_1518 }, { .name = "rx_frames_1519_2047", .val = BCMOLT_EPON_LINK_STAT_ID_RX_FRAMES_1519_2047 }, { .name = "rx_frames_2048_4095", .val = BCMOLT_EPON_LINK_STAT_ID_RX_FRAMES_2048_4095 }, { .name = "rx_frames_4096_9216", .val = BCMOLT_EPON_LINK_STAT_ID_RX_FRAMES_4096_9216 }, { .name = "rx_frames_9217_16383", .val = BCMOLT_EPON_LINK_STAT_ID_RX_FRAMES_9217_16383 }, { .name = "rx_oam_bytes", .val = BCMOLT_EPON_LINK_STAT_ID_RX_OAM_BYTES }, { .name = "rx_oam_frames", .val = BCMOLT_EPON_LINK_STAT_ID_RX_OAM_FRAMES }, { .name = "rx_mpcp_frames", .val = BCMOLT_EPON_LINK_STAT_ID_RX_MPCP_FRAMES }, { .name = "rx_broadcast_frames", .val = BCMOLT_EPON_LINK_STAT_ID_RX_BROADCAST_FRAMES }, { .name = "rx_unicast_frames", .val = BCMOLT_EPON_LINK_STAT_ID_RX_UNICAST_FRAMES }, { .name = "rx_multicast_frames", .val = BCMOLT_EPON_LINK_STAT_ID_RX_MULTICAST_FRAMES }, { .name = "rx_report_frames", .val = BCMOLT_EPON_LINK_STAT_ID_RX_REPORT_FRAMES }, { .name = "rx_fcs_error", .val = BCMOLT_EPON_LINK_STAT_ID_RX_FCS_ERROR }, { .name = "rx_oversize_error", .val = BCMOLT_EPON_LINK_STAT_ID_RX_OVERSIZE_ERROR }, { .name = "rx_runt_error", .val = BCMOLT_EPON_LINK_STAT_ID_RX_RUNT_ERROR }, { .name = "rx_line_code_error", .val = BCMOLT_EPON_LINK_STAT_ID_RX_LINE_CODE_ERROR }, { .name = "rx_line_code_error_max", .val = BCMOLT_EPON_LINK_STAT_ID_RX_LINE_CODE_ERROR_MAX }, { .name = "tx_data_bytes", .val = BCMOLT_EPON_LINK_STAT_ID_TX_DATA_BYTES }, { .name = "tx_data_frames", .val = BCMOLT_EPON_LINK_STAT_ID_TX_DATA_FRAMES }, { .name = "tx_frames_64", .val = BCMOLT_EPON_LINK_STAT_ID_TX_FRAMES_64 }, { .name = "tx_frames_65_127", .val = BCMOLT_EPON_LINK_STAT_ID_TX_FRAMES_65_127 }, { .name = "tx_frames_128_255", .val = BCMOLT_EPON_LINK_STAT_ID_TX_FRAMES_128_255 }, { .name = "tx_frames_256_511", .val = BCMOLT_EPON_LINK_STAT_ID_TX_FRAMES_256_511 }, { .name = "tx_frames_512_1023", .val = BCMOLT_EPON_LINK_STAT_ID_TX_FRAMES_512_1023 }, { .name = "tx_frames_1024_1518", .val = BCMOLT_EPON_LINK_STAT_ID_TX_FRAMES_1024_1518 }, { .name = "tx_frames_1519_2047", .val = BCMOLT_EPON_LINK_STAT_ID_TX_FRAMES_1519_2047 }, { .name = "tx_frames_2048_4095", .val = BCMOLT_EPON_LINK_STAT_ID_TX_FRAMES_2048_4095 }, { .name = "tx_frames_4096_9216", .val = BCMOLT_EPON_LINK_STAT_ID_TX_FRAMES_4096_9216 }, { .name = "tx_frames_9217_16383", .val = BCMOLT_EPON_LINK_STAT_ID_TX_FRAMES_9217_16383 }, { .name = "tx_oam_bytes", .val = BCMOLT_EPON_LINK_STAT_ID_TX_OAM_BYTES }, { .name = "tx_oam_frames", .val = BCMOLT_EPON_LINK_STAT_ID_TX_OAM_FRAMES }, { .name = "tx_mpcp_frames", .val = BCMOLT_EPON_LINK_STAT_ID_TX_MPCP_FRAMES }, { .name = "tx_broadcast_frames", .val = BCMOLT_EPON_LINK_STAT_ID_TX_BROADCAST_FRAMES }, { .name = "tx_unicast_frames", .val = BCMOLT_EPON_LINK_STAT_ID_TX_UNICAST_FRAMES }, { .name = "tx_multicast_frames", .val = BCMOLT_EPON_LINK_STAT_ID_TX_MULTICAST_FRAMES }, { .name = "tx_gates", .val = BCMOLT_EPON_LINK_STAT_ID_TX_GATES }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_stat_id = { .name = "bcmolt_epon_link_stat_id", .descr = "Identifiers for all properties contained in the epon_link_stat group.", .size = sizeof(bcmolt_epon_link_stat_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_link_stat_id_string_table } };
bcmcli_enum_val bcmolt_epon_link_state_flags_string_table[] = { { .name = "none", .val = BCMOLT_EPON_LINK_STATE_FLAGS_NONE }, { .name = "mpcp_registration_complete", .val = BCMOLT_EPON_LINK_STATE_FLAGS_MPCP_REGISTRATION_COMPLETE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_state_flags = { .name = "bcmolt_epon_link_state_flags", .descr = "EPON link state flags reflect the current status of the link. ", .size = sizeof(bcmolt_epon_link_state_flags), .base_type = BCMOLT_BASE_TYPE_ID_ENUM_MASK, .x = { .e = bcmolt_epon_link_state_flags_string_table } };
bcmcli_enum_val bcmolt_epon_link_static_registration_done_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_static_registration_done_id = { .name = "bcmolt_epon_link_static_registration_done_id", .descr = "Identifiers for all properties contained in the epon_link_static_registration_done group.", .size = sizeof(bcmolt_epon_link_static_registration_done_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_link_static_registration_done_id_string_table } };
bcmcli_enum_val bcmolt_epon_link_static_registration_id_string_table[] = { { .name = "laseron_time_tq", .val = BCMOLT_EPON_LINK_STATIC_REGISTRATION_ID_LASERON_TIME_TQ }, { .name = "laseroff_time_tq", .val = BCMOLT_EPON_LINK_STATIC_REGISTRATION_ID_LASEROFF_TIME_TQ }, { .name = "range_value_tq", .val = BCMOLT_EPON_LINK_STATIC_REGISTRATION_ID_RANGE_VALUE_TQ }, { .name = "pending_grants", .val = BCMOLT_EPON_LINK_STATIC_REGISTRATION_ID_PENDING_GRANTS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_static_registration_id = { .name = "bcmolt_epon_link_static_registration_id", .descr = "Identifiers for all properties contained in the epon_link_static_registration group.", .size = sizeof(bcmolt_epon_link_static_registration_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_link_static_registration_id_string_table } };
bcmcli_enum_val bcmolt_epon_link_type_string_table[] = { { .name = "system", .val = BCMOLT_EPON_LINK_TYPE_SYSTEM }, { .name = "downstream_only", .val = BCMOLT_EPON_LINK_TYPE_DOWNSTREAM_ONLY }, { .name = "bidirectional", .val = BCMOLT_EPON_LINK_TYPE_BIDIRECTIONAL }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_type = { .name = "bcmolt_epon_link_type", .descr = "EPON Link Type", .size = sizeof(bcmolt_epon_link_type), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_link_type_string_table } };
bcmcli_enum_val bcmolt_mpcp_gate_mode_string_table[] = { { .name = "teknovus", .val = BCMOLT_MPCP_GATE_MODE_TEKNOVUS }, { .name = "custom", .val = BCMOLT_MPCP_GATE_MODE_CUSTOM }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_mpcp_gate_mode = { .name = "bcmolt_mpcp_gate_mode", .descr = "MPCP gate mode.", .size = sizeof(bcmolt_mpcp_gate_mode), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_mpcp_gate_mode_string_table } };
bcmcli_enum_val bcmolt_mpcp_registration_gate_flags_string_table[] = { { .name = "none", .val = BCMOLT_MPCP_REGISTRATION_GATE_FLAGS_NONE }, { .name = "force_report", .val = BCMOLT_MPCP_REGISTRATION_GATE_FLAGS_FORCE_REPORT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_mpcp_registration_gate_flags = { .name = "bcmolt_mpcp_registration_gate_flags", .descr = "MPCP registration gate flags.", .size = sizeof(bcmolt_mpcp_registration_gate_flags), .base_type = BCMOLT_BASE_TYPE_ID_ENUM_MASK, .x = { .e = bcmolt_mpcp_registration_gate_flags_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gate_parameters_fields[] = { { .name = "flags", .descr = "Flags to set for this gate.", .offset = offsetof(bcmolt_gate_parameters, flags), .type = &type_descr_bcmolt_mpcp_registration_gate_flags }, { .name = "delay_before_ms", .descr = "Delay before sending this gate in milliseconds.", .offset = offsetof(bcmolt_gate_parameters, delay_before_ms), .type = &type_descr_uint32_t }, { .name = "gate_size_tq", .descr = "Size of this gate in time quanta.", .offset = offsetof(bcmolt_gate_parameters, gate_size_tq), .type = &type_descr_uint32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gate_parameters = { .name = "bcmolt_gate_parameters", .descr = "Gate parameters.", .size = sizeof(bcmolt_gate_parameters), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gate_parameters_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gate_parameters_fields } } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gate_parameters_list_u32 = { .name = "bcmolt_gate_parameters_list_u32", .descr = "Variable-length list of gate_parameters", .size = sizeof(bcmolt_gate_parameters_list_u32), .base_type = BCMOLT_BASE_TYPE_ID_ARR_DYN, .x = { .arr_dyn = { .elem_type = &type_descr_bcmolt_gate_parameters, .len_size = 4, .max_size = DEFAULT_DYN_ARR_MAX_SIZE / sizeof(bcmolt_gate_parameters) } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_registration_gate_mode_fields[] = { { .name = "registration_gate_mode", .descr = "MPCP registration gate mode.", .offset = offsetof(bcmolt_epon_registration_gate_mode, registration_gate_mode), .type = &type_descr_bcmolt_mpcp_gate_mode } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_registration_gate_mode_teknovus_fields[] = { { .name = "reg_ack_timeout_ms", .descr = "Amount of time to wait for a link to respond with a register ack after a register is sent.", .offset = offsetof(bcmolt_epon_registration_gate_mode, u.teknovus.reg_ack_timeout_ms) - offsetof(bcmolt_epon_registration_gate_mode, u.teknovus.reg_ack_timeout_ms), .type = &type_descr_uint16_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_registration_gate_mode_teknovus = { .name = "bcmolt_epon_registration_gate_mode_teknovus", .descr = "EPON registration gate mode Teknovus", .size = sizeof(((bcmolt_epon_registration_gate_mode *)0)->u.teknovus), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_registration_gate_mode_teknovus_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_registration_gate_mode_teknovus_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_registration_gate_mode_custom_fields[] = { { .name = "gates", .descr = "Gates to send for REG ACK.", .offset = offsetof(bcmolt_epon_registration_gate_mode, u.custom.gates) - offsetof(bcmolt_epon_registration_gate_mode, u.custom.gates), .type = &type_descr_bcmolt_gate_parameters_list_u32 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_registration_gate_mode_custom = { .name = "bcmolt_epon_registration_gate_mode_custom", .descr = "EPON registration gate mode Custom", .size = sizeof(((bcmolt_epon_registration_gate_mode *)0)->u.custom), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_registration_gate_mode_custom_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_registration_gate_mode_custom_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_registration_gate_mode_union_fields[] = { { .name = "u.teknovus", .descr = "", .offset = offsetof(bcmolt_epon_registration_gate_mode, u.teknovus), .type = &type_descr_bcmolt_epon_registration_gate_mode_teknovus }, { .name = "u.custom", .descr = "", .offset = offsetof(bcmolt_epon_registration_gate_mode, u.custom), .type = &type_descr_bcmolt_epon_registration_gate_mode_custom }, { } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_registration_gate_mode = { .name = "bcmolt_epon_registration_gate_mode", .descr = "Specification of the EPON gate mode and associated parameters.", .size = sizeof(bcmolt_epon_registration_gate_mode), .base_type = BCMOLT_BASE_TYPE_ID_UNION, .x = { .u = { .num_common_fields = sizeof(type_descr_bcmolt_epon_registration_gate_mode_fields) / sizeof(bcmcli_field_descr), .common_fields = type_descr_bcmolt_epon_registration_gate_mode_fields, .classifier_idx = 0, .union_fields = type_descr_bcmolt_epon_registration_gate_mode_union_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_logical_link_options_fields[] = { { .name = "registration_gate_mode", .descr = "EPON registration gate mode.", .offset = offsetof(bcmolt_epon_logical_link_options, registration_gate_mode), .type = &type_descr_bcmolt_epon_registration_gate_mode }, { .name = "reporting_mode", .descr = "Control for how the DBA handles received MPCP report frames.", .offset = offsetof(bcmolt_epon_logical_link_options, reporting_mode), .type = &type_descr_bcmolt_epon_dba_reporting_mode }, { .name = "max_links", .descr = "Maximum number of links to register on the EPON NI.  A value of zero indicates no fixed limit. This is an aggregate limit on the number of non-system links on a PON. This limit applies to both registered and non-registered links. This value cannot be reduced below the count of links currently allocated, nor is it valid to increase it above the sum of the per RP mac_links limits.", .offset = offsetof(bcmolt_epon_logical_link_options, max_links), .type = &type_descr_uint16_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_logical_link_options = { .name = "bcmolt_epon_logical_link_options", .descr = "Configuration related to EPON logical link registration and reporting.", .size = sizeof(bcmolt_epon_logical_link_options), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_logical_link_options_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_logical_link_options_fields } } };
bcmcli_enum_val bcmolt_epon_ni_add_link_id_string_table[] = { { .name = "mac_address", .val = BCMOLT_EPON_NI_ADD_LINK_ID_MAC_ADDRESS }, { .name = "rate", .val = BCMOLT_EPON_NI_ADD_LINK_ID_RATE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_ni_add_link_id = { .name = "bcmolt_epon_ni_add_link_id", .descr = "Identifiers for all properties contained in the epon_ni_add_link group.", .size = sizeof(bcmolt_epon_ni_add_link_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_ni_add_link_id_string_table } };
bcmcli_enum_val bcmolt_epon_ni_add_multicast_link_id_string_table[] = { { .name = "mac_address", .val = BCMOLT_EPON_NI_ADD_MULTICAST_LINK_ID_MAC_ADDRESS }, { .name = "rate", .val = BCMOLT_EPON_NI_ADD_MULTICAST_LINK_ID_RATE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_ni_add_multicast_link_id = { .name = "bcmolt_epon_ni_add_multicast_link_id", .descr = "Identifiers for all properties contained in the epon_ni_add_multicast_link group.", .size = sizeof(bcmolt_epon_ni_add_multicast_link_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_ni_add_multicast_link_id_string_table } };
bcmcli_enum_val bcmolt_epon_ni_add_protected_standby_link_id_string_table[] = { { .name = "mac_address", .val = BCMOLT_EPON_NI_ADD_PROTECTED_STANDBY_LINK_ID_MAC_ADDRESS }, { .name = "working_link_info", .val = BCMOLT_EPON_NI_ADD_PROTECTED_STANDBY_LINK_ID_WORKING_LINK_INFO }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_ni_add_protected_standby_link_id = { .name = "bcmolt_epon_ni_add_protected_standby_link_id", .descr = "Identifiers for all properties contained in the epon_ni_add_protected_standby_link group.", .size = sizeof(bcmolt_epon_ni_add_protected_standby_link_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_ni_add_protected_standby_link_id_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_ni_alarm_state_fields[] = { { .name = "no_reports", .descr = "No Reports", .offset = offsetof(bcmolt_epon_ni_alarm_state, no_reports), .type = &type_descr_bcmolt_status } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_ni_alarm_state = { .name = "bcmolt_epon_ni_alarm_state", .descr = "The list of alarms defined for an EPON NI", .size = sizeof(bcmolt_epon_ni_alarm_state), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_ni_alarm_state_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_ni_alarm_state_fields } } };
bcmcli_enum_val bcmolt_epon_ni_auto_cfg_id_string_table[] = { { .name = "auto_rogue_scan_10g_failure", .val = BCMOLT_EPON_NI_AUTO_CFG_ID_AUTO_ROGUE_SCAN_10G_FAILURE }, { .name = "auto_rogue_scan_1g_failure", .val = BCMOLT_EPON_NI_AUTO_CFG_ID_AUTO_ROGUE_SCAN_1G_FAILURE }, { .name = "llid_quarantined", .val = BCMOLT_EPON_NI_AUTO_CFG_ID_LLID_QUARANTINED }, { .name = "mpcp_timestamp_changed", .val = BCMOLT_EPON_NI_AUTO_CFG_ID_MPCP_TIMESTAMP_CHANGED }, { .name = "no_reports", .val = BCMOLT_EPON_NI_AUTO_CFG_ID_NO_REPORTS }, { .name = "onu_upgrade_complete", .val = BCMOLT_EPON_NI_AUTO_CFG_ID_ONU_UPGRADE_COMPLETE }, { .name = "rerange_failure", .val = BCMOLT_EPON_NI_AUTO_CFG_ID_RERANGE_FAILURE }, { .name = "rogue_scan_complete", .val = BCMOLT_EPON_NI_AUTO_CFG_ID_ROGUE_SCAN_COMPLETE }, { .name = "rssi_measurement_completed", .val = BCMOLT_EPON_NI_AUTO_CFG_ID_RSSI_MEASUREMENT_COMPLETED }, { .name = "state_change_completed", .val = BCMOLT_EPON_NI_AUTO_CFG_ID_STATE_CHANGE_COMPLETED }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_ni_auto_cfg_id = { .name = "bcmolt_epon_ni_auto_cfg_id", .descr = "Identifiers for all properties contained in the epon_ni_auto_cfg group.", .size = sizeof(bcmolt_epon_ni_auto_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_ni_auto_cfg_id_string_table } };
bcmcli_enum_val bcmolt_epon_ni_auto_rogue_scan_10g_failure_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_ni_auto_rogue_scan_10g_failure_id = { .name = "bcmolt_epon_ni_auto_rogue_scan_10g_failure_id", .descr = "Identifiers for all properties contained in the epon_ni_auto_rogue_scan_10g_failure group.", .size = sizeof(bcmolt_epon_ni_auto_rogue_scan_10g_failure_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_ni_auto_rogue_scan_10g_failure_id_string_table } };
bcmcli_enum_val bcmolt_epon_ni_auto_rogue_scan_1g_failure_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_ni_auto_rogue_scan_1g_failure_id = { .name = "bcmolt_epon_ni_auto_rogue_scan_1g_failure_id", .descr = "Identifiers for all properties contained in the epon_ni_auto_rogue_scan_1g_failure group.", .size = sizeof(bcmolt_epon_ni_auto_rogue_scan_1g_failure_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_ni_auto_rogue_scan_1g_failure_id_string_table } };
bcmcli_enum_val bcmolt_epon_ni_cfg_id_string_table[] = { { .name = "mac_address", .val = BCMOLT_EPON_NI_CFG_ID_MAC_ADDRESS }, { .name = "epon_ni_en", .val = BCMOLT_EPON_NI_CFG_ID_EPON_NI_EN }, { .name = "registration_behavior", .val = BCMOLT_EPON_NI_CFG_ID_REGISTRATION_BEHAVIOR }, { .name = "mtu_1g", .val = BCMOLT_EPON_NI_CFG_ID_MTU_1G }, { .name = "mtu_10g", .val = BCMOLT_EPON_NI_CFG_ID_MTU_10G }, { .name = "minimum_fiber_length", .val = BCMOLT_EPON_NI_CFG_ID_MINIMUM_FIBER_LENGTH }, { .name = "maximum_fiber_length", .val = BCMOLT_EPON_NI_CFG_ID_MAXIMUM_FIBER_LENGTH }, { .name = "grant_spacing_tq", .val = BCMOLT_EPON_NI_CFG_ID_GRANT_SPACING_TQ }, { .name = "epon_logical_link_options", .val = BCMOLT_EPON_NI_CFG_ID_EPON_LOGICAL_LINK_OPTIONS }, { .name = "mpcp_discovery_period_ms", .val = BCMOLT_EPON_NI_CFG_ID_MPCP_DISCOVERY_PERIOD_MS }, { .name = "alarm_state", .val = BCMOLT_EPON_NI_CFG_ID_ALARM_STATE }, { .name = "all_links", .val = BCMOLT_EPON_NI_CFG_ID_ALL_LINKS }, { .name = "encryption_cfg", .val = BCMOLT_EPON_NI_CFG_ID_ENCRYPTION_CFG }, { .name = "protection_switching_cfg", .val = BCMOLT_EPON_NI_CFG_ID_PROTECTION_SWITCHING_CFG }, { .name = "clock_transport_cfg", .val = BCMOLT_EPON_NI_CFG_ID_CLOCK_TRANSPORT_CFG }, { .name = "dropdown_weights", .val = BCMOLT_EPON_NI_CFG_ID_DROPDOWN_WEIGHTS }, { .name = "approximate_solicited_usage", .val = BCMOLT_EPON_NI_CFG_ID_APPROXIMATE_SOLICITED_USAGE }, { .name = "approximate_tdm_usage", .val = BCMOLT_EPON_NI_CFG_ID_APPROXIMATE_TDM_USAGE }, { .name = "no_reports_soak_time", .val = BCMOLT_EPON_NI_CFG_ID_NO_REPORTS_SOAK_TIME }, { .name = "pon_aggregate_shaper", .val = BCMOLT_EPON_NI_CFG_ID_PON_AGGREGATE_SHAPER }, { .name = "estimated_pon_latency_tq", .val = BCMOLT_EPON_NI_CFG_ID_ESTIMATED_PON_LATENCY_TQ }, { .name = "onu_upgrade_params", .val = BCMOLT_EPON_NI_CFG_ID_ONU_UPGRADE_PARAMS }, { .name = "auto_rogue_detect_10g_en", .val = BCMOLT_EPON_NI_CFG_ID_AUTO_ROGUE_DETECT_10G_EN }, { .name = "auto_rogue_detect_1g_en", .val = BCMOLT_EPON_NI_CFG_ID_AUTO_ROGUE_DETECT_1G_EN }, { .name = "auto_rogue_detect_10g_threshold", .val = BCMOLT_EPON_NI_CFG_ID_AUTO_ROGUE_DETECT_10G_THRESHOLD }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_ni_cfg_id = { .name = "bcmolt_epon_ni_cfg_id", .descr = "Identifiers for all properties contained in the epon_ni_cfg group.", .size = sizeof(bcmolt_epon_ni_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_ni_cfg_id_string_table } };
bcmcli_enum_val bcmolt_epon_ni_en_state_string_table[] = { { .name = "disabled", .val = BCMOLT_EPON_NI_EN_STATE_DISABLED }, { .name = "enabled", .val = BCMOLT_EPON_NI_EN_STATE_ENABLED }, { .name = "protected_working", .val = BCMOLT_EPON_NI_EN_STATE_PROTECTED_WORKING }, { .name = "protected_standby", .val = BCMOLT_EPON_NI_EN_STATE_PROTECTED_STANDBY }, { .name = "processing", .val = BCMOLT_EPON_NI_EN_STATE_PROCESSING }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_ni_en_state = { .name = "bcmolt_epon_ni_en_state", .descr = "Enable state of the EPON NI.  Initially the only enable states defined are `disabled' and `enabled', but this may later be extended to include different degrees of enablement.", .size = sizeof(bcmolt_epon_ni_en_state), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_ni_en_state_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_ni_encryption_cfg_fields[] = { { .name = "downstream_encryption_mode", .descr = "Downstream encryption mode.", .offset = offsetof(bcmolt_epon_ni_encryption_cfg, downstream_encryption_mode), .type = &type_descr_bcmolt_epon_encryption_mode }, { .name = "upstream_encryption_mode", .descr = "Upstream encryption mode.", .offset = offsetof(bcmolt_epon_ni_encryption_cfg, upstream_encryption_mode), .type = &type_descr_bcmolt_epon_encryption_mode } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_ni_encryption_cfg = { .name = "bcmolt_epon_ni_encryption_cfg", .descr = "Encryption configuration that applies to the EPON NI as a whole.", .size = sizeof(bcmolt_epon_ni_encryption_cfg), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_ni_encryption_cfg_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_ni_encryption_cfg_fields } } };
bcmcli_enum_val bcmolt_epon_ni_issue_rssi_grant_id_string_table[] = { { .name = "granted_link", .val = BCMOLT_EPON_NI_ISSUE_RSSI_GRANT_ID_GRANTED_LINK }, { .name = "trigger_width", .val = BCMOLT_EPON_NI_ISSUE_RSSI_GRANT_ID_TRIGGER_WIDTH }, { .name = "trigger_delay", .val = BCMOLT_EPON_NI_ISSUE_RSSI_GRANT_ID_TRIGGER_DELAY }, { .name = "sample_period", .val = BCMOLT_EPON_NI_ISSUE_RSSI_GRANT_ID_SAMPLE_PERIOD }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_ni_issue_rssi_grant_id = { .name = "bcmolt_epon_ni_issue_rssi_grant_id", .descr = "Identifiers for all properties contained in the epon_ni_issue_rssi_grant group.", .size = sizeof(bcmolt_epon_ni_issue_rssi_grant_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_ni_issue_rssi_grant_id_string_table } };
bcmcli_enum_val bcmolt_epon_ni_key_id_string_table[] = { { .name = "epon_ni", .val = BCMOLT_EPON_NI_KEY_ID_EPON_NI }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_ni_key_id = { .name = "bcmolt_epon_ni_key_id", .descr = "Identifiers for all properties contained in the epon_ni_key group.", .size = sizeof(bcmolt_epon_ni_key_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_ni_key_id_string_table } };
bcmcli_enum_val bcmolt_epon_ni_llid_quarantined_id_string_table[] = { { .name = "llid", .val = BCMOLT_EPON_NI_LLID_QUARANTINED_ID_LLID }, { .name = "link_rate", .val = BCMOLT_EPON_NI_LLID_QUARANTINED_ID_LINK_RATE }, { .name = "link_mac", .val = BCMOLT_EPON_NI_LLID_QUARANTINED_ID_LINK_MAC }, { .name = "range_value_tq", .val = BCMOLT_EPON_NI_LLID_QUARANTINED_ID_RANGE_VALUE_TQ }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_ni_llid_quarantined_id = { .name = "bcmolt_epon_ni_llid_quarantined_id", .descr = "Identifiers for all properties contained in the epon_ni_llid_quarantined group.", .size = sizeof(bcmolt_epon_ni_llid_quarantined_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_ni_llid_quarantined_id_string_table } };
bcmcli_enum_val bcmolt_epon_ni_mpcp_timestamp_changed_id_string_table[] = { { .name = "mpcp_timestamp", .val = BCMOLT_EPON_NI_MPCP_TIMESTAMP_CHANGED_ID_MPCP_TIMESTAMP }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_ni_mpcp_timestamp_changed_id = { .name = "bcmolt_epon_ni_mpcp_timestamp_changed_id", .descr = "Identifiers for all properties contained in the epon_ni_mpcp_timestamp_changed group.", .size = sizeof(bcmolt_epon_ni_mpcp_timestamp_changed_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_ni_mpcp_timestamp_changed_id_string_table } };
bcmcli_enum_val bcmolt_epon_ni_no_reports_id_string_table[] = { { .name = "alarm_status", .val = BCMOLT_EPON_NI_NO_REPORTS_ID_ALARM_STATUS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_ni_no_reports_id = { .name = "bcmolt_epon_ni_no_reports_id", .descr = "Identifiers for all properties contained in the epon_ni_no_reports group.", .size = sizeof(bcmolt_epon_ni_no_reports_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_ni_no_reports_id_string_table } };
bcmcli_enum_val bcmolt_epon_ni_onu_upgrade_complete_id_string_table[] = { { .name = "status", .val = BCMOLT_EPON_NI_ONU_UPGRADE_COMPLETE_ID_STATUS }, { .name = "list_of_failed_entities", .val = BCMOLT_EPON_NI_ONU_UPGRADE_COMPLETE_ID_LIST_OF_FAILED_ENTITIES }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_ni_onu_upgrade_complete_id = { .name = "bcmolt_epon_ni_onu_upgrade_complete_id", .descr = "Identifiers for all properties contained in the epon_ni_onu_upgrade_complete group.", .size = sizeof(bcmolt_epon_ni_onu_upgrade_complete_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_ni_onu_upgrade_complete_id_string_table } };
bcmcli_enum_val bcmolt_epon_ni_protection_switching_apply_rerange_delta_id_string_table[] = { { .name = "rerange_delta", .val = BCMOLT_EPON_NI_PROTECTION_SWITCHING_APPLY_RERANGE_DELTA_ID_RERANGE_DELTA }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_ni_protection_switching_apply_rerange_delta_id = { .name = "bcmolt_epon_ni_protection_switching_apply_rerange_delta_id", .descr = "Identifiers for all properties contained in the epon_ni_protection_switching_apply_rerange_delta group.", .size = sizeof(bcmolt_epon_ni_protection_switching_apply_rerange_delta_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_ni_protection_switching_apply_rerange_delta_id_string_table } };
bcmcli_enum_val bcmolt_epon_ni_rerange_failure_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_ni_rerange_failure_id = { .name = "bcmolt_epon_ni_rerange_failure_id", .descr = "Identifiers for all properties contained in the epon_ni_rerange_failure group.", .size = sizeof(bcmolt_epon_ni_rerange_failure_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_ni_rerange_failure_id_string_table } };
bcmcli_enum_val bcmolt_epon_ni_rogue_llid_scan_id_string_table[] = { { .name = "mode", .val = BCMOLT_EPON_NI_ROGUE_LLID_SCAN_ID_MODE }, { .name = "llid", .val = BCMOLT_EPON_NI_ROGUE_LLID_SCAN_ID_LLID }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_ni_rogue_llid_scan_id = { .name = "bcmolt_epon_ni_rogue_llid_scan_id", .descr = "Identifiers for all properties contained in the epon_ni_rogue_llid_scan group.", .size = sizeof(bcmolt_epon_ni_rogue_llid_scan_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_ni_rogue_llid_scan_id_string_table } };
bcmcli_enum_val bcmolt_epon_ni_rogue_scan_complete_id_string_table[] = { { .name = "return_ind_status", .val = BCMOLT_EPON_NI_ROGUE_SCAN_COMPLETE_ID_RETURN_IND_STATUS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_ni_rogue_scan_complete_id = { .name = "bcmolt_epon_ni_rogue_scan_complete_id", .descr = "Identifiers for all properties contained in the epon_ni_rogue_scan_complete group.", .size = sizeof(bcmolt_epon_ni_rogue_scan_complete_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_ni_rogue_scan_complete_id_string_table } };
bcmcli_enum_val bcmolt_epon_ni_rssi_measurement_completed_id_string_table[] = { { .name = "status", .val = BCMOLT_EPON_NI_RSSI_MEASUREMENT_COMPLETED_ID_STATUS }, { .name = "llid", .val = BCMOLT_EPON_NI_RSSI_MEASUREMENT_COMPLETED_ID_LLID }, { .name = "link_mac", .val = BCMOLT_EPON_NI_RSSI_MEASUREMENT_COMPLETED_ID_LINK_MAC }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_ni_rssi_measurement_completed_id = { .name = "bcmolt_epon_ni_rssi_measurement_completed_id", .descr = "Identifiers for all properties contained in the epon_ni_rssi_measurement_completed group.", .size = sizeof(bcmolt_epon_ni_rssi_measurement_completed_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_ni_rssi_measurement_completed_id_string_table } };
bcmcli_enum_val bcmolt_epon_ni_set_epon_ni_en_state_id_string_table[] = { { .name = "new_state", .val = BCMOLT_EPON_NI_SET_EPON_NI_EN_STATE_ID_NEW_STATE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_ni_set_epon_ni_en_state_id = { .name = "bcmolt_epon_ni_set_epon_ni_en_state_id", .descr = "Identifiers for all properties contained in the epon_ni_set_epon_ni_en_state group.", .size = sizeof(bcmolt_epon_ni_set_epon_ni_en_state_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_ni_set_epon_ni_en_state_id_string_table } };
bcmcli_enum_val bcmolt_epon_ni_start_onu_upgrade_id_string_table[] = { { .name = "list_of_onu_ids", .val = BCMOLT_EPON_NI_START_ONU_UPGRADE_ID_LIST_OF_ONU_IDS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_ni_start_onu_upgrade_id = { .name = "bcmolt_epon_ni_start_onu_upgrade_id", .descr = "Identifiers for all properties contained in the epon_ni_start_onu_upgrade group.", .size = sizeof(bcmolt_epon_ni_start_onu_upgrade_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_ni_start_onu_upgrade_id_string_table } };
bcmcli_enum_val bcmolt_epon_ni_state_change_completed_id_string_table[] = { { .name = "new_state", .val = BCMOLT_EPON_NI_STATE_CHANGE_COMPLETED_ID_NEW_STATE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_ni_state_change_completed_id = { .name = "bcmolt_epon_ni_state_change_completed_id", .descr = "Identifiers for all properties contained in the epon_ni_state_change_completed group.", .size = sizeof(bcmolt_epon_ni_state_change_completed_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_ni_state_change_completed_id_string_table } };
bcmcli_enum_val bcmolt_epon_oam_extension_type_string_table[] = { { .name = "reserved", .val = BCMOLT_EPON_OAM_EXTENSION_TYPE_RESERVED }, { .name = "broadcom", .val = BCMOLT_EPON_OAM_EXTENSION_TYPE_BROADCOM }, { .name = "ctc", .val = BCMOLT_EPON_OAM_EXTENSION_TYPE_CTC }, { .name = "dasan", .val = BCMOLT_EPON_OAM_EXTENSION_TYPE_DASAN }, { .name = "kt", .val = BCMOLT_EPON_OAM_EXTENSION_TYPE_KT }, { .name = "dpoe", .val = BCMOLT_EPON_OAM_EXTENSION_TYPE_DPOE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_oam_extension_type = { .name = "bcmolt_epon_oam_extension_type", .descr = "EPON OAM Extension Type", .size = sizeof(bcmolt_epon_oam_extension_type), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_oam_extension_type_string_table } };
bcmcli_enum_val bcmolt_epon_onu_10g_us_auto_cfg_id_string_table[] = { { .name = "stat_alarm_cleared", .val = BCMOLT_EPON_ONU_10G_US_AUTO_CFG_ID_STAT_ALARM_CLEARED }, { .name = "stat_alarm_raised", .val = BCMOLT_EPON_ONU_10G_US_AUTO_CFG_ID_STAT_ALARM_RAISED }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_onu_10g_us_auto_cfg_id = { .name = "bcmolt_epon_onu_10g_us_auto_cfg_id", .descr = "Identifiers for all properties contained in the epon_onu_10g_us_auto_cfg group.", .size = sizeof(bcmolt_epon_onu_10g_us_auto_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_onu_10g_us_auto_cfg_id_string_table } };
bcmcli_enum_val bcmolt_epon_onu_10g_us_cfg_id_string_table[] = { { .name = "all_links", .val = BCMOLT_EPON_ONU_10G_US_CFG_ID_ALL_LINKS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_onu_10g_us_cfg_id = { .name = "bcmolt_epon_onu_10g_us_cfg_id", .descr = "Identifiers for all properties contained in the epon_onu_10g_us_cfg group.", .size = sizeof(bcmolt_epon_onu_10g_us_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_onu_10g_us_cfg_id_string_table } };
bcmcli_enum_val bcmolt_epon_onu_10g_us_key_id_string_table[] = { { .name = "epon_ni", .val = BCMOLT_EPON_ONU_10G_US_KEY_ID_EPON_NI }, { .name = "onu_id", .val = BCMOLT_EPON_ONU_10G_US_KEY_ID_ONU_ID }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_onu_10g_us_key_id = { .name = "bcmolt_epon_onu_10g_us_key_id", .descr = "Identifiers for all properties contained in the epon_onu_10g_us_key group.", .size = sizeof(bcmolt_epon_onu_10g_us_key_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_onu_10g_us_key_id_string_table } };
bcmcli_enum_val bcmolt_epon_onu_10g_us_stat_alarm_cleared_id_string_table[] = { { .name = "stat", .val = BCMOLT_EPON_ONU_10G_US_STAT_ALARM_CLEARED_ID_STAT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_onu_10g_us_stat_alarm_cleared_id = { .name = "bcmolt_epon_onu_10g_us_stat_alarm_cleared_id", .descr = "Identifiers for all properties contained in the epon_onu_10g_us_stat_alarm_cleared group.", .size = sizeof(bcmolt_epon_onu_10g_us_stat_alarm_cleared_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_onu_10g_us_stat_alarm_cleared_id_string_table } };
bcmcli_enum_val bcmolt_epon_onu_10g_us_stat_alarm_raised_id_string_table[] = { { .name = "stat", .val = BCMOLT_EPON_ONU_10G_US_STAT_ALARM_RAISED_ID_STAT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_onu_10g_us_stat_alarm_raised_id = { .name = "bcmolt_epon_onu_10g_us_stat_alarm_raised_id", .descr = "Identifiers for all properties contained in the epon_onu_10g_us_stat_alarm_raised group.", .size = sizeof(bcmolt_epon_onu_10g_us_stat_alarm_raised_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_onu_10g_us_stat_alarm_raised_id_string_table } };
bcmcli_enum_val bcmolt_epon_onu_10g_us_stat_cfg_id_string_table[] = { { .name = "cfg", .val = BCMOLT_EPON_ONU_10G_US_STAT_CFG_ID_CFG }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_onu_10g_us_stat_cfg_id = { .name = "bcmolt_epon_onu_10g_us_stat_cfg_id", .descr = "Identifiers for all properties contained in the epon_onu_10g_us_stat_cfg group.", .size = sizeof(bcmolt_epon_onu_10g_us_stat_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_onu_10g_us_stat_cfg_id_string_table } };
bcmcli_enum_val bcmolt_epon_onu_10g_us_stat_id_string_table[] = { { .name = "fec_code_words_total", .val = BCMOLT_EPON_ONU_10G_US_STAT_ID_FEC_CODE_WORDS_TOTAL }, { .name = "fec_code_words_decode_fails", .val = BCMOLT_EPON_ONU_10G_US_STAT_ID_FEC_CODE_WORDS_DECODE_FAILS }, { .name = "fec_zeroes_corrected", .val = BCMOLT_EPON_ONU_10G_US_STAT_ID_FEC_ZEROES_CORRECTED }, { .name = "fec_ones_corrected", .val = BCMOLT_EPON_ONU_10G_US_STAT_ID_FEC_ONES_CORRECTED }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_onu_10g_us_stat_id = { .name = "bcmolt_epon_onu_10g_us_stat_id", .descr = "Identifiers for all properties contained in the epon_onu_10g_us_stat group.", .size = sizeof(bcmolt_epon_onu_10g_us_stat_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_onu_10g_us_stat_id_string_table } };
bcmcli_enum_val bcmolt_epon_onu_1g_us_auto_cfg_id_string_table[] = { { .name = "stat_alarm_cleared", .val = BCMOLT_EPON_ONU_1G_US_AUTO_CFG_ID_STAT_ALARM_CLEARED }, { .name = "stat_alarm_raised", .val = BCMOLT_EPON_ONU_1G_US_AUTO_CFG_ID_STAT_ALARM_RAISED }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_onu_1g_us_auto_cfg_id = { .name = "bcmolt_epon_onu_1g_us_auto_cfg_id", .descr = "Identifiers for all properties contained in the epon_onu_1g_us_auto_cfg group.", .size = sizeof(bcmolt_epon_onu_1g_us_auto_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_onu_1g_us_auto_cfg_id_string_table } };
bcmcli_enum_val bcmolt_epon_onu_1g_us_cfg_id_string_table[] = { { .name = "all_links", .val = BCMOLT_EPON_ONU_1G_US_CFG_ID_ALL_LINKS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_onu_1g_us_cfg_id = { .name = "bcmolt_epon_onu_1g_us_cfg_id", .descr = "Identifiers for all properties contained in the epon_onu_1g_us_cfg group.", .size = sizeof(bcmolt_epon_onu_1g_us_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_onu_1g_us_cfg_id_string_table } };
bcmcli_enum_val bcmolt_epon_onu_1g_us_key_id_string_table[] = { { .name = "epon_ni", .val = BCMOLT_EPON_ONU_1G_US_KEY_ID_EPON_NI }, { .name = "onu_id", .val = BCMOLT_EPON_ONU_1G_US_KEY_ID_ONU_ID }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_onu_1g_us_key_id = { .name = "bcmolt_epon_onu_1g_us_key_id", .descr = "Identifiers for all properties contained in the epon_onu_1g_us_key group.", .size = sizeof(bcmolt_epon_onu_1g_us_key_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_onu_1g_us_key_id_string_table } };
bcmcli_enum_val bcmolt_epon_onu_1g_us_stat_alarm_cleared_id_string_table[] = { { .name = "stat", .val = BCMOLT_EPON_ONU_1G_US_STAT_ALARM_CLEARED_ID_STAT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_onu_1g_us_stat_alarm_cleared_id = { .name = "bcmolt_epon_onu_1g_us_stat_alarm_cleared_id", .descr = "Identifiers for all properties contained in the epon_onu_1g_us_stat_alarm_cleared group.", .size = sizeof(bcmolt_epon_onu_1g_us_stat_alarm_cleared_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_onu_1g_us_stat_alarm_cleared_id_string_table } };
bcmcli_enum_val bcmolt_epon_onu_1g_us_stat_alarm_raised_id_string_table[] = { { .name = "stat", .val = BCMOLT_EPON_ONU_1G_US_STAT_ALARM_RAISED_ID_STAT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_onu_1g_us_stat_alarm_raised_id = { .name = "bcmolt_epon_onu_1g_us_stat_alarm_raised_id", .descr = "Identifiers for all properties contained in the epon_onu_1g_us_stat_alarm_raised group.", .size = sizeof(bcmolt_epon_onu_1g_us_stat_alarm_raised_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_onu_1g_us_stat_alarm_raised_id_string_table } };
bcmcli_enum_val bcmolt_epon_onu_1g_us_stat_cfg_id_string_table[] = { { .name = "cfg", .val = BCMOLT_EPON_ONU_1G_US_STAT_CFG_ID_CFG }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_onu_1g_us_stat_cfg_id = { .name = "bcmolt_epon_onu_1g_us_stat_cfg_id", .descr = "Identifiers for all properties contained in the epon_onu_1g_us_stat_cfg group.", .size = sizeof(bcmolt_epon_onu_1g_us_stat_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_onu_1g_us_stat_cfg_id_string_table } };
bcmcli_enum_val bcmolt_epon_onu_1g_us_stat_id_string_table[] = { { .name = "good_frames", .val = BCMOLT_EPON_ONU_1G_US_STAT_ID_GOOD_FRAMES }, { .name = "good_bytes", .val = BCMOLT_EPON_ONU_1G_US_STAT_ID_GOOD_BYTES }, { .name = "oversz_frames", .val = BCMOLT_EPON_ONU_1G_US_STAT_ID_OVERSZ_FRAMES }, { .name = "non_fec_good_frames", .val = BCMOLT_EPON_ONU_1G_US_STAT_ID_NON_FEC_GOOD_FRAMES }, { .name = "non_fec_good_bytes", .val = BCMOLT_EPON_ONU_1G_US_STAT_ID_NON_FEC_GOOD_BYTES }, { .name = "fec_good_frames", .val = BCMOLT_EPON_ONU_1G_US_STAT_ID_FEC_GOOD_FRAMES }, { .name = "fec_good_bytes", .val = BCMOLT_EPON_ONU_1G_US_STAT_ID_FEC_GOOD_BYTES }, { .name = "fec_frames_exc_errs", .val = BCMOLT_EPON_ONU_1G_US_STAT_ID_FEC_FRAMES_EXC_ERRS }, { .name = "fec_blks_no_errs", .val = BCMOLT_EPON_ONU_1G_US_STAT_ID_FEC_BLKS_NO_ERRS }, { .name = "fec_blks_corr_errs", .val = BCMOLT_EPON_ONU_1G_US_STAT_ID_FEC_BLKS_CORR_ERRS }, { .name = "fec_blks_uncorr_errs", .val = BCMOLT_EPON_ONU_1G_US_STAT_ID_FEC_BLKS_UNCORR_ERRS }, { .name = "fec_corr_bytes", .val = BCMOLT_EPON_ONU_1G_US_STAT_ID_FEC_CORR_BYTES }, { .name = "fec_corr_zeroes", .val = BCMOLT_EPON_ONU_1G_US_STAT_ID_FEC_CORR_ZEROES }, { .name = "fec_corr_ones", .val = BCMOLT_EPON_ONU_1G_US_STAT_ID_FEC_CORR_ONES }, { .name = "undersz_frames", .val = BCMOLT_EPON_ONU_1G_US_STAT_ID_UNDERSZ_FRAMES }, { .name = "errorsz_frames", .val = BCMOLT_EPON_ONU_1G_US_STAT_ID_ERRORSZ_FRAMES }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_onu_1g_us_stat_id = { .name = "bcmolt_epon_onu_1g_us_stat_id", .descr = "Identifiers for all properties contained in the epon_onu_1g_us_stat group.", .size = sizeof(bcmolt_epon_onu_1g_us_stat_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_onu_1g_us_stat_id_string_table } };
bcmcli_enum_val bcmolt_epon_onu_upgrade_onu_response_code_string_table[] = { { .name = "ok", .val = BCMOLT_EPON_ONU_UPGRADE_ONU_RESPONSE_CODE_OK }, { .name = "undefined", .val = BCMOLT_EPON_ONU_UPGRADE_ONU_RESPONSE_CODE_UNDEFINED }, { .name = "not_found", .val = BCMOLT_EPON_ONU_UPGRADE_ONU_RESPONSE_CODE_NOT_FOUND }, { .name = "no_access", .val = BCMOLT_EPON_ONU_UPGRADE_ONU_RESPONSE_CODE_NO_ACCESS }, { .name = "full", .val = BCMOLT_EPON_ONU_UPGRADE_ONU_RESPONSE_CODE_FULL }, { .name = "illegal_operation", .val = BCMOLT_EPON_ONU_UPGRADE_ONU_RESPONSE_CODE_ILLEGAL_OPERATION }, { .name = "unknown_id", .val = BCMOLT_EPON_ONU_UPGRADE_ONU_RESPONSE_CODE_UNKNOWN_ID }, { .name = "bad_block", .val = BCMOLT_EPON_ONU_UPGRADE_ONU_RESPONSE_CODE_BAD_BLOCK }, { .name = "timeout", .val = BCMOLT_EPON_ONU_UPGRADE_ONU_RESPONSE_CODE_TIMEOUT }, { .name = "busy", .val = BCMOLT_EPON_ONU_UPGRADE_ONU_RESPONSE_CODE_BUSY }, { .name = "incompatible_file", .val = BCMOLT_EPON_ONU_UPGRADE_ONU_RESPONSE_CODE_INCOMPATIBLE_FILE }, { .name = "corrupted_file", .val = BCMOLT_EPON_ONU_UPGRADE_ONU_RESPONSE_CODE_CORRUPTED_FILE }, { .name = "error_not_defined", .val = BCMOLT_EPON_ONU_UPGRADE_ONU_RESPONSE_CODE_ERROR_NOT_DEFINED }, { .name = "error_alloc_exceeded", .val = BCMOLT_EPON_ONU_UPGRADE_ONU_RESPONSE_CODE_ERROR_ALLOC_EXCEEDED }, { .name = "error_illegal_op", .val = BCMOLT_EPON_ONU_UPGRADE_ONU_RESPONSE_CODE_ERROR_ILLEGAL_OP }, { .name = "error_file_exists", .val = BCMOLT_EPON_ONU_UPGRADE_ONU_RESPONSE_CODE_ERROR_FILE_EXISTS }, { .name = "end_writing_nvs", .val = BCMOLT_EPON_ONU_UPGRADE_ONU_RESPONSE_CODE_END_WRITING_NVS }, { .name = "end_crc_error", .val = BCMOLT_EPON_ONU_UPGRADE_ONU_RESPONSE_CODE_END_CRC_ERROR }, { .name = "end_param_error", .val = BCMOLT_EPON_ONU_UPGRADE_ONU_RESPONSE_CODE_END_PARAM_ERROR }, { .name = "end_cmd_unsupported", .val = BCMOLT_EPON_ONU_UPGRADE_ONU_RESPONSE_CODE_END_CMD_UNSUPPORTED }, { .name = "last", .val = BCMOLT_EPON_ONU_UPGRADE_ONU_RESPONSE_CODE_LAST }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_onu_upgrade_onu_response_code = { .name = "bcmolt_epon_onu_upgrade_onu_response_code", .descr = "EPON ONU Upgrade ONU Response Code", .size = sizeof(bcmolt_epon_onu_upgrade_onu_response_code), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_onu_upgrade_onu_response_code_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_onu_upgrade_params_fields[] = { { .name = "oam_extension_type", .descr = "OAM Extension Type", .offset = offsetof(bcmolt_epon_onu_upgrade_params, oam_extension_type), .type = &type_descr_bcmolt_epon_oam_extension_type } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_onu_upgrade_params_broadcom_fields[] = { { .name = "response_timeout_ms", .descr = "The length of time that the OLT will wait for the ONU to respond.", .offset = offsetof(bcmolt_epon_onu_upgrade_params, u.broadcom.response_timeout_ms) - offsetof(bcmolt_epon_onu_upgrade_params, u.broadcom.response_timeout_ms), .type = &type_descr_uint32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_onu_upgrade_params_broadcom = { .name = "bcmolt_epon_onu_upgrade_params_broadcom", .descr = "EPON ONU Upgrade Parameters Broadcom", .size = sizeof(((bcmolt_epon_onu_upgrade_params *)0)->u.broadcom), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_onu_upgrade_params_broadcom_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_onu_upgrade_params_broadcom_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_onu_upgrade_params_ctc_fields[] = { { .name = "response_timeout_ms", .descr = "The length of time that the OLT will wait for the ONU to respond.", .offset = offsetof(bcmolt_epon_onu_upgrade_params, u.ctc.response_timeout_ms) - offsetof(bcmolt_epon_onu_upgrade_params, u.ctc.response_timeout_ms), .type = &type_descr_uint32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_onu_upgrade_params_ctc = { .name = "bcmolt_epon_onu_upgrade_params_ctc", .descr = "EPON ONU Upgrade Parameters CTC", .size = sizeof(((bcmolt_epon_onu_upgrade_params *)0)->u.ctc), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_onu_upgrade_params_ctc_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_onu_upgrade_params_ctc_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_onu_upgrade_params_dasan_fields[] = { { .name = "response_timeout_ms", .descr = "The length of time that the OLT will wait for the ONU to respond.", .offset = offsetof(bcmolt_epon_onu_upgrade_params, u.dasan.response_timeout_ms) - offsetof(bcmolt_epon_onu_upgrade_params, u.dasan.response_timeout_ms), .type = &type_descr_uint32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_onu_upgrade_params_dasan = { .name = "bcmolt_epon_onu_upgrade_params_dasan", .descr = "EPON ONU Upgrade Parameters Dasan", .size = sizeof(((bcmolt_epon_onu_upgrade_params *)0)->u.dasan), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_onu_upgrade_params_dasan_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_onu_upgrade_params_dasan_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_onu_upgrade_params_kt_fields[] = { { .name = "response_timeout_ms", .descr = "The length of time that the OLT will wait for the ONU to respond.", .offset = offsetof(bcmolt_epon_onu_upgrade_params, u.kt.response_timeout_ms) - offsetof(bcmolt_epon_onu_upgrade_params, u.kt.response_timeout_ms), .type = &type_descr_uint32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_onu_upgrade_params_kt = { .name = "bcmolt_epon_onu_upgrade_params_kt", .descr = "EPON ONU Upgrade Parameters KT", .size = sizeof(((bcmolt_epon_onu_upgrade_params *)0)->u.kt), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_onu_upgrade_params_kt_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_onu_upgrade_params_kt_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_onu_upgrade_params_dpoe_fields[] = { { .name = "response_timeout_ms", .descr = "The length of time that the OLT will wait for the ONU to respond.", .offset = offsetof(bcmolt_epon_onu_upgrade_params, u.dpoe.response_timeout_ms) - offsetof(bcmolt_epon_onu_upgrade_params, u.dpoe.response_timeout_ms), .type = &type_descr_uint32_t }, { .name = "block_size", .descr = "Number of byte per data block.", .offset = offsetof(bcmolt_epon_onu_upgrade_params, u.dpoe.block_size) - offsetof(bcmolt_epon_onu_upgrade_params, u.dpoe.response_timeout_ms), .type = &type_descr_uint16_t }, { .name = "final_ack_response_timeout", .descr = "Timeout for the final ACK response.  The DPoE standard 1.0 specifies this should be at least 15 seconds.  Unit is seconds.", .offset = offsetof(bcmolt_epon_onu_upgrade_params, u.dpoe.final_ack_response_timeout) - offsetof(bcmolt_epon_onu_upgrade_params, u.dpoe.response_timeout_ms), .type = &type_descr_uint32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_onu_upgrade_params_dpoe = { .name = "bcmolt_epon_onu_upgrade_params_dpoe", .descr = "EPON ONU Upgrade Parameters DPoE", .size = sizeof(((bcmolt_epon_onu_upgrade_params *)0)->u.dpoe), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_onu_upgrade_params_dpoe_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_onu_upgrade_params_dpoe_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_onu_upgrade_params_union_fields[] = { { }, { .name = "u.broadcom", .descr = "", .offset = offsetof(bcmolt_epon_onu_upgrade_params, u.broadcom), .type = &type_descr_bcmolt_epon_onu_upgrade_params_broadcom }, { .name = "u.ctc", .descr = "", .offset = offsetof(bcmolt_epon_onu_upgrade_params, u.ctc), .type = &type_descr_bcmolt_epon_onu_upgrade_params_ctc }, { .name = "u.dasan", .descr = "", .offset = offsetof(bcmolt_epon_onu_upgrade_params, u.dasan), .type = &type_descr_bcmolt_epon_onu_upgrade_params_dasan }, { .name = "u.kt", .descr = "", .offset = offsetof(bcmolt_epon_onu_upgrade_params, u.kt), .type = &type_descr_bcmolt_epon_onu_upgrade_params_kt }, { .name = "u.dpoe", .descr = "", .offset = offsetof(bcmolt_epon_onu_upgrade_params, u.dpoe), .type = &type_descr_bcmolt_epon_onu_upgrade_params_dpoe }, { } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_onu_upgrade_params = { .name = "bcmolt_epon_onu_upgrade_params", .descr = "EPON ONU Upgrade Parameters", .size = sizeof(bcmolt_epon_onu_upgrade_params), .base_type = BCMOLT_BASE_TYPE_ID_UNION, .x = { .u = { .num_common_fields = sizeof(type_descr_bcmolt_epon_onu_upgrade_params_fields) / sizeof(bcmcli_field_descr), .common_fields = type_descr_bcmolt_epon_onu_upgrade_params_fields, .classifier_idx = 0, .union_fields = type_descr_bcmolt_epon_onu_upgrade_params_union_fields } } };
bcmcli_enum_val bcmolt_epon_onu_upgrade_return_code_string_table[] = { { .name = "success", .val = BCMOLT_EPON_ONU_UPGRADE_RETURN_CODE_SUCCESS }, { .name = "onu_response_timeout", .val = BCMOLT_EPON_ONU_UPGRADE_RETURN_CODE_ONU_RESPONSE_TIMEOUT }, { .name = "onu_error_response", .val = BCMOLT_EPON_ONU_UPGRADE_RETURN_CODE_ONU_ERROR_RESPONSE }, { .name = "sync_error", .val = BCMOLT_EPON_ONU_UPGRADE_RETURN_CODE_SYNC_ERROR }, { .name = "commit_failed", .val = BCMOLT_EPON_ONU_UPGRADE_RETURN_CODE_COMMIT_FAILED }, { .name = "internal", .val = BCMOLT_EPON_ONU_UPGRADE_RETURN_CODE_INTERNAL }, { .name = "parse_error", .val = BCMOLT_EPON_ONU_UPGRADE_RETURN_CODE_PARSE_ERROR }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_onu_upgrade_return_code = { .name = "bcmolt_epon_onu_upgrade_return_code", .descr = "EPON ONU Upgrade Return Code", .size = sizeof(bcmolt_epon_onu_upgrade_return_code), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_onu_upgrade_return_code_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_onu_upgrade_status_fields[] = { { .name = "onu_id", .descr = "ONU ID", .offset = offsetof(bcmolt_epon_onu_upgrade_status, onu_id), .type = &type_descr_bcmos_mac_address }, { .name = "error_code", .descr = "Upgrade status.", .offset = offsetof(bcmolt_epon_onu_upgrade_status, error_code), .type = &type_descr_bcmolt_epon_onu_upgrade_return_code }, { .name = "onu_return_code", .descr = "Response code from the ONU.", .offset = offsetof(bcmolt_epon_onu_upgrade_status, onu_return_code), .type = &type_descr_bcmolt_epon_onu_upgrade_onu_response_code } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_onu_upgrade_status = { .name = "bcmolt_epon_onu_upgrade_status", .descr = "EPON ONU Upgrade Status", .size = sizeof(bcmolt_epon_onu_upgrade_status), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_onu_upgrade_status_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_onu_upgrade_status_fields } } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_onu_upgrade_status_list_u32 = { .name = "bcmolt_epon_onu_upgrade_status_list_u32", .descr = "Variable-length list of epon_onu_upgrade_status", .size = sizeof(bcmolt_epon_onu_upgrade_status_list_u32), .base_type = BCMOLT_BASE_TYPE_ID_ARR_DYN, .x = { .arr_dyn = { .elem_type = &type_descr_bcmolt_epon_onu_upgrade_status, .len_size = 4, .max_size = DEFAULT_DYN_ARR_MAX_SIZE / sizeof(bcmolt_epon_onu_upgrade_status) } } };
bcmcli_enum_val bcmolt_epon_path_10g_ds_auto_cfg_id_string_table[] = { { .name = "stat_alarm_cleared", .val = BCMOLT_EPON_PATH_10G_DS_AUTO_CFG_ID_STAT_ALARM_CLEARED }, { .name = "stat_alarm_raised", .val = BCMOLT_EPON_PATH_10G_DS_AUTO_CFG_ID_STAT_ALARM_RAISED }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_10g_ds_auto_cfg_id = { .name = "bcmolt_epon_path_10g_ds_auto_cfg_id", .descr = "Identifiers for all properties contained in the epon_path_10g_ds_auto_cfg group.", .size = sizeof(bcmolt_epon_path_10g_ds_auto_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_path_10g_ds_auto_cfg_id_string_table } };
bcmcli_enum_val bcmolt_epon_path_10g_ds_cfg_id_string_table[] = { { .name = "fec_state", .val = BCMOLT_EPON_PATH_10G_DS_CFG_ID_FEC_STATE }, { .name = "prbs_generator", .val = BCMOLT_EPON_PATH_10G_DS_CFG_ID_PRBS_GENERATOR }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_10g_ds_cfg_id = { .name = "bcmolt_epon_path_10g_ds_cfg_id", .descr = "Identifiers for all properties contained in the epon_path_10g_ds_cfg group.", .size = sizeof(bcmolt_epon_path_10g_ds_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_path_10g_ds_cfg_id_string_table } };
bcmcli_enum_val bcmolt_epon_path_10g_ds_key_id_string_table[] = { { .name = "epon_ni", .val = BCMOLT_EPON_PATH_10G_DS_KEY_ID_EPON_NI }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_10g_ds_key_id = { .name = "bcmolt_epon_path_10g_ds_key_id", .descr = "Identifiers for all properties contained in the epon_path_10g_ds_key group.", .size = sizeof(bcmolt_epon_path_10g_ds_key_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_path_10g_ds_key_id_string_table } };
bcmcli_enum_val bcmolt_epon_path_10g_ds_stat_alarm_cleared_id_string_table[] = { { .name = "stat", .val = BCMOLT_EPON_PATH_10G_DS_STAT_ALARM_CLEARED_ID_STAT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_10g_ds_stat_alarm_cleared_id = { .name = "bcmolt_epon_path_10g_ds_stat_alarm_cleared_id", .descr = "Identifiers for all properties contained in the epon_path_10g_ds_stat_alarm_cleared group.", .size = sizeof(bcmolt_epon_path_10g_ds_stat_alarm_cleared_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_path_10g_ds_stat_alarm_cleared_id_string_table } };
bcmcli_enum_val bcmolt_epon_path_10g_ds_stat_alarm_raised_id_string_table[] = { { .name = "stat", .val = BCMOLT_EPON_PATH_10G_DS_STAT_ALARM_RAISED_ID_STAT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_10g_ds_stat_alarm_raised_id = { .name = "bcmolt_epon_path_10g_ds_stat_alarm_raised_id", .descr = "Identifiers for all properties contained in the epon_path_10g_ds_stat_alarm_raised group.", .size = sizeof(bcmolt_epon_path_10g_ds_stat_alarm_raised_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_path_10g_ds_stat_alarm_raised_id_string_table } };
bcmcli_enum_val bcmolt_epon_path_10g_ds_stat_cfg_id_string_table[] = { { .name = "cfg", .val = BCMOLT_EPON_PATH_10G_DS_STAT_CFG_ID_CFG }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_10g_ds_stat_cfg_id = { .name = "bcmolt_epon_path_10g_ds_stat_cfg_id", .descr = "Identifiers for all properties contained in the epon_path_10g_ds_stat_cfg group.", .size = sizeof(bcmolt_epon_path_10g_ds_stat_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_path_10g_ds_stat_cfg_id_string_table } };
bcmcli_enum_val bcmolt_epon_path_10g_ds_stat_id_string_table[] = { { .name = "bytes", .val = BCMOLT_EPON_PATH_10G_DS_STAT_ID_BYTES }, { .name = "frames", .val = BCMOLT_EPON_PATH_10G_DS_STAT_ID_FRAMES }, { .name = "frames_64", .val = BCMOLT_EPON_PATH_10G_DS_STAT_ID_FRAMES_64 }, { .name = "frames_65_127", .val = BCMOLT_EPON_PATH_10G_DS_STAT_ID_FRAMES_65_127 }, { .name = "frames_128_255", .val = BCMOLT_EPON_PATH_10G_DS_STAT_ID_FRAMES_128_255 }, { .name = "frames_256_511", .val = BCMOLT_EPON_PATH_10G_DS_STAT_ID_FRAMES_256_511 }, { .name = "frames_512_1023", .val = BCMOLT_EPON_PATH_10G_DS_STAT_ID_FRAMES_512_1023 }, { .name = "frames_1024_1518", .val = BCMOLT_EPON_PATH_10G_DS_STAT_ID_FRAMES_1024_1518 }, { .name = "frames_1519_2047", .val = BCMOLT_EPON_PATH_10G_DS_STAT_ID_FRAMES_1519_2047 }, { .name = "frames_2048_4095", .val = BCMOLT_EPON_PATH_10G_DS_STAT_ID_FRAMES_2048_4095 }, { .name = "frames_4096_9216", .val = BCMOLT_EPON_PATH_10G_DS_STAT_ID_FRAMES_4096_9216 }, { .name = "frames_9217_16383", .val = BCMOLT_EPON_PATH_10G_DS_STAT_ID_FRAMES_9217_16383 }, { .name = "broadcast_frames", .val = BCMOLT_EPON_PATH_10G_DS_STAT_ID_BROADCAST_FRAMES }, { .name = "data_bytes", .val = BCMOLT_EPON_PATH_10G_DS_STAT_ID_DATA_BYTES }, { .name = "multicast_frames", .val = BCMOLT_EPON_PATH_10G_DS_STAT_ID_MULTICAST_FRAMES }, { .name = "unicast_frames", .val = BCMOLT_EPON_PATH_10G_DS_STAT_ID_UNICAST_FRAMES }, { .name = "oam_bytes", .val = BCMOLT_EPON_PATH_10G_DS_STAT_ID_OAM_BYTES }, { .name = "oam_frames", .val = BCMOLT_EPON_PATH_10G_DS_STAT_ID_OAM_FRAMES }, { .name = "gate_frames", .val = BCMOLT_EPON_PATH_10G_DS_STAT_ID_GATE_FRAMES }, { .name = "mpcp_frames", .val = BCMOLT_EPON_PATH_10G_DS_STAT_ID_MPCP_FRAMES }, { .name = "abort_frames", .val = BCMOLT_EPON_PATH_10G_DS_STAT_ID_ABORT_FRAMES }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_10g_ds_stat_id = { .name = "bcmolt_epon_path_10g_ds_stat_id", .descr = "Identifiers for all properties contained in the epon_path_10g_ds_stat group.", .size = sizeof(bcmolt_epon_path_10g_ds_stat_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_path_10g_ds_stat_id_string_table } };
bcmcli_enum_val bcmolt_epon_path_10g_us_auto_cfg_id_string_table[] = { { .name = "stat_alarm_cleared", .val = BCMOLT_EPON_PATH_10G_US_AUTO_CFG_ID_STAT_ALARM_CLEARED }, { .name = "stat_alarm_raised", .val = BCMOLT_EPON_PATH_10G_US_AUTO_CFG_ID_STAT_ALARM_RAISED }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_10g_us_auto_cfg_id = { .name = "bcmolt_epon_path_10g_us_auto_cfg_id", .descr = "Identifiers for all properties contained in the epon_path_10g_us_auto_cfg group.", .size = sizeof(bcmolt_epon_path_10g_us_auto_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_path_10g_us_auto_cfg_id_string_table } };
bcmcli_enum_val bcmolt_epon_path_10g_us_cfg_id_string_table[] = { { .name = "fec_state", .val = BCMOLT_EPON_PATH_10G_US_CFG_ID_FEC_STATE }, { .name = "sync_time_tq", .val = BCMOLT_EPON_PATH_10G_US_CFG_ID_SYNC_TIME_TQ }, { .name = "prbs_checker", .val = BCMOLT_EPON_PATH_10G_US_CFG_ID_PRBS_CHECKER }, { .name = "prbs_status", .val = BCMOLT_EPON_PATH_10G_US_CFG_ID_PRBS_STATUS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_10g_us_cfg_id = { .name = "bcmolt_epon_path_10g_us_cfg_id", .descr = "Identifiers for all properties contained in the epon_path_10g_us_cfg group.", .size = sizeof(bcmolt_epon_path_10g_us_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_path_10g_us_cfg_id_string_table } };
bcmcli_enum_val bcmolt_epon_path_10g_us_key_id_string_table[] = { { .name = "epon_ni", .val = BCMOLT_EPON_PATH_10G_US_KEY_ID_EPON_NI }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_10g_us_key_id = { .name = "bcmolt_epon_path_10g_us_key_id", .descr = "Identifiers for all properties contained in the epon_path_10g_us_key group.", .size = sizeof(bcmolt_epon_path_10g_us_key_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_path_10g_us_key_id_string_table } };
bcmcli_enum_val bcmolt_epon_path_10g_us_stat_alarm_cleared_id_string_table[] = { { .name = "stat", .val = BCMOLT_EPON_PATH_10G_US_STAT_ALARM_CLEARED_ID_STAT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_10g_us_stat_alarm_cleared_id = { .name = "bcmolt_epon_path_10g_us_stat_alarm_cleared_id", .descr = "Identifiers for all properties contained in the epon_path_10g_us_stat_alarm_cleared group.", .size = sizeof(bcmolt_epon_path_10g_us_stat_alarm_cleared_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_path_10g_us_stat_alarm_cleared_id_string_table } };
bcmcli_enum_val bcmolt_epon_path_10g_us_stat_alarm_raised_id_string_table[] = { { .name = "stat", .val = BCMOLT_EPON_PATH_10G_US_STAT_ALARM_RAISED_ID_STAT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_10g_us_stat_alarm_raised_id = { .name = "bcmolt_epon_path_10g_us_stat_alarm_raised_id", .descr = "Identifiers for all properties contained in the epon_path_10g_us_stat_alarm_raised group.", .size = sizeof(bcmolt_epon_path_10g_us_stat_alarm_raised_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_path_10g_us_stat_alarm_raised_id_string_table } };
bcmcli_enum_val bcmolt_epon_path_10g_us_stat_cfg_id_string_table[] = { { .name = "cfg", .val = BCMOLT_EPON_PATH_10G_US_STAT_CFG_ID_CFG }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_10g_us_stat_cfg_id = { .name = "bcmolt_epon_path_10g_us_stat_cfg_id", .descr = "Identifiers for all properties contained in the epon_path_10g_us_stat_cfg group.", .size = sizeof(bcmolt_epon_path_10g_us_stat_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_path_10g_us_stat_cfg_id_string_table } };
bcmcli_enum_val bcmolt_epon_path_10g_us_stat_id_string_table[] = { { .name = "bytes", .val = BCMOLT_EPON_PATH_10G_US_STAT_ID_BYTES }, { .name = "frames", .val = BCMOLT_EPON_PATH_10G_US_STAT_ID_FRAMES }, { .name = "frames_64", .val = BCMOLT_EPON_PATH_10G_US_STAT_ID_FRAMES_64 }, { .name = "frames_65_127", .val = BCMOLT_EPON_PATH_10G_US_STAT_ID_FRAMES_65_127 }, { .name = "frames_128_255", .val = BCMOLT_EPON_PATH_10G_US_STAT_ID_FRAMES_128_255 }, { .name = "frames_256_511", .val = BCMOLT_EPON_PATH_10G_US_STAT_ID_FRAMES_256_511 }, { .name = "frames_512_1023", .val = BCMOLT_EPON_PATH_10G_US_STAT_ID_FRAMES_512_1023 }, { .name = "frames_1024_1518", .val = BCMOLT_EPON_PATH_10G_US_STAT_ID_FRAMES_1024_1518 }, { .name = "frames_1519_2047", .val = BCMOLT_EPON_PATH_10G_US_STAT_ID_FRAMES_1519_2047 }, { .name = "frames_2048_4095", .val = BCMOLT_EPON_PATH_10G_US_STAT_ID_FRAMES_2048_4095 }, { .name = "frames_4096_9216", .val = BCMOLT_EPON_PATH_10G_US_STAT_ID_FRAMES_4096_9216 }, { .name = "frames_9217_16383", .val = BCMOLT_EPON_PATH_10G_US_STAT_ID_FRAMES_9217_16383 }, { .name = "broadcast_frames", .val = BCMOLT_EPON_PATH_10G_US_STAT_ID_BROADCAST_FRAMES }, { .name = "data_bytes", .val = BCMOLT_EPON_PATH_10G_US_STAT_ID_DATA_BYTES }, { .name = "multicast_frames", .val = BCMOLT_EPON_PATH_10G_US_STAT_ID_MULTICAST_FRAMES }, { .name = "unicast_frames", .val = BCMOLT_EPON_PATH_10G_US_STAT_ID_UNICAST_FRAMES }, { .name = "mpcp_frames", .val = BCMOLT_EPON_PATH_10G_US_STAT_ID_MPCP_FRAMES }, { .name = "oam_bytes", .val = BCMOLT_EPON_PATH_10G_US_STAT_ID_OAM_BYTES }, { .name = "oam_frames", .val = BCMOLT_EPON_PATH_10G_US_STAT_ID_OAM_FRAMES }, { .name = "report_frames", .val = BCMOLT_EPON_PATH_10G_US_STAT_ID_REPORT_FRAMES }, { .name = "abort_frames", .val = BCMOLT_EPON_PATH_10G_US_STAT_ID_ABORT_FRAMES }, { .name = "fcs_error", .val = BCMOLT_EPON_PATH_10G_US_STAT_ID_FCS_ERROR }, { .name = "crc_8_error", .val = BCMOLT_EPON_PATH_10G_US_STAT_ID_CRC_8_ERROR }, { .name = "out_of_slot", .val = BCMOLT_EPON_PATH_10G_US_STAT_ID_OUT_OF_SLOT }, { .name = "oversize_error", .val = BCMOLT_EPON_PATH_10G_US_STAT_ID_OVERSIZE_ERROR }, { .name = "runt_error", .val = BCMOLT_EPON_PATH_10G_US_STAT_ID_RUNT_ERROR }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_10g_us_stat_id = { .name = "bcmolt_epon_path_10g_us_stat_id", .descr = "Identifiers for all properties contained in the epon_path_10g_us_stat group.", .size = sizeof(bcmolt_epon_path_10g_us_stat_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_path_10g_us_stat_id_string_table } };
bcmcli_enum_val bcmolt_epon_path_1g_ds_auto_cfg_id_string_table[] = { { .name = "stat_alarm_cleared", .val = BCMOLT_EPON_PATH_1G_DS_AUTO_CFG_ID_STAT_ALARM_CLEARED }, { .name = "stat_alarm_raised", .val = BCMOLT_EPON_PATH_1G_DS_AUTO_CFG_ID_STAT_ALARM_RAISED }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_1g_ds_auto_cfg_id = { .name = "bcmolt_epon_path_1g_ds_auto_cfg_id", .descr = "Identifiers for all properties contained in the epon_path_1g_ds_auto_cfg group.", .size = sizeof(bcmolt_epon_path_1g_ds_auto_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_path_1g_ds_auto_cfg_id_string_table } };
bcmcli_enum_val bcmolt_epon_path_1g_ds_cfg_id_string_table[] = { { .name = "default_fec_state", .val = BCMOLT_EPON_PATH_1G_DS_CFG_ID_DEFAULT_FEC_STATE }, { .name = "raman_mode", .val = BCMOLT_EPON_PATH_1G_DS_CFG_ID_RAMAN_MODE }, { .name = "turbo_2g_mode", .val = BCMOLT_EPON_PATH_1G_DS_CFG_ID_TURBO_2G_MODE }, { .name = "prbs_generator", .val = BCMOLT_EPON_PATH_1G_DS_CFG_ID_PRBS_GENERATOR }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_1g_ds_cfg_id = { .name = "bcmolt_epon_path_1g_ds_cfg_id", .descr = "Identifiers for all properties contained in the epon_path_1g_ds_cfg group.", .size = sizeof(bcmolt_epon_path_1g_ds_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_path_1g_ds_cfg_id_string_table } };
bcmcli_enum_val bcmolt_epon_path_1g_ds_key_id_string_table[] = { { .name = "epon_ni", .val = BCMOLT_EPON_PATH_1G_DS_KEY_ID_EPON_NI }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_1g_ds_key_id = { .name = "bcmolt_epon_path_1g_ds_key_id", .descr = "Identifiers for all properties contained in the epon_path_1g_ds_key group.", .size = sizeof(bcmolt_epon_path_1g_ds_key_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_path_1g_ds_key_id_string_table } };
bcmcli_enum_val bcmolt_epon_path_1g_ds_stat_alarm_cleared_id_string_table[] = { { .name = "stat", .val = BCMOLT_EPON_PATH_1G_DS_STAT_ALARM_CLEARED_ID_STAT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_1g_ds_stat_alarm_cleared_id = { .name = "bcmolt_epon_path_1g_ds_stat_alarm_cleared_id", .descr = "Identifiers for all properties contained in the epon_path_1g_ds_stat_alarm_cleared group.", .size = sizeof(bcmolt_epon_path_1g_ds_stat_alarm_cleared_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_path_1g_ds_stat_alarm_cleared_id_string_table } };
bcmcli_enum_val bcmolt_epon_path_1g_ds_stat_alarm_raised_id_string_table[] = { { .name = "stat", .val = BCMOLT_EPON_PATH_1G_DS_STAT_ALARM_RAISED_ID_STAT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_1g_ds_stat_alarm_raised_id = { .name = "bcmolt_epon_path_1g_ds_stat_alarm_raised_id", .descr = "Identifiers for all properties contained in the epon_path_1g_ds_stat_alarm_raised group.", .size = sizeof(bcmolt_epon_path_1g_ds_stat_alarm_raised_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_path_1g_ds_stat_alarm_raised_id_string_table } };
bcmcli_enum_val bcmolt_epon_path_1g_ds_stat_cfg_id_string_table[] = { { .name = "cfg", .val = BCMOLT_EPON_PATH_1G_DS_STAT_CFG_ID_CFG }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_1g_ds_stat_cfg_id = { .name = "bcmolt_epon_path_1g_ds_stat_cfg_id", .descr = "Identifiers for all properties contained in the epon_path_1g_ds_stat_cfg group.", .size = sizeof(bcmolt_epon_path_1g_ds_stat_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_path_1g_ds_stat_cfg_id_string_table } };
bcmcli_enum_val bcmolt_epon_path_1g_ds_stat_id_string_table[] = { { .name = "bytes", .val = BCMOLT_EPON_PATH_1G_DS_STAT_ID_BYTES }, { .name = "frames", .val = BCMOLT_EPON_PATH_1G_DS_STAT_ID_FRAMES }, { .name = "frames_64", .val = BCMOLT_EPON_PATH_1G_DS_STAT_ID_FRAMES_64 }, { .name = "frames_65_127", .val = BCMOLT_EPON_PATH_1G_DS_STAT_ID_FRAMES_65_127 }, { .name = "frames_128_255", .val = BCMOLT_EPON_PATH_1G_DS_STAT_ID_FRAMES_128_255 }, { .name = "frames_256_511", .val = BCMOLT_EPON_PATH_1G_DS_STAT_ID_FRAMES_256_511 }, { .name = "frames_512_1023", .val = BCMOLT_EPON_PATH_1G_DS_STAT_ID_FRAMES_512_1023 }, { .name = "frames_1024_1518", .val = BCMOLT_EPON_PATH_1G_DS_STAT_ID_FRAMES_1024_1518 }, { .name = "frames_1519_2047", .val = BCMOLT_EPON_PATH_1G_DS_STAT_ID_FRAMES_1519_2047 }, { .name = "frames_2048_4095", .val = BCMOLT_EPON_PATH_1G_DS_STAT_ID_FRAMES_2048_4095 }, { .name = "frames_4096_9216", .val = BCMOLT_EPON_PATH_1G_DS_STAT_ID_FRAMES_4096_9216 }, { .name = "frames_9217_16383", .val = BCMOLT_EPON_PATH_1G_DS_STAT_ID_FRAMES_9217_16383 }, { .name = "broadcast_frames", .val = BCMOLT_EPON_PATH_1G_DS_STAT_ID_BROADCAST_FRAMES }, { .name = "data_bytes", .val = BCMOLT_EPON_PATH_1G_DS_STAT_ID_DATA_BYTES }, { .name = "multicast_frames", .val = BCMOLT_EPON_PATH_1G_DS_STAT_ID_MULTICAST_FRAMES }, { .name = "unicast_frames", .val = BCMOLT_EPON_PATH_1G_DS_STAT_ID_UNICAST_FRAMES }, { .name = "oam_bytes", .val = BCMOLT_EPON_PATH_1G_DS_STAT_ID_OAM_BYTES }, { .name = "oam_frames", .val = BCMOLT_EPON_PATH_1G_DS_STAT_ID_OAM_FRAMES }, { .name = "gate_frames", .val = BCMOLT_EPON_PATH_1G_DS_STAT_ID_GATE_FRAMES }, { .name = "mpcp_frames", .val = BCMOLT_EPON_PATH_1G_DS_STAT_ID_MPCP_FRAMES }, { .name = "abort_frames", .val = BCMOLT_EPON_PATH_1G_DS_STAT_ID_ABORT_FRAMES }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_1g_ds_stat_id = { .name = "bcmolt_epon_path_1g_ds_stat_id", .descr = "Identifiers for all properties contained in the epon_path_1g_ds_stat group.", .size = sizeof(bcmolt_epon_path_1g_ds_stat_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_path_1g_ds_stat_id_string_table } };
bcmcli_enum_val bcmolt_epon_path_1g_us_auto_cfg_id_string_table[] = { { .name = "stat_alarm_cleared", .val = BCMOLT_EPON_PATH_1G_US_AUTO_CFG_ID_STAT_ALARM_CLEARED }, { .name = "stat_alarm_raised", .val = BCMOLT_EPON_PATH_1G_US_AUTO_CFG_ID_STAT_ALARM_RAISED }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_1g_us_auto_cfg_id = { .name = "bcmolt_epon_path_1g_us_auto_cfg_id", .descr = "Identifiers for all properties contained in the epon_path_1g_us_auto_cfg group.", .size = sizeof(bcmolt_epon_path_1g_us_auto_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_path_1g_us_auto_cfg_id_string_table } };
bcmcli_enum_val bcmolt_epon_path_1g_us_cfg_id_string_table[] = { { .name = "default_fec_state", .val = BCMOLT_EPON_PATH_1G_US_CFG_ID_DEFAULT_FEC_STATE }, { .name = "sync_time_tq", .val = BCMOLT_EPON_PATH_1G_US_CFG_ID_SYNC_TIME_TQ }, { .name = "prbs_checker", .val = BCMOLT_EPON_PATH_1G_US_CFG_ID_PRBS_CHECKER }, { .name = "prbs_status", .val = BCMOLT_EPON_PATH_1G_US_CFG_ID_PRBS_STATUS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_1g_us_cfg_id = { .name = "bcmolt_epon_path_1g_us_cfg_id", .descr = "Identifiers for all properties contained in the epon_path_1g_us_cfg group.", .size = sizeof(bcmolt_epon_path_1g_us_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_path_1g_us_cfg_id_string_table } };
bcmcli_enum_val bcmolt_epon_path_1g_us_key_id_string_table[] = { { .name = "epon_ni", .val = BCMOLT_EPON_PATH_1G_US_KEY_ID_EPON_NI }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_1g_us_key_id = { .name = "bcmolt_epon_path_1g_us_key_id", .descr = "Identifiers for all properties contained in the epon_path_1g_us_key group.", .size = sizeof(bcmolt_epon_path_1g_us_key_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_path_1g_us_key_id_string_table } };
bcmcli_enum_val bcmolt_epon_path_1g_us_stat_alarm_cleared_id_string_table[] = { { .name = "stat", .val = BCMOLT_EPON_PATH_1G_US_STAT_ALARM_CLEARED_ID_STAT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_1g_us_stat_alarm_cleared_id = { .name = "bcmolt_epon_path_1g_us_stat_alarm_cleared_id", .descr = "Identifiers for all properties contained in the epon_path_1g_us_stat_alarm_cleared group.", .size = sizeof(bcmolt_epon_path_1g_us_stat_alarm_cleared_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_path_1g_us_stat_alarm_cleared_id_string_table } };
bcmcli_enum_val bcmolt_epon_path_1g_us_stat_alarm_raised_id_string_table[] = { { .name = "stat", .val = BCMOLT_EPON_PATH_1G_US_STAT_ALARM_RAISED_ID_STAT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_1g_us_stat_alarm_raised_id = { .name = "bcmolt_epon_path_1g_us_stat_alarm_raised_id", .descr = "Identifiers for all properties contained in the epon_path_1g_us_stat_alarm_raised group.", .size = sizeof(bcmolt_epon_path_1g_us_stat_alarm_raised_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_path_1g_us_stat_alarm_raised_id_string_table } };
bcmcli_enum_val bcmolt_epon_path_1g_us_stat_cfg_id_string_table[] = { { .name = "cfg", .val = BCMOLT_EPON_PATH_1G_US_STAT_CFG_ID_CFG }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_1g_us_stat_cfg_id = { .name = "bcmolt_epon_path_1g_us_stat_cfg_id", .descr = "Identifiers for all properties contained in the epon_path_1g_us_stat_cfg group.", .size = sizeof(bcmolt_epon_path_1g_us_stat_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_path_1g_us_stat_cfg_id_string_table } };
bcmcli_enum_val bcmolt_epon_path_1g_us_stat_id_string_table[] = { { .name = "bytes", .val = BCMOLT_EPON_PATH_1G_US_STAT_ID_BYTES }, { .name = "frames", .val = BCMOLT_EPON_PATH_1G_US_STAT_ID_FRAMES }, { .name = "frames_64", .val = BCMOLT_EPON_PATH_1G_US_STAT_ID_FRAMES_64 }, { .name = "frames_65_127", .val = BCMOLT_EPON_PATH_1G_US_STAT_ID_FRAMES_65_127 }, { .name = "frames_128_255", .val = BCMOLT_EPON_PATH_1G_US_STAT_ID_FRAMES_128_255 }, { .name = "frames_256_511", .val = BCMOLT_EPON_PATH_1G_US_STAT_ID_FRAMES_256_511 }, { .name = "frames_512_1023", .val = BCMOLT_EPON_PATH_1G_US_STAT_ID_FRAMES_512_1023 }, { .name = "frames_1024_1518", .val = BCMOLT_EPON_PATH_1G_US_STAT_ID_FRAMES_1024_1518 }, { .name = "frames_1519_2047", .val = BCMOLT_EPON_PATH_1G_US_STAT_ID_FRAMES_1519_2047 }, { .name = "frames_2048_4095", .val = BCMOLT_EPON_PATH_1G_US_STAT_ID_FRAMES_2048_4095 }, { .name = "frames_4096_9216", .val = BCMOLT_EPON_PATH_1G_US_STAT_ID_FRAMES_4096_9216 }, { .name = "frames_9217_16383", .val = BCMOLT_EPON_PATH_1G_US_STAT_ID_FRAMES_9217_16383 }, { .name = "broadcast_frames", .val = BCMOLT_EPON_PATH_1G_US_STAT_ID_BROADCAST_FRAMES }, { .name = "data_bytes", .val = BCMOLT_EPON_PATH_1G_US_STAT_ID_DATA_BYTES }, { .name = "multicast_frames", .val = BCMOLT_EPON_PATH_1G_US_STAT_ID_MULTICAST_FRAMES }, { .name = "unicast_frames", .val = BCMOLT_EPON_PATH_1G_US_STAT_ID_UNICAST_FRAMES }, { .name = "mpcp_frames", .val = BCMOLT_EPON_PATH_1G_US_STAT_ID_MPCP_FRAMES }, { .name = "oam_bytes", .val = BCMOLT_EPON_PATH_1G_US_STAT_ID_OAM_BYTES }, { .name = "oam_frames", .val = BCMOLT_EPON_PATH_1G_US_STAT_ID_OAM_FRAMES }, { .name = "report_frames", .val = BCMOLT_EPON_PATH_1G_US_STAT_ID_REPORT_FRAMES }, { .name = "abort_frames", .val = BCMOLT_EPON_PATH_1G_US_STAT_ID_ABORT_FRAMES }, { .name = "fcs_error", .val = BCMOLT_EPON_PATH_1G_US_STAT_ID_FCS_ERROR }, { .name = "crc_8_error", .val = BCMOLT_EPON_PATH_1G_US_STAT_ID_CRC_8_ERROR }, { .name = "out_of_slot", .val = BCMOLT_EPON_PATH_1G_US_STAT_ID_OUT_OF_SLOT }, { .name = "oversize_error", .val = BCMOLT_EPON_PATH_1G_US_STAT_ID_OVERSIZE_ERROR }, { .name = "runt_error", .val = BCMOLT_EPON_PATH_1G_US_STAT_ID_RUNT_ERROR }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_1g_us_stat_id = { .name = "bcmolt_epon_path_1g_us_stat_id", .descr = "Identifiers for all properties contained in the epon_path_1g_us_stat group.", .size = sizeof(bcmolt_epon_path_1g_us_stat_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_path_1g_us_stat_id_string_table } };
bcmcli_enum_val bcmolt_epon_protection_state_string_table[] = { { .name = "unprotected", .val = BCMOLT_EPON_PROTECTION_STATE_UNPROTECTED }, { .name = "protected_standby", .val = BCMOLT_EPON_PROTECTION_STATE_PROTECTED_STANDBY }, { .name = "protected_working", .val = BCMOLT_EPON_PROTECTION_STATE_PROTECTED_WORKING }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_protection_state = { .name = "bcmolt_epon_protection_state", .descr = "Indicates whether links are unprotected, protected standby, or protected working.", .size = sizeof(bcmolt_epon_protection_state), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_protection_state_string_table } };
bcmcli_enum_val bcmolt_epon_protection_switching_type_string_table[] = { { .name = "no_protection_swtiching", .val = BCMOLT_EPON_PROTECTION_SWITCHING_TYPE_NO_PROTECTION_SWTICHING }, { .name = "line_card_protection_switching", .val = BCMOLT_EPON_PROTECTION_SWITCHING_TYPE_LINE_CARD_PROTECTION_SWITCHING }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_protection_switching_type = { .name = "bcmolt_epon_protection_switching_type", .descr = "EPON Protection Switching Type", .size = sizeof(bcmolt_epon_protection_switching_type), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_protection_switching_type_string_table } };
bcmcli_enum_val bcmolt_protection_switching_detection_options_string_table[] = { { .name = "none", .val = BCMOLT_PROTECTION_SWITCHING_DETECTION_OPTIONS_NONE }, { .name = "standby_los_detection", .val = BCMOLT_PROTECTION_SWITCHING_DETECTION_OPTIONS_STANDBY_LOS_DETECTION }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_protection_switching_detection_options = { .name = "bcmolt_protection_switching_detection_options", .descr = "Protection Switching Detection Options", .size = sizeof(bcmolt_protection_switching_detection_options), .base_type = BCMOLT_BASE_TYPE_ID_ENUM_MASK, .x = { .e = bcmolt_protection_switching_detection_options_string_table } };
bcmcli_enum_val bcmolt_epon_protection_switching_reranging_options_string_table[] = { { .name = "rerange_none", .val = BCMOLT_EPON_PROTECTION_SWITCHING_RERANGING_OPTIONS_RERANGE_NONE }, { .name = "rerange_single_logical_link", .val = BCMOLT_EPON_PROTECTION_SWITCHING_RERANGING_OPTIONS_RERANGE_SINGLE_LOGICAL_LINK }, { .name = "rerange_all_logical_links", .val = BCMOLT_EPON_PROTECTION_SWITCHING_RERANGING_OPTIONS_RERANGE_ALL_LOGICAL_LINKS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_protection_switching_reranging_options = { .name = "bcmolt_epon_protection_switching_reranging_options", .descr = "Criteria for logical link selection during re-ranging process", .size = sizeof(bcmolt_epon_protection_switching_reranging_options), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_protection_switching_reranging_options_string_table } };
bcmcli_enum_val bcmolt_gpio_pin_string_table[] = { { .name = "pin0", .val = BCMOLT_GPIO_PIN_PIN0 }, { .name = "pin1", .val = BCMOLT_GPIO_PIN_PIN1 }, { .name = "pin2", .val = BCMOLT_GPIO_PIN_PIN2 }, { .name = "pin3", .val = BCMOLT_GPIO_PIN_PIN3 }, { .name = "pin4", .val = BCMOLT_GPIO_PIN_PIN4 }, { .name = "pin5", .val = BCMOLT_GPIO_PIN_PIN5 }, { .name = "pin6", .val = BCMOLT_GPIO_PIN_PIN6 }, { .name = "pin7", .val = BCMOLT_GPIO_PIN_PIN7 }, { .name = "pin8", .val = BCMOLT_GPIO_PIN_PIN8 }, { .name = "pin9", .val = BCMOLT_GPIO_PIN_PIN9 }, { .name = "pin10", .val = BCMOLT_GPIO_PIN_PIN10 }, { .name = "pin11", .val = BCMOLT_GPIO_PIN_PIN11 }, { .name = "pin12", .val = BCMOLT_GPIO_PIN_PIN12 }, { .name = "pin13", .val = BCMOLT_GPIO_PIN_PIN13 }, { .name = "pin14", .val = BCMOLT_GPIO_PIN_PIN14 }, { .name = "pin15", .val = BCMOLT_GPIO_PIN_PIN15 }, { .name = "pin16", .val = BCMOLT_GPIO_PIN_PIN16 }, { .name = "pin17", .val = BCMOLT_GPIO_PIN_PIN17 }, { .name = "pin18", .val = BCMOLT_GPIO_PIN_PIN18 }, { .name = "pin19", .val = BCMOLT_GPIO_PIN_PIN19 }, { .name = "pin20", .val = BCMOLT_GPIO_PIN_PIN20 }, { .name = "pin21", .val = BCMOLT_GPIO_PIN_PIN21 }, { .name = "pin22", .val = BCMOLT_GPIO_PIN_PIN22 }, { .name = "pin23", .val = BCMOLT_GPIO_PIN_PIN23 }, { .name = "pin24", .val = BCMOLT_GPIO_PIN_PIN24 }, { .name = "pin25", .val = BCMOLT_GPIO_PIN_PIN25 }, { .name = "pin26", .val = BCMOLT_GPIO_PIN_PIN26 }, { .name = "pin27", .val = BCMOLT_GPIO_PIN_PIN27 }, { .name = "pin28", .val = BCMOLT_GPIO_PIN_PIN28 }, { .name = "pin29", .val = BCMOLT_GPIO_PIN_PIN29 }, { .name = "pin30", .val = BCMOLT_GPIO_PIN_PIN30 }, { .name = "pin31", .val = BCMOLT_GPIO_PIN_PIN31 }, { .name = "pin32", .val = BCMOLT_GPIO_PIN_PIN32 }, { .name = "pin33", .val = BCMOLT_GPIO_PIN_PIN33 }, { .name = "pin34", .val = BCMOLT_GPIO_PIN_PIN34 }, { .name = "pin35", .val = BCMOLT_GPIO_PIN_PIN35 }, { .name = "pin36", .val = BCMOLT_GPIO_PIN_PIN36 }, { .name = "pin37", .val = BCMOLT_GPIO_PIN_PIN37 }, { .name = "pin38", .val = BCMOLT_GPIO_PIN_PIN38 }, { .name = "pin39", .val = BCMOLT_GPIO_PIN_PIN39 }, { .name = "pin40", .val = BCMOLT_GPIO_PIN_PIN40 }, { .name = "pin41", .val = BCMOLT_GPIO_PIN_PIN41 }, { .name = "pin42", .val = BCMOLT_GPIO_PIN_PIN42 }, { .name = "pin43", .val = BCMOLT_GPIO_PIN_PIN43 }, { .name = "pin44", .val = BCMOLT_GPIO_PIN_PIN44 }, { .name = "pin45", .val = BCMOLT_GPIO_PIN_PIN45 }, { .name = "pin46", .val = BCMOLT_GPIO_PIN_PIN46 }, { .name = "pin47", .val = BCMOLT_GPIO_PIN_PIN47 }, { .name = "pin48", .val = BCMOLT_GPIO_PIN_PIN48 }, { .name = "pin49", .val = BCMOLT_GPIO_PIN_PIN49 }, { .name = "pin50", .val = BCMOLT_GPIO_PIN_PIN50 }, { .name = "pin51", .val = BCMOLT_GPIO_PIN_PIN51 }, { .name = "pin52", .val = BCMOLT_GPIO_PIN_PIN52 }, { .name = "pin53", .val = BCMOLT_GPIO_PIN_PIN53 }, { .name = "pin54", .val = BCMOLT_GPIO_PIN_PIN54 }, { .name = "pin55", .val = BCMOLT_GPIO_PIN_PIN55 }, { .name = "pin56", .val = BCMOLT_GPIO_PIN_PIN56 }, { .name = "pin57", .val = BCMOLT_GPIO_PIN_PIN57 }, { .name = "pin58", .val = BCMOLT_GPIO_PIN_PIN58 }, { .name = "pin59", .val = BCMOLT_GPIO_PIN_PIN59 }, { .name = "pin60", .val = BCMOLT_GPIO_PIN_PIN60 }, { .name = "pin61", .val = BCMOLT_GPIO_PIN_PIN61 }, { .name = "pin62", .val = BCMOLT_GPIO_PIN_PIN62 }, { .name = "pin63", .val = BCMOLT_GPIO_PIN_PIN63 }, { .name = "pin64", .val = BCMOLT_GPIO_PIN_PIN64 }, { .name = "pin65", .val = BCMOLT_GPIO_PIN_PIN65 }, { .name = "pin66", .val = BCMOLT_GPIO_PIN_PIN66 }, { .name = "pin67", .val = BCMOLT_GPIO_PIN_PIN67 }, { .name = "pin68", .val = BCMOLT_GPIO_PIN_PIN68 }, { .name = "pin69", .val = BCMOLT_GPIO_PIN_PIN69 }, { .name = "pin70", .val = BCMOLT_GPIO_PIN_PIN70 }, { .name = "pin71", .val = BCMOLT_GPIO_PIN_PIN71 }, { .name = "pin72", .val = BCMOLT_GPIO_PIN_PIN72 }, { .name = "pin73", .val = BCMOLT_GPIO_PIN_PIN73 }, { .name = "pin74", .val = BCMOLT_GPIO_PIN_PIN74 }, { .name = "pin75", .val = BCMOLT_GPIO_PIN_PIN75 }, { .name = "pin76", .val = BCMOLT_GPIO_PIN_PIN76 }, { .name = "pin77", .val = BCMOLT_GPIO_PIN_PIN77 }, { .name = "pin78", .val = BCMOLT_GPIO_PIN_PIN78 }, { .name = "pin79", .val = BCMOLT_GPIO_PIN_PIN79 }, { .name = "pin80", .val = BCMOLT_GPIO_PIN_PIN80 }, { .name = "pin81", .val = BCMOLT_GPIO_PIN_PIN81 }, { .name = "pin82", .val = BCMOLT_GPIO_PIN_PIN82 }, { .name = "pin83", .val = BCMOLT_GPIO_PIN_PIN83 }, { .name = "pin84", .val = BCMOLT_GPIO_PIN_PIN84 }, { .name = "pin85", .val = BCMOLT_GPIO_PIN_PIN85 }, { .name = "pin86", .val = BCMOLT_GPIO_PIN_PIN86 }, { .name = "pin87", .val = BCMOLT_GPIO_PIN_PIN87 }, { .name = "pin88", .val = BCMOLT_GPIO_PIN_PIN88 }, { .name = "pin89", .val = BCMOLT_GPIO_PIN_PIN89 }, { .name = "pin90", .val = BCMOLT_GPIO_PIN_PIN90 }, { .name = "pin91", .val = BCMOLT_GPIO_PIN_PIN91 }, { .name = "pin92", .val = BCMOLT_GPIO_PIN_PIN92 }, { .name = "pin93", .val = BCMOLT_GPIO_PIN_PIN93 }, { .name = "pin94", .val = BCMOLT_GPIO_PIN_PIN94 }, { .name = "pin95", .val = BCMOLT_GPIO_PIN_PIN95 }, { .name = "pin96", .val = BCMOLT_GPIO_PIN_PIN96 }, { .name = "pin97", .val = BCMOLT_GPIO_PIN_PIN97 }, { .name = "pin98", .val = BCMOLT_GPIO_PIN_PIN98 }, { .name = "pin99", .val = BCMOLT_GPIO_PIN_PIN99 }, { .name = "pin100", .val = BCMOLT_GPIO_PIN_PIN100 }, { .name = "pin101", .val = BCMOLT_GPIO_PIN_PIN101 }, { .name = "pin102", .val = BCMOLT_GPIO_PIN_PIN102 }, { .name = "pin103", .val = BCMOLT_GPIO_PIN_PIN103 }, { .name = "pin104", .val = BCMOLT_GPIO_PIN_PIN104 }, { .name = "pin105", .val = BCMOLT_GPIO_PIN_PIN105 }, { .name = "pin106", .val = BCMOLT_GPIO_PIN_PIN106 }, { .name = "unconfigured", .val = BCMOLT_GPIO_PIN_UNCONFIGURED }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpio_pin = { .name = "bcmolt_gpio_pin", .descr = "GPIO pin number", .size = sizeof(bcmolt_gpio_pin), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpio_pin_string_table } };
bcmcli_enum_val bcmolt_gpio_polarity_string_table[] = { { .name = "active_low", .val = BCMOLT_GPIO_POLARITY_ACTIVE_LOW }, { .name = "active_high", .val = BCMOLT_GPIO_POLARITY_ACTIVE_HIGH }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpio_polarity = { .name = "bcmolt_gpio_polarity", .descr = "GPIO Polarity", .size = sizeof(bcmolt_gpio_polarity), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpio_polarity_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_protection_switching_configuration_fields[] = { { .name = "protection_type", .descr = "Protection scheme.", .offset = offsetof(bcmolt_epon_protection_switching_configuration, protection_type), .type = &type_descr_bcmolt_epon_protection_switching_type }, { .name = "protection_switching_options", .descr = "Protection switching options", .offset = offsetof(bcmolt_epon_protection_switching_configuration, protection_switching_options), .type = &type_descr_bcmolt_protection_switching_detection_options }, { .name = "rerange_options", .descr = "Re-ranging algorithm selection", .offset = offsetof(bcmolt_epon_protection_switching_configuration, rerange_options), .type = &type_descr_bcmolt_epon_protection_switching_reranging_options }, { .name = "rerange_attempts", .descr = "Number of times to re range during a switch", .offset = offsetof(bcmolt_epon_protection_switching_configuration, rerange_attempts), .type = &type_descr_uint8_t }, { .name = "rerange_interval", .descr = "Interval between re-range attempts.", .offset = offsetof(bcmolt_epon_protection_switching_configuration, rerange_interval), .type = &type_descr_uint16_t }, { .name = "sync_gate_duration", .descr = "Duration of sync gate.", .offset = offsetof(bcmolt_epon_protection_switching_configuration, sync_gate_duration), .type = &type_descr_uint16_t }, { .name = "gpio_input", .descr = "Configures state on PON (working/standby)", .offset = offsetof(bcmolt_epon_protection_switching_configuration, gpio_input), .type = &type_descr_bcmolt_gpio_pin }, { .name = "gpio_input_polarity", .descr = "GPIO Input Polarity", .offset = offsetof(bcmolt_epon_protection_switching_configuration, gpio_input_polarity), .type = &type_descr_bcmolt_gpio_polarity }, { .name = "gpio_output", .descr = "Indicates state on PON (working/standby)", .offset = offsetof(bcmolt_epon_protection_switching_configuration, gpio_output), .type = &type_descr_bcmolt_gpio_pin }, { .name = "gpio_output_polarity", .descr = "GPIO Output Polarity", .offset = offsetof(bcmolt_epon_protection_switching_configuration, gpio_output_polarity), .type = &type_descr_bcmolt_gpio_polarity } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_protection_switching_configuration = { .name = "bcmolt_epon_protection_switching_configuration", .descr = "EPON protection switching configuration", .size = sizeof(bcmolt_epon_protection_switching_configuration), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_protection_switching_configuration_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_protection_switching_configuration_fields } } };
bcmcli_enum_val bcmolt_epon_rp_cfg_id_string_table[] = { { .name = "base_llid", .val = BCMOLT_EPON_RP_CFG_ID_BASE_LLID }, { .name = "mpcp_disc_en", .val = BCMOLT_EPON_RP_CFG_ID_MPCP_DISC_EN }, { .name = "mpcp_disc_gnt_len_tq", .val = BCMOLT_EPON_RP_CFG_ID_MPCP_DISC_GNT_LEN_TQ }, { .name = "mpcp_report_timeout", .val = BCMOLT_EPON_RP_CFG_ID_MPCP_REPORT_TIMEOUT }, { .name = "max_mpcp_reg_per_disc_window", .val = BCMOLT_EPON_RP_CFG_ID_MAX_MPCP_REG_PER_DISC_WINDOW }, { .name = "max_links", .val = BCMOLT_EPON_RP_CFG_ID_MAX_LINKS }, { .name = "default_upstream_bandwidth", .val = BCMOLT_EPON_RP_CFG_ID_DEFAULT_UPSTREAM_BANDWIDTH }, { .name = "rate_of_refraction", .val = BCMOLT_EPON_RP_CFG_ID_RATE_OF_REFRACTION }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_rp_cfg_id = { .name = "bcmolt_epon_rp_cfg_id", .descr = "Identifiers for all properties contained in the epon_rp_cfg group.", .size = sizeof(bcmolt_epon_rp_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_rp_cfg_id_string_table } };
bcmcli_enum_val bcmolt_epon_rp_key_id_string_table[] = { { .name = "epon_ni", .val = BCMOLT_EPON_RP_KEY_ID_EPON_NI }, { .name = "link_rate", .val = BCMOLT_EPON_RP_KEY_ID_LINK_RATE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_rp_key_id = { .name = "bcmolt_epon_rp_key_id", .descr = "Identifiers for all properties contained in the epon_rp_key group.", .size = sizeof(bcmolt_epon_rp_key_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_epon_rp_key_id_string_table } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_u8_list_u16 = { .name = "bcmolt_u8_list_u16", .descr = "Variable-length list of U8", .size = sizeof(bcmolt_u8_list_u16), .base_type = BCMOLT_BASE_TYPE_ID_ARR_DYN, .x = { .arr_dyn = { .elem_type = &type_descr_uint8_t, .len_size = 2, .max_size = DEFAULT_DYN_ARR_MAX_SIZE / sizeof(uint8_t) } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_ethernet_frame_masked_fields[] = { { .name = "frame_octets", .descr = "Frame octets", .offset = offsetof(bcmolt_ethernet_frame_masked, frame_octets), .type = &type_descr_bcmolt_u8_list_u16 }, { .name = "mask_octets", .descr = "Mask octets", .offset = offsetof(bcmolt_ethernet_frame_masked, mask_octets), .type = &type_descr_bcmolt_u8_list_u16 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_ethernet_frame_masked = { .name = "bcmolt_ethernet_frame_masked", .descr = "Ethernet frame, masked", .size = sizeof(bcmolt_ethernet_frame_masked), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_ethernet_frame_masked_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_ethernet_frame_masked_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_ethernet_frame_unmasked_fields[] = { { .name = "frame_octets", .descr = "Frame octets", .offset = offsetof(bcmolt_ethernet_frame_unmasked, frame_octets), .type = &type_descr_bcmolt_u8_list_u16 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_ethernet_frame_unmasked = { .name = "bcmolt_ethernet_frame_unmasked", .descr = "Ethernet frame, unmasked", .size = sizeof(bcmolt_ethernet_frame_unmasked), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_ethernet_frame_unmasked_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_ethernet_frame_unmasked_fields } } };
bcmcli_enum_val bcmolt_ext_irq_string_table[] = { { .name = "ext_irq0", .val = BCMOLT_EXT_IRQ_EXT_IRQ0 }, { .name = "ext_irq1", .val = BCMOLT_EXT_IRQ_EXT_IRQ1 }, { .name = "ext_irq2", .val = BCMOLT_EXT_IRQ_EXT_IRQ2 }, { .name = "ext_irq3", .val = BCMOLT_EXT_IRQ_EXT_IRQ3 }, { .name = "ext_irq4", .val = BCMOLT_EXT_IRQ_EXT_IRQ4 }, { .name = "ext_irq5", .val = BCMOLT_EXT_IRQ_EXT_IRQ5 }, { .name = "unconfigured", .val = BCMOLT_EXT_IRQ_UNCONFIGURED }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_ext_irq = { .name = "bcmolt_ext_irq", .descr = "External IRQ", .size = sizeof(bcmolt_ext_irq), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_ext_irq_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_extended_guard_time_fields[] = { { .name = "additional_preburst_guard_time", .descr = "Additional guard time (in bytes) before all bursts for this ONU.", .offset = offsetof(bcmolt_extended_guard_time, additional_preburst_guard_time), .type = &type_descr_uint32_t }, { .name = "additional_postburst_guard_time", .descr = "Additional guard time (in bytes) after all bursts for this ONU.", .offset = offsetof(bcmolt_extended_guard_time, additional_postburst_guard_time), .type = &type_descr_uint32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_extended_guard_time = { .name = "bcmolt_extended_guard_time", .descr = "Extended Guard Time", .size = sizeof(bcmolt_extended_guard_time), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_extended_guard_time_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_extended_guard_time_fields } } };
static bcmcli_type_descr BCM_DESCR string_32 = { .name = "string[32]", .descr = "ASCII string with max length 32", .size = sizeof(char[32]), .base_type = BCMOLT_BASE_TYPE_ID_STRING };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_firmware_sw_version_fields[] = { { .name = "major", .descr = "Major ", .offset = offsetof(bcmolt_firmware_sw_version, major), .type = &type_descr_uint8_t }, { .name = "minor", .descr = "Minor", .offset = offsetof(bcmolt_firmware_sw_version, minor), .type = &type_descr_uint8_t }, { .name = "revision", .descr = "Revision", .offset = offsetof(bcmolt_firmware_sw_version, revision), .type = &type_descr_uint8_t_hex }, { .name = "model", .descr = "Model", .offset = offsetof(bcmolt_firmware_sw_version, model), .type = &type_descr_uint32_t }, { .name = "build_time", .descr = "Firmware SW build time", .offset = offsetof(bcmolt_firmware_sw_version, build_time), .type = &string_32 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_firmware_sw_version = { .name = "bcmolt_firmware_sw_version", .descr = "Firmware SW Version", .size = sizeof(bcmolt_firmware_sw_version), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_firmware_sw_version_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_firmware_sw_version_fields } } };
bcmcli_enum_val bcmolt_flush_mac_table_option_string_table[] = { { .name = "all", .val = BCMOLT_FLUSH_MAC_TABLE_OPTION_ALL }, { .name = "per_vid", .val = BCMOLT_FLUSH_MAC_TABLE_OPTION_PER_VID }, { .name = "per_flow", .val = BCMOLT_FLUSH_MAC_TABLE_OPTION_PER_FLOW }, { .name = "vid_plus_flow", .val = BCMOLT_FLUSH_MAC_TABLE_OPTION_VID_PLUS_FLOW }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_flush_mac_table_option = { .name = "bcmolt_flush_mac_table_option", .descr = "Flush MAC table option", .size = sizeof(bcmolt_flush_mac_table_option), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_flush_mac_table_option_string_table } };
bcmcli_enum_val bcmolt_frequency_adjustment_direction_string_table[] = { { .name = "lower", .val = BCMOLT_FREQUENCY_ADJUSTMENT_DIRECTION_LOWER }, { .name = "higher", .val = BCMOLT_FREQUENCY_ADJUSTMENT_DIRECTION_HIGHER }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_frequency_adjustment_direction = { .name = "bcmolt_frequency_adjustment_direction", .descr = "Frequency adjustment direction", .size = sizeof(bcmolt_frequency_adjustment_direction), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_frequency_adjustment_direction_string_table } };
bcmcli_enum_val bcmolt_gem_port_direction_string_table[] = { { .name = "downstream", .val = BCMOLT_GEM_PORT_DIRECTION_DOWNSTREAM }, { .name = "upstream", .val = BCMOLT_GEM_PORT_DIRECTION_UPSTREAM }, { .name = "bidirectional", .val = BCMOLT_GEM_PORT_DIRECTION_BIDIRECTIONAL }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gem_port_direction = { .name = "bcmolt_gem_port_direction", .descr = "GEM port ID direction", .size = sizeof(bcmolt_gem_port_direction), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gem_port_direction_string_table } };
bcmcli_enum_val bcmolt_gem_port_type_string_table[] = { { .name = "unicast", .val = BCMOLT_GEM_PORT_TYPE_UNICAST }, { .name = "multicast", .val = BCMOLT_GEM_PORT_TYPE_MULTICAST }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gem_port_type = { .name = "bcmolt_gem_port_type", .descr = "GEM port type", .size = sizeof(bcmolt_gem_port_type), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gem_port_type_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gem_port_configuration_fields[] = { { .name = "direction", .descr = "GEM port direction", .offset = offsetof(bcmolt_gem_port_configuration, direction), .type = &type_descr_bcmolt_gem_port_direction }, { .name = "type", .descr = "GEM port type", .offset = offsetof(bcmolt_gem_port_configuration, type), .type = &type_descr_bcmolt_gem_port_type } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gem_port_configuration = { .name = "bcmolt_gem_port_configuration", .descr = "GEM port configuration", .size = sizeof(bcmolt_gem_port_configuration), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gem_port_configuration_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gem_port_configuration_fields } } };
bcmcli_enum_val bcmolt_gem_port_operation_string_table[] = { { .name = "activate", .val = BCMOLT_GEM_PORT_OPERATION_ACTIVATE }, { .name = "deactivate", .val = BCMOLT_GEM_PORT_OPERATION_DEACTIVATE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gem_port_operation = { .name = "bcmolt_gem_port_operation", .descr = "GEM port operation", .size = sizeof(bcmolt_gem_port_operation), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gem_port_operation_string_table } };
bcmcli_enum_val bcmolt_gpio_cfg_id_string_table[] = { { .name = "direction", .val = BCMOLT_GPIO_CFG_ID_DIRECTION }, { .name = "value", .val = BCMOLT_GPIO_CFG_ID_VALUE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpio_cfg_id = { .name = "bcmolt_gpio_cfg_id", .descr = "Identifiers for all properties contained in the gpio_cfg group.", .size = sizeof(bcmolt_gpio_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpio_cfg_id_string_table } };
bcmcli_enum_val bcmolt_gpio_key_id_string_table[] = { { .name = "reserved", .val = BCMOLT_GPIO_KEY_ID_RESERVED }, { .name = "gpio_id", .val = BCMOLT_GPIO_KEY_ID_GPIO_ID }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpio_key_id = { .name = "bcmolt_gpio_key_id", .descr = "Identifiers for all properties contained in the gpio_key group.", .size = sizeof(bcmolt_gpio_key_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpio_key_id_string_table } };
bcmcli_enum_val bcmolt_gpio_pin_dir_string_table[] = { { .name = "input", .val = BCMOLT_GPIO_PIN_DIR_INPUT }, { .name = "output", .val = BCMOLT_GPIO_PIN_DIR_OUTPUT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpio_pin_dir = { .name = "bcmolt_gpio_pin_dir", .descr = "GPIO PIN Direction", .size = sizeof(bcmolt_gpio_pin_dir), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpio_pin_dir_string_table } };
bcmcli_enum_val bcmolt_gpio_value_string_table[] = { { .name = "clear", .val = BCMOLT_GPIO_VALUE_CLEAR }, { .name = "set", .val = BCMOLT_GPIO_VALUE_SET }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpio_value = { .name = "bcmolt_gpio_value", .descr = "GPIO Value", .size = sizeof(bcmolt_gpio_value), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpio_value_string_table } };
bcmcli_enum_val bcmolt_gpon_alloc_auto_cfg_id_string_table[] = { { .name = "configuration_completed", .val = BCMOLT_GPON_ALLOC_AUTO_CFG_ID_CONFIGURATION_COMPLETED }, { .name = "get_alloc_stats_completed", .val = BCMOLT_GPON_ALLOC_AUTO_CFG_ID_GET_ALLOC_STATS_COMPLETED }, { .name = "stat_alarm_cleared", .val = BCMOLT_GPON_ALLOC_AUTO_CFG_ID_STAT_ALARM_CLEARED }, { .name = "stat_alarm_raised", .val = BCMOLT_GPON_ALLOC_AUTO_CFG_ID_STAT_ALARM_RAISED }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_alloc_auto_cfg_id = { .name = "bcmolt_gpon_alloc_auto_cfg_id", .descr = "Identifiers for all properties contained in the gpon_alloc_auto_cfg group.", .size = sizeof(bcmolt_gpon_alloc_auto_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_alloc_auto_cfg_id_string_table } };
bcmcli_enum_val bcmolt_gpon_alloc_cfg_id_string_table[] = { { .name = "state", .val = BCMOLT_GPON_ALLOC_CFG_ID_STATE }, { .name = "sla", .val = BCMOLT_GPON_ALLOC_CFG_ID_SLA }, { .name = "onu_id", .val = BCMOLT_GPON_ALLOC_CFG_ID_ONU_ID }, { .name = "collect_stats", .val = BCMOLT_GPON_ALLOC_CFG_ID_COLLECT_STATS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_alloc_cfg_id = { .name = "bcmolt_gpon_alloc_cfg_id", .descr = "Identifiers for all properties contained in the gpon_alloc_cfg group.", .size = sizeof(bcmolt_gpon_alloc_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_alloc_cfg_id_string_table } };
bcmcli_enum_val bcmolt_gpon_alloc_configuration_completed_id_string_table[] = { { .name = "status", .val = BCMOLT_GPON_ALLOC_CONFIGURATION_COMPLETED_ID_STATUS }, { .name = "new_state", .val = BCMOLT_GPON_ALLOC_CONFIGURATION_COMPLETED_ID_NEW_STATE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_alloc_configuration_completed_id = { .name = "bcmolt_gpon_alloc_configuration_completed_id", .descr = "Identifiers for all properties contained in the gpon_alloc_configuration_completed group.", .size = sizeof(bcmolt_gpon_alloc_configuration_completed_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_alloc_configuration_completed_id_string_table } };
bcmcli_enum_val bcmolt_gpon_alloc_get_alloc_stats_completed_id_string_table[] = { { .name = "status", .val = BCMOLT_GPON_ALLOC_GET_ALLOC_STATS_COMPLETED_ID_STATUS }, { .name = "average_nsr_used", .val = BCMOLT_GPON_ALLOC_GET_ALLOC_STATS_COMPLETED_ID_AVERAGE_NSR_USED }, { .name = "average_nsr_allocated", .val = BCMOLT_GPON_ALLOC_GET_ALLOC_STATS_COMPLETED_ID_AVERAGE_NSR_ALLOCATED }, { .name = "average_sr_report", .val = BCMOLT_GPON_ALLOC_GET_ALLOC_STATS_COMPLETED_ID_AVERAGE_SR_REPORT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_alloc_get_alloc_stats_completed_id = { .name = "bcmolt_gpon_alloc_get_alloc_stats_completed_id", .descr = "Identifiers for all properties contained in the gpon_alloc_get_alloc_stats_completed group.", .size = sizeof(bcmolt_gpon_alloc_get_alloc_stats_completed_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_alloc_get_alloc_stats_completed_id_string_table } };
bcmcli_enum_val bcmolt_gpon_alloc_get_stats_id_string_table[] = { { .name = "num_of_cycles", .val = BCMOLT_GPON_ALLOC_GET_STATS_ID_NUM_OF_CYCLES }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_alloc_get_stats_id = { .name = "bcmolt_gpon_alloc_get_stats_id", .descr = "Identifiers for all properties contained in the gpon_alloc_get_stats group.", .size = sizeof(bcmolt_gpon_alloc_get_stats_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_alloc_get_stats_id_string_table } };
bcmcli_enum_val bcmolt_gpon_alloc_key_id_string_table[] = { { .name = "pon_ni", .val = BCMOLT_GPON_ALLOC_KEY_ID_PON_NI }, { .name = "alloc_id", .val = BCMOLT_GPON_ALLOC_KEY_ID_ALLOC_ID }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_alloc_key_id = { .name = "bcmolt_gpon_alloc_key_id", .descr = "Identifiers for all properties contained in the gpon_alloc_key group.", .size = sizeof(bcmolt_gpon_alloc_key_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_alloc_key_id_string_table } };
bcmcli_enum_val bcmolt_gpon_alloc_set_state_id_string_table[] = { { .name = "state", .val = BCMOLT_GPON_ALLOC_SET_STATE_ID_STATE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_alloc_set_state_id = { .name = "bcmolt_gpon_alloc_set_state_id", .descr = "Identifiers for all properties contained in the gpon_alloc_set_state group.", .size = sizeof(bcmolt_gpon_alloc_set_state_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_alloc_set_state_id_string_table } };
bcmcli_enum_val bcmolt_gpon_alloc_stat_alarm_cleared_id_string_table[] = { { .name = "stat", .val = BCMOLT_GPON_ALLOC_STAT_ALARM_CLEARED_ID_STAT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_alloc_stat_alarm_cleared_id = { .name = "bcmolt_gpon_alloc_stat_alarm_cleared_id", .descr = "Identifiers for all properties contained in the gpon_alloc_stat_alarm_cleared group.", .size = sizeof(bcmolt_gpon_alloc_stat_alarm_cleared_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_alloc_stat_alarm_cleared_id_string_table } };
bcmcli_enum_val bcmolt_gpon_alloc_stat_alarm_raised_id_string_table[] = { { .name = "stat", .val = BCMOLT_GPON_ALLOC_STAT_ALARM_RAISED_ID_STAT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_alloc_stat_alarm_raised_id = { .name = "bcmolt_gpon_alloc_stat_alarm_raised_id", .descr = "Identifiers for all properties contained in the gpon_alloc_stat_alarm_raised group.", .size = sizeof(bcmolt_gpon_alloc_stat_alarm_raised_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_alloc_stat_alarm_raised_id_string_table } };
bcmcli_enum_val bcmolt_gpon_alloc_stat_cfg_id_string_table[] = { { .name = "cfg", .val = BCMOLT_GPON_ALLOC_STAT_CFG_ID_CFG }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_alloc_stat_cfg_id = { .name = "bcmolt_gpon_alloc_stat_cfg_id", .descr = "Identifiers for all properties contained in the gpon_alloc_stat_cfg group.", .size = sizeof(bcmolt_gpon_alloc_stat_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_alloc_stat_cfg_id_string_table } };
bcmcli_enum_val bcmolt_gpon_alloc_stat_id_string_table[] = { { .name = "rx_bytes", .val = BCMOLT_GPON_ALLOC_STAT_ID_RX_BYTES }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_alloc_stat_id = { .name = "bcmolt_gpon_alloc_stat_id", .descr = "Identifiers for all properties contained in the gpon_alloc_stat group.", .size = sizeof(bcmolt_gpon_alloc_stat_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_alloc_stat_id_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_alloc_with_state_fields[] = { { .name = "alloc_id", .descr = "Alloc ID", .offset = offsetof(bcmolt_gpon_alloc_with_state, alloc_id), .type = &type_descr_uint16_t }, { .name = "state", .descr = "State", .offset = offsetof(bcmolt_gpon_alloc_with_state, state), .type = &type_descr_bcmolt_alloc_state } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_alloc_with_state = { .name = "bcmolt_gpon_alloc_with_state", .descr = "GPON Alloc With State", .size = sizeof(bcmolt_gpon_alloc_with_state), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_alloc_with_state_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_alloc_with_state_fields } } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_alloc_with_state_list_u16_max_32 = { .name = "bcmolt_gpon_alloc_with_state_list_u16_max_32", .descr = "Variable-length list of gpon_alloc_with_state", .size = sizeof(bcmolt_gpon_alloc_with_state_list_u16_max_32), .base_type = BCMOLT_BASE_TYPE_ID_ARR_DYN, .x = { .arr_dyn = { .elem_type = &type_descr_bcmolt_gpon_alloc_with_state, .len_size = 2, .max_size = 32 } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_debug_flow_config_fields[] = { { .name = "untagged_flow", .descr = "If enabled, this GEM port will expect upstream traffic to be untagged and downstream traffic to use a custom VLAN tag.", .offset = offsetof(bcmolt_gpon_debug_flow_config, untagged_flow), .type = &type_descr_bcmolt_control_state }, { .name = "untagged_vid", .descr = "The VLAN ID to use when adding MAC table entries for untagged traffic.", .offset = offsetof(bcmolt_gpon_debug_flow_config, untagged_vid), .type = &type_descr_uint16_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_debug_flow_config = { .name = "bcmolt_gpon_debug_flow_config", .descr = "GPON Debug Flow Config", .size = sizeof(bcmolt_gpon_debug_flow_config), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_debug_flow_config_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_debug_flow_config_fields } } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_gem_id_list_u8_max_16 = { .name = "bcmolt_gpon_gem_id_list_u8_max_16", .descr = "Variable-length list of gpon_gem_id", .size = sizeof(bcmolt_gpon_gem_id_list_u8_max_16), .base_type = BCMOLT_BASE_TYPE_ID_ARR_DYN, .x = { .arr_dyn = { .elem_type = &type_descr_uint16_t, .len_size = 1, .max_size = 16 } } };
bcmcli_enum_val bcmolt_gpon_gem_port_auto_cfg_id_string_table[] = { { .name = "configuration_completed", .val = BCMOLT_GPON_GEM_PORT_AUTO_CFG_ID_CONFIGURATION_COMPLETED }, { .name = "stat_alarm_cleared", .val = BCMOLT_GPON_GEM_PORT_AUTO_CFG_ID_STAT_ALARM_CLEARED }, { .name = "stat_alarm_raised", .val = BCMOLT_GPON_GEM_PORT_AUTO_CFG_ID_STAT_ALARM_RAISED }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_gem_port_auto_cfg_id = { .name = "bcmolt_gpon_gem_port_auto_cfg_id", .descr = "Identifiers for all properties contained in the gpon_gem_port_auto_cfg group.", .size = sizeof(bcmolt_gpon_gem_port_auto_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_gem_port_auto_cfg_id_string_table } };
bcmcli_enum_val bcmolt_gpon_gem_port_cfg_id_string_table[] = { { .name = "configuration", .val = BCMOLT_GPON_GEM_PORT_CFG_ID_CONFIGURATION }, { .name = "onu_id", .val = BCMOLT_GPON_GEM_PORT_CFG_ID_ONU_ID }, { .name = "gem_port_state", .val = BCMOLT_GPON_GEM_PORT_CFG_ID_GEM_PORT_STATE }, { .name = "downstream_encryption_mode", .val = BCMOLT_GPON_GEM_PORT_CFG_ID_DOWNSTREAM_ENCRYPTION_MODE }, { .name = "upstream_destination_queue", .val = BCMOLT_GPON_GEM_PORT_CFG_ID_UPSTREAM_DESTINATION_QUEUE }, { .name = "control", .val = BCMOLT_GPON_GEM_PORT_CFG_ID_CONTROL }, { .name = "debug_flow_config", .val = BCMOLT_GPON_GEM_PORT_CFG_ID_DEBUG_FLOW_CONFIG }, { .name = "mac_table_entry_limit", .val = BCMOLT_GPON_GEM_PORT_CFG_ID_MAC_TABLE_ENTRY_LIMIT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_gem_port_cfg_id = { .name = "bcmolt_gpon_gem_port_cfg_id", .descr = "Identifiers for all properties contained in the gpon_gem_port_cfg group.", .size = sizeof(bcmolt_gpon_gem_port_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_gem_port_cfg_id_string_table } };
bcmcli_enum_val bcmolt_gpon_gem_port_configuration_completed_id_string_table[] = { { .name = "status", .val = BCMOLT_GPON_GEM_PORT_CONFIGURATION_COMPLETED_ID_STATUS }, { .name = "new_state", .val = BCMOLT_GPON_GEM_PORT_CONFIGURATION_COMPLETED_ID_NEW_STATE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_gem_port_configuration_completed_id = { .name = "bcmolt_gpon_gem_port_configuration_completed_id", .descr = "Identifiers for all properties contained in the gpon_gem_port_configuration_completed group.", .size = sizeof(bcmolt_gpon_gem_port_configuration_completed_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_gem_port_configuration_completed_id_string_table } };
bcmcli_enum_val bcmolt_gpon_gem_port_key_id_string_table[] = { { .name = "pon_ni", .val = BCMOLT_GPON_GEM_PORT_KEY_ID_PON_NI }, { .name = "gem_port_id", .val = BCMOLT_GPON_GEM_PORT_KEY_ID_GEM_PORT_ID }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_gem_port_key_id = { .name = "bcmolt_gpon_gem_port_key_id", .descr = "Identifiers for all properties contained in the gpon_gem_port_key group.", .size = sizeof(bcmolt_gpon_gem_port_key_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_gem_port_key_id_string_table } };
bcmcli_enum_val bcmolt_gpon_gem_port_set_state_id_string_table[] = { { .name = "state", .val = BCMOLT_GPON_GEM_PORT_SET_STATE_ID_STATE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_gem_port_set_state_id = { .name = "bcmolt_gpon_gem_port_set_state_id", .descr = "Identifiers for all properties contained in the gpon_gem_port_set_state group.", .size = sizeof(bcmolt_gpon_gem_port_set_state_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_gem_port_set_state_id_string_table } };
bcmcli_enum_val bcmolt_gpon_gem_port_stat_alarm_cleared_id_string_table[] = { { .name = "stat", .val = BCMOLT_GPON_GEM_PORT_STAT_ALARM_CLEARED_ID_STAT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_gem_port_stat_alarm_cleared_id = { .name = "bcmolt_gpon_gem_port_stat_alarm_cleared_id", .descr = "Identifiers for all properties contained in the gpon_gem_port_stat_alarm_cleared group.", .size = sizeof(bcmolt_gpon_gem_port_stat_alarm_cleared_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_gem_port_stat_alarm_cleared_id_string_table } };
bcmcli_enum_val bcmolt_gpon_gem_port_stat_alarm_raised_id_string_table[] = { { .name = "stat", .val = BCMOLT_GPON_GEM_PORT_STAT_ALARM_RAISED_ID_STAT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_gem_port_stat_alarm_raised_id = { .name = "bcmolt_gpon_gem_port_stat_alarm_raised_id", .descr = "Identifiers for all properties contained in the gpon_gem_port_stat_alarm_raised group.", .size = sizeof(bcmolt_gpon_gem_port_stat_alarm_raised_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_gem_port_stat_alarm_raised_id_string_table } };
bcmcli_enum_val bcmolt_gpon_gem_port_stat_cfg_id_string_table[] = { { .name = "cfg", .val = BCMOLT_GPON_GEM_PORT_STAT_CFG_ID_CFG }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_gem_port_stat_cfg_id = { .name = "bcmolt_gpon_gem_port_stat_cfg_id", .descr = "Identifiers for all properties contained in the gpon_gem_port_stat_cfg group.", .size = sizeof(bcmolt_gpon_gem_port_stat_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_gem_port_stat_cfg_id_string_table } };
bcmcli_enum_val bcmolt_gpon_gem_port_stat_id_string_table[] = { { .name = "rx_packets", .val = BCMOLT_GPON_GEM_PORT_STAT_ID_RX_PACKETS }, { .name = "rx_bytes", .val = BCMOLT_GPON_GEM_PORT_STAT_ID_RX_BYTES }, { .name = "tx_packets", .val = BCMOLT_GPON_GEM_PORT_STAT_ID_TX_PACKETS }, { .name = "tx_bytes", .val = BCMOLT_GPON_GEM_PORT_STAT_ID_TX_BYTES }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_gem_port_stat_id = { .name = "bcmolt_gpon_gem_port_stat_id", .descr = "Identifiers for all properties contained in the gpon_gem_port_stat group.", .size = sizeof(bcmolt_gpon_gem_port_stat_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_gem_port_stat_id_string_table } };
bcmcli_enum_val bcmolt_gpon_gem_port_state_string_table[] = { { .name = "not_configured", .val = BCMOLT_GPON_GEM_PORT_STATE_NOT_CONFIGURED }, { .name = "inactive", .val = BCMOLT_GPON_GEM_PORT_STATE_INACTIVE }, { .name = "processing", .val = BCMOLT_GPON_GEM_PORT_STATE_PROCESSING }, { .name = "active", .val = BCMOLT_GPON_GEM_PORT_STATE_ACTIVE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_gem_port_state = { .name = "bcmolt_gpon_gem_port_state", .descr = "GPON GEM Port State", .size = sizeof(bcmolt_gpon_gem_port_state), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_gem_port_state_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_gem_port_with_state_fields[] = { { .name = "gem_id", .descr = "GEM ID", .offset = offsetof(bcmolt_gpon_gem_port_with_state, gem_id), .type = &type_descr_uint16_t }, { .name = "state", .descr = "State", .offset = offsetof(bcmolt_gpon_gem_port_with_state, state), .type = &type_descr_bcmolt_gpon_gem_port_state } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_gem_port_with_state = { .name = "bcmolt_gpon_gem_port_with_state", .descr = "GPON GEM Port With State", .size = sizeof(bcmolt_gpon_gem_port_with_state), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_gem_port_with_state_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_gem_port_with_state_fields } } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_gem_port_with_state_list_u16_max_128 = { .name = "bcmolt_gpon_gem_port_with_state_list_u16_max_128", .descr = "Variable-length list of gpon_gem_port_with_state", .size = sizeof(bcmolt_gpon_gem_port_with_state_list_u16_max_128), .base_type = BCMOLT_BASE_TYPE_ID_ARR_DYN, .x = { .arr_dyn = { .elem_type = &type_descr_bcmolt_gpon_gem_port_with_state, .len_size = 2, .max_size = 128 } } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_gem_port_with_state_list_u16_max_256 = { .name = "bcmolt_gpon_gem_port_with_state_list_u16_max_256", .descr = "Variable-length list of gpon_gem_port_with_state", .size = sizeof(bcmolt_gpon_gem_port_with_state_list_u16_max_256), .base_type = BCMOLT_BASE_TYPE_ID_ARR_DYN, .x = { .arr_dyn = { .elem_type = &type_descr_bcmolt_gpon_gem_port_with_state, .len_size = 2, .max_size = 256 } } };
bcmcli_enum_val bcmolt_gpon_iwf_auto_cfg_id_string_table[] = { { .name = "flush_mac_table_completed", .val = BCMOLT_GPON_IWF_AUTO_CFG_ID_FLUSH_MAC_TABLE_COMPLETED }, { .name = "scan_mac_table_completed", .val = BCMOLT_GPON_IWF_AUTO_CFG_ID_SCAN_MAC_TABLE_COMPLETED }, { .name = "stat_alarm_cleared", .val = BCMOLT_GPON_IWF_AUTO_CFG_ID_STAT_ALARM_CLEARED }, { .name = "stat_alarm_raised", .val = BCMOLT_GPON_IWF_AUTO_CFG_ID_STAT_ALARM_RAISED }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_auto_cfg_id = { .name = "bcmolt_gpon_iwf_auto_cfg_id", .descr = "Identifiers for all properties contained in the gpon_iwf_auto_cfg group.", .size = sizeof(bcmolt_gpon_iwf_auto_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_iwf_auto_cfg_id_string_table } };
bcmcli_enum_val bcmolt_gpon_iwf_cfg_id_string_table[] = { { .name = "iwf_mode", .val = BCMOLT_GPON_IWF_CFG_ID_IWF_MODE }, { .name = "us_tpid_per_flow", .val = BCMOLT_GPON_IWF_CFG_ID_US_TPID_PER_FLOW }, { .name = "us_otag_direct_tpid", .val = BCMOLT_GPON_IWF_CFG_ID_US_OTAG_DIRECT_TPID }, { .name = "us_otag_direct_pbit", .val = BCMOLT_GPON_IWF_CFG_ID_US_OTAG_DIRECT_PBIT }, { .name = "ds_tpid", .val = BCMOLT_GPON_IWF_CFG_ID_DS_TPID }, { .name = "mac_table_configuration", .val = BCMOLT_GPON_IWF_CFG_ID_MAC_TABLE_CONFIGURATION }, { .name = "debug_flow_configuration", .val = BCMOLT_GPON_IWF_CFG_ID_DEBUG_FLOW_CONFIGURATION }, { .name = "mac_table_count", .val = BCMOLT_GPON_IWF_CFG_ID_MAC_TABLE_COUNT }, { .name = "forbidden_vlan_flow_gem_range_start", .val = BCMOLT_GPON_IWF_CFG_ID_FORBIDDEN_VLAN_FLOW_GEM_RANGE_START }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_cfg_id = { .name = "bcmolt_gpon_iwf_cfg_id", .descr = "Identifiers for all properties contained in the gpon_iwf_cfg group.", .size = sizeof(bcmolt_gpon_iwf_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_iwf_cfg_id_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_debug_flow_config_fields[] = { { .name = "learn_untagged_flow_vids", .descr = "When a MAC/VID is learned on an untagged flow, learn the received MAC address with both the untagged VID and the received VID (even though it will be invalid).", .offset = offsetof(bcmolt_gpon_iwf_debug_flow_config, learn_untagged_flow_vids), .type = &type_descr_bcmos_bool }, { .name = "untagged_flow_shaping_ms_per_sec", .descr = "If this value is greater than 0, learning events on untagged flows will only be enabled for N milliseconds every second.  For example, a value of 10 would mean learning is only enabled for 1% of the total time.", .offset = offsetof(bcmolt_gpon_iwf_debug_flow_config, untagged_flow_shaping_ms_per_sec), .type = &type_descr_uint16_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_debug_flow_config = { .name = "bcmolt_gpon_iwf_debug_flow_config", .descr = "Options for configuring the \"untagged flow\" feature.", .size = sizeof(bcmolt_gpon_iwf_debug_flow_config), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_iwf_debug_flow_config_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_iwf_debug_flow_config_fields } } };
bcmcli_enum_val bcmolt_gpon_iwf_ds_egress_flow_cfg_id_string_table[] = { { .name = "gem_port", .val = BCMOLT_GPON_IWF_DS_EGRESS_FLOW_CFG_ID_GEM_PORT }, { .name = "pbit_control", .val = BCMOLT_GPON_IWF_DS_EGRESS_FLOW_CFG_ID_PBIT_CONTROL }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_ds_egress_flow_cfg_id = { .name = "bcmolt_gpon_iwf_ds_egress_flow_cfg_id", .descr = "Identifiers for all properties contained in the gpon_iwf_ds_egress_flow_cfg group.", .size = sizeof(bcmolt_gpon_iwf_ds_egress_flow_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_iwf_ds_egress_flow_cfg_id_string_table } };
bcmcli_enum_val bcmolt_gpon_iwf_ds_egress_flow_key_id_string_table[] = { { .name = "pon_ni", .val = BCMOLT_GPON_IWF_DS_EGRESS_FLOW_KEY_ID_PON_NI }, { .name = "flow_id", .val = BCMOLT_GPON_IWF_DS_EGRESS_FLOW_KEY_ID_FLOW_ID }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_ds_egress_flow_key_id = { .name = "bcmolt_gpon_iwf_ds_egress_flow_key_id", .descr = "Identifiers for all properties contained in the gpon_iwf_ds_egress_flow_key group.", .size = sizeof(bcmolt_gpon_iwf_ds_egress_flow_key_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_iwf_ds_egress_flow_key_id_string_table } };
bcmcli_enum_val bcmolt_gpon_iwf_ds_ingress_flow_cfg_id_string_table[] = { { .name = "mapping_method", .val = BCMOLT_GPON_IWF_DS_INGRESS_FLOW_CFG_ID_MAPPING_METHOD }, { .name = "mapping_tag", .val = BCMOLT_GPON_IWF_DS_INGRESS_FLOW_CFG_ID_MAPPING_TAG }, { .name = "vlan_action", .val = BCMOLT_GPON_IWF_DS_INGRESS_FLOW_CFG_ID_VLAN_ACTION }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_ds_ingress_flow_cfg_id = { .name = "bcmolt_gpon_iwf_ds_ingress_flow_cfg_id", .descr = "Identifiers for all properties contained in the gpon_iwf_ds_ingress_flow_cfg group.", .size = sizeof(bcmolt_gpon_iwf_ds_ingress_flow_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_iwf_ds_ingress_flow_cfg_id_string_table } };
bcmcli_enum_val bcmolt_gpon_iwf_ds_ingress_flow_key_id_string_table[] = { { .name = "pon_ni", .val = BCMOLT_GPON_IWF_DS_INGRESS_FLOW_KEY_ID_PON_NI }, { .name = "vlan_id", .val = BCMOLT_GPON_IWF_DS_INGRESS_FLOW_KEY_ID_VLAN_ID }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_ds_ingress_flow_key_id = { .name = "bcmolt_gpon_iwf_ds_ingress_flow_key_id", .descr = "Identifiers for all properties contained in the gpon_iwf_ds_ingress_flow_key group.", .size = sizeof(bcmolt_gpon_iwf_ds_ingress_flow_key_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_iwf_ds_ingress_flow_key_id_string_table } };
bcmcli_enum_val bcmolt_gpon_iwf_flush_mac_table_completed_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_flush_mac_table_completed_id = { .name = "bcmolt_gpon_iwf_flush_mac_table_completed_id", .descr = "Identifiers for all properties contained in the gpon_iwf_flush_mac_table_completed group.", .size = sizeof(bcmolt_gpon_iwf_flush_mac_table_completed_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_iwf_flush_mac_table_completed_id_string_table } };
bcmcli_enum_val bcmolt_gpon_iwf_flush_mac_table_id_string_table[] = { { .name = "control", .val = BCMOLT_GPON_IWF_FLUSH_MAC_TABLE_ID_CONTROL }, { .name = "vid", .val = BCMOLT_GPON_IWF_FLUSH_MAC_TABLE_ID_VID }, { .name = "flow_id", .val = BCMOLT_GPON_IWF_FLUSH_MAC_TABLE_ID_FLOW_ID }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_flush_mac_table_id = { .name = "bcmolt_gpon_iwf_flush_mac_table_id", .descr = "Identifiers for all properties contained in the gpon_iwf_flush_mac_table group.", .size = sizeof(bcmolt_gpon_iwf_flush_mac_table_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_iwf_flush_mac_table_id_string_table } };
bcmcli_enum_val bcmolt_gpon_iwf_key_id_string_table[] = { { .name = "pon_ni", .val = BCMOLT_GPON_IWF_KEY_ID_PON_NI }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_key_id = { .name = "bcmolt_gpon_iwf_key_id", .descr = "Identifiers for all properties contained in the gpon_iwf_key group.", .size = sizeof(bcmolt_gpon_iwf_key_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_iwf_key_id_string_table } };
bcmcli_enum_val bcmolt_gpon_iwf_mac_table_auto_cfg_id_string_table[] = { { .name = "mac_aged", .val = BCMOLT_GPON_IWF_MAC_TABLE_AUTO_CFG_ID_MAC_AGED }, { .name = "mac_dropped", .val = BCMOLT_GPON_IWF_MAC_TABLE_AUTO_CFG_ID_MAC_DROPPED }, { .name = "mac_move", .val = BCMOLT_GPON_IWF_MAC_TABLE_AUTO_CFG_ID_MAC_MOVE }, { .name = "new_mac", .val = BCMOLT_GPON_IWF_MAC_TABLE_AUTO_CFG_ID_NEW_MAC }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_mac_table_auto_cfg_id = { .name = "bcmolt_gpon_iwf_mac_table_auto_cfg_id", .descr = "Identifiers for all properties contained in the gpon_iwf_mac_table_auto_cfg group.", .size = sizeof(bcmolt_gpon_iwf_mac_table_auto_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_iwf_mac_table_auto_cfg_id_string_table } };
bcmcli_enum_val bcmolt_gpon_iwf_mac_table_cfg_id_string_table[] = { { .name = "flow_id", .val = BCMOLT_GPON_IWF_MAC_TABLE_CFG_ID_FLOW_ID }, { .name = "static", .val = BCMOLT_GPON_IWF_MAC_TABLE_CFG_ID_STAT }, { .name = "gem_port_id", .val = BCMOLT_GPON_IWF_MAC_TABLE_CFG_ID_GEM_PORT_ID }, { .name = "onu_id", .val = BCMOLT_GPON_IWF_MAC_TABLE_CFG_ID_ONU_ID }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_mac_table_cfg_id = { .name = "bcmolt_gpon_iwf_mac_table_cfg_id", .descr = "Identifiers for all properties contained in the gpon_iwf_mac_table_cfg group.", .size = sizeof(bcmolt_gpon_iwf_mac_table_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_iwf_mac_table_cfg_id_string_table } };
bcmcli_enum_val bcmolt_gpon_iwf_mac_table_key_id_string_table[] = { { .name = "pon_ni", .val = BCMOLT_GPON_IWF_MAC_TABLE_KEY_ID_PON_NI }, { .name = "mac_address", .val = BCMOLT_GPON_IWF_MAC_TABLE_KEY_ID_MAC_ADDRESS }, { .name = "vlan", .val = BCMOLT_GPON_IWF_MAC_TABLE_KEY_ID_VLAN }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_mac_table_key_id = { .name = "bcmolt_gpon_iwf_mac_table_key_id", .descr = "Identifiers for all properties contained in the gpon_iwf_mac_table_key group.", .size = sizeof(bcmolt_gpon_iwf_mac_table_key_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_iwf_mac_table_key_id_string_table } };
bcmcli_enum_val bcmolt_gpon_iwf_mac_table_mac_aged_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_mac_table_mac_aged_id = { .name = "bcmolt_gpon_iwf_mac_table_mac_aged_id", .descr = "Identifiers for all properties contained in the gpon_iwf_mac_table_mac_aged group.", .size = sizeof(bcmolt_gpon_iwf_mac_table_mac_aged_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_iwf_mac_table_mac_aged_id_string_table } };
bcmcli_enum_val bcmolt_gpon_iwf_mac_table_mac_dropped_id_string_table[] = { { .name = "flow_id", .val = BCMOLT_GPON_IWF_MAC_TABLE_MAC_DROPPED_ID_FLOW_ID }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_mac_table_mac_dropped_id = { .name = "bcmolt_gpon_iwf_mac_table_mac_dropped_id", .descr = "Identifiers for all properties contained in the gpon_iwf_mac_table_mac_dropped group.", .size = sizeof(bcmolt_gpon_iwf_mac_table_mac_dropped_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_iwf_mac_table_mac_dropped_id_string_table } };
bcmcli_enum_val bcmolt_gpon_iwf_mac_table_mac_move_id_string_table[] = { { .name = "old_flow_id", .val = BCMOLT_GPON_IWF_MAC_TABLE_MAC_MOVE_ID_OLD_FLOW_ID }, { .name = "new_flow_id", .val = BCMOLT_GPON_IWF_MAC_TABLE_MAC_MOVE_ID_NEW_FLOW_ID }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_mac_table_mac_move_id = { .name = "bcmolt_gpon_iwf_mac_table_mac_move_id", .descr = "Identifiers for all properties contained in the gpon_iwf_mac_table_mac_move group.", .size = sizeof(bcmolt_gpon_iwf_mac_table_mac_move_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_iwf_mac_table_mac_move_id_string_table } };
bcmcli_enum_val bcmolt_gpon_iwf_mac_table_new_mac_id_string_table[] = { { .name = "flow_id", .val = BCMOLT_GPON_IWF_MAC_TABLE_NEW_MAC_ID_FLOW_ID }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_mac_table_new_mac_id = { .name = "bcmolt_gpon_iwf_mac_table_new_mac_id", .descr = "Identifiers for all properties contained in the gpon_iwf_mac_table_new_mac group.", .size = sizeof(bcmolt_gpon_iwf_mac_table_new_mac_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_iwf_mac_table_new_mac_id_string_table } };
bcmcli_enum_val bcmolt_gpon_iwf_scan_mac_table_completed_id_string_table[] = { { .name = "mac_address", .val = BCMOLT_GPON_IWF_SCAN_MAC_TABLE_COMPLETED_ID_MAC_ADDRESS }, { .name = "entries", .val = BCMOLT_GPON_IWF_SCAN_MAC_TABLE_COMPLETED_ID_ENTRIES }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_scan_mac_table_completed_id = { .name = "bcmolt_gpon_iwf_scan_mac_table_completed_id", .descr = "Identifiers for all properties contained in the gpon_iwf_scan_mac_table_completed group.", .size = sizeof(bcmolt_gpon_iwf_scan_mac_table_completed_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_iwf_scan_mac_table_completed_id_string_table } };
bcmcli_enum_val bcmolt_gpon_iwf_scan_mac_table_id_string_table[] = { { .name = "mac_address", .val = BCMOLT_GPON_IWF_SCAN_MAC_TABLE_ID_MAC_ADDRESS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_scan_mac_table_id = { .name = "bcmolt_gpon_iwf_scan_mac_table_id", .descr = "Identifiers for all properties contained in the gpon_iwf_scan_mac_table group.", .size = sizeof(bcmolt_gpon_iwf_scan_mac_table_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_iwf_scan_mac_table_id_string_table } };
bcmcli_enum_val bcmolt_gpon_iwf_stat_alarm_cleared_id_string_table[] = { { .name = "stat", .val = BCMOLT_GPON_IWF_STAT_ALARM_CLEARED_ID_STAT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_stat_alarm_cleared_id = { .name = "bcmolt_gpon_iwf_stat_alarm_cleared_id", .descr = "Identifiers for all properties contained in the gpon_iwf_stat_alarm_cleared group.", .size = sizeof(bcmolt_gpon_iwf_stat_alarm_cleared_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_iwf_stat_alarm_cleared_id_string_table } };
bcmcli_enum_val bcmolt_gpon_iwf_stat_alarm_raised_id_string_table[] = { { .name = "stat", .val = BCMOLT_GPON_IWF_STAT_ALARM_RAISED_ID_STAT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_stat_alarm_raised_id = { .name = "bcmolt_gpon_iwf_stat_alarm_raised_id", .descr = "Identifiers for all properties contained in the gpon_iwf_stat_alarm_raised group.", .size = sizeof(bcmolt_gpon_iwf_stat_alarm_raised_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_iwf_stat_alarm_raised_id_string_table } };
bcmcli_enum_val bcmolt_gpon_iwf_stat_cfg_id_string_table[] = { { .name = "cfg", .val = BCMOLT_GPON_IWF_STAT_CFG_ID_CFG }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_stat_cfg_id = { .name = "bcmolt_gpon_iwf_stat_cfg_id", .descr = "Identifiers for all properties contained in the gpon_iwf_stat_cfg group.", .size = sizeof(bcmolt_gpon_iwf_stat_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_iwf_stat_cfg_id_string_table } };
bcmcli_enum_val bcmolt_gpon_iwf_stat_id_string_table[] = { { .name = "ds_hit_event", .val = BCMOLT_GPON_IWF_STAT_ID_DS_HIT_EVENT }, { .name = "ds_miss_event", .val = BCMOLT_GPON_IWF_STAT_ID_DS_MISS_EVENT }, { .name = "ds_drop_due_to_miss_event", .val = BCMOLT_GPON_IWF_STAT_ID_DS_DROP_DUE_TO_MISS_EVENT }, { .name = "ds_drop_due_to_hit_event", .val = BCMOLT_GPON_IWF_STAT_ID_DS_DROP_DUE_TO_HIT_EVENT }, { .name = "ds_drop_to_disabled_gem", .val = BCMOLT_GPON_IWF_STAT_ID_DS_DROP_TO_DISABLED_GEM }, { .name = "new_mac_discovered", .val = BCMOLT_GPON_IWF_STAT_ID_NEW_MAC_DISCOVERED }, { .name = "move_event", .val = BCMOLT_GPON_IWF_STAT_ID_MOVE_EVENT }, { .name = "new_mac_drop_due_to_fifo_full", .val = BCMOLT_GPON_IWF_STAT_ID_NEW_MAC_DROP_DUE_TO_FIFO_FULL }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_stat_id = { .name = "bcmolt_gpon_iwf_stat_id", .descr = "Identifiers for all properties contained in the gpon_iwf_stat group.", .size = sizeof(bcmolt_gpon_iwf_stat_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_iwf_stat_id_string_table } };
bcmcli_enum_val bcmolt_gpon_iwf_us_flow_cfg_id_string_table[] = { { .name = "flow_id", .val = BCMOLT_GPON_IWF_US_FLOW_CFG_ID_FLOW_ID }, { .name = "mac_learning", .val = BCMOLT_GPON_IWF_US_FLOW_CFG_ID_MAC_LEARNING }, { .name = "vlan_action", .val = BCMOLT_GPON_IWF_US_FLOW_CFG_ID_VLAN_ACTION }, { .name = "vlan_tag", .val = BCMOLT_GPON_IWF_US_FLOW_CFG_ID_VLAN_TAG }, { .name = "tpid_index", .val = BCMOLT_GPON_IWF_US_FLOW_CFG_ID_TPID_INDEX }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_us_flow_cfg_id = { .name = "bcmolt_gpon_iwf_us_flow_cfg_id", .descr = "Identifiers for all properties contained in the gpon_iwf_us_flow_cfg group.", .size = sizeof(bcmolt_gpon_iwf_us_flow_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_iwf_us_flow_cfg_id_string_table } };
bcmcli_enum_val bcmolt_gpon_iwf_us_flow_key_id_string_table[] = { { .name = "pon_ni", .val = BCMOLT_GPON_IWF_US_FLOW_KEY_ID_PON_NI }, { .name = "gem_port_id", .val = BCMOLT_GPON_IWF_US_FLOW_KEY_ID_GEM_PORT_ID }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_us_flow_key_id = { .name = "bcmolt_gpon_iwf_us_flow_key_id", .descr = "Identifiers for all properties contained in the gpon_iwf_us_flow_key group.", .size = sizeof(bcmolt_gpon_iwf_us_flow_key_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_iwf_us_flow_key_id_string_table } };
bcmcli_enum_val bcmolt_key_exchange_mode_string_table[] = { { .name = "normal", .val = BCMOLT_KEY_EXCHANGE_MODE_NORMAL }, { .name = "enhanced", .val = BCMOLT_KEY_EXCHANGE_MODE_ENHANCED }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_key_exchange_mode = { .name = "bcmolt_key_exchange_mode", .descr = "Key exchange mode", .size = sizeof(bcmolt_key_exchange_mode), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_key_exchange_mode_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_key_exchange_fields[] = { { .name = "interval", .descr = "Key Exchange process interval in milliseconds", .offset = offsetof(bcmolt_gpon_key_exchange, interval), .type = &type_descr_uint32_t }, { .name = "control", .descr = "Enable\\disable periodic process of Key Exchange for active ONUs", .offset = offsetof(bcmolt_gpon_key_exchange, control), .type = &type_descr_bcmolt_control_state }, { .name = "mode", .descr = "Key exchange mode", .offset = offsetof(bcmolt_gpon_key_exchange, mode), .type = &type_descr_bcmolt_key_exchange_mode }, { .name = "encrypted_ports_only", .descr = "Perform key exchange only to ONUs with GEM ports that have downstream encryption enabled", .offset = offsetof(bcmolt_gpon_key_exchange, encrypted_ports_only), .type = &type_descr_bcmolt_control_state } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_key_exchange = { .name = "bcmolt_gpon_key_exchange", .descr = "GPON Key Exchange ", .size = sizeof(bcmolt_gpon_key_exchange), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_key_exchange_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_key_exchange_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_mac_table_scan_result_fields[] = { { .name = "vlan", .descr = "The VLAN ID of the entry.", .offset = offsetof(bcmolt_gpon_mac_table_scan_result, vlan), .type = &type_descr_uint16_t }, { .name = "flow_id", .descr = "The flow ID assigned to traffic that matches this MAC table entry.", .offset = offsetof(bcmolt_gpon_mac_table_scan_result, flow_id), .type = &type_descr_uint16_t }, { .name = "stat", .descr = "Whether or not the MAC entry is static.  Static entries don't age.", .offset = offsetof(bcmolt_gpon_mac_table_scan_result, stat), .type = &type_descr_bcmos_bool }, { .name = "gem_port_id", .descr = "The GEM port ID of the traffic that created this table entry.  This only applies to automatically-learned entries.  Manually-added entries will have the value BCMOLT_PON_GEM_PORT_ID_INVALID.", .offset = offsetof(bcmolt_gpon_mac_table_scan_result, gem_port_id), .type = &type_descr_uint16_t }, { .name = "onu_id", .descr = "The ONU ID for the traffic that created this table entry.  This only valid if gem_port_id is valid.  Otherwise this will be set to BCMOLT_GPON_ONU_ID_INVALID.", .offset = offsetof(bcmolt_gpon_mac_table_scan_result, onu_id), .type = &type_descr_uint16_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_mac_table_scan_result = { .name = "bcmolt_gpon_mac_table_scan_result", .descr = "GPON MAC table scan result for a single MAC table entry.", .size = sizeof(bcmolt_gpon_mac_table_scan_result), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_mac_table_scan_result_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_mac_table_scan_result_fields } } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_mac_table_scan_result_list_u16 = { .name = "bcmolt_gpon_mac_table_scan_result_list_u16", .descr = "Variable-length list of gpon_mac_table_scan_result", .size = sizeof(bcmolt_gpon_mac_table_scan_result_list_u16), .base_type = BCMOLT_BASE_TYPE_ID_ARR_DYN, .x = { .arr_dyn = { .elem_type = &type_descr_bcmolt_gpon_mac_table_scan_result, .len_size = 2, .max_size = DEFAULT_DYN_ARR_MAX_SIZE / sizeof(bcmolt_gpon_mac_table_scan_result) } } };
bcmcli_enum_val bcmolt_gpon_ni_activate_all_onus_completed_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_activate_all_onus_completed_id = { .name = "bcmolt_gpon_ni_activate_all_onus_completed_id", .descr = "Identifiers for all properties contained in the gpon_ni_activate_all_onus_completed group.", .size = sizeof(bcmolt_gpon_ni_activate_all_onus_completed_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_ni_activate_all_onus_completed_id_string_table } };
bcmcli_enum_val bcmolt_gpon_ni_auto_cfg_id_string_table[] = { { .name = "activate_all_onus_completed", .val = BCMOLT_GPON_NI_AUTO_CFG_ID_ACTIVATE_ALL_ONUS_COMPLETED }, { .name = "cpu_packets_failure", .val = BCMOLT_GPON_NI_AUTO_CFG_ID_CPU_PACKETS_FAILURE }, { .name = "deactivate_all_onus_completed", .val = BCMOLT_GPON_NI_AUTO_CFG_ID_DEACTIVATE_ALL_ONUS_COMPLETED }, { .name = "disable_all_onus_completed", .val = BCMOLT_GPON_NI_AUTO_CFG_ID_DISABLE_ALL_ONUS_COMPLETED }, { .name = "enable_all_onus_completed", .val = BCMOLT_GPON_NI_AUTO_CFG_ID_ENABLE_ALL_ONUS_COMPLETED }, { .name = "los", .val = BCMOLT_GPON_NI_AUTO_CFG_ID_LOS }, { .name = "onu_discovered", .val = BCMOLT_GPON_NI_AUTO_CFG_ID_ONU_DISCOVERED }, { .name = "onu_upgrade_complete", .val = BCMOLT_GPON_NI_AUTO_CFG_ID_ONU_UPGRADE_COMPLETE }, { .name = "protection_switching_onus_ranged", .val = BCMOLT_GPON_NI_AUTO_CFG_ID_PROTECTION_SWITCHING_ONUS_RANGED }, { .name = "protection_switching_switchover_completed", .val = BCMOLT_GPON_NI_AUTO_CFG_ID_PROTECTION_SWITCHING_SWITCHOVER_COMPLETED }, { .name = "protection_switching_traffic_resume", .val = BCMOLT_GPON_NI_AUTO_CFG_ID_PROTECTION_SWITCHING_TRAFFIC_RESUME }, { .name = "rogue_detection_completed", .val = BCMOLT_GPON_NI_AUTO_CFG_ID_ROGUE_DETECTION_COMPLETED }, { .name = "rogue_onu_special_map_cycle_start", .val = BCMOLT_GPON_NI_AUTO_CFG_ID_ROGUE_ONU_SPECIAL_MAP_CYCLE_START }, { .name = "serial_number_acquisition_cycle_start", .val = BCMOLT_GPON_NI_AUTO_CFG_ID_SERIAL_NUMBER_ACQUISITION_CYCLE_START }, { .name = "standby_pon_monitoring_cycle_completed", .val = BCMOLT_GPON_NI_AUTO_CFG_ID_STANDBY_PON_MONITORING_CYCLE_COMPLETED }, { .name = "stat_alarm_cleared", .val = BCMOLT_GPON_NI_AUTO_CFG_ID_STAT_ALARM_CLEARED }, { .name = "stat_alarm_raised", .val = BCMOLT_GPON_NI_AUTO_CFG_ID_STAT_ALARM_RAISED }, { .name = "state_change_completed", .val = BCMOLT_GPON_NI_AUTO_CFG_ID_STATE_CHANGE_COMPLETED }, { .name = "tod_request_completed", .val = BCMOLT_GPON_NI_AUTO_CFG_ID_TOD_REQUEST_COMPLETED }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_auto_cfg_id = { .name = "bcmolt_gpon_ni_auto_cfg_id", .descr = "Identifiers for all properties contained in the gpon_ni_auto_cfg group.", .size = sizeof(bcmolt_gpon_ni_auto_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_ni_auto_cfg_id_string_table } };
bcmcli_enum_val bcmolt_gpon_ni_broadcast_ploam_packet_id_string_table[] = { { .name = "ploam", .val = BCMOLT_GPON_NI_BROADCAST_PLOAM_PACKET_ID_PLOAM }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_broadcast_ploam_packet_id = { .name = "bcmolt_gpon_ni_broadcast_ploam_packet_id", .descr = "Identifiers for all properties contained in the gpon_ni_broadcast_ploam_packet group.", .size = sizeof(bcmolt_gpon_ni_broadcast_ploam_packet_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_ni_broadcast_ploam_packet_id_string_table } };
bcmcli_enum_val bcmolt_gpon_ni_cfg_id_string_table[] = { { .name = "pon_status", .val = BCMOLT_GPON_NI_CFG_ID_PON_STATUS }, { .name = "available_bandwidth", .val = BCMOLT_GPON_NI_CFG_ID_AVAILABLE_BANDWIDTH }, { .name = "number_of_active_onus", .val = BCMOLT_GPON_NI_CFG_ID_NUMBER_OF_ACTIVE_ONUS }, { .name = "number_of_active_standby_onus", .val = BCMOLT_GPON_NI_CFG_ID_NUMBER_OF_ACTIVE_STANDBY_ONUS }, { .name = "prbs_status", .val = BCMOLT_GPON_NI_CFG_ID_PRBS_STATUS }, { .name = "pon_distance", .val = BCMOLT_GPON_NI_CFG_ID_PON_DISTANCE }, { .name = "ranging_window_size", .val = BCMOLT_GPON_NI_CFG_ID_RANGING_WINDOW_SIZE }, { .name = "preassigned_equalization_delay", .val = BCMOLT_GPON_NI_CFG_ID_PREASSIGNED_EQUALIZATION_DELAY }, { .name = "eqd_cycles_number", .val = BCMOLT_GPON_NI_CFG_ID_EQD_CYCLES_NUMBER }, { .name = "power_level", .val = BCMOLT_GPON_NI_CFG_ID_POWER_LEVEL }, { .name = "ds_fec_mode", .val = BCMOLT_GPON_NI_CFG_ID_DS_FEC_MODE }, { .name = "drift_control", .val = BCMOLT_GPON_NI_CFG_ID_DRIFT_CONTROL }, { .name = "ds_ber_reporting_interval", .val = BCMOLT_GPON_NI_CFG_ID_DS_BER_REPORTING_INTERVAL }, { .name = "los_alarm_threshold", .val = BCMOLT_GPON_NI_CFG_ID_LOS_ALARM_THRESHOLD }, { .name = "los_initial_value", .val = BCMOLT_GPON_NI_CFG_ID_LOS_INITIAL_VALUE }, { .name = "onu_alarms_thresholds", .val = BCMOLT_GPON_NI_CFG_ID_ONU_ALARMS_THRESHOLDS }, { .name = "ber_monitor", .val = BCMOLT_GPON_NI_CFG_ID_BER_MONITOR }, { .name = "ploam_ack_timeout", .val = BCMOLT_GPON_NI_CFG_ID_PLOAM_ACK_TIMEOUT }, { .name = "onu_activation", .val = BCMOLT_GPON_NI_CFG_ID_ONU_ACTIVATION }, { .name = "sn_acquisition", .val = BCMOLT_GPON_NI_CFG_ID_SN_ACQUISITION }, { .name = "key_exchange", .val = BCMOLT_GPON_NI_CFG_ID_KEY_EXCHANGE }, { .name = "protection_switching", .val = BCMOLT_GPON_NI_CFG_ID_PROTECTION_SWITCHING }, { .name = "cbr_rt_allocation_profile", .val = BCMOLT_GPON_NI_CFG_ID_CBR_RT_ALLOCATION_PROFILE }, { .name = "cbr_nrt_allocation_profile", .val = BCMOLT_GPON_NI_CFG_ID_CBR_NRT_ALLOCATION_PROFILE }, { .name = "dba", .val = BCMOLT_GPON_NI_CFG_ID_DBA }, { .name = "power_management", .val = BCMOLT_GPON_NI_CFG_ID_POWER_MANAGEMENT }, { .name = "rogue_onu_detection_process", .val = BCMOLT_GPON_NI_CFG_ID_ROGUE_ONU_DETECTION_PROCESS }, { .name = "periodic_standby_pon_monitoring", .val = BCMOLT_GPON_NI_CFG_ID_PERIODIC_STANDBY_PON_MONITORING }, { .name = "prbs_checker", .val = BCMOLT_GPON_NI_CFG_ID_PRBS_CHECKER }, { .name = "prbs_generator", .val = BCMOLT_GPON_NI_CFG_ID_PRBS_GENERATOR }, { .name = "min_data_alloc_id", .val = BCMOLT_GPON_NI_CFG_ID_MIN_DATA_ALLOC_ID }, { .name = "automatic_onu_deactivation", .val = BCMOLT_GPON_NI_CFG_ID_AUTOMATIC_ONU_DEACTIVATION }, { .name = "us_bandwidth_limit", .val = BCMOLT_GPON_NI_CFG_ID_US_BANDWIDTH_LIMIT }, { .name = "all_onus", .val = BCMOLT_GPON_NI_CFG_ID_ALL_ONUS }, { .name = "all_mcast_gem_ports", .val = BCMOLT_GPON_NI_CFG_ID_ALL_MCAST_GEM_PORTS }, { .name = "debug", .val = BCMOLT_GPON_NI_CFG_ID_DEBUG }, { .name = "onu_upgrade_params", .val = BCMOLT_GPON_NI_CFG_ID_ONU_UPGRADE_PARAMS }, { .name = "ps_c_wait_before_deactivation_timeout", .val = BCMOLT_GPON_NI_CFG_ID_PS_C_WAIT_BEFORE_DEACTIVATION_TIMEOUT }, { .name = "bip32_indication_control", .val = BCMOLT_GPON_NI_CFG_ID_BIP32_INDICATION_CONTROL }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_cfg_id = { .name = "bcmolt_gpon_ni_cfg_id", .descr = "Identifiers for all properties contained in the gpon_ni_cfg group.", .size = sizeof(bcmolt_gpon_ni_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_ni_cfg_id_string_table } };
bcmcli_enum_val bcmolt_gpon_ni_cpu_packets_failure_id_string_table[] = { { .name = "error", .val = BCMOLT_GPON_NI_CPU_PACKETS_FAILURE_ID_ERROR }, { .name = "gem_port_id", .val = BCMOLT_GPON_NI_CPU_PACKETS_FAILURE_ID_GEM_PORT_ID }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_cpu_packets_failure_id = { .name = "bcmolt_gpon_ni_cpu_packets_failure_id", .descr = "Identifiers for all properties contained in the gpon_ni_cpu_packets_failure group.", .size = sizeof(bcmolt_gpon_ni_cpu_packets_failure_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_ni_cpu_packets_failure_id_string_table } };
bcmcli_enum_val bcmolt_gpon_ni_cpu_packets_id_string_table[] = { { .name = "packet_type", .val = BCMOLT_GPON_NI_CPU_PACKETS_ID_PACKET_TYPE }, { .name = "calc_crc", .val = BCMOLT_GPON_NI_CPU_PACKETS_ID_CALC_CRC }, { .name = "gem_port_list", .val = BCMOLT_GPON_NI_CPU_PACKETS_ID_GEM_PORT_LIST }, { .name = "buffer", .val = BCMOLT_GPON_NI_CPU_PACKETS_ID_BUFFER }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_cpu_packets_id = { .name = "bcmolt_gpon_ni_cpu_packets_id", .descr = "Identifiers for all properties contained in the gpon_ni_cpu_packets group.", .size = sizeof(bcmolt_gpon_ni_cpu_packets_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_ni_cpu_packets_id_string_table } };
bcmcli_enum_val bcmolt_gpon_ni_deactivate_all_onus_completed_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_deactivate_all_onus_completed_id = { .name = "bcmolt_gpon_ni_deactivate_all_onus_completed_id", .descr = "Identifiers for all properties contained in the gpon_ni_deactivate_all_onus_completed group.", .size = sizeof(bcmolt_gpon_ni_deactivate_all_onus_completed_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_ni_deactivate_all_onus_completed_id_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_ni_debug_fields[] = { { .name = "number_of_gem_ports_per_onu", .descr = "Number of Gem ports per ONU", .offset = offsetof(bcmolt_gpon_ni_debug, number_of_gem_ports_per_onu), .type = &type_descr_uint16_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_debug = { .name = "bcmolt_gpon_ni_debug", .descr = "GPON NI Debug parameters", .size = sizeof(bcmolt_gpon_ni_debug), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_ni_debug_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_ni_debug_fields } } };
bcmcli_enum_val bcmolt_gpon_ni_disable_all_onus_completed_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_disable_all_onus_completed_id = { .name = "bcmolt_gpon_ni_disable_all_onus_completed_id", .descr = "Identifiers for all properties contained in the gpon_ni_disable_all_onus_completed group.", .size = sizeof(bcmolt_gpon_ni_disable_all_onus_completed_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_ni_disable_all_onus_completed_id_string_table } };
bcmcli_enum_val bcmolt_gpon_ni_disable_serial_number_id_string_table[] = { { .name = "control", .val = BCMOLT_GPON_NI_DISABLE_SERIAL_NUMBER_ID_CONTROL }, { .name = "serial_number", .val = BCMOLT_GPON_NI_DISABLE_SERIAL_NUMBER_ID_SERIAL_NUMBER }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_disable_serial_number_id = { .name = "bcmolt_gpon_ni_disable_serial_number_id", .descr = "Identifiers for all properties contained in the gpon_ni_disable_serial_number group.", .size = sizeof(bcmolt_gpon_ni_disable_serial_number_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_ni_disable_serial_number_id_string_table } };
bcmcli_enum_val bcmolt_gpon_ni_enable_all_onus_completed_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_enable_all_onus_completed_id = { .name = "bcmolt_gpon_ni_enable_all_onus_completed_id", .descr = "Identifiers for all properties contained in the gpon_ni_enable_all_onus_completed group.", .size = sizeof(bcmolt_gpon_ni_enable_all_onus_completed_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_ni_enable_all_onus_completed_id_string_table } };
bcmcli_enum_val bcmolt_gpon_ni_key_id_string_table[] = { { .name = "pon_ni", .val = BCMOLT_GPON_NI_KEY_ID_PON_NI }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_key_id = { .name = "bcmolt_gpon_ni_key_id", .descr = "Identifiers for all properties contained in the gpon_ni_key group.", .size = sizeof(bcmolt_gpon_ni_key_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_ni_key_id_string_table } };
bcmcli_enum_val bcmolt_gpon_ni_los_id_string_table[] = { { .name = "status", .val = BCMOLT_GPON_NI_LOS_ID_STATUS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_los_id = { .name = "bcmolt_gpon_ni_los_id", .descr = "Identifiers for all properties contained in the gpon_ni_los group.", .size = sizeof(bcmolt_gpon_ni_los_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_ni_los_id_string_table } };
bcmcli_enum_val bcmolt_gpon_ni_onu_discovered_id_string_table[] = { { .name = "serial_number", .val = BCMOLT_GPON_NI_ONU_DISCOVERED_ID_SERIAL_NUMBER }, { .name = "ranging_time", .val = BCMOLT_GPON_NI_ONU_DISCOVERED_ID_RANGING_TIME }, { .name = "onu_id", .val = BCMOLT_GPON_NI_ONU_DISCOVERED_ID_ONU_ID }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_onu_discovered_id = { .name = "bcmolt_gpon_ni_onu_discovered_id", .descr = "Identifiers for all properties contained in the gpon_ni_onu_discovered group.", .size = sizeof(bcmolt_gpon_ni_onu_discovered_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_ni_onu_discovered_id_string_table } };
bcmcli_enum_val bcmolt_gpon_ni_onu_upgrade_complete_id_string_table[] = { { .name = "status", .val = BCMOLT_GPON_NI_ONU_UPGRADE_COMPLETE_ID_STATUS }, { .name = "list_of_failed_entities", .val = BCMOLT_GPON_NI_ONU_UPGRADE_COMPLETE_ID_LIST_OF_FAILED_ENTITIES }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_onu_upgrade_complete_id = { .name = "bcmolt_gpon_ni_onu_upgrade_complete_id", .descr = "Identifiers for all properties contained in the gpon_ni_onu_upgrade_complete group.", .size = sizeof(bcmolt_gpon_ni_onu_upgrade_complete_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_ni_onu_upgrade_complete_id_string_table } };
bcmcli_enum_val bcmolt_gpon_ni_protection_switching_onus_ranged_id_string_table[] = { { .name = "onus", .val = BCMOLT_GPON_NI_PROTECTION_SWITCHING_ONUS_RANGED_ID_ONUS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_protection_switching_onus_ranged_id = { .name = "bcmolt_gpon_ni_protection_switching_onus_ranged_id", .descr = "Identifiers for all properties contained in the gpon_ni_protection_switching_onus_ranged group.", .size = sizeof(bcmolt_gpon_ni_protection_switching_onus_ranged_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_ni_protection_switching_onus_ranged_id_string_table } };
bcmcli_enum_val bcmolt_gpon_ni_protection_switching_switchover_completed_id_string_table[] = { { .name = "result", .val = BCMOLT_GPON_NI_PROTECTION_SWITCHING_SWITCHOVER_COMPLETED_ID_RESULT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_protection_switching_switchover_completed_id = { .name = "bcmolt_gpon_ni_protection_switching_switchover_completed_id", .descr = "Identifiers for all properties contained in the gpon_ni_protection_switching_switchover_completed group.", .size = sizeof(bcmolt_gpon_ni_protection_switching_switchover_completed_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_ni_protection_switching_switchover_completed_id_string_table } };
bcmcli_enum_val bcmolt_gpon_ni_protection_switching_traffic_resume_id_string_table[] = { { .name = "result", .val = BCMOLT_GPON_NI_PROTECTION_SWITCHING_TRAFFIC_RESUME_ID_RESULT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_protection_switching_traffic_resume_id = { .name = "bcmolt_gpon_ni_protection_switching_traffic_resume_id", .descr = "Identifiers for all properties contained in the gpon_ni_protection_switching_traffic_resume group.", .size = sizeof(bcmolt_gpon_ni_protection_switching_traffic_resume_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_ni_protection_switching_traffic_resume_id_string_table } };
bcmcli_enum_val bcmolt_gpon_ni_protection_switching_type_c_set_multiple_onu_state_id_string_table[] = { { .name = "onu_state", .val = BCMOLT_GPON_NI_PROTECTION_SWITCHING_TYPE_C_SET_MULTIPLE_ONU_STATE_ID_ONU_STATE }, { .name = "onu_list", .val = BCMOLT_GPON_NI_PROTECTION_SWITCHING_TYPE_C_SET_MULTIPLE_ONU_STATE_ID_ONU_LIST }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_protection_switching_type_c_set_multiple_onu_state_id = { .name = "bcmolt_gpon_ni_protection_switching_type_c_set_multiple_onu_state_id", .descr = "Identifiers for all properties contained in the gpon_ni_protection_switching_type_c_set_multiple_onu_state group.", .size = sizeof(bcmolt_gpon_ni_protection_switching_type_c_set_multiple_onu_state_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_ni_protection_switching_type_c_set_multiple_onu_state_id_string_table } };
bcmcli_enum_val bcmolt_gpon_ni_reset_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_reset_id = { .name = "bcmolt_gpon_ni_reset_id", .descr = "Identifiers for all properties contained in the gpon_ni_reset group.", .size = sizeof(bcmolt_gpon_ni_reset_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_ni_reset_id_string_table } };
bcmcli_enum_val bcmolt_gpon_ni_rogue_detection_completed_id_string_table[] = { { .name = "window_type", .val = BCMOLT_GPON_NI_ROGUE_DETECTION_COMPLETED_ID_WINDOW_TYPE }, { .name = "measurement_status", .val = BCMOLT_GPON_NI_ROGUE_DETECTION_COMPLETED_ID_MEASUREMENT_STATUS }, { .name = "alloc_id", .val = BCMOLT_GPON_NI_ROGUE_DETECTION_COMPLETED_ID_ALLOC_ID }, { .name = "onu_id", .val = BCMOLT_GPON_NI_ROGUE_DETECTION_COMPLETED_ID_ONU_ID }, { .name = "is_delineation", .val = BCMOLT_GPON_NI_ROGUE_DETECTION_COMPLETED_ID_IS_DELINEATION }, { .name = "is_ed", .val = BCMOLT_GPON_NI_ROGUE_DETECTION_COMPLETED_ID_IS_ED }, { .name = "rx_data", .val = BCMOLT_GPON_NI_ROGUE_DETECTION_COMPLETED_ID_RX_DATA }, { .name = "ploam_received_onu_id", .val = BCMOLT_GPON_NI_ROGUE_DETECTION_COMPLETED_ID_PLOAM_RECEIVED_ONU_ID }, { .name = "ploam_received_crc_error", .val = BCMOLT_GPON_NI_ROGUE_DETECTION_COMPLETED_ID_PLOAM_RECEIVED_CRC_ERROR }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_rogue_detection_completed_id = { .name = "bcmolt_gpon_ni_rogue_detection_completed_id", .descr = "Identifiers for all properties contained in the gpon_ni_rogue_detection_completed group.", .size = sizeof(bcmolt_gpon_ni_rogue_detection_completed_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_ni_rogue_detection_completed_id_string_table } };
bcmcli_enum_val bcmolt_gpon_ni_rogue_detection_window_id_string_table[] = { { .name = "window_type", .val = BCMOLT_GPON_NI_ROGUE_DETECTION_WINDOW_ID_WINDOW_TYPE }, { .name = "alloc_id", .val = BCMOLT_GPON_NI_ROGUE_DETECTION_WINDOW_ID_ALLOC_ID }, { .name = "onu_id", .val = BCMOLT_GPON_NI_ROGUE_DETECTION_WINDOW_ID_ONU_ID }, { .name = "second_ranging_window", .val = BCMOLT_GPON_NI_ROGUE_DETECTION_WINDOW_ID_SECOND_RANGING_WINDOW }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_rogue_detection_window_id = { .name = "bcmolt_gpon_ni_rogue_detection_window_id", .descr = "Identifiers for all properties contained in the gpon_ni_rogue_detection_window group.", .size = sizeof(bcmolt_gpon_ni_rogue_detection_window_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_ni_rogue_detection_window_id_string_table } };
bcmcli_enum_val bcmolt_gpon_ni_rogue_onu_special_map_cycle_start_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_rogue_onu_special_map_cycle_start_id = { .name = "bcmolt_gpon_ni_rogue_onu_special_map_cycle_start_id", .descr = "Identifiers for all properties contained in the gpon_ni_rogue_onu_special_map_cycle_start group.", .size = sizeof(bcmolt_gpon_ni_rogue_onu_special_map_cycle_start_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_ni_rogue_onu_special_map_cycle_start_id_string_table } };
bcmcli_enum_val bcmolt_gpon_ni_serial_number_acquisition_cycle_start_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_serial_number_acquisition_cycle_start_id = { .name = "bcmolt_gpon_ni_serial_number_acquisition_cycle_start_id", .descr = "Identifiers for all properties contained in the gpon_ni_serial_number_acquisition_cycle_start group.", .size = sizeof(bcmolt_gpon_ni_serial_number_acquisition_cycle_start_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_ni_serial_number_acquisition_cycle_start_id_string_table } };
bcmcli_enum_val bcmolt_gpon_ni_set_onu_state_id_string_table[] = { { .name = "onu_state", .val = BCMOLT_GPON_NI_SET_ONU_STATE_ID_ONU_STATE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_set_onu_state_id = { .name = "bcmolt_gpon_ni_set_onu_state_id", .descr = "Identifiers for all properties contained in the gpon_ni_set_onu_state group.", .size = sizeof(bcmolt_gpon_ni_set_onu_state_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_ni_set_onu_state_id_string_table } };
bcmcli_enum_val bcmolt_gpon_ni_set_pon_state_id_string_table[] = { { .name = "pon_state", .val = BCMOLT_GPON_NI_SET_PON_STATE_ID_PON_STATE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_set_pon_state_id = { .name = "bcmolt_gpon_ni_set_pon_state_id", .descr = "Identifiers for all properties contained in the gpon_ni_set_pon_state group.", .size = sizeof(bcmolt_gpon_ni_set_pon_state_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_ni_set_pon_state_id_string_table } };
bcmcli_enum_val bcmolt_gpon_ni_single_request_standby_pon_monitoring_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_single_request_standby_pon_monitoring_id = { .name = "bcmolt_gpon_ni_single_request_standby_pon_monitoring_id", .descr = "Identifiers for all properties contained in the gpon_ni_single_request_standby_pon_monitoring group.", .size = sizeof(bcmolt_gpon_ni_single_request_standby_pon_monitoring_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_ni_single_request_standby_pon_monitoring_id_string_table } };
bcmcli_enum_val bcmolt_gpon_ni_standby_pon_monitoring_cycle_completed_id_string_table[] = { { .name = "number_of_detected_delimiter", .val = BCMOLT_GPON_NI_STANDBY_PON_MONITORING_CYCLE_COMPLETED_ID_NUMBER_OF_DETECTED_DELIMITER }, { .name = "energy_detect_signal", .val = BCMOLT_GPON_NI_STANDBY_PON_MONITORING_CYCLE_COMPLETED_ID_ENERGY_DETECT_SIGNAL }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_standby_pon_monitoring_cycle_completed_id = { .name = "bcmolt_gpon_ni_standby_pon_monitoring_cycle_completed_id", .descr = "Identifiers for all properties contained in the gpon_ni_standby_pon_monitoring_cycle_completed group.", .size = sizeof(bcmolt_gpon_ni_standby_pon_monitoring_cycle_completed_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_ni_standby_pon_monitoring_cycle_completed_id_string_table } };
bcmcli_enum_val bcmolt_gpon_ni_start_onu_upgrade_id_string_table[] = { { .name = "list_of_onu_ids", .val = BCMOLT_GPON_NI_START_ONU_UPGRADE_ID_LIST_OF_ONU_IDS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_start_onu_upgrade_id = { .name = "bcmolt_gpon_ni_start_onu_upgrade_id", .descr = "Identifiers for all properties contained in the gpon_ni_start_onu_upgrade group.", .size = sizeof(bcmolt_gpon_ni_start_onu_upgrade_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_ni_start_onu_upgrade_id_string_table } };
bcmcli_enum_val bcmolt_gpon_ni_stat_alarm_cleared_id_string_table[] = { { .name = "stat", .val = BCMOLT_GPON_NI_STAT_ALARM_CLEARED_ID_STAT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_stat_alarm_cleared_id = { .name = "bcmolt_gpon_ni_stat_alarm_cleared_id", .descr = "Identifiers for all properties contained in the gpon_ni_stat_alarm_cleared group.", .size = sizeof(bcmolt_gpon_ni_stat_alarm_cleared_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_ni_stat_alarm_cleared_id_string_table } };
bcmcli_enum_val bcmolt_gpon_ni_stat_alarm_raised_id_string_table[] = { { .name = "stat", .val = BCMOLT_GPON_NI_STAT_ALARM_RAISED_ID_STAT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_stat_alarm_raised_id = { .name = "bcmolt_gpon_ni_stat_alarm_raised_id", .descr = "Identifiers for all properties contained in the gpon_ni_stat_alarm_raised group.", .size = sizeof(bcmolt_gpon_ni_stat_alarm_raised_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_ni_stat_alarm_raised_id_string_table } };
bcmcli_enum_val bcmolt_gpon_ni_stat_cfg_id_string_table[] = { { .name = "cfg", .val = BCMOLT_GPON_NI_STAT_CFG_ID_CFG }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_stat_cfg_id = { .name = "bcmolt_gpon_ni_stat_cfg_id", .descr = "Identifiers for all properties contained in the gpon_ni_stat_cfg group.", .size = sizeof(bcmolt_gpon_ni_stat_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_ni_stat_cfg_id_string_table } };
bcmcli_enum_val bcmolt_gpon_ni_stat_id_string_table[] = { { .name = "fec_codewords", .val = BCMOLT_GPON_NI_STAT_ID_FEC_CODEWORDS }, { .name = "fec_codewords_uncorrected", .val = BCMOLT_GPON_NI_STAT_ID_FEC_CODEWORDS_UNCORRECTED }, { .name = "bip8_bytes", .val = BCMOLT_GPON_NI_STAT_ID_BIP8_BYTES }, { .name = "bip8_errors", .val = BCMOLT_GPON_NI_STAT_ID_BIP8_ERRORS }, { .name = "rx_gem_packets", .val = BCMOLT_GPON_NI_STAT_ID_RX_GEM_PACKETS }, { .name = "rx_gem_dropped", .val = BCMOLT_GPON_NI_STAT_ID_RX_GEM_DROPPED }, { .name = "rx_gem_idle", .val = BCMOLT_GPON_NI_STAT_ID_RX_GEM_IDLE }, { .name = "rx_gem_corrected", .val = BCMOLT_GPON_NI_STAT_ID_RX_GEM_CORRECTED }, { .name = "rx_gem_illegal", .val = BCMOLT_GPON_NI_STAT_ID_RX_GEM_ILLEGAL }, { .name = "rx_allocations_valid", .val = BCMOLT_GPON_NI_STAT_ID_RX_ALLOCATIONS_VALID }, { .name = "rx_allocations_invalid", .val = BCMOLT_GPON_NI_STAT_ID_RX_ALLOCATIONS_INVALID }, { .name = "rx_allocations_disabled", .val = BCMOLT_GPON_NI_STAT_ID_RX_ALLOCATIONS_DISABLED }, { .name = "rx_ploams", .val = BCMOLT_GPON_NI_STAT_ID_RX_PLOAMS }, { .name = "rx_ploams_non_idle", .val = BCMOLT_GPON_NI_STAT_ID_RX_PLOAMS_NON_IDLE }, { .name = "rx_ploams_error", .val = BCMOLT_GPON_NI_STAT_ID_RX_PLOAMS_ERROR }, { .name = "rx_ploams_dropped", .val = BCMOLT_GPON_NI_STAT_ID_RX_PLOAMS_DROPPED }, { .name = "rx_cpu", .val = BCMOLT_GPON_NI_STAT_ID_RX_CPU }, { .name = "rx_omci", .val = BCMOLT_GPON_NI_STAT_ID_RX_OMCI }, { .name = "rx_omci_packets_crc_error", .val = BCMOLT_GPON_NI_STAT_ID_RX_OMCI_PACKETS_CRC_ERROR }, { .name = "rx_dropped_too_short", .val = BCMOLT_GPON_NI_STAT_ID_RX_DROPPED_TOO_SHORT }, { .name = "rx_dropped_too_long", .val = BCMOLT_GPON_NI_STAT_ID_RX_DROPPED_TOO_LONG }, { .name = "rx_crc_errors", .val = BCMOLT_GPON_NI_STAT_ID_RX_CRC_ERRORS }, { .name = "rx_key_errors", .val = BCMOLT_GPON_NI_STAT_ID_RX_KEY_ERRORS }, { .name = "rx_fragments_errors", .val = BCMOLT_GPON_NI_STAT_ID_RX_FRAGMENTS_ERRORS }, { .name = "rx_packets_dropped", .val = BCMOLT_GPON_NI_STAT_ID_RX_PACKETS_DROPPED }, { .name = "tx_gem", .val = BCMOLT_GPON_NI_STAT_ID_TX_GEM }, { .name = "tx_ploams", .val = BCMOLT_GPON_NI_STAT_ID_TX_PLOAMS }, { .name = "tx_gem_fragments", .val = BCMOLT_GPON_NI_STAT_ID_TX_GEM_FRAGMENTS }, { .name = "tx_cpu", .val = BCMOLT_GPON_NI_STAT_ID_TX_CPU }, { .name = "tx_omci", .val = BCMOLT_GPON_NI_STAT_ID_TX_OMCI }, { .name = "tx_cpu_omci_packets_dropped", .val = BCMOLT_GPON_NI_STAT_ID_TX_CPU_OMCI_PACKETS_DROPPED }, { .name = "tx_dropped_illegal_length", .val = BCMOLT_GPON_NI_STAT_ID_TX_DROPPED_ILLEGAL_LENGTH }, { .name = "tx_dropped_tpid_miss", .val = BCMOLT_GPON_NI_STAT_ID_TX_DROPPED_TPID_MISS }, { .name = "tx_dropped_vid_miss", .val = BCMOLT_GPON_NI_STAT_ID_TX_DROPPED_VID_MISS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_stat_id = { .name = "bcmolt_gpon_ni_stat_id", .descr = "Identifiers for all properties contained in the gpon_ni_stat group.", .size = sizeof(bcmolt_gpon_ni_stat_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_ni_stat_id_string_table } };
bcmcli_enum_val bcmolt_gpon_ni_state_change_completed_id_string_table[] = { { .name = "result", .val = BCMOLT_GPON_NI_STATE_CHANGE_COMPLETED_ID_RESULT }, { .name = "previous_state", .val = BCMOLT_GPON_NI_STATE_CHANGE_COMPLETED_ID_PREVIOUS_STATE }, { .name = "new_state", .val = BCMOLT_GPON_NI_STATE_CHANGE_COMPLETED_ID_NEW_STATE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_state_change_completed_id = { .name = "bcmolt_gpon_ni_state_change_completed_id", .descr = "Identifiers for all properties contained in the gpon_ni_state_change_completed group.", .size = sizeof(bcmolt_gpon_ni_state_change_completed_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_ni_state_change_completed_id_string_table } };
bcmcli_enum_val bcmolt_gpon_ni_tod_request_completed_id_string_table[] = { { .name = "tod_string", .val = BCMOLT_GPON_NI_TOD_REQUEST_COMPLETED_ID_TOD_STRING }, { .name = "sfc", .val = BCMOLT_GPON_NI_TOD_REQUEST_COMPLETED_ID_SFC }, { .name = "rtc_offset_sec", .val = BCMOLT_GPON_NI_TOD_REQUEST_COMPLETED_ID_RTC_OFFSET_SEC }, { .name = "rtc_offset_nsec", .val = BCMOLT_GPON_NI_TOD_REQUEST_COMPLETED_ID_RTC_OFFSET_NSEC }, { .name = "status", .val = BCMOLT_GPON_NI_TOD_REQUEST_COMPLETED_ID_STATUS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_tod_request_completed_id = { .name = "bcmolt_gpon_ni_tod_request_completed_id", .descr = "Identifiers for all properties contained in the gpon_ni_tod_request_completed group.", .size = sizeof(bcmolt_gpon_ni_tod_request_completed_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_ni_tod_request_completed_id_string_table } };
bcmcli_enum_val bcmolt_gpon_ni_tod_request_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_tod_request_id = { .name = "bcmolt_gpon_ni_tod_request_id", .descr = "Identifiers for all properties contained in the gpon_ni_tod_request group.", .size = sizeof(bcmolt_gpon_ni_tod_request_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_ni_tod_request_id_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_onu_activation_fields[] = { { .name = "key_exchange", .descr = "Perform single key exchange during activation.", .offset = offsetof(bcmolt_gpon_onu_activation, key_exchange), .type = &type_descr_bcmolt_control_state }, { .name = "password_authentication", .descr = "Perform password authentication during activation", .offset = offsetof(bcmolt_gpon_onu_activation, password_authentication), .type = &type_descr_bcmolt_control_state }, { .name = "fail_due_to_password_authentication_failure", .descr = "Deactivate ONU due to password authentication failure", .offset = offsetof(bcmolt_gpon_onu_activation, fail_due_to_password_authentication_failure), .type = &type_descr_bcmolt_control_state } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_activation = { .name = "bcmolt_gpon_onu_activation", .descr = "GPON ONU activation", .size = sizeof(bcmolt_gpon_onu_activation), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_onu_activation_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_onu_activation_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_onu_alarm_state_fields[] = { { .name = "losi", .descr = "Loss of signal", .offset = offsetof(bcmolt_gpon_onu_alarm_state, losi), .type = &type_descr_bcmolt_status }, { .name = "lofi", .descr = "Loss of frame", .offset = offsetof(bcmolt_gpon_onu_alarm_state, lofi), .type = &type_descr_bcmolt_status }, { .name = "loami", .descr = "Loss of PLOAM", .offset = offsetof(bcmolt_gpon_onu_alarm_state, loami), .type = &type_descr_bcmolt_status }, { .name = "dgi", .descr = "Dying Gasp", .offset = offsetof(bcmolt_gpon_onu_alarm_state, dgi), .type = &type_descr_bcmolt_status }, { .name = "tiwi", .descr = "Transmission interference Alarm", .offset = offsetof(bcmolt_gpon_onu_alarm_state, tiwi), .type = &type_descr_bcmolt_status }, { .name = "dowi", .descr = "Drift of Window", .offset = offsetof(bcmolt_gpon_onu_alarm_state, dowi), .type = &type_descr_bcmolt_status }, { .name = "sufi", .descr = "Start UP Failure", .offset = offsetof(bcmolt_gpon_onu_alarm_state, sufi), .type = &type_descr_bcmolt_status }, { .name = "sfi", .descr = "Signal Fail", .offset = offsetof(bcmolt_gpon_onu_alarm_state, sfi), .type = &type_descr_bcmolt_status }, { .name = "sdi", .descr = "Signal Degraded", .offset = offsetof(bcmolt_gpon_onu_alarm_state, sdi), .type = &type_descr_bcmolt_status }, { .name = "dfi", .descr = "Deactivation Failure", .offset = offsetof(bcmolt_gpon_onu_alarm_state, dfi), .type = &type_descr_bcmolt_status }, { .name = "loai", .descr = "Loss of ack", .offset = offsetof(bcmolt_gpon_onu_alarm_state, loai), .type = &type_descr_bcmolt_status }, { .name = "loki", .descr = "loss of key", .offset = offsetof(bcmolt_gpon_onu_alarm_state, loki), .type = &type_descr_bcmolt_status } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_alarm_state = { .name = "bcmolt_gpon_onu_alarm_state", .descr = "GPON ONU alarm status", .size = sizeof(bcmolt_gpon_onu_alarm_state), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_onu_alarm_state_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_onu_alarm_state_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_onu_alarms_fields[] = { { .name = "losi", .descr = "LOSi", .offset = offsetof(bcmolt_gpon_onu_alarms, losi), .type = &type_descr_bcmolt_status }, { .name = "lofi", .descr = "LOFi", .offset = offsetof(bcmolt_gpon_onu_alarms, lofi), .type = &type_descr_bcmolt_status }, { .name = "loami", .descr = "LOAMi", .offset = offsetof(bcmolt_gpon_onu_alarms, loami), .type = &type_descr_bcmolt_status } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_alarms = { .name = "bcmolt_gpon_onu_alarms", .descr = "GPON ONU alarms", .size = sizeof(bcmolt_gpon_onu_alarms), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_onu_alarms_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_onu_alarms_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_onu_alarms_thresholds_fields[] = { { .name = "losi", .descr = "Threshold for asserting LOSi alarm", .offset = offsetof(bcmolt_gpon_onu_alarms_thresholds, losi), .type = &type_descr_uint8_t }, { .name = "lofi", .descr = "Threshold for asserting LOFi alarm", .offset = offsetof(bcmolt_gpon_onu_alarms_thresholds, lofi), .type = &type_descr_uint8_t }, { .name = "loami", .descr = "Threshold for asserting LOAMi alarm", .offset = offsetof(bcmolt_gpon_onu_alarms_thresholds, loami), .type = &type_descr_uint8_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_alarms_thresholds = { .name = "bcmolt_gpon_onu_alarms_thresholds", .descr = "GPON ONU alarms thresholds", .size = sizeof(bcmolt_gpon_onu_alarms_thresholds), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_onu_alarms_thresholds_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_onu_alarms_thresholds_fields } } };
bcmcli_enum_val bcmolt_gpon_onu_auto_cfg_id_string_table[] = { { .name = "ber_interval_configuration_completed", .val = BCMOLT_GPON_ONU_AUTO_CFG_ID_BER_INTERVAL_CONFIGURATION_COMPLETED }, { .name = "dfi", .val = BCMOLT_GPON_ONU_AUTO_CFG_ID_DFI }, { .name = "dgi", .val = BCMOLT_GPON_ONU_AUTO_CFG_ID_DGI }, { .name = "dowi", .val = BCMOLT_GPON_ONU_AUTO_CFG_ID_DOWI }, { .name = "err", .val = BCMOLT_GPON_ONU_AUTO_CFG_ID_ERR }, { .name = "invalid_dbru_report", .val = BCMOLT_GPON_ONU_AUTO_CFG_ID_INVALID_DBRU_REPORT }, { .name = "key_exchange_completed", .val = BCMOLT_GPON_ONU_AUTO_CFG_ID_KEY_EXCHANGE_COMPLETED }, { .name = "key_exchange_cycle_skipped", .val = BCMOLT_GPON_ONU_AUTO_CFG_ID_KEY_EXCHANGE_CYCLE_SKIPPED }, { .name = "key_exchange_decrypt_required", .val = BCMOLT_GPON_ONU_AUTO_CFG_ID_KEY_EXCHANGE_DECRYPT_REQUIRED }, { .name = "key_exchange_key_mismatch", .val = BCMOLT_GPON_ONU_AUTO_CFG_ID_KEY_EXCHANGE_KEY_MISMATCH }, { .name = "key_exchange_key_request_timeout", .val = BCMOLT_GPON_ONU_AUTO_CFG_ID_KEY_EXCHANGE_KEY_REQUEST_TIMEOUT }, { .name = "key_exchange_unconsecutive_index", .val = BCMOLT_GPON_ONU_AUTO_CFG_ID_KEY_EXCHANGE_UNCONSECUTIVE_INDEX }, { .name = "loai", .val = BCMOLT_GPON_ONU_AUTO_CFG_ID_LOAI }, { .name = "loki", .val = BCMOLT_GPON_ONU_AUTO_CFG_ID_LOKI }, { .name = "memi", .val = BCMOLT_GPON_ONU_AUTO_CFG_ID_MEMI }, { .name = "omci_port_id_configuration_completed", .val = BCMOLT_GPON_ONU_AUTO_CFG_ID_OMCI_PORT_ID_CONFIGURATION_COMPLETED }, { .name = "onu_activation_completed", .val = BCMOLT_GPON_ONU_AUTO_CFG_ID_ONU_ACTIVATION_COMPLETED }, { .name = "onu_activation_standby_completed", .val = BCMOLT_GPON_ONU_AUTO_CFG_ID_ONU_ACTIVATION_STANDBY_COMPLETED }, { .name = "onu_alarm", .val = BCMOLT_GPON_ONU_AUTO_CFG_ID_ONU_ALARM }, { .name = "onu_deactivation_completed", .val = BCMOLT_GPON_ONU_AUTO_CFG_ID_ONU_DEACTIVATION_COMPLETED }, { .name = "onu_disable_completed", .val = BCMOLT_GPON_ONU_AUTO_CFG_ID_ONU_DISABLE_COMPLETED }, { .name = "onu_enable_completed", .val = BCMOLT_GPON_ONU_AUTO_CFG_ID_ONU_ENABLE_COMPLETED }, { .name = "optical_reflection", .val = BCMOLT_GPON_ONU_AUTO_CFG_ID_OPTICAL_REFLECTION }, { .name = "password_authentication_completed", .val = BCMOLT_GPON_ONU_AUTO_CFG_ID_PASSWORD_AUTHENTICATION_COMPLETED }, { .name = "pee", .val = BCMOLT_GPON_ONU_AUTO_CFG_ID_PEE }, { .name = "possible_drift", .val = BCMOLT_GPON_ONU_AUTO_CFG_ID_POSSIBLE_DRIFT }, { .name = "power_management_state_change", .val = BCMOLT_GPON_ONU_AUTO_CFG_ID_POWER_MANAGEMENT_STATE_CHANGE }, { .name = "pst", .val = BCMOLT_GPON_ONU_AUTO_CFG_ID_PST }, { .name = "ranging_completed", .val = BCMOLT_GPON_ONU_AUTO_CFG_ID_RANGING_COMPLETED }, { .name = "rei", .val = BCMOLT_GPON_ONU_AUTO_CFG_ID_REI }, { .name = "rssi_measurement_completed", .val = BCMOLT_GPON_ONU_AUTO_CFG_ID_RSSI_MEASUREMENT_COMPLETED }, { .name = "sdi", .val = BCMOLT_GPON_ONU_AUTO_CFG_ID_SDI }, { .name = "sfi", .val = BCMOLT_GPON_ONU_AUTO_CFG_ID_SFI }, { .name = "stat_alarm_cleared", .val = BCMOLT_GPON_ONU_AUTO_CFG_ID_STAT_ALARM_CLEARED }, { .name = "stat_alarm_raised", .val = BCMOLT_GPON_ONU_AUTO_CFG_ID_STAT_ALARM_RAISED }, { .name = "sufi", .val = BCMOLT_GPON_ONU_AUTO_CFG_ID_SUFI }, { .name = "tiwi", .val = BCMOLT_GPON_ONU_AUTO_CFG_ID_TIWI }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_auto_cfg_id = { .name = "bcmolt_gpon_onu_auto_cfg_id", .descr = "Identifiers for all properties contained in the gpon_onu_auto_cfg group.", .size = sizeof(bcmolt_gpon_onu_auto_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_onu_auto_cfg_id_string_table } };
bcmcli_enum_val bcmolt_gpon_onu_ber_interval_configuration_completed_id_string_table[] = { { .name = "ber_interval", .val = BCMOLT_GPON_ONU_BER_INTERVAL_CONFIGURATION_COMPLETED_ID_BER_INTERVAL }, { .name = "result", .val = BCMOLT_GPON_ONU_BER_INTERVAL_CONFIGURATION_COMPLETED_ID_RESULT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_ber_interval_configuration_completed_id = { .name = "bcmolt_gpon_onu_ber_interval_configuration_completed_id", .descr = "Identifiers for all properties contained in the gpon_onu_ber_interval_configuration_completed group.", .size = sizeof(bcmolt_gpon_onu_ber_interval_configuration_completed_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_onu_ber_interval_configuration_completed_id_string_table } };
bcmcli_enum_val bcmolt_gpon_onu_cfg_id_string_table[] = { { .name = "onu_state", .val = BCMOLT_GPON_ONU_CFG_ID_ONU_STATE }, { .name = "serial_number", .val = BCMOLT_GPON_ONU_CFG_ID_SERIAL_NUMBER }, { .name = "password", .val = BCMOLT_GPON_ONU_CFG_ID_PASSWORD }, { .name = "auto_password_learning", .val = BCMOLT_GPON_ONU_CFG_ID_AUTO_PASSWORD_LEARNING }, { .name = "us_fec", .val = BCMOLT_GPON_ONU_CFG_ID_US_FEC }, { .name = "omci_port_id", .val = BCMOLT_GPON_ONU_CFG_ID_OMCI_PORT_ID }, { .name = "ds_ber_reporting_interval", .val = BCMOLT_GPON_ONU_CFG_ID_DS_BER_REPORTING_INTERVAL }, { .name = "aes_encryption_key", .val = BCMOLT_GPON_ONU_CFG_ID_AES_ENCRYPTION_KEY }, { .name = "alarm_state", .val = BCMOLT_GPON_ONU_CFG_ID_ALARM_STATE }, { .name = "ranging_time", .val = BCMOLT_GPON_ONU_CFG_ID_RANGING_TIME }, { .name = "disabled_after_discovery", .val = BCMOLT_GPON_ONU_CFG_ID_DISABLED_AFTER_DISCOVERY }, { .name = "deactivation_reason", .val = BCMOLT_GPON_ONU_CFG_ID_DEACTIVATION_REASON }, { .name = "all_gem_ports", .val = BCMOLT_GPON_ONU_CFG_ID_ALL_GEM_PORTS }, { .name = "all_allocs", .val = BCMOLT_GPON_ONU_CFG_ID_ALL_ALLOCS }, { .name = "onu_ps_type_c", .val = BCMOLT_GPON_ONU_CFG_ID_ONU_PS_TYPE_C }, { .name = "extended_guard_time", .val = BCMOLT_GPON_ONU_CFG_ID_EXTENDED_GUARD_TIME }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_cfg_id = { .name = "bcmolt_gpon_onu_cfg_id", .descr = "Identifiers for all properties contained in the gpon_onu_cfg group.", .size = sizeof(bcmolt_gpon_onu_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_onu_cfg_id_string_table } };
bcmcli_enum_val bcmolt_gpon_onu_change_power_level_id_string_table[] = { { .name = "power_level_action", .val = BCMOLT_GPON_ONU_CHANGE_POWER_LEVEL_ID_POWER_LEVEL_ACTION }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_change_power_level_id = { .name = "bcmolt_gpon_onu_change_power_level_id", .descr = "Identifiers for all properties contained in the gpon_onu_change_power_level group.", .size = sizeof(bcmolt_gpon_onu_change_power_level_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_onu_change_power_level_id_string_table } };
bcmcli_enum_val bcmolt_gpon_onu_cpu_packet_id_string_table[] = { { .name = "port_id", .val = BCMOLT_GPON_ONU_CPU_PACKET_ID_PORT_ID }, { .name = "crc_ok", .val = BCMOLT_GPON_ONU_CPU_PACKET_ID_CRC_OK }, { .name = "packet_size", .val = BCMOLT_GPON_ONU_CPU_PACKET_ID_PACKET_SIZE }, { .name = "buffer", .val = BCMOLT_GPON_ONU_CPU_PACKET_ID_BUFFER }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_cpu_packet_id = { .name = "bcmolt_gpon_onu_cpu_packet_id", .descr = "Identifiers for all properties contained in the gpon_onu_cpu_packet group.", .size = sizeof(bcmolt_gpon_onu_cpu_packet_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_onu_cpu_packet_id_string_table } };
bcmcli_enum_val bcmolt_gpon_onu_cpu_packets_id_string_table[] = { { .name = "packet_type", .val = BCMOLT_GPON_ONU_CPU_PACKETS_ID_PACKET_TYPE }, { .name = "calc_crc", .val = BCMOLT_GPON_ONU_CPU_PACKETS_ID_CALC_CRC }, { .name = "number_of_packets", .val = BCMOLT_GPON_ONU_CPU_PACKETS_ID_NUMBER_OF_PACKETS }, { .name = "packet_size", .val = BCMOLT_GPON_ONU_CPU_PACKETS_ID_PACKET_SIZE }, { .name = "buffer", .val = BCMOLT_GPON_ONU_CPU_PACKETS_ID_BUFFER }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_cpu_packets_id = { .name = "bcmolt_gpon_onu_cpu_packets_id", .descr = "Identifiers for all properties contained in the gpon_onu_cpu_packets group.", .size = sizeof(bcmolt_gpon_onu_cpu_packets_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_onu_cpu_packets_id_string_table } };
bcmcli_enum_val bcmolt_gpon_onu_dfi_id_string_table[] = { { .name = "alarm_status", .val = BCMOLT_GPON_ONU_DFI_ID_ALARM_STATUS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_dfi_id = { .name = "bcmolt_gpon_onu_dfi_id", .descr = "Identifiers for all properties contained in the gpon_onu_dfi group.", .size = sizeof(bcmolt_gpon_onu_dfi_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_onu_dfi_id_string_table } };
bcmcli_enum_val bcmolt_gpon_onu_dgi_id_string_table[] = { { .name = "alarm_status", .val = BCMOLT_GPON_ONU_DGI_ID_ALARM_STATUS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_dgi_id = { .name = "bcmolt_gpon_onu_dgi_id", .descr = "Identifiers for all properties contained in the gpon_onu_dgi group.", .size = sizeof(bcmolt_gpon_onu_dgi_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_onu_dgi_id_string_table } };
bcmcli_enum_val bcmolt_gpon_onu_dowi_id_string_table[] = { { .name = "alarm_status", .val = BCMOLT_GPON_ONU_DOWI_ID_ALARM_STATUS }, { .name = "drift_value", .val = BCMOLT_GPON_ONU_DOWI_ID_DRIFT_VALUE }, { .name = "new_eqd", .val = BCMOLT_GPON_ONU_DOWI_ID_NEW_EQD }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_dowi_id = { .name = "bcmolt_gpon_onu_dowi_id", .descr = "Identifiers for all properties contained in the gpon_onu_dowi group.", .size = sizeof(bcmolt_gpon_onu_dowi_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_onu_dowi_id_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_onu_eqd_fields[] = { { .name = "onu_id", .descr = "ONU ID", .offset = offsetof(bcmolt_gpon_onu_eqd, onu_id), .type = &type_descr_uint16_t }, { .name = "eqd", .descr = "EQD", .offset = offsetof(bcmolt_gpon_onu_eqd, eqd), .type = &type_descr_uint32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_eqd = { .name = "bcmolt_gpon_onu_eqd", .descr = "GPON ONU EQD", .size = sizeof(bcmolt_gpon_onu_eqd), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_onu_eqd_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_onu_eqd_fields } } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_eqd_list_u32 = { .name = "bcmolt_gpon_onu_eqd_list_u32", .descr = "Variable-length list of gpon_onu_eqd", .size = sizeof(bcmolt_gpon_onu_eqd_list_u32), .base_type = BCMOLT_BASE_TYPE_ID_ARR_DYN, .x = { .arr_dyn = { .elem_type = &type_descr_bcmolt_gpon_onu_eqd, .len_size = 4, .max_size = DEFAULT_DYN_ARR_MAX_SIZE / sizeof(bcmolt_gpon_onu_eqd) } } };
bcmcli_enum_val bcmolt_gpon_onu_err_id_string_table[] = { { .name = "bip8_errors", .val = BCMOLT_GPON_ONU_ERR_ID_BIP8_ERRORS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_err_id = { .name = "bcmolt_gpon_onu_err_id", .descr = "Identifiers for all properties contained in the gpon_onu_err group.", .size = sizeof(bcmolt_gpon_onu_err_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_onu_err_id_string_table } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_id_list_u32_max_256 = { .name = "bcmolt_gpon_onu_id_list_u32_max_256", .descr = "Variable-length list of gpon_onu_id", .size = sizeof(bcmolt_gpon_onu_id_list_u32_max_256), .base_type = BCMOLT_BASE_TYPE_ID_ARR_DYN, .x = { .arr_dyn = { .elem_type = &type_descr_uint16_t, .len_size = 4, .max_size = 256 } } };
bcmcli_enum_val bcmolt_gpon_onu_invalid_dbru_report_id_string_table[] = { { .name = "alloc_id", .val = BCMOLT_GPON_ONU_INVALID_DBRU_REPORT_ID_ALLOC_ID }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_invalid_dbru_report_id = { .name = "bcmolt_gpon_onu_invalid_dbru_report_id", .descr = "Identifiers for all properties contained in the gpon_onu_invalid_dbru_report group.", .size = sizeof(bcmolt_gpon_onu_invalid_dbru_report_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_onu_invalid_dbru_report_id_string_table } };
bcmcli_enum_val bcmolt_gpon_onu_key_exchange_completed_id_string_table[] = { { .name = "new_key", .val = BCMOLT_GPON_ONU_KEY_EXCHANGE_COMPLETED_ID_NEW_KEY }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_key_exchange_completed_id = { .name = "bcmolt_gpon_onu_key_exchange_completed_id", .descr = "Identifiers for all properties contained in the gpon_onu_key_exchange_completed group.", .size = sizeof(bcmolt_gpon_onu_key_exchange_completed_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_onu_key_exchange_completed_id_string_table } };
bcmcli_enum_val bcmolt_gpon_onu_key_exchange_cycle_skipped_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_key_exchange_cycle_skipped_id = { .name = "bcmolt_gpon_onu_key_exchange_cycle_skipped_id", .descr = "Identifiers for all properties contained in the gpon_onu_key_exchange_cycle_skipped group.", .size = sizeof(bcmolt_gpon_onu_key_exchange_cycle_skipped_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_onu_key_exchange_cycle_skipped_id_string_table } };
bcmcli_enum_val bcmolt_gpon_onu_key_exchange_decrypt_required_id_string_table[] = { { .name = "new_key", .val = BCMOLT_GPON_ONU_KEY_EXCHANGE_DECRYPT_REQUIRED_ID_NEW_KEY }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_key_exchange_decrypt_required_id = { .name = "bcmolt_gpon_onu_key_exchange_decrypt_required_id", .descr = "Identifiers for all properties contained in the gpon_onu_key_exchange_decrypt_required group.", .size = sizeof(bcmolt_gpon_onu_key_exchange_decrypt_required_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_onu_key_exchange_decrypt_required_id_string_table } };
bcmcli_enum_val bcmolt_gpon_onu_key_exchange_key_mismatch_id_string_table[] = { { .name = "expected_key", .val = BCMOLT_GPON_ONU_KEY_EXCHANGE_KEY_MISMATCH_ID_EXPECTED_KEY }, { .name = "received_key", .val = BCMOLT_GPON_ONU_KEY_EXCHANGE_KEY_MISMATCH_ID_RECEIVED_KEY }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_key_exchange_key_mismatch_id = { .name = "bcmolt_gpon_onu_key_exchange_key_mismatch_id", .descr = "Identifiers for all properties contained in the gpon_onu_key_exchange_key_mismatch group.", .size = sizeof(bcmolt_gpon_onu_key_exchange_key_mismatch_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_onu_key_exchange_key_mismatch_id_string_table } };
bcmcli_enum_val bcmolt_gpon_onu_key_exchange_key_request_timeout_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_key_exchange_key_request_timeout_id = { .name = "bcmolt_gpon_onu_key_exchange_key_request_timeout_id", .descr = "Identifiers for all properties contained in the gpon_onu_key_exchange_key_request_timeout group.", .size = sizeof(bcmolt_gpon_onu_key_exchange_key_request_timeout_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_onu_key_exchange_key_request_timeout_id_string_table } };
bcmcli_enum_val bcmolt_gpon_onu_key_exchange_unconsecutive_index_id_string_table[] = { { .name = "expected_index", .val = BCMOLT_GPON_ONU_KEY_EXCHANGE_UNCONSECUTIVE_INDEX_ID_EXPECTED_INDEX }, { .name = "actual_index", .val = BCMOLT_GPON_ONU_KEY_EXCHANGE_UNCONSECUTIVE_INDEX_ID_ACTUAL_INDEX }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_key_exchange_unconsecutive_index_id = { .name = "bcmolt_gpon_onu_key_exchange_unconsecutive_index_id", .descr = "Identifiers for all properties contained in the gpon_onu_key_exchange_unconsecutive_index group.", .size = sizeof(bcmolt_gpon_onu_key_exchange_unconsecutive_index_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_onu_key_exchange_unconsecutive_index_id_string_table } };
bcmcli_enum_val bcmolt_gpon_onu_key_id_string_table[] = { { .name = "pon_ni", .val = BCMOLT_GPON_ONU_KEY_ID_PON_NI }, { .name = "onu_id", .val = BCMOLT_GPON_ONU_KEY_ID_ONU_ID }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_key_id = { .name = "bcmolt_gpon_onu_key_id", .descr = "Identifiers for all properties contained in the gpon_onu_key group.", .size = sizeof(bcmolt_gpon_onu_key_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_onu_key_id_string_table } };
bcmcli_enum_val bcmolt_gpon_onu_loai_id_string_table[] = { { .name = "alarm_status", .val = BCMOLT_GPON_ONU_LOAI_ID_ALARM_STATUS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_loai_id = { .name = "bcmolt_gpon_onu_loai_id", .descr = "Identifiers for all properties contained in the gpon_onu_loai group.", .size = sizeof(bcmolt_gpon_onu_loai_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_onu_loai_id_string_table } };
bcmcli_enum_val bcmolt_gpon_onu_loki_id_string_table[] = { { .name = "alarm_status", .val = BCMOLT_GPON_ONU_LOKI_ID_ALARM_STATUS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_loki_id = { .name = "bcmolt_gpon_onu_loki_id", .descr = "Identifiers for all properties contained in the gpon_onu_loki group.", .size = sizeof(bcmolt_gpon_onu_loki_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_onu_loki_id_string_table } };
bcmcli_enum_val bcmolt_gpon_onu_memi_id_string_table[] = { { .name = "ploam_buffer", .val = BCMOLT_GPON_ONU_MEMI_ID_PLOAM_BUFFER }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_memi_id = { .name = "bcmolt_gpon_onu_memi_id", .descr = "Identifiers for all properties contained in the gpon_onu_memi group.", .size = sizeof(bcmolt_gpon_onu_memi_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_onu_memi_id_string_table } };
bcmcli_enum_val bcmolt_gpon_onu_omci_packet_id_string_table[] = { { .name = "port_id", .val = BCMOLT_GPON_ONU_OMCI_PACKET_ID_PORT_ID }, { .name = "crc_ok", .val = BCMOLT_GPON_ONU_OMCI_PACKET_ID_CRC_OK }, { .name = "packet_size", .val = BCMOLT_GPON_ONU_OMCI_PACKET_ID_PACKET_SIZE }, { .name = "buffer", .val = BCMOLT_GPON_ONU_OMCI_PACKET_ID_BUFFER }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_omci_packet_id = { .name = "bcmolt_gpon_onu_omci_packet_id", .descr = "Identifiers for all properties contained in the gpon_onu_omci_packet group.", .size = sizeof(bcmolt_gpon_onu_omci_packet_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_onu_omci_packet_id_string_table } };
bcmcli_enum_val bcmolt_gpon_onu_omci_port_id_configuration_completed_id_string_table[] = { { .name = "gem_port", .val = BCMOLT_GPON_ONU_OMCI_PORT_ID_CONFIGURATION_COMPLETED_ID_GEM_PORT }, { .name = "status", .val = BCMOLT_GPON_ONU_OMCI_PORT_ID_CONFIGURATION_COMPLETED_ID_STATUS }, { .name = "operation", .val = BCMOLT_GPON_ONU_OMCI_PORT_ID_CONFIGURATION_COMPLETED_ID_OPERATION }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_omci_port_id_configuration_completed_id = { .name = "bcmolt_gpon_onu_omci_port_id_configuration_completed_id", .descr = "Identifiers for all properties contained in the gpon_onu_omci_port_id_configuration_completed group.", .size = sizeof(bcmolt_gpon_onu_omci_port_id_configuration_completed_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_onu_omci_port_id_configuration_completed_id_string_table } };
bcmcli_enum_val bcmolt_gpon_onu_onu_activation_completed_id_string_table[] = { { .name = "status", .val = BCMOLT_GPON_ONU_ONU_ACTIVATION_COMPLETED_ID_STATUS }, { .name = "fail_reason", .val = BCMOLT_GPON_ONU_ONU_ACTIVATION_COMPLETED_ID_FAIL_REASON }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_onu_activation_completed_id = { .name = "bcmolt_gpon_onu_onu_activation_completed_id", .descr = "Identifiers for all properties contained in the gpon_onu_onu_activation_completed group.", .size = sizeof(bcmolt_gpon_onu_onu_activation_completed_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_onu_onu_activation_completed_id_string_table } };
bcmcli_enum_val bcmolt_gpon_onu_onu_activation_standby_completed_id_string_table[] = { { .name = "result", .val = BCMOLT_GPON_ONU_ONU_ACTIVATION_STANDBY_COMPLETED_ID_RESULT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_onu_activation_standby_completed_id = { .name = "bcmolt_gpon_onu_onu_activation_standby_completed_id", .descr = "Identifiers for all properties contained in the gpon_onu_onu_activation_standby_completed group.", .size = sizeof(bcmolt_gpon_onu_onu_activation_standby_completed_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_onu_onu_activation_standby_completed_id_string_table } };
bcmcli_enum_val bcmolt_gpon_onu_onu_alarm_id_string_table[] = { { .name = "onu_alarm", .val = BCMOLT_GPON_ONU_ONU_ALARM_ID_ONU_ALARM }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_onu_alarm_id = { .name = "bcmolt_gpon_onu_onu_alarm_id", .descr = "Identifiers for all properties contained in the gpon_onu_onu_alarm group.", .size = sizeof(bcmolt_gpon_onu_onu_alarm_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_onu_onu_alarm_id_string_table } };
bcmcli_enum_val bcmolt_gpon_onu_onu_deactivation_completed_id_string_table[] = { { .name = "status", .val = BCMOLT_GPON_ONU_ONU_DEACTIVATION_COMPLETED_ID_STATUS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_onu_deactivation_completed_id = { .name = "bcmolt_gpon_onu_onu_deactivation_completed_id", .descr = "Identifiers for all properties contained in the gpon_onu_onu_deactivation_completed group.", .size = sizeof(bcmolt_gpon_onu_onu_deactivation_completed_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_onu_onu_deactivation_completed_id_string_table } };
bcmcli_enum_val bcmolt_gpon_onu_onu_disable_completed_id_string_table[] = { { .name = "serial_number", .val = BCMOLT_GPON_ONU_ONU_DISABLE_COMPLETED_ID_SERIAL_NUMBER }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_onu_disable_completed_id = { .name = "bcmolt_gpon_onu_onu_disable_completed_id", .descr = "Identifiers for all properties contained in the gpon_onu_onu_disable_completed group.", .size = sizeof(bcmolt_gpon_onu_onu_disable_completed_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_onu_onu_disable_completed_id_string_table } };
bcmcli_enum_val bcmolt_gpon_onu_onu_enable_completed_id_string_table[] = { { .name = "serial_number", .val = BCMOLT_GPON_ONU_ONU_ENABLE_COMPLETED_ID_SERIAL_NUMBER }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_onu_enable_completed_id = { .name = "bcmolt_gpon_onu_onu_enable_completed_id", .descr = "Identifiers for all properties contained in the gpon_onu_onu_enable_completed group.", .size = sizeof(bcmolt_gpon_onu_onu_enable_completed_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_onu_onu_enable_completed_id_string_table } };
bcmcli_enum_val bcmolt_gpon_onu_optical_reflection_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_optical_reflection_id = { .name = "bcmolt_gpon_onu_optical_reflection_id", .descr = "Identifiers for all properties contained in the gpon_onu_optical_reflection group.", .size = sizeof(bcmolt_gpon_onu_optical_reflection_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_onu_optical_reflection_id_string_table } };
bcmcli_enum_val bcmolt_gpon_onu_password_authentication_completed_id_string_table[] = { { .name = "status", .val = BCMOLT_GPON_ONU_PASSWORD_AUTHENTICATION_COMPLETED_ID_STATUS }, { .name = "fail_reason", .val = BCMOLT_GPON_ONU_PASSWORD_AUTHENTICATION_COMPLETED_ID_FAIL_REASON }, { .name = "password", .val = BCMOLT_GPON_ONU_PASSWORD_AUTHENTICATION_COMPLETED_ID_PASSWORD }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_password_authentication_completed_id = { .name = "bcmolt_gpon_onu_password_authentication_completed_id", .descr = "Identifiers for all properties contained in the gpon_onu_password_authentication_completed group.", .size = sizeof(bcmolt_gpon_onu_password_authentication_completed_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_onu_password_authentication_completed_id_string_table } };
bcmcli_enum_val bcmolt_gpon_onu_pee_id_string_table[] = { { .name = "alarm_status", .val = BCMOLT_GPON_ONU_PEE_ID_ALARM_STATUS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_pee_id = { .name = "bcmolt_gpon_onu_pee_id", .descr = "Identifiers for all properties contained in the gpon_onu_pee group.", .size = sizeof(bcmolt_gpon_onu_pee_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_onu_pee_id_string_table } };
bcmcli_enum_val bcmolt_gpon_onu_ploam_packet_id_string_table[] = { { .name = "ploam", .val = BCMOLT_GPON_ONU_PLOAM_PACKET_ID_PLOAM }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_ploam_packet_id = { .name = "bcmolt_gpon_onu_ploam_packet_id", .descr = "Identifiers for all properties contained in the gpon_onu_ploam_packet group.", .size = sizeof(bcmolt_gpon_onu_ploam_packet_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_onu_ploam_packet_id_string_table } };
bcmcli_enum_val bcmolt_gpon_onu_possible_drift_id_string_table[] = { { .name = "alarm_status", .val = BCMOLT_GPON_ONU_POSSIBLE_DRIFT_ID_ALARM_STATUS }, { .name = "estimated_drift", .val = BCMOLT_GPON_ONU_POSSIBLE_DRIFT_ID_ESTIMATED_DRIFT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_possible_drift_id = { .name = "bcmolt_gpon_onu_possible_drift_id", .descr = "Identifiers for all properties contained in the gpon_onu_possible_drift group.", .size = sizeof(bcmolt_gpon_onu_possible_drift_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_onu_possible_drift_id_string_table } };
bcmcli_enum_val bcmolt_gpon_onu_power_management_state_change_id_string_table[] = { { .name = "old_state", .val = BCMOLT_GPON_ONU_POWER_MANAGEMENT_STATE_CHANGE_ID_OLD_STATE }, { .name = "new_state", .val = BCMOLT_GPON_ONU_POWER_MANAGEMENT_STATE_CHANGE_ID_NEW_STATE }, { .name = "reason", .val = BCMOLT_GPON_ONU_POWER_MANAGEMENT_STATE_CHANGE_ID_REASON }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_power_management_state_change_id = { .name = "bcmolt_gpon_onu_power_management_state_change_id", .descr = "Identifiers for all properties contained in the gpon_onu_power_management_state_change group.", .size = sizeof(bcmolt_gpon_onu_power_management_state_change_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_onu_power_management_state_change_id_string_table } };
bcmcli_enum_val bcmolt_gpon_onu_pst_id_string_table[] = { { .name = "link_number", .val = BCMOLT_GPON_ONU_PST_ID_LINK_NUMBER }, { .name = "k1", .val = BCMOLT_GPON_ONU_PST_ID_K1 }, { .name = "k2", .val = BCMOLT_GPON_ONU_PST_ID_K2 }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_pst_id = { .name = "bcmolt_gpon_onu_pst_id", .descr = "Identifiers for all properties contained in the gpon_onu_pst group.", .size = sizeof(bcmolt_gpon_onu_pst_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_onu_pst_id_string_table } };
bcmcli_enum_val bcmolt_gpon_onu_ranging_completed_id_string_table[] = { { .name = "status", .val = BCMOLT_GPON_ONU_RANGING_COMPLETED_ID_STATUS }, { .name = "fail_reason", .val = BCMOLT_GPON_ONU_RANGING_COMPLETED_ID_FAIL_REASON }, { .name = "number_of_ploams", .val = BCMOLT_GPON_ONU_RANGING_COMPLETED_ID_NUMBER_OF_PLOAMS }, { .name = "eqd", .val = BCMOLT_GPON_ONU_RANGING_COMPLETED_ID_EQD }, { .name = "power_level", .val = BCMOLT_GPON_ONU_RANGING_COMPLETED_ID_POWER_LEVEL }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_ranging_completed_id = { .name = "bcmolt_gpon_onu_ranging_completed_id", .descr = "Identifiers for all properties contained in the gpon_onu_ranging_completed group.", .size = sizeof(bcmolt_gpon_onu_ranging_completed_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_onu_ranging_completed_id_string_table } };
bcmcli_enum_val bcmolt_gpon_onu_rei_id_string_table[] = { { .name = "bip8_errors", .val = BCMOLT_GPON_ONU_REI_ID_BIP8_ERRORS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_rei_id = { .name = "bcmolt_gpon_onu_rei_id", .descr = "Identifiers for all properties contained in the gpon_onu_rei group.", .size = sizeof(bcmolt_gpon_onu_rei_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_onu_rei_id_string_table } };
bcmcli_enum_val bcmolt_gpon_onu_rssi_measurement_completed_id_string_table[] = { { .name = "status", .val = BCMOLT_GPON_ONU_RSSI_MEASUREMENT_COMPLETED_ID_STATUS }, { .name = "fail_reason", .val = BCMOLT_GPON_ONU_RSSI_MEASUREMENT_COMPLETED_ID_FAIL_REASON }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_rssi_measurement_completed_id = { .name = "bcmolt_gpon_onu_rssi_measurement_completed_id", .descr = "Identifiers for all properties contained in the gpon_onu_rssi_measurement_completed group.", .size = sizeof(bcmolt_gpon_onu_rssi_measurement_completed_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_onu_rssi_measurement_completed_id_string_table } };
bcmcli_enum_val bcmolt_gpon_onu_rssi_measurement_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_rssi_measurement_id = { .name = "bcmolt_gpon_onu_rssi_measurement_id", .descr = "Identifiers for all properties contained in the gpon_onu_rssi_measurement group.", .size = sizeof(bcmolt_gpon_onu_rssi_measurement_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_onu_rssi_measurement_id_string_table } };
bcmcli_enum_val bcmolt_gpon_onu_sdi_id_string_table[] = { { .name = "alarm_status", .val = BCMOLT_GPON_ONU_SDI_ID_ALARM_STATUS }, { .name = "ber", .val = BCMOLT_GPON_ONU_SDI_ID_BER }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_sdi_id = { .name = "bcmolt_gpon_onu_sdi_id", .descr = "Identifiers for all properties contained in the gpon_onu_sdi group.", .size = sizeof(bcmolt_gpon_onu_sdi_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_onu_sdi_id_string_table } };
bcmcli_enum_val bcmolt_gpon_onu_set_onu_state_id_string_table[] = { { .name = "onu_state", .val = BCMOLT_GPON_ONU_SET_ONU_STATE_ID_ONU_STATE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_set_onu_state_id = { .name = "bcmolt_gpon_onu_set_onu_state_id", .descr = "Identifiers for all properties contained in the gpon_onu_set_onu_state group.", .size = sizeof(bcmolt_gpon_onu_set_onu_state_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_onu_set_onu_state_id_string_table } };
bcmcli_enum_val bcmolt_gpon_onu_sfi_id_string_table[] = { { .name = "alarm_status", .val = BCMOLT_GPON_ONU_SFI_ID_ALARM_STATUS }, { .name = "ber", .val = BCMOLT_GPON_ONU_SFI_ID_BER }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_sfi_id = { .name = "bcmolt_gpon_onu_sfi_id", .descr = "Identifiers for all properties contained in the gpon_onu_sfi group.", .size = sizeof(bcmolt_gpon_onu_sfi_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_onu_sfi_id_string_table } };
bcmcli_enum_val bcmolt_gpon_onu_stat_alarm_cleared_id_string_table[] = { { .name = "stat", .val = BCMOLT_GPON_ONU_STAT_ALARM_CLEARED_ID_STAT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_stat_alarm_cleared_id = { .name = "bcmolt_gpon_onu_stat_alarm_cleared_id", .descr = "Identifiers for all properties contained in the gpon_onu_stat_alarm_cleared group.", .size = sizeof(bcmolt_gpon_onu_stat_alarm_cleared_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_onu_stat_alarm_cleared_id_string_table } };
bcmcli_enum_val bcmolt_gpon_onu_stat_alarm_raised_id_string_table[] = { { .name = "stat", .val = BCMOLT_GPON_ONU_STAT_ALARM_RAISED_ID_STAT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_stat_alarm_raised_id = { .name = "bcmolt_gpon_onu_stat_alarm_raised_id", .descr = "Identifiers for all properties contained in the gpon_onu_stat_alarm_raised group.", .size = sizeof(bcmolt_gpon_onu_stat_alarm_raised_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_onu_stat_alarm_raised_id_string_table } };
bcmcli_enum_val bcmolt_gpon_onu_stat_cfg_id_string_table[] = { { .name = "cfg", .val = BCMOLT_GPON_ONU_STAT_CFG_ID_CFG }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_stat_cfg_id = { .name = "bcmolt_gpon_onu_stat_cfg_id", .descr = "Identifiers for all properties contained in the gpon_onu_stat_cfg group.", .size = sizeof(bcmolt_gpon_onu_stat_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_onu_stat_cfg_id_string_table } };
bcmcli_enum_val bcmolt_gpon_onu_stat_id_string_table[] = { { .name = "fec_codewords", .val = BCMOLT_GPON_ONU_STAT_ID_FEC_CODEWORDS }, { .name = "fec_bytes_corrected", .val = BCMOLT_GPON_ONU_STAT_ID_FEC_BYTES_CORRECTED }, { .name = "fec_codewords_corrected", .val = BCMOLT_GPON_ONU_STAT_ID_FEC_CODEWORDS_CORRECTED }, { .name = "fec_codewords_uncorrected", .val = BCMOLT_GPON_ONU_STAT_ID_FEC_CODEWORDS_UNCORRECTED }, { .name = "bip8_bytes", .val = BCMOLT_GPON_ONU_STAT_ID_BIP8_BYTES }, { .name = "bip8_errors", .val = BCMOLT_GPON_ONU_STAT_ID_BIP8_ERRORS }, { .name = "rx_ploams_crc_error", .val = BCMOLT_GPON_ONU_STAT_ID_RX_PLOAMS_CRC_ERROR }, { .name = "rx_ploams_non_idle", .val = BCMOLT_GPON_ONU_STAT_ID_RX_PLOAMS_NON_IDLE }, { .name = "positive_drift", .val = BCMOLT_GPON_ONU_STAT_ID_POSITIVE_DRIFT }, { .name = "negative_drift", .val = BCMOLT_GPON_ONU_STAT_ID_NEGATIVE_DRIFT }, { .name = "rx_omci", .val = BCMOLT_GPON_ONU_STAT_ID_RX_OMCI }, { .name = "rx_omci_packets_crc_error", .val = BCMOLT_GPON_ONU_STAT_ID_RX_OMCI_PACKETS_CRC_ERROR }, { .name = "ber_reported", .val = BCMOLT_GPON_ONU_STAT_ID_BER_REPORTED }, { .name = "unreceived_burst", .val = BCMOLT_GPON_ONU_STAT_ID_UNRECEIVED_BURST }, { .name = "lcdg_errors", .val = BCMOLT_GPON_ONU_STAT_ID_LCDG_ERRORS }, { .name = "rdi_errors", .val = BCMOLT_GPON_ONU_STAT_ID_RDI_ERRORS }, { .name = "rx_bytes", .val = BCMOLT_GPON_ONU_STAT_ID_RX_BYTES }, { .name = "rx_packets", .val = BCMOLT_GPON_ONU_STAT_ID_RX_PACKETS }, { .name = "tx_bytes", .val = BCMOLT_GPON_ONU_STAT_ID_TX_BYTES }, { .name = "tx_packets", .val = BCMOLT_GPON_ONU_STAT_ID_TX_PACKETS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_stat_id = { .name = "bcmolt_gpon_onu_stat_id", .descr = "Identifiers for all properties contained in the gpon_onu_stat group.", .size = sizeof(bcmolt_gpon_onu_stat_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_onu_stat_id_string_table } };
bcmcli_enum_val bcmolt_gpon_onu_sufi_id_string_table[] = { { .name = "alarm_status", .val = BCMOLT_GPON_ONU_SUFI_ID_ALARM_STATUS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_sufi_id = { .name = "bcmolt_gpon_onu_sufi_id", .descr = "Identifiers for all properties contained in the gpon_onu_sufi group.", .size = sizeof(bcmolt_gpon_onu_sufi_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_onu_sufi_id_string_table } };
bcmcli_enum_val bcmolt_gpon_onu_tiwi_id_string_table[] = { { .name = "alarm_status", .val = BCMOLT_GPON_ONU_TIWI_ID_ALARM_STATUS }, { .name = "drift_value", .val = BCMOLT_GPON_ONU_TIWI_ID_DRIFT_VALUE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_tiwi_id = { .name = "bcmolt_gpon_onu_tiwi_id", .descr = "Identifiers for all properties contained in the gpon_onu_tiwi group.", .size = sizeof(bcmolt_gpon_onu_tiwi_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_onu_tiwi_id_string_table } };
bcmcli_enum_val bcmolt_omci_device_id_string_table[] = { { .name = "baseline", .val = BCMOLT_OMCI_DEVICE_ID_BASELINE }, { .name = "extended", .val = BCMOLT_OMCI_DEVICE_ID_EXTENDED }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_omci_device_id = { .name = "bcmolt_omci_device_id", .descr = "OMCI Device ID", .size = sizeof(bcmolt_omci_device_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_omci_device_id_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_onu_upgrade_params_fields[] = { { .name = "response_timeout_ms", .descr = "The length of time that the OLT will wait for the ONU to respond.", .offset = offsetof(bcmolt_gpon_onu_upgrade_params, response_timeout_ms), .type = &type_descr_uint32_t }, { .name = "max_retry_count", .descr = "Maximum retry count", .offset = offsetof(bcmolt_gpon_onu_upgrade_params, max_retry_count), .type = &type_descr_uint8_t }, { .name = "omci_format", .descr = "OMCI format", .offset = offsetof(bcmolt_gpon_onu_upgrade_params, omci_format), .type = &type_descr_bcmolt_omci_device_id }, { .name = "window_size", .descr = "Window size", .offset = offsetof(bcmolt_gpon_onu_upgrade_params, window_size), .type = &type_descr_uint16_t }, { .name = "activate_commit", .descr = "Automatically activate the new image and commit.", .offset = offsetof(bcmolt_gpon_onu_upgrade_params, activate_commit), .type = &type_descr_bcmos_bool }, { .name = "delay_for_commit_ms", .descr = "Delay time before COMMIT command.  Unit is milliseconds.", .offset = offsetof(bcmolt_gpon_onu_upgrade_params, delay_for_commit_ms), .type = &type_descr_uint32_t }, { .name = "max_activation_attempts", .descr = "Maximum number of re-attempts to activate the ONU.", .offset = offsetof(bcmolt_gpon_onu_upgrade_params, max_activation_attempts), .type = &type_descr_uint8_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_upgrade_params = { .name = "bcmolt_gpon_onu_upgrade_params", .descr = "GPON ONU upgrade params", .size = sizeof(bcmolt_gpon_onu_upgrade_params), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_onu_upgrade_params_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_onu_upgrade_params_fields } } };
bcmcli_enum_val bcmolt_gpon_onu_upgrade_return_code_string_table[] = { { .name = "success", .val = BCMOLT_GPON_ONU_UPGRADE_RETURN_CODE_SUCCESS }, { .name = "onu_response_timeout", .val = BCMOLT_GPON_ONU_UPGRADE_RETURN_CODE_ONU_RESPONSE_TIMEOUT }, { .name = "onu_error_response", .val = BCMOLT_GPON_ONU_UPGRADE_RETURN_CODE_ONU_ERROR_RESPONSE }, { .name = "tci_mismatch", .val = BCMOLT_GPON_ONU_UPGRADE_RETURN_CODE_TCI_MISMATCH }, { .name = "get_image_failed", .val = BCMOLT_GPON_ONU_UPGRADE_RETURN_CODE_GET_IMAGE_FAILED }, { .name = "activation_failed", .val = BCMOLT_GPON_ONU_UPGRADE_RETURN_CODE_ACTIVATION_FAILED }, { .name = "internal", .val = BCMOLT_GPON_ONU_UPGRADE_RETURN_CODE_INTERNAL }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_upgrade_return_code = { .name = "bcmolt_gpon_onu_upgrade_return_code", .descr = "GPON ONU Upgrade Return Code", .size = sizeof(bcmolt_gpon_onu_upgrade_return_code), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_onu_upgrade_return_code_string_table } };
bcmcli_enum_val bcmolt_omci_result_code_string_table[] = { { .name = "no_error", .val = BCMOLT_OMCI_RESULT_CODE_NO_ERROR }, { .name = "processing_error", .val = BCMOLT_OMCI_RESULT_CODE_PROCESSING_ERROR }, { .name = "not_supported", .val = BCMOLT_OMCI_RESULT_CODE_NOT_SUPPORTED }, { .name = "parameter_error", .val = BCMOLT_OMCI_RESULT_CODE_PARAMETER_ERROR }, { .name = "unknown_entity", .val = BCMOLT_OMCI_RESULT_CODE_UNKNOWN_ENTITY }, { .name = "unknown_instance", .val = BCMOLT_OMCI_RESULT_CODE_UNKNOWN_INSTANCE }, { .name = "device_busy", .val = BCMOLT_OMCI_RESULT_CODE_DEVICE_BUSY }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_omci_result_code = { .name = "bcmolt_omci_result_code", .descr = "G.988 OMCI Result Code.", .size = sizeof(bcmolt_omci_result_code), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_omci_result_code_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_onu_upgrade_status_fields[] = { { .name = "onu_id", .descr = "ONU ID", .offset = offsetof(bcmolt_gpon_onu_upgrade_status, onu_id), .type = &type_descr_uint16_t }, { .name = "error_code", .descr = "Error Code", .offset = offsetof(bcmolt_gpon_onu_upgrade_status, error_code), .type = &type_descr_bcmolt_gpon_onu_upgrade_return_code }, { .name = "fail_reason", .descr = "Failure reason specific to the Error Code above.", .offset = offsetof(bcmolt_gpon_onu_upgrade_status, fail_reason), .type = &type_descr_bcmolt_omci_result_code } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_upgrade_status = { .name = "bcmolt_gpon_onu_upgrade_status", .descr = "GPON ONU Upgrade Status", .size = sizeof(bcmolt_gpon_onu_upgrade_status), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_onu_upgrade_status_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_onu_upgrade_status_fields } } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_upgrade_status_list_u32 = { .name = "bcmolt_gpon_onu_upgrade_status_list_u32", .descr = "Variable-length list of gpon_onu_upgrade_status", .size = sizeof(bcmolt_gpon_onu_upgrade_status_list_u32), .base_type = BCMOLT_BASE_TYPE_ID_ARR_DYN, .x = { .arr_dyn = { .elem_type = &type_descr_bcmolt_gpon_onu_upgrade_status, .len_size = 4, .max_size = DEFAULT_DYN_ARR_MAX_SIZE / sizeof(bcmolt_gpon_onu_upgrade_status) } } };
bcmcli_enum_val bcmolt_onu_state_string_table[] = { { .name = "not_configured", .val = BCMOLT_ONU_STATE_NOT_CONFIGURED }, { .name = "inactive", .val = BCMOLT_ONU_STATE_INACTIVE }, { .name = "active", .val = BCMOLT_ONU_STATE_ACTIVE }, { .name = "active_standby", .val = BCMOLT_ONU_STATE_ACTIVE_STANDBY }, { .name = "disabled", .val = BCMOLT_ONU_STATE_DISABLED }, { .name = "awake_free", .val = BCMOLT_ONU_STATE_AWAKE_FREE }, { .name = "processing", .val = BCMOLT_ONU_STATE_PROCESSING }, { .name = "low_power_doze", .val = BCMOLT_ONU_STATE_LOW_POWER_DOZE }, { .name = "low_power_sleep", .val = BCMOLT_ONU_STATE_LOW_POWER_SLEEP }, { .name = "low_power_watch", .val = BCMOLT_ONU_STATE_LOW_POWER_WATCH }, { .name = "unaware", .val = BCMOLT_ONU_STATE_UNAWARE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_onu_state = { .name = "bcmolt_onu_state", .descr = "ONU state", .size = sizeof(bcmolt_onu_state), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_onu_state_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_onu_with_state_fields[] = { { .name = "onu_id", .descr = "ONU ID", .offset = offsetof(bcmolt_gpon_onu_with_state, onu_id), .type = &type_descr_uint16_t }, { .name = "state", .descr = "State", .offset = offsetof(bcmolt_gpon_onu_with_state, state), .type = &type_descr_bcmolt_onu_state } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_with_state = { .name = "bcmolt_gpon_onu_with_state", .descr = "GPON ONU With State", .size = sizeof(bcmolt_gpon_onu_with_state), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_onu_with_state_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_onu_with_state_fields } } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_with_state_list_u16_max_128 = { .name = "bcmolt_gpon_onu_with_state_list_u16_max_128", .descr = "Variable-length list of gpon_onu_with_state", .size = sizeof(bcmolt_gpon_onu_with_state_list_u16_max_128), .base_type = BCMOLT_BASE_TYPE_ID_ARR_DYN, .x = { .arr_dyn = { .elem_type = &type_descr_bcmolt_gpon_onu_with_state, .len_size = 2, .max_size = 128 } } };
bcmcli_enum_val bcmolt_rssi_location_sign_string_table[] = { { .name = "before", .val = BCMOLT_RSSI_LOCATION_SIGN_BEFORE }, { .name = "after", .val = BCMOLT_RSSI_LOCATION_SIGN_AFTER }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_rssi_location_sign = { .name = "bcmolt_rssi_location_sign", .descr = "rssi location sign", .size = sizeof(bcmolt_rssi_location_sign), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_rssi_location_sign_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_rssi_general_configuration_fields[] = { { .name = "location", .descr = "the pattern activation location in clock cycles relative (before) to start of burst.", .offset = offsetof(bcmolt_gpon_rssi_general_configuration, location), .type = &type_descr_uint8_t }, { .name = "location_sign", .descr = "this bit determines whether the location of the RSSI in data mode (configured as RSSI pattern 1) will be before or after the burst start.", .offset = offsetof(bcmolt_gpon_rssi_general_configuration, location_sign), .type = &type_descr_bcmolt_rssi_location_sign }, { .name = "start_pattern", .descr = "the value of the first cycle of the pattern (will be transmitted once).", .offset = offsetof(bcmolt_gpon_rssi_general_configuration, start_pattern), .type = &type_descr_uint8_t }, { .name = "middle_pattern", .descr = "the value of the pattern that will be transmitted middle_repetition times between the start and the end of the pattern.", .offset = offsetof(bcmolt_gpon_rssi_general_configuration, middle_pattern), .type = &type_descr_uint8_t }, { .name = "last_pattern", .descr = "the value of the last cycle of the pattern. will be transmitted once.", .offset = offsetof(bcmolt_gpon_rssi_general_configuration, last_pattern), .type = &type_descr_uint8_t }, { .name = "middle_repertition", .descr = "the number of times the middle pattern will be repeated.", .offset = offsetof(bcmolt_gpon_rssi_general_configuration, middle_repertition), .type = &type_descr_uint8_t }, { .name = "minimum_burst", .descr = "the minimum burst size needed measurement", .offset = offsetof(bcmolt_gpon_rssi_general_configuration, minimum_burst), .type = &type_descr_uint16_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_rssi_general_configuration = { .name = "bcmolt_gpon_rssi_general_configuration", .descr = "gpon RSSI general configuration", .size = sizeof(bcmolt_gpon_rssi_general_configuration), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_rssi_general_configuration_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_rssi_general_configuration_fields } } };
bcmcli_enum_val bcmolt_onu_post_discovery_mode_string_table[] = { { .name = "none", .val = BCMOLT_ONU_POST_DISCOVERY_MODE_NONE }, { .name = "activate", .val = BCMOLT_ONU_POST_DISCOVERY_MODE_ACTIVATE }, { .name = "disable", .val = BCMOLT_ONU_POST_DISCOVERY_MODE_DISABLE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_onu_post_discovery_mode = { .name = "bcmolt_onu_post_discovery_mode", .descr = "ONU post discovery mode", .size = sizeof(bcmolt_onu_post_discovery_mode), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_onu_post_discovery_mode_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_sn_acquisition_fields[] = { { .name = "interval", .descr = "SN process interval in milliseconds", .offset = offsetof(bcmolt_gpon_sn_acquisition, interval), .type = &type_descr_uint32_t }, { .name = "control", .descr = "SN process control", .offset = offsetof(bcmolt_gpon_sn_acquisition, control), .type = &type_descr_bcmolt_control_state }, { .name = "onu_post_discovery_mode", .descr = "Automatic operation following ONU discovery", .offset = offsetof(bcmolt_gpon_sn_acquisition, onu_post_discovery_mode), .type = &type_descr_bcmolt_onu_post_discovery_mode } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_sn_acquisition = { .name = "bcmolt_gpon_sn_acquisition", .descr = "GPON SN Acquisition", .size = sizeof(bcmolt_gpon_sn_acquisition), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_sn_acquisition_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_sn_acquisition_fields } } };
bcmcli_enum_val bcmolt_gpon_trx_cfg_id_string_table[] = { { .name = "transceiver_type", .val = BCMOLT_GPON_TRX_CFG_ID_TRANSCEIVER_TYPE }, { .name = "la_configuration", .val = BCMOLT_GPON_TRX_CFG_ID_LA_CONFIGURATION }, { .name = "bcdr", .val = BCMOLT_GPON_TRX_CFG_ID_BCDR }, { .name = "la_ranging_after_no_ed_resync", .val = BCMOLT_GPON_TRX_CFG_ID_LA_RANGING_AFTER_NO_ED_RESYNC }, { .name = "bcdr_ranging_after_no_ed_resync", .val = BCMOLT_GPON_TRX_CFG_ID_BCDR_RANGING_AFTER_NO_ED_RESYNC }, { .name = "la_ranging_after_ed_resync", .val = BCMOLT_GPON_TRX_CFG_ID_LA_RANGING_AFTER_ED_RESYNC }, { .name = "bcdr_ranging_after_ed_resync", .val = BCMOLT_GPON_TRX_CFG_ID_BCDR_RANGING_AFTER_ED_RESYNC }, { .name = "la_resync_polarity", .val = BCMOLT_GPON_TRX_CFG_ID_LA_RESYNC_POLARITY }, { .name = "bcdr_resync_polarity", .val = BCMOLT_GPON_TRX_CFG_ID_BCDR_RESYNC_POLARITY }, { .name = "bcdr_ranging_resync_conditions", .val = BCMOLT_GPON_TRX_CFG_ID_BCDR_RANGING_RESYNC_CONDITIONS }, { .name = "la_ranging_resync_conditions", .val = BCMOLT_GPON_TRX_CFG_ID_LA_RANGING_RESYNC_CONDITIONS }, { .name = "rx_configuration", .val = BCMOLT_GPON_TRX_CFG_ID_RX_CONFIGURATION }, { .name = "ranging_control_stages_configuration", .val = BCMOLT_GPON_TRX_CFG_ID_RANGING_CONTROL_STAGES_CONFIGURATION }, { .name = "energy_detect", .val = BCMOLT_GPON_TRX_CFG_ID_ENERGY_DETECT }, { .name = "end_of_burst_data_pattern", .val = BCMOLT_GPON_TRX_CFG_ID_END_OF_BURST_DATA_PATTERN }, { .name = "end_of_burst_ranging_pattern", .val = BCMOLT_GPON_TRX_CFG_ID_END_OF_BURST_RANGING_PATTERN }, { .name = "preamble", .val = BCMOLT_GPON_TRX_CFG_ID_PREAMBLE }, { .name = "delimiter", .val = BCMOLT_GPON_TRX_CFG_ID_DELIMITER }, { .name = "guard_bits", .val = BCMOLT_GPON_TRX_CFG_ID_GUARD_BITS }, { .name = "serdes_configuration", .val = BCMOLT_GPON_TRX_CFG_ID_SERDES_CONFIGURATION }, { .name = "plo_ranging", .val = BCMOLT_GPON_TRX_CFG_ID_PLO_RANGING }, { .name = "plo_data", .val = BCMOLT_GPON_TRX_CFG_ID_PLO_DATA }, { .name = "rssi_normal_config", .val = BCMOLT_GPON_TRX_CFG_ID_RSSI_NORMAL_CONFIG }, { .name = "ranging_rssi_resync_control", .val = BCMOLT_GPON_TRX_CFG_ID_RANGING_RSSI_RESYNC_CONTROL }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_trx_cfg_id = { .name = "bcmolt_gpon_trx_cfg_id", .descr = "Identifiers for all properties contained in the gpon_trx_cfg group.", .size = sizeof(bcmolt_gpon_trx_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_trx_cfg_id_string_table } };
bcmcli_enum_val bcmolt_gpon_trx_key_id_string_table[] = { { .name = "pon_ni", .val = BCMOLT_GPON_TRX_KEY_ID_PON_NI }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_trx_key_id = { .name = "bcmolt_gpon_trx_key_id", .descr = "Identifiers for all properties contained in the gpon_trx_key group.", .size = sizeof(bcmolt_gpon_trx_key_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_gpon_trx_key_id_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_host_sw_version_fields[] = { { .name = "major", .descr = "Major ", .offset = offsetof(bcmolt_host_sw_version, major), .type = &type_descr_uint8_t }, { .name = "minor", .descr = "Minor", .offset = offsetof(bcmolt_host_sw_version, minor), .type = &type_descr_uint8_t }, { .name = "revision", .descr = "Revision", .offset = offsetof(bcmolt_host_sw_version, revision), .type = &type_descr_uint8_t_hex }, { .name = "model", .descr = "Model", .offset = offsetof(bcmolt_host_sw_version, model), .type = &type_descr_uint32_t }, { .name = "build_time", .descr = "Firmware SW build time", .offset = offsetof(bcmolt_host_sw_version, build_time), .type = &string_32 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_host_sw_version = { .name = "bcmolt_host_sw_version", .descr = "Host SW Version", .size = sizeof(bcmolt_host_sw_version), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_host_sw_version_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_host_sw_version_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_hw_pon_id_fields[] = { { .name = "pon_id_1", .descr = "LSB 32 bits of PON ID.", .offset = offsetof(bcmolt_hw_pon_id, pon_id_1), .type = &type_descr_uint32_t }, { .name = "pon_id_2", .descr = "MSB 19 bits of PON ID.", .offset = offsetof(bcmolt_hw_pon_id, pon_id_2), .type = &type_descr_uint32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_hw_pon_id = { .name = "bcmolt_hw_pon_id", .descr = "HW PON ID", .size = sizeof(bcmolt_hw_pon_id), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_hw_pon_id_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_hw_pon_id_fields } } };
bcmcli_enum_val bcmolt_image_transfer_status_string_table[] = { { .name = "success", .val = BCMOLT_IMAGE_TRANSFER_STATUS_SUCCESS }, { .name = "memory_allocation_failure", .val = BCMOLT_IMAGE_TRANSFER_STATUS_MEMORY_ALLOCATION_FAILURE }, { .name = "unsupported_file_type", .val = BCMOLT_IMAGE_TRANSFER_STATUS_UNSUPPORTED_FILE_TYPE }, { .name = "crc_error", .val = BCMOLT_IMAGE_TRANSFER_STATUS_CRC_ERROR }, { .name = "block_out_of_sync", .val = BCMOLT_IMAGE_TRANSFER_STATUS_BLOCK_OUT_OF_SYNC }, { .name = "internal_error", .val = BCMOLT_IMAGE_TRANSFER_STATUS_INTERNAL_ERROR }, { .name = "invalid_state", .val = BCMOLT_IMAGE_TRANSFER_STATUS_INVALID_STATE }, { .name = "premature_termination", .val = BCMOLT_IMAGE_TRANSFER_STATUS_PREMATURE_TERMINATION }, { .name = "ack_timeout", .val = BCMOLT_IMAGE_TRANSFER_STATUS_ACK_TIMEOUT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_image_transfer_status = { .name = "bcmolt_image_transfer_status", .descr = "Image transfer status", .size = sizeof(bcmolt_image_transfer_status), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_image_transfer_status_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_indication_shaping_fields[] = { { .name = "enabled", .descr = "Whether or not the device will limit the rate of indications sent to the host.", .offset = offsetof(bcmolt_indication_shaping, enabled), .type = &type_descr_bcmos_bool }, { .name = "max_rate", .descr = "Maximum number of indications per second to be generated by the device.", .offset = offsetof(bcmolt_indication_shaping, max_rate), .type = &type_descr_uint32_t }, { .name = "max_burst", .descr = "Maximum number of indications that are allowed to be sent back-to-back.", .offset = offsetof(bcmolt_indication_shaping, max_burst), .type = &type_descr_uint32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_indication_shaping = { .name = "bcmolt_indication_shaping", .descr = "Rate limiting / shaping for the indication channel.", .size = sizeof(bcmolt_indication_shaping), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_indication_shaping_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_indication_shaping_fields } } };
bcmcli_enum_val bcmolt_iwf_mode_string_table[] = { { .name = "direct_mapping_mode", .val = BCMOLT_IWF_MODE_DIRECT_MAPPING_MODE }, { .name = "per_flow_mode", .val = BCMOLT_IWF_MODE_PER_FLOW_MODE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_iwf_mode = { .name = "bcmolt_iwf_mode", .descr = "iwf mode", .size = sizeof(bcmolt_iwf_mode), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_iwf_mode_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_la_resync_pattern_configuration_fields[] = { { .name = "resync_control", .descr = "used in normal mode", .offset = offsetof(bcmolt_la_resync_pattern_configuration, resync_control), .type = &type_descr_bcmolt_resync_control }, { .name = "ranging_resync_control", .descr = "used in ranging mode at the beginning of each ranging cycle", .offset = offsetof(bcmolt_la_resync_pattern_configuration, ranging_resync_control), .type = &type_descr_bcmolt_resync_control } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_la_resync_pattern_configuration = { .name = "bcmolt_la_resync_pattern_configuration", .descr = "LA resync pattern configuration", .size = sizeof(bcmolt_la_resync_pattern_configuration), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_la_resync_pattern_configuration_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_la_resync_pattern_configuration_fields } } };
static bcmcli_type_descr BCM_DESCR string_2048 = { .name = "string[2048]", .descr = "ASCII string with max length 2048", .size = sizeof(char[2048]), .base_type = BCMOLT_BASE_TYPE_ID_STRING };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_log_buffer_fields[] = { { .name = "buff", .descr = "buff", .offset = offsetof(bcmolt_log_buffer, buff), .type = &string_2048 }, { .name = "msg_to_read", .descr = "msg_to_read", .offset = offsetof(bcmolt_log_buffer, msg_to_read), .type = &type_descr_uint32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_log_buffer = { .name = "bcmolt_log_buffer", .descr = "log buffer", .size = sizeof(bcmolt_log_buffer), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_log_buffer_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_log_buffer_fields } } };
bcmcli_enum_val bcmolt_log_entry_auto_cfg_id_string_table[] = { { .name = "stat_alarm_cleared", .val = BCMOLT_LOG_ENTRY_AUTO_CFG_ID_STAT_ALARM_CLEARED }, { .name = "stat_alarm_raised", .val = BCMOLT_LOG_ENTRY_AUTO_CFG_ID_STAT_ALARM_RAISED }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_log_entry_auto_cfg_id = { .name = "bcmolt_log_entry_auto_cfg_id", .descr = "Identifiers for all properties contained in the log_entry_auto_cfg group.", .size = sizeof(bcmolt_log_entry_auto_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_log_entry_auto_cfg_id_string_table } };
bcmcli_enum_val bcmolt_log_entry_cfg_id_string_table[] = { { .name = "default_log_level", .val = BCMOLT_LOG_ENTRY_CFG_ID_DEFAULT_LOG_LEVEL }, { .name = "default_log_type", .val = BCMOLT_LOG_ENTRY_CFG_ID_DEFAULT_LOG_TYPE }, { .name = "log_level_print", .val = BCMOLT_LOG_ENTRY_CFG_ID_LOG_LEVEL_PRINT }, { .name = "log_level_save", .val = BCMOLT_LOG_ENTRY_CFG_ID_LOG_LEVEL_SAVE }, { .name = "log_type", .val = BCMOLT_LOG_ENTRY_CFG_ID_LOG_TYPE }, { .name = "log_style", .val = BCMOLT_LOG_ENTRY_CFG_ID_LOG_STYLE }, { .name = "log_name", .val = BCMOLT_LOG_ENTRY_CFG_ID_LOG_NAME }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_log_entry_cfg_id = { .name = "bcmolt_log_entry_cfg_id", .descr = "Identifiers for all properties contained in the log_entry_cfg group.", .size = sizeof(bcmolt_log_entry_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_log_entry_cfg_id_string_table } };
bcmcli_enum_val bcmolt_log_entry_key_id_string_table[] = { { .name = "log_id", .val = BCMOLT_LOG_ENTRY_KEY_ID_LOG_ID }, { .name = "reserved", .val = BCMOLT_LOG_ENTRY_KEY_ID_RESERVED }, { .name = "name", .val = BCMOLT_LOG_ENTRY_KEY_ID_NAME }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_log_entry_key_id = { .name = "bcmolt_log_entry_key_id", .descr = "Identifiers for all properties contained in the log_entry_key group.", .size = sizeof(bcmolt_log_entry_key_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_log_entry_key_id_string_table } };
bcmcli_enum_val bcmolt_log_entry_stat_alarm_cleared_id_string_table[] = { { .name = "stat", .val = BCMOLT_LOG_ENTRY_STAT_ALARM_CLEARED_ID_STAT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_log_entry_stat_alarm_cleared_id = { .name = "bcmolt_log_entry_stat_alarm_cleared_id", .descr = "Identifiers for all properties contained in the log_entry_stat_alarm_cleared group.", .size = sizeof(bcmolt_log_entry_stat_alarm_cleared_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_log_entry_stat_alarm_cleared_id_string_table } };
bcmcli_enum_val bcmolt_log_entry_stat_alarm_raised_id_string_table[] = { { .name = "stat", .val = BCMOLT_LOG_ENTRY_STAT_ALARM_RAISED_ID_STAT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_log_entry_stat_alarm_raised_id = { .name = "bcmolt_log_entry_stat_alarm_raised_id", .descr = "Identifiers for all properties contained in the log_entry_stat_alarm_raised group.", .size = sizeof(bcmolt_log_entry_stat_alarm_raised_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_log_entry_stat_alarm_raised_id_string_table } };
bcmcli_enum_val bcmolt_log_entry_stat_cfg_id_string_table[] = { { .name = "cfg", .val = BCMOLT_LOG_ENTRY_STAT_CFG_ID_CFG }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_log_entry_stat_cfg_id = { .name = "bcmolt_log_entry_stat_cfg_id", .descr = "Identifiers for all properties contained in the log_entry_stat_cfg group.", .size = sizeof(bcmolt_log_entry_stat_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_log_entry_stat_cfg_id_string_table } };
bcmcli_enum_val bcmolt_log_entry_stat_id_string_table[] = { { .name = "msg_count", .val = BCMOLT_LOG_ENTRY_STAT_ID_MSG_COUNT }, { .name = "lost_msg_count", .val = BCMOLT_LOG_ENTRY_STAT_ID_LOST_MSG_COUNT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_log_entry_stat_id = { .name = "bcmolt_log_entry_stat_id", .descr = "Identifiers for all properties contained in the log_entry_stat group.", .size = sizeof(bcmolt_log_entry_stat_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_log_entry_stat_id_string_table } };
bcmcli_enum_val bcmolt_log_file_id_string_table[] = { { .name = "sram", .val = BCMOLT_LOG_FILE_ID_SRAM }, { .name = "ddr", .val = BCMOLT_LOG_FILE_ID_DDR }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_log_file_id = { .name = "bcmolt_log_file_id", .descr = "log file id", .size = sizeof(bcmolt_log_file_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_log_file_id_string_table } };
bcmcli_enum_val bcmolt_log_level_string_table[] = { { .name = "no_log", .val = BCMOLT_LOG_LEVEL_NO_LOG }, { .name = "fatal", .val = BCMOLT_LOG_LEVEL_FATAL }, { .name = "error", .val = BCMOLT_LOG_LEVEL_ERROR }, { .name = "warning", .val = BCMOLT_LOG_LEVEL_WARNING }, { .name = "info", .val = BCMOLT_LOG_LEVEL_INFO }, { .name = "debug", .val = BCMOLT_LOG_LEVEL_DEBUG }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_log_level = { .name = "bcmolt_log_level", .descr = "log level", .size = sizeof(bcmolt_log_level), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_log_level_string_table } };
bcmcli_enum_val bcmolt_log_style_string_table[] = { { .name = "normal", .val = BCMOLT_LOG_STYLE_NORMAL }, { .name = "bold", .val = BCMOLT_LOG_STYLE_BOLD }, { .name = "underline", .val = BCMOLT_LOG_STYLE_UNDERLINE }, { .name = "blink", .val = BCMOLT_LOG_STYLE_BLINK }, { .name = "reverse_video", .val = BCMOLT_LOG_STYLE_REVERSE_VIDEO }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_log_style = { .name = "bcmolt_log_style", .descr = "log style", .size = sizeof(bcmolt_log_style), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_log_style_string_table } };
bcmcli_enum_val bcmolt_log_type_string_table[] = { { .name = "none", .val = BCMOLT_LOG_TYPE_NONE }, { .name = "print", .val = BCMOLT_LOG_TYPE_PRINT }, { .name = "save", .val = BCMOLT_LOG_TYPE_SAVE }, { .name = "both", .val = BCMOLT_LOG_TYPE_BOTH }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_log_type = { .name = "bcmolt_log_type", .descr = "log type", .size = sizeof(bcmolt_log_type), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_log_type_string_table } };
bcmcli_enum_val bcmolt_logger_auto_cfg_id_string_table[] = { { .name = "stat_alarm_cleared", .val = BCMOLT_LOGGER_AUTO_CFG_ID_STAT_ALARM_CLEARED }, { .name = "stat_alarm_raised", .val = BCMOLT_LOGGER_AUTO_CFG_ID_STAT_ALARM_RAISED }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_logger_auto_cfg_id = { .name = "bcmolt_logger_auto_cfg_id", .descr = "Identifiers for all properties contained in the logger_auto_cfg group.", .size = sizeof(bcmolt_logger_auto_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_logger_auto_cfg_id_string_table } };
bcmcli_enum_val bcmolt_logger_cfg_id_string_table[] = { { .name = "buffer", .val = BCMOLT_LOGGER_CFG_ID_BUFFER }, { .name = "wrap_around", .val = BCMOLT_LOGGER_CFG_ID_WRAP_AROUND }, { .name = "clear_after_read", .val = BCMOLT_LOGGER_CFG_ID_CLEAR_AFTER_READ }, { .name = "enable_log", .val = BCMOLT_LOGGER_CFG_ID_ENABLE_LOG }, { .name = "log_names", .val = BCMOLT_LOGGER_CFG_ID_LOG_NAMES }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_logger_cfg_id = { .name = "bcmolt_logger_cfg_id", .descr = "Identifiers for all properties contained in the logger_cfg group.", .size = sizeof(bcmolt_logger_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_logger_cfg_id_string_table } };
bcmcli_enum_val bcmolt_logger_clear_log_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_logger_clear_log_id = { .name = "bcmolt_logger_clear_log_id", .descr = "Identifiers for all properties contained in the logger_clear_log group.", .size = sizeof(bcmolt_logger_clear_log_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_logger_clear_log_id_string_table } };
bcmcli_enum_val bcmolt_logger_key_id_string_table[] = { { .name = "reserved", .val = BCMOLT_LOGGER_KEY_ID_RESERVED }, { .name = "file_id", .val = BCMOLT_LOGGER_KEY_ID_FILE_ID }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_logger_key_id = { .name = "bcmolt_logger_key_id", .descr = "Identifiers for all properties contained in the logger_key group.", .size = sizeof(bcmolt_logger_key_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_logger_key_id_string_table } };
bcmcli_enum_val bcmolt_logger_stat_alarm_cleared_id_string_table[] = { { .name = "stat", .val = BCMOLT_LOGGER_STAT_ALARM_CLEARED_ID_STAT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_logger_stat_alarm_cleared_id = { .name = "bcmolt_logger_stat_alarm_cleared_id", .descr = "Identifiers for all properties contained in the logger_stat_alarm_cleared group.", .size = sizeof(bcmolt_logger_stat_alarm_cleared_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_logger_stat_alarm_cleared_id_string_table } };
bcmcli_enum_val bcmolt_logger_stat_alarm_raised_id_string_table[] = { { .name = "stat", .val = BCMOLT_LOGGER_STAT_ALARM_RAISED_ID_STAT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_logger_stat_alarm_raised_id = { .name = "bcmolt_logger_stat_alarm_raised_id", .descr = "Identifiers for all properties contained in the logger_stat_alarm_raised group.", .size = sizeof(bcmolt_logger_stat_alarm_raised_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_logger_stat_alarm_raised_id_string_table } };
bcmcli_enum_val bcmolt_logger_stat_cfg_id_string_table[] = { { .name = "cfg", .val = BCMOLT_LOGGER_STAT_CFG_ID_CFG }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_logger_stat_cfg_id = { .name = "bcmolt_logger_stat_cfg_id", .descr = "Identifiers for all properties contained in the logger_stat_cfg group.", .size = sizeof(bcmolt_logger_stat_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_logger_stat_cfg_id_string_table } };
bcmcli_enum_val bcmolt_logger_stat_id_string_table[] = { { .name = "lines_in_log", .val = BCMOLT_LOGGER_STAT_ID_LINES_IN_LOG }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_logger_stat_id = { .name = "bcmolt_logger_stat_id", .descr = "Identifiers for all properties contained in the logger_stat group.", .size = sizeof(bcmolt_logger_stat_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_logger_stat_id_string_table } };
bcmcli_enum_val bcmolt_mac_table_miss_fallback_string_table[] = { { .name = "drop", .val = BCMOLT_MAC_TABLE_MISS_FALLBACK_DROP }, { .name = "default_flow", .val = BCMOLT_MAC_TABLE_MISS_FALLBACK_DEFAULT_FLOW }, { .name = "vid", .val = BCMOLT_MAC_TABLE_MISS_FALLBACK_VID }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_mac_table_miss_fallback = { .name = "bcmolt_mac_table_miss_fallback", .descr = "MAC table miss fallback", .size = sizeof(bcmolt_mac_table_miss_fallback), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_mac_table_miss_fallback_string_table } };
bcmcli_enum_val bcmolt_mac_table_learning_mode_string_table[] = { { .name = "normal", .val = BCMOLT_MAC_TABLE_LEARNING_MODE_NORMAL }, { .name = "move", .val = BCMOLT_MAC_TABLE_LEARNING_MODE_MOVE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_mac_table_learning_mode = { .name = "bcmolt_mac_table_learning_mode", .descr = "MAC table Learning mode", .size = sizeof(bcmolt_mac_table_learning_mode), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_mac_table_learning_mode_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_mac_table_configuration_fields[] = { { .name = "miss_fallback", .descr = "Behavior for downstream traffic when MAC table lookup fails.", .offset = offsetof(bcmolt_mac_table_configuration, miss_fallback), .type = &type_descr_bcmolt_mac_table_miss_fallback }, { .name = "default_flow_id", .descr = "Flow ID assigned to upstream traffic on a MAC table miss if miss_fallback is set to default_flow.", .offset = offsetof(bcmolt_mac_table_configuration, default_flow_id), .type = &type_descr_uint16_t }, { .name = "aging_time", .descr = "Aging time in seconds.  If no traffic is seen for a given MAC address / VID for this length of time, the entry will age and the host will be notified via indication.", .offset = offsetof(bcmolt_mac_table_configuration, aging_time), .type = &type_descr_uint32_t }, { .name = "learning_mode", .descr = "Learning table mode.", .offset = offsetof(bcmolt_mac_table_configuration, learning_mode), .type = &type_descr_bcmolt_mac_table_learning_mode }, { .name = "automatic_mac_learning", .descr = "If enabled, new MAC table entries are added automatically the first time a new MAC address/VID combination is seen.  If disabled, no actions are taken automatically except notifying the host via indication.", .offset = offsetof(bcmolt_mac_table_configuration, automatic_mac_learning), .type = &type_descr_bcmolt_control_state }, { .name = "automatic_mac_aging", .descr = "If enabled, MAC table entries are deleted automatically when they age.  If disabled, no actions are taken automatically except notifying the host via indication.", .offset = offsetof(bcmolt_mac_table_configuration, automatic_mac_aging), .type = &type_descr_bcmolt_control_state }, { .name = "automatic_mac_move", .descr = "Only applicable if learning_mode is move.  If enabled, MAC table entries are automatically updated when a MAC move condition is encountered.  If disabled, no actions are taken automatically except notifying the host via indication.", .offset = offsetof(bcmolt_mac_table_configuration, automatic_mac_move), .type = &type_descr_bcmolt_control_state }, { .name = "automatic_static_mode", .descr = "If enabled, all MAC entries that are added automatically via automatic_mac_learning and automatic_mac_move will be treated as static (not aging).", .offset = offsetof(bcmolt_mac_table_configuration, automatic_static_mode), .type = &type_descr_bcmos_bool } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_mac_table_configuration = { .name = "bcmolt_mac_table_configuration", .descr = "MAC table configuration", .size = sizeof(bcmolt_mac_table_configuration), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_mac_table_configuration_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_mac_table_configuration_fields } } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_macaddress_list_u32 = { .name = "bcmolt_macaddress_list_u32", .descr = "Variable-length list of MacAddress", .size = sizeof(bcmolt_macaddress_list_u32), .base_type = BCMOLT_BASE_TYPE_ID_ARR_DYN, .x = { .arr_dyn = { .elem_type = &type_descr_bcmos_mac_address, .len_size = 4, .max_size = DEFAULT_DYN_ARR_MAX_SIZE / sizeof(bcmos_mac_address) } } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_macaddress_list_u32_max_2048 = { .name = "bcmolt_macaddress_list_u32_max_2048", .descr = "Variable-length list of MacAddress", .size = sizeof(bcmolt_macaddress_list_u32_max_2048), .base_type = BCMOLT_BASE_TYPE_ID_ARR_DYN, .x = { .arr_dyn = { .elem_type = &type_descr_bcmos_mac_address, .len_size = 4, .max_size = 2048 } } };
bcmcli_enum_val bcmolt_mapping_tag_method_string_table[] = { { .name = "outer_vid", .val = BCMOLT_MAPPING_TAG_METHOD_OUTER_VID }, { .name = "inner_vid", .val = BCMOLT_MAPPING_TAG_METHOD_INNER_VID }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_mapping_tag_method = { .name = "bcmolt_mapping_tag_method", .descr = "Mapping tag method", .size = sizeof(bcmolt_mapping_tag_method), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_mapping_tag_method_string_table } };
bcmcli_enum_val bcmolt_nni_auto_cfg_id_string_table[] = { { .name = "stat_alarm_cleared", .val = BCMOLT_NNI_AUTO_CFG_ID_STAT_ALARM_CLEARED }, { .name = "stat_alarm_raised", .val = BCMOLT_NNI_AUTO_CFG_ID_STAT_ALARM_RAISED }, { .name = "status_changed", .val = BCMOLT_NNI_AUTO_CFG_ID_STATUS_CHANGED }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_nni_auto_cfg_id = { .name = "bcmolt_nni_auto_cfg_id", .descr = "Identifiers for all properties contained in the nni_auto_cfg group.", .size = sizeof(bcmolt_nni_auto_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_nni_auto_cfg_id_string_table } };
bcmcli_enum_val bcmolt_nni_cfg_id_string_table[] = { { .name = "remote_loopback", .val = BCMOLT_NNI_CFG_ID_REMOTE_LOOPBACK }, { .name = "line_loopback", .val = BCMOLT_NNI_CFG_ID_LINE_LOOPBACK }, { .name = "mac_address", .val = BCMOLT_NNI_CFG_ID_MAC_ADDRESS }, { .name = "nni_status", .val = BCMOLT_NNI_CFG_ID_NNI_STATUS }, { .name = "nni_backup_status", .val = BCMOLT_NNI_CFG_ID_NNI_BACKUP_STATUS }, { .name = "active_nni", .val = BCMOLT_NNI_CFG_ID_ACTIVE_NNI }, { .name = "nni_status_polling_interval_ms", .val = BCMOLT_NNI_CFG_ID_NNI_STATUS_POLLING_INTERVAL_MS }, { .name = "autoswitch", .val = BCMOLT_NNI_CFG_ID_AUTOSWITCH }, { .name = "flow_control", .val = BCMOLT_NNI_CFG_ID_FLOW_CONTROL }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_nni_cfg_id = { .name = "bcmolt_nni_cfg_id", .descr = "Identifiers for all properties contained in the nni_cfg group.", .size = sizeof(bcmolt_nni_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_nni_cfg_id_string_table } };
bcmcli_enum_val bcmolt_nni_connection_string_table[] = { { .name = "primary", .val = BCMOLT_NNI_CONNECTION_PRIMARY }, { .name = "backup", .val = BCMOLT_NNI_CONNECTION_BACKUP }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_nni_connection = { .name = "bcmolt_nni_connection", .descr = "NNI Connection", .size = sizeof(bcmolt_nni_connection), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_nni_connection_string_table } };
bcmcli_enum_val bcmolt_nni_key_id_string_table[] = { { .name = "pon_ni", .val = BCMOLT_NNI_KEY_ID_PON_NI }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_nni_key_id = { .name = "bcmolt_nni_key_id", .descr = "Identifiers for all properties contained in the nni_key group.", .size = sizeof(bcmolt_nni_key_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_nni_key_id_string_table } };
bcmcli_enum_val bcmolt_trivalent_string_table[] = { { .name = "false", .val = BCMOLT_TRIVALENT_FALSE }, { .name = "true", .val = BCMOLT_TRIVALENT_TRUE }, { .name = "not_applicable", .val = BCMOLT_TRIVALENT_NOT_APPLICABLE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_trivalent = { .name = "bcmolt_trivalent", .descr = "Trivalent", .size = sizeof(bcmolt_trivalent), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_trivalent_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_nni_link_status_fields[] = { { .name = "link_status", .descr = "The local and remote partners are abled and ready to transmit/receive traffic.", .offset = offsetof(bcmolt_nni_link_status, link_status), .type = &type_descr_bcmolt_trivalent }, { .name = "signal_detected", .descr = "Serdes controller has detected energy on the line.  debugging purpose.", .offset = offsetof(bcmolt_nni_link_status, signal_detected), .type = &type_descr_bcmolt_trivalent }, { .name = "pmd_locked", .descr = "Indicates PMD locked.  debugging purpose.  If this is true, but the links status is not, that means the transceiver is not enabled.", .offset = offsetof(bcmolt_nni_link_status, pmd_locked), .type = &type_descr_bcmolt_trivalent } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_nni_link_status = { .name = "bcmolt_nni_link_status", .descr = "NNI Link Status", .size = sizeof(bcmolt_nni_link_status), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_nni_link_status_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_nni_link_status_fields } } };
bcmcli_enum_val bcmolt_nni_serdes_cfg_id_string_table[] = { { .name = "rx_vga", .val = BCMOLT_NNI_SERDES_CFG_ID_RX_VGA }, { .name = "rx_pf", .val = BCMOLT_NNI_SERDES_CFG_ID_RX_PF }, { .name = "rx_lfpf", .val = BCMOLT_NNI_SERDES_CFG_ID_RX_LFPF }, { .name = "rx_dfe1", .val = BCMOLT_NNI_SERDES_CFG_ID_RX_DFE1 }, { .name = "rx_dfe2", .val = BCMOLT_NNI_SERDES_CFG_ID_RX_DFE2 }, { .name = "rx_dfe3", .val = BCMOLT_NNI_SERDES_CFG_ID_RX_DFE3 }, { .name = "rx_dfe4", .val = BCMOLT_NNI_SERDES_CFG_ID_RX_DFE4 }, { .name = "rx_dfe5", .val = BCMOLT_NNI_SERDES_CFG_ID_RX_DFE5 }, { .name = "tx_pre", .val = BCMOLT_NNI_SERDES_CFG_ID_TX_PRE }, { .name = "tx_main", .val = BCMOLT_NNI_SERDES_CFG_ID_TX_MAIN }, { .name = "tx_post1", .val = BCMOLT_NNI_SERDES_CFG_ID_TX_POST1 }, { .name = "tx_post2", .val = BCMOLT_NNI_SERDES_CFG_ID_TX_POST2 }, { .name = "tx_post3", .val = BCMOLT_NNI_SERDES_CFG_ID_TX_POST3 }, { .name = "tx_amp", .val = BCMOLT_NNI_SERDES_CFG_ID_TX_AMP }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_nni_serdes_cfg_id = { .name = "bcmolt_nni_serdes_cfg_id", .descr = "Identifiers for all properties contained in the nni_serdes_cfg group.", .size = sizeof(bcmolt_nni_serdes_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_nni_serdes_cfg_id_string_table } };
bcmcli_enum_val bcmolt_nni_serdes_key_id_string_table[] = { { .name = "pon_ni", .val = BCMOLT_NNI_SERDES_KEY_ID_PON_NI }, { .name = "instance", .val = BCMOLT_NNI_SERDES_KEY_ID_INSTANCE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_nni_serdes_key_id = { .name = "bcmolt_nni_serdes_key_id", .descr = "Identifiers for all properties contained in the nni_serdes_key group.", .size = sizeof(bcmolt_nni_serdes_key_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_nni_serdes_key_id_string_table } };
bcmcli_enum_val bcmolt_nni_stat_alarm_cleared_id_string_table[] = { { .name = "stat", .val = BCMOLT_NNI_STAT_ALARM_CLEARED_ID_STAT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_nni_stat_alarm_cleared_id = { .name = "bcmolt_nni_stat_alarm_cleared_id", .descr = "Identifiers for all properties contained in the nni_stat_alarm_cleared group.", .size = sizeof(bcmolt_nni_stat_alarm_cleared_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_nni_stat_alarm_cleared_id_string_table } };
bcmcli_enum_val bcmolt_nni_stat_alarm_raised_id_string_table[] = { { .name = "stat", .val = BCMOLT_NNI_STAT_ALARM_RAISED_ID_STAT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_nni_stat_alarm_raised_id = { .name = "bcmolt_nni_stat_alarm_raised_id", .descr = "Identifiers for all properties contained in the nni_stat_alarm_raised group.", .size = sizeof(bcmolt_nni_stat_alarm_raised_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_nni_stat_alarm_raised_id_string_table } };
bcmcli_enum_val bcmolt_nni_stat_cfg_id_string_table[] = { { .name = "cfg", .val = BCMOLT_NNI_STAT_CFG_ID_CFG }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_nni_stat_cfg_id = { .name = "bcmolt_nni_stat_cfg_id", .descr = "Identifiers for all properties contained in the nni_stat_cfg group.", .size = sizeof(bcmolt_nni_stat_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_nni_stat_cfg_id_string_table } };
bcmcli_enum_val bcmolt_nni_stat_id_string_table[] = { { .name = "rx_frames_64", .val = BCMOLT_NNI_STAT_ID_RX_FRAMES_64 }, { .name = "rx_frames_65_127", .val = BCMOLT_NNI_STAT_ID_RX_FRAMES_65_127 }, { .name = "rx_frames_128_255", .val = BCMOLT_NNI_STAT_ID_RX_FRAMES_128_255 }, { .name = "rx_frames_256_511", .val = BCMOLT_NNI_STAT_ID_RX_FRAMES_256_511 }, { .name = "rx_frames_512_1023", .val = BCMOLT_NNI_STAT_ID_RX_FRAMES_512_1023 }, { .name = "rx_frames_1024_1518", .val = BCMOLT_NNI_STAT_ID_RX_FRAMES_1024_1518 }, { .name = "rx_frames_1519_2047", .val = BCMOLT_NNI_STAT_ID_RX_FRAMES_1519_2047 }, { .name = "rx_frames_2048_4095", .val = BCMOLT_NNI_STAT_ID_RX_FRAMES_2048_4095 }, { .name = "rx_frames_4096_9216", .val = BCMOLT_NNI_STAT_ID_RX_FRAMES_4096_9216 }, { .name = "rx_frames_9217_16383", .val = BCMOLT_NNI_STAT_ID_RX_FRAMES_9217_16383 }, { .name = "rx_frames", .val = BCMOLT_NNI_STAT_ID_RX_FRAMES }, { .name = "rx_bytes", .val = BCMOLT_NNI_STAT_ID_RX_BYTES }, { .name = "rx_good_frames", .val = BCMOLT_NNI_STAT_ID_RX_GOOD_FRAMES }, { .name = "rx_unicast_frames", .val = BCMOLT_NNI_STAT_ID_RX_UNICAST_FRAMES }, { .name = "rx_multicast_frames", .val = BCMOLT_NNI_STAT_ID_RX_MULTICAST_FRAMES }, { .name = "rx_broadcast_frames", .val = BCMOLT_NNI_STAT_ID_RX_BROADCAST_FRAMES }, { .name = "rx_fcs_errors", .val = BCMOLT_NNI_STAT_ID_RX_FCS_ERRORS }, { .name = "rx_control_frames", .val = BCMOLT_NNI_STAT_ID_RX_CONTROL_FRAMES }, { .name = "rx_pause_frames", .val = BCMOLT_NNI_STAT_ID_RX_PAUSE_FRAMES }, { .name = "rx_pfc_frames", .val = BCMOLT_NNI_STAT_ID_RX_PFC_FRAMES }, { .name = "rx_unsupported_opcode", .val = BCMOLT_NNI_STAT_ID_RX_UNSUPPORTED_OPCODE }, { .name = "rx_unsupported_da", .val = BCMOLT_NNI_STAT_ID_RX_UNSUPPORTED_DA }, { .name = "rx_alignment_errors", .val = BCMOLT_NNI_STAT_ID_RX_ALIGNMENT_ERRORS }, { .name = "rx_length_out_of_range", .val = BCMOLT_NNI_STAT_ID_RX_LENGTH_OUT_OF_RANGE }, { .name = "rx_code_errors", .val = BCMOLT_NNI_STAT_ID_RX_CODE_ERRORS }, { .name = "rx_oversized_frames", .val = BCMOLT_NNI_STAT_ID_RX_OVERSIZED_FRAMES }, { .name = "rx_jabber_frames", .val = BCMOLT_NNI_STAT_ID_RX_JABBER_FRAMES }, { .name = "rx_mtu_check_errors", .val = BCMOLT_NNI_STAT_ID_RX_MTU_CHECK_ERRORS }, { .name = "rx_promiscuous_frames", .val = BCMOLT_NNI_STAT_ID_RX_PROMISCUOUS_FRAMES }, { .name = "rx_vlan_frames", .val = BCMOLT_NNI_STAT_ID_RX_VLAN_FRAMES }, { .name = "rx_double_vlan_frames", .val = BCMOLT_NNI_STAT_ID_RX_DOUBLE_VLAN_FRAMES }, { .name = "rx_truncated_frames", .val = BCMOLT_NNI_STAT_ID_RX_TRUNCATED_FRAMES }, { .name = "rx_undersize_frames", .val = BCMOLT_NNI_STAT_ID_RX_UNDERSIZE_FRAMES }, { .name = "rx_fragmented_frames", .val = BCMOLT_NNI_STAT_ID_RX_FRAGMENTED_FRAMES }, { .name = "rx_runt_frames", .val = BCMOLT_NNI_STAT_ID_RX_RUNT_FRAMES }, { .name = "tx_frames_64", .val = BCMOLT_NNI_STAT_ID_TX_FRAMES_64 }, { .name = "tx_frames_65_127", .val = BCMOLT_NNI_STAT_ID_TX_FRAMES_65_127 }, { .name = "tx_frames_128_255", .val = BCMOLT_NNI_STAT_ID_TX_FRAMES_128_255 }, { .name = "tx_frames_256_511", .val = BCMOLT_NNI_STAT_ID_TX_FRAMES_256_511 }, { .name = "tx_frames_512_1023", .val = BCMOLT_NNI_STAT_ID_TX_FRAMES_512_1023 }, { .name = "tx_frames_1024_1518", .val = BCMOLT_NNI_STAT_ID_TX_FRAMES_1024_1518 }, { .name = "tx_frames_1519_2047", .val = BCMOLT_NNI_STAT_ID_TX_FRAMES_1519_2047 }, { .name = "tx_frames_2048_4095", .val = BCMOLT_NNI_STAT_ID_TX_FRAMES_2048_4095 }, { .name = "tx_frames_4096_9216", .val = BCMOLT_NNI_STAT_ID_TX_FRAMES_4096_9216 }, { .name = "tx_frames_9217_16383", .val = BCMOLT_NNI_STAT_ID_TX_FRAMES_9217_16383 }, { .name = "tx_frames", .val = BCMOLT_NNI_STAT_ID_TX_FRAMES }, { .name = "tx_bytes", .val = BCMOLT_NNI_STAT_ID_TX_BYTES }, { .name = "tx_good_frames", .val = BCMOLT_NNI_STAT_ID_TX_GOOD_FRAMES }, { .name = "tx_unicast_frames", .val = BCMOLT_NNI_STAT_ID_TX_UNICAST_FRAMES }, { .name = "tx_multicast_frames", .val = BCMOLT_NNI_STAT_ID_TX_MULTICAST_FRAMES }, { .name = "tx_broadcast_frames", .val = BCMOLT_NNI_STAT_ID_TX_BROADCAST_FRAMES }, { .name = "tx_pause_frames", .val = BCMOLT_NNI_STAT_ID_TX_PAUSE_FRAMES }, { .name = "tx_pfc_frames", .val = BCMOLT_NNI_STAT_ID_TX_PFC_FRAMES }, { .name = "tx_jabber_frames", .val = BCMOLT_NNI_STAT_ID_TX_JABBER_FRAMES }, { .name = "tx_fcs_errors", .val = BCMOLT_NNI_STAT_ID_TX_FCS_ERRORS }, { .name = "tx_control_frames", .val = BCMOLT_NNI_STAT_ID_TX_CONTROL_FRAMES }, { .name = "tx_oversize_frames", .val = BCMOLT_NNI_STAT_ID_TX_OVERSIZE_FRAMES }, { .name = "tx_fragmented_frames", .val = BCMOLT_NNI_STAT_ID_TX_FRAGMENTED_FRAMES }, { .name = "tx_error_frames", .val = BCMOLT_NNI_STAT_ID_TX_ERROR_FRAMES }, { .name = "tx_vlan_frames", .val = BCMOLT_NNI_STAT_ID_TX_VLAN_FRAMES }, { .name = "tx_double_vlan_frames", .val = BCMOLT_NNI_STAT_ID_TX_DOUBLE_VLAN_FRAMES }, { .name = "tx_runt_frames", .val = BCMOLT_NNI_STAT_ID_TX_RUNT_FRAMES }, { .name = "tx_underrun_frames", .val = BCMOLT_NNI_STAT_ID_TX_UNDERRUN_FRAMES }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_nni_stat_id = { .name = "bcmolt_nni_stat_id", .descr = "Identifiers for all properties contained in the nni_stat group.", .size = sizeof(bcmolt_nni_stat_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_nni_stat_id_string_table } };
bcmcli_enum_val bcmolt_nni_status_changed_id_string_table[] = { { .name = "new_status", .val = BCMOLT_NNI_STATUS_CHANGED_ID_NEW_STATUS }, { .name = "link", .val = BCMOLT_NNI_STATUS_CHANGED_ID_LINK }, { .name = "previous_active", .val = BCMOLT_NNI_STATUS_CHANGED_ID_PREVIOUS_ACTIVE }, { .name = "new_active", .val = BCMOLT_NNI_STATUS_CHANGED_ID_NEW_ACTIVE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_nni_status_changed_id = { .name = "bcmolt_nni_status_changed_id", .descr = "Identifiers for all properties contained in the nni_status_changed group.", .size = sizeof(bcmolt_nni_status_changed_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_nni_status_changed_id_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_oam_heartbeat_config_fields[] = { { .name = "send_period", .descr = "The period at which to send OAM info frames, and expect info responses on this link (in seconds).", .offset = offsetof(bcmolt_oam_heartbeat_config, send_period), .type = &type_descr_uint16_t }, { .name = "transmit_frame", .descr = "Transmit frame octets", .offset = offsetof(bcmolt_oam_heartbeat_config, transmit_frame), .type = &type_descr_bcmolt_u8_list_u16 }, { .name = "ignored_receive_frame_template", .descr = "Ignored receive frame template", .offset = offsetof(bcmolt_oam_heartbeat_config, ignored_receive_frame_template), .type = &type_descr_bcmolt_ethernet_frame_masked }, { .name = "receive_timeout", .descr = "The time (in seconds) to report OAM timeout after the last received OAM frame.", .offset = offsetof(bcmolt_oam_heartbeat_config, receive_timeout), .type = &type_descr_uint16_t }, { .name = "maximum_receive_size", .descr = "Maximum size of received frames.  Setting this value to zero will cause all OAM frames to be dropped.", .offset = offsetof(bcmolt_oam_heartbeat_config, maximum_receive_size), .type = &type_descr_uint16_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_oam_heartbeat_config = { .name = "bcmolt_oam_heartbeat_config", .descr = "OAM heartbeat configuration", .size = sizeof(bcmolt_oam_heartbeat_config), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_oam_heartbeat_config_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_oam_heartbeat_config_fields } } };
bcmcli_enum_val bcmolt_odn_class_string_table[] = { { .name = "n1", .val = BCMOLT_ODN_CLASS_N1 }, { .name = "n2", .val = BCMOLT_ODN_CLASS_N2 }, { .name = "e1", .val = BCMOLT_ODN_CLASS_E1 }, { .name = "e2", .val = BCMOLT_ODN_CLASS_E2 }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_odn_class = { .name = "bcmolt_odn_class", .descr = "ODN Class", .size = sizeof(bcmolt_odn_class), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_odn_class_string_table } };
bcmcli_enum_val bcmolt_omci_port_id_operation_string_table[] = { { .name = "configure", .val = BCMOLT_OMCI_PORT_ID_OPERATION_CONFIGURE }, { .name = "remove", .val = BCMOLT_OMCI_PORT_ID_OPERATION_REMOVE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_omci_port_id_operation = { .name = "bcmolt_omci_port_id_operation", .descr = "OMCI Port ID operation", .size = sizeof(bcmolt_omci_port_id_operation), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_omci_port_id_operation_string_table } };
bcmcli_enum_val bcmolt_onu_operation_string_table[] = { { .name = "inactive", .val = BCMOLT_ONU_OPERATION_INACTIVE }, { .name = "active", .val = BCMOLT_ONU_OPERATION_ACTIVE }, { .name = "disable", .val = BCMOLT_ONU_OPERATION_DISABLE }, { .name = "enable", .val = BCMOLT_ONU_OPERATION_ENABLE }, { .name = "active_standby", .val = BCMOLT_ONU_OPERATION_ACTIVE_STANDBY }, { .name = "awake_free", .val = BCMOLT_ONU_OPERATION_AWAKE_FREE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_onu_operation = { .name = "bcmolt_onu_operation", .descr = "ONU operation", .size = sizeof(bcmolt_onu_operation), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_onu_operation_string_table } };
bcmcli_enum_val bcmolt_onu_power_level_string_table[] = { { .name = "increase", .val = BCMOLT_ONU_POWER_LEVEL_INCREASE }, { .name = "decrease", .val = BCMOLT_ONU_POWER_LEVEL_DECREASE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_onu_power_level = { .name = "bcmolt_onu_power_level", .descr = "ONU Power level", .size = sizeof(bcmolt_onu_power_level), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_onu_power_level_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_onu_power_management_configuration_fields[] = { { .name = "ilowpower", .descr = "The maximum amount of time any ONU on this NI may spend in a low power state in units of 125us.", .offset = offsetof(bcmolt_onu_power_management_configuration, ilowpower), .type = &type_descr_uint32_t }, { .name = "iaware", .descr = "The minimum amount of time every ONU on his NI must spend in an aware state in units of 125us.", .offset = offsetof(bcmolt_onu_power_management_configuration, iaware), .type = &type_descr_uint32_t }, { .name = "itransinit", .descr = "The maximum amount of time required by any ONU on this NI to power up its transmitter only from a low power state in units of 125us.", .offset = offsetof(bcmolt_onu_power_management_configuration, itransinit), .type = &type_descr_uint16_t }, { .name = "itxinit", .descr = "The maximum amount of time required by any ONU on this NI to power up its transceiver (transmitter + receiver) from a low power state in units of 125us.", .offset = offsetof(bcmolt_onu_power_management_configuration, itxinit), .type = &type_descr_uint16_t }, { .name = "irxoff", .descr = "The maximum amount of time any ONU on this NI may spend with its receiver disabled in units of 125us.", .offset = offsetof(bcmolt_onu_power_management_configuration, irxoff), .type = &type_descr_uint32_t }, { .name = "low_power_clobi", .descr = "The number of consecutive non-contiguous missing allocations to allow before raising the LOSi/LOFi/LOBi alarms on any ONU on this NI.", .offset = offsetof(bcmolt_onu_power_management_configuration, low_power_clobi), .type = &type_descr_uint16_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_onu_power_management_configuration = { .name = "bcmolt_onu_power_management_configuration", .descr = "Configuration parameters for the ONU power management feature. These should match the parameters sent to the ONU via OMCI.", .size = sizeof(bcmolt_onu_power_management_configuration), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_onu_power_management_configuration_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_onu_power_management_configuration_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_onu_tuning_configuration_fields[] = { { .name = "tsource", .descr = "Tsource timer in msec", .offset = offsetof(bcmolt_onu_tuning_configuration, tsource), .type = &type_descr_uint32_t }, { .name = "ttarget", .descr = "Ttarget timer in msec", .offset = offsetof(bcmolt_onu_tuning_configuration, ttarget), .type = &type_descr_uint32_t }, { .name = "request_registration_required", .descr = "is request registration part of the tuning in process", .offset = offsetof(bcmolt_onu_tuning_configuration, request_registration_required), .type = &type_descr_bcmos_bool } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_onu_tuning_configuration = { .name = "bcmolt_onu_tuning_configuration", .descr = "onu tuning configuration", .size = sizeof(bcmolt_onu_tuning_configuration), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_onu_tuning_configuration_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_onu_tuning_configuration_fields } } };
bcmcli_enum_val bcmolt_tc_protocol_string_table[] = { { .name = "tc_layer_protocol_g_987_p_3", .val = BCMOLT_TC_PROTOCOL_TC_LAYER_PROTOCOL_G_987_P_3 }, { .name = "tc_layer_protocol_g_989_p_3", .val = BCMOLT_TC_PROTOCOL_TC_LAYER_PROTOCOL_G_989_P_3 }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_tc_protocol = { .name = "bcmolt_tc_protocol", .descr = "TC layer protocol", .size = sizeof(bcmolt_tc_protocol), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_tc_protocol_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_pon_id_fields[] = { { .name = "administrative_label", .descr = "MSB 28 bit of the PON ID", .offset = offsetof(bcmolt_pon_id, administrative_label), .type = &type_descr_uint32_t }, { .name = "dwlch_id", .descr = "LSB 4 bits of the PON ID", .offset = offsetof(bcmolt_pon_id, dwlch_id), .type = &type_descr_uint8_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_pon_id = { .name = "bcmolt_pon_id", .descr = "Identifies the TWDM channel termination within a certain domain", .size = sizeof(bcmolt_pon_id), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_pon_id_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_pon_id_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_operation_control_fields[] = { { .name = "re", .descr = "Indicates whether the Transmit Optical Level (TOL) contains the launch power of the OTL (RE=0) or of a reach extender (RE=1)", .offset = offsetof(bcmolt_operation_control, re), .type = &type_descr_uint8_t }, { .name = "odn_class", .descr = "Identifies the nominal optical parameters of the transceiver according to the ODN Optical Path Loss (OPL)", .offset = offsetof(bcmolt_operation_control, odn_class), .type = &type_descr_bcmolt_odn_class }, { .name = "ds_fec_mode", .descr = "Enable/Disable the downstream FEC. Default is Enable. Attribute can be set only when PON NI state is Inactive.", .offset = offsetof(bcmolt_operation_control, ds_fec_mode), .type = &type_descr_bcmolt_control_state }, { .name = "protocol", .descr = "When system mode is NGPON2, this parameter Indicate the TC layer protocol: ITU-T G.989.3 or ITU-T G.987.3", .offset = offsetof(bcmolt_operation_control, protocol), .type = &type_descr_bcmolt_tc_protocol }, { .name = "ds_link_type", .descr = "Optical link type (Unspecified, A, B, Both)", .offset = offsetof(bcmolt_operation_control, ds_link_type), .type = &type_descr_bcmolt_link_type }, { .name = "pon_id", .descr = "Identifies the TWDM channel termination within a certain domain", .offset = offsetof(bcmolt_operation_control, pon_id), .type = &type_descr_bcmolt_pon_id }, { .name = "c", .descr = "Transmit optical level (TOL) reference point indicator: S/R-CG or S/R-CP", .offset = offsetof(bcmolt_operation_control, c), .type = &type_descr_uint8_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_operation_control = { .name = "bcmolt_operation_control", .descr = "Operation Control", .size = sizeof(bcmolt_operation_control), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_operation_control_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_operation_control_fields } } };
bcmcli_enum_val bcmolt_packet_injection_error_string_table[] = { { .name = "gem_port_not_active", .val = BCMOLT_PACKET_INJECTION_ERROR_GEM_PORT_NOT_ACTIVE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_packet_injection_error = { .name = "bcmolt_packet_injection_error", .descr = "Packet Injection Error", .size = sizeof(bcmolt_packet_injection_error), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_packet_injection_error_string_table } };
bcmcli_enum_val bcmolt_packet_type_string_table[] = { { .name = "cpu", .val = BCMOLT_PACKET_TYPE_CPU }, { .name = "omci", .val = BCMOLT_PACKET_TYPE_OMCI }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_packet_type = { .name = "bcmolt_packet_type", .descr = "packet type", .size = sizeof(bcmolt_packet_type), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_packet_type_string_table } };
bcmcli_enum_val bcmolt_password_authentication_fail_reason_string_table[] = { { .name = "none", .val = BCMOLT_PASSWORD_AUTHENTICATION_FAIL_REASON_NONE }, { .name = "password_inconsistency", .val = BCMOLT_PASSWORD_AUTHENTICATION_FAIL_REASON_PASSWORD_INCONSISTENCY }, { .name = "password_mismatch", .val = BCMOLT_PASSWORD_AUTHENTICATION_FAIL_REASON_PASSWORD_MISMATCH }, { .name = "password_authentication_timeout", .val = BCMOLT_PASSWORD_AUTHENTICATION_FAIL_REASON_PASSWORD_AUTHENTICATION_TIMEOUT }, { .name = "onu_alarm", .val = BCMOLT_PASSWORD_AUTHENTICATION_FAIL_REASON_ONU_ALARM }, { .name = "los_event", .val = BCMOLT_PASSWORD_AUTHENTICATION_FAIL_REASON_LOS_EVENT }, { .name = "disable_event", .val = BCMOLT_PASSWORD_AUTHENTICATION_FAIL_REASON_DISABLE_EVENT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_password_authentication_fail_reason = { .name = "bcmolt_password_authentication_fail_reason", .descr = "Password authentication fail reason", .size = sizeof(bcmolt_password_authentication_fail_reason), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_password_authentication_fail_reason_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_periodic_standby_pon_monitoring_fields[] = { { .name = "interval", .descr = "interval in ms", .offset = offsetof(bcmolt_periodic_standby_pon_monitoring, interval), .type = &type_descr_uint32_t }, { .name = "control", .descr = "control", .offset = offsetof(bcmolt_periodic_standby_pon_monitoring, control), .type = &type_descr_bcmolt_control_state } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_periodic_standby_pon_monitoring = { .name = "bcmolt_periodic_standby_pon_monitoring", .descr = "Periodic Standby PON monitoring", .size = sizeof(bcmolt_periodic_standby_pon_monitoring), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_periodic_standby_pon_monitoring_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_periodic_standby_pon_monitoring_fields } } };
bcmcli_enum_val bcmolt_polarity_string_table[] = { { .name = "low", .val = BCMOLT_POLARITY_LOW }, { .name = "high", .val = BCMOLT_POLARITY_HIGH }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_polarity = { .name = "bcmolt_polarity", .descr = "Polarity", .size = sizeof(bcmolt_polarity), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_polarity_string_table } };
bcmcli_enum_val bcmolt_polling_interval_string_table[] = { { .name = "polling_disabled", .val = BCMOLT_POLLING_INTERVAL_POLLING_DISABLED }, { .name = "us_500", .val = BCMOLT_POLLING_INTERVAL_US_500 }, { .name = "ms_1", .val = BCMOLT_POLLING_INTERVAL_MS_1 }, { .name = "ms_2", .val = BCMOLT_POLLING_INTERVAL_MS_2 }, { .name = "ms_4", .val = BCMOLT_POLLING_INTERVAL_MS_4 }, { .name = "ms_8", .val = BCMOLT_POLLING_INTERVAL_MS_8 }, { .name = "ms_16", .val = BCMOLT_POLLING_INTERVAL_MS_16 }, { .name = "automatic", .val = BCMOLT_POLLING_INTERVAL_AUTOMATIC }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_polling_interval = { .name = "bcmolt_polling_interval", .descr = "Polling Interval", .size = sizeof(bcmolt_polling_interval), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_polling_interval_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_pon_aggregate_shaper_fields[] = { { .name = "bandwidth_kbps", .descr = "Rate in kbps, 0 is disabled, If rate is >1G then use 256kbps increments, if rate is < 1G then use 64kbps increments. ", .offset = offsetof(bcmolt_pon_aggregate_shaper, bandwidth_kbps), .type = &type_descr_uint32_t }, { .name = "mbs_kB", .descr = "Maximum Burst Size in KB : range is 2KB to 4MB in 1KB increments. ", .offset = offsetof(bcmolt_pon_aggregate_shaper, mbs_kB), .type = &type_descr_uint32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_pon_aggregate_shaper = { .name = "bcmolt_pon_aggregate_shaper", .descr = "Port Level Shaper Configuration:", .size = sizeof(bcmolt_pon_aggregate_shaper), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_pon_aggregate_shaper_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_pon_aggregate_shaper_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_pon_alloc_sla_fields[] = { { .name = "cbr_rt_bw", .descr = "CBR Real Time Bandwidth which require shaping of the bandwidth allocations in a fine granularity. ", .offset = offsetof(bcmolt_pon_alloc_sla, cbr_rt_bw), .type = &type_descr_uint32_t }, { .name = "cbr_nrt_bw", .descr = "Fixed Bandwidth with no critical requirement of shaping", .offset = offsetof(bcmolt_pon_alloc_sla, cbr_nrt_bw), .type = &type_descr_uint32_t }, { .name = "guaranteed_bw", .descr = "Dynamic bandwidth which the OLT is committed to allocate upon demand", .offset = offsetof(bcmolt_pon_alloc_sla, guaranteed_bw), .type = &type_descr_uint32_t }, { .name = "maximum_bw", .descr = "Maximum allocated bandwidth allowed for this alloc ID", .offset = offsetof(bcmolt_pon_alloc_sla, maximum_bw), .type = &type_descr_uint32_t }, { .name = "additional_bw_eligibility", .descr = "Alloc ID additional BW eligibility", .offset = offsetof(bcmolt_pon_alloc_sla, additional_bw_eligibility), .type = &type_descr_bcmolt_additional_bw_eligibility }, { .name = "cbr_rt_compensation", .descr = "Set to True for AllocID with CBR RT Bandwidth that requires compensation for skipped allocations during quiet window", .offset = offsetof(bcmolt_pon_alloc_sla, cbr_rt_compensation), .type = &type_descr_bcmos_bool }, { .name = "cbr_rt_ap_index", .descr = "Allocation Profile index for CBR RT Bandwidth", .offset = offsetof(bcmolt_pon_alloc_sla, cbr_rt_ap_index), .type = &type_descr_uint8_t }, { .name = "cbr_nrt_ap_index", .descr = "Allocation Profile index for CBR non-RT Bandwidth", .offset = offsetof(bcmolt_pon_alloc_sla, cbr_nrt_ap_index), .type = &type_descr_uint8_t }, { .name = "alloc_type", .descr = "Type of the alloc ID ", .offset = offsetof(bcmolt_pon_alloc_sla, alloc_type), .type = &type_descr_bcmolt_alloc_type }, { .name = "weight", .descr = "Alloc ID Weight used in case of Extended DBA mode", .offset = offsetof(bcmolt_pon_alloc_sla, weight), .type = &type_descr_uint8_t }, { .name = "priority", .descr = "Alloc ID Priority used in case of Extended DBA mode", .offset = offsetof(bcmolt_pon_alloc_sla, priority), .type = &type_descr_uint8_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_pon_alloc_sla = { .name = "bcmolt_pon_alloc_sla", .descr = "PON Alloc SLA", .size = sizeof(bcmolt_pon_alloc_sla), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_pon_alloc_sla_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_pon_alloc_sla_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_pon_available_bandwidth_fields[] = { { .name = "cbr_bw", .descr = "Total BW available for CBR real-time traffic (bytes/sec).", .offset = offsetof(bcmolt_pon_available_bandwidth, cbr_bw), .type = &type_descr_uint32_t }, { .name = "total_bw", .descr = "Total BW available for guaranteed traffic (bytes/sec)", .offset = offsetof(bcmolt_pon_available_bandwidth, total_bw), .type = &type_descr_uint32_t }, { .name = "next_onu_total_bw", .descr = "Total BW available for guaranteed traffic after new ONU is added (bytes/sec).", .offset = offsetof(bcmolt_pon_available_bandwidth, next_onu_total_bw), .type = &type_descr_uint32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_pon_available_bandwidth = { .name = "bcmolt_pon_available_bandwidth", .descr = "PON available bandwidth", .size = sizeof(bcmolt_pon_available_bandwidth), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_pon_available_bandwidth_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_pon_available_bandwidth_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_pon_dba_fields[] = { { .name = "sr_reporting_block_size", .descr = "ONU status report block size in bytes", .offset = offsetof(bcmolt_pon_dba, sr_reporting_block_size), .type = &type_descr_uint8_t }, { .name = "dba_mode", .descr = "DBA mode", .offset = offsetof(bcmolt_pon_dba, dba_mode), .type = &type_descr_bcmolt_dba_mode } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_pon_dba = { .name = "bcmolt_pon_dba", .descr = "PON DBA", .size = sizeof(bcmolt_pon_dba), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_pon_dba_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_pon_dba_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_pon_distance_fields[] = { { .name = "max_log_distance", .descr = "Max logical distance of an ONU on the PON", .offset = offsetof(bcmolt_pon_distance, max_log_distance), .type = &type_descr_uint32_t }, { .name = "max_diff_reach", .descr = "Max distance between the closest and farthest ONU", .offset = offsetof(bcmolt_pon_distance, max_diff_reach), .type = &type_descr_uint32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_pon_distance = { .name = "bcmolt_pon_distance", .descr = "PON Distance", .size = sizeof(bcmolt_pon_distance), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_pon_distance_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_pon_distance_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_pon_drift_control_fields[] = { { .name = "drift_interval", .descr = "Interval in milliseconds for ONU transmission drift monitoring (0 = disabled).", .offset = offsetof(bcmolt_pon_drift_control, drift_interval), .type = &type_descr_uint32_t }, { .name = "drift_limit", .descr = "DOWi threshold in bits", .offset = offsetof(bcmolt_pon_drift_control, drift_limit), .type = &type_descr_uint8_t }, { .name = "transmission_control_limit", .descr = "TIWi threshold in bits", .offset = offsetof(bcmolt_pon_drift_control, transmission_control_limit), .type = &type_descr_uint8_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_pon_drift_control = { .name = "bcmolt_pon_drift_control", .descr = "PON Drift Control", .size = sizeof(bcmolt_pon_drift_control), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_pon_drift_control_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_pon_drift_control_fields } } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_pon_onu_id_list_u32 = { .name = "bcmolt_pon_onu_id_list_u32", .descr = "Variable-length list of pon_onu_id", .size = sizeof(bcmolt_pon_onu_id_list_u32), .base_type = BCMOLT_BASE_TYPE_ID_ARR_DYN, .x = { .arr_dyn = { .elem_type = &type_descr_uint16_t, .len_size = 4, .max_size = DEFAULT_DYN_ARR_MAX_SIZE / sizeof(bcmolt_pon_onu_id) } } };
bcmcli_enum_val bcmolt_pon_operation_string_table[] = { { .name = "inactive", .val = BCMOLT_PON_OPERATION_INACTIVE }, { .name = "active_working", .val = BCMOLT_PON_OPERATION_ACTIVE_WORKING }, { .name = "active_standby", .val = BCMOLT_PON_OPERATION_ACTIVE_STANDBY }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_pon_operation = { .name = "bcmolt_pon_operation", .descr = "PON Operation", .size = sizeof(bcmolt_pon_operation), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_pon_operation_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_pon_power_level_fields[] = { { .name = "pls_maximum_allocation_size", .descr = "Max allocation size for PLS transmission", .offset = offsetof(bcmolt_pon_power_level, pls_maximum_allocation_size), .type = &type_descr_uint32_t }, { .name = "mode", .descr = "ONU default power level mode", .offset = offsetof(bcmolt_pon_power_level, mode), .type = &type_descr_uint8_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_pon_power_level = { .name = "bcmolt_pon_power_level", .descr = "PON Power Level", .size = sizeof(bcmolt_pon_power_level), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_pon_power_level_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_pon_power_level_fields } } };
bcmcli_enum_val bcmolt_pon_protection_switching_options_string_table[] = { { .name = "none", .val = BCMOLT_PON_PROTECTION_SWITCHING_OPTIONS_NONE }, { .name = "swift_popup", .val = BCMOLT_PON_PROTECTION_SWITCHING_OPTIONS_SWIFT_POPUP }, { .name = "debug_fast_ranging", .val = BCMOLT_PON_PROTECTION_SWITCHING_OPTIONS_DEBUG_FAST_RANGING }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_pon_protection_switching_options = { .name = "bcmolt_pon_protection_switching_options", .descr = "PON Protection Switching Options", .size = sizeof(bcmolt_pon_protection_switching_options), .base_type = BCMOLT_BASE_TYPE_ID_ENUM_MASK, .x = { .e = bcmolt_pon_protection_switching_options_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_pon_protection_switching_fields[] = { { .name = "timeout", .descr = "LOS switch over timeout in milliseconds", .offset = offsetof(bcmolt_pon_protection_switching, timeout), .type = &type_descr_uint16_t }, { .name = "gpio_pin", .descr = "GPIO pin for input/output signal", .offset = offsetof(bcmolt_pon_protection_switching, gpio_pin), .type = &type_descr_bcmolt_gpio_pin }, { .name = "options", .descr = "Options to control the protection switching process", .offset = offsetof(bcmolt_pon_protection_switching, options), .type = &type_descr_bcmolt_pon_protection_switching_options } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_pon_protection_switching = { .name = "bcmolt_pon_protection_switching", .descr = "GPON protection switching configuration", .size = sizeof(bcmolt_pon_protection_switching), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_pon_protection_switching_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_pon_protection_switching_fields } } };
bcmcli_enum_val bcmolt_pon_state_string_table[] = { { .name = "inactive", .val = BCMOLT_PON_STATE_INACTIVE }, { .name = "processing", .val = BCMOLT_PON_STATE_PROCESSING }, { .name = "active_working", .val = BCMOLT_PON_STATE_ACTIVE_WORKING }, { .name = "active_standby", .val = BCMOLT_PON_STATE_ACTIVE_STANDBY }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_pon_state = { .name = "bcmolt_pon_state", .descr = "PON state", .size = sizeof(bcmolt_pon_state), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_pon_state_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_pon_status_fields[] = { { .name = "state", .descr = "state", .offset = offsetof(bcmolt_pon_status, state), .type = &type_descr_bcmolt_pon_state }, { .name = "los_status", .descr = "LOS status", .offset = offsetof(bcmolt_pon_status, los_status), .type = &type_descr_bcmolt_status } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_pon_status = { .name = "bcmolt_pon_status", .descr = "PON Status", .size = sizeof(bcmolt_pon_status), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_pon_status_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_pon_status_fields } } };
bcmcli_enum_val bcmolt_power_levelling_control_string_table[] = { { .name = "direct", .val = BCMOLT_POWER_LEVELLING_CONTROL_DIRECT }, { .name = "decrease", .val = BCMOLT_POWER_LEVELLING_CONTROL_DECREASE }, { .name = "increase", .val = BCMOLT_POWER_LEVELLING_CONTROL_INCREASE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_power_levelling_control = { .name = "bcmolt_power_levelling_control", .descr = "power levelling control", .size = sizeof(bcmolt_power_levelling_control), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_power_levelling_control_string_table } };
bcmcli_enum_val bcmolt_power_management_transition_reason_string_table[] = { { .name = "power_management_enabled", .val = BCMOLT_POWER_MANAGEMENT_TRANSITION_REASON_POWER_MANAGEMENT_ENABLED }, { .name = "power_management_disabled", .val = BCMOLT_POWER_MANAGEMENT_TRANSITION_REASON_POWER_MANAGEMENT_DISABLED }, { .name = "sleep_request_awake", .val = BCMOLT_POWER_MANAGEMENT_TRANSITION_REASON_SLEEP_REQUEST_AWAKE }, { .name = "sleep_request_doze", .val = BCMOLT_POWER_MANAGEMENT_TRANSITION_REASON_SLEEP_REQUEST_DOZE }, { .name = "sleep_request_sleep", .val = BCMOLT_POWER_MANAGEMENT_TRANSITION_REASON_SLEEP_REQUEST_SLEEP }, { .name = "sleep_request_watch", .val = BCMOLT_POWER_MANAGEMENT_TRANSITION_REASON_SLEEP_REQUEST_WATCH }, { .name = "teri_expired", .val = BCMOLT_POWER_MANAGEMENT_TRANSITION_REASON_TERI_EXPIRED }, { .name = "talerted_expired", .val = BCMOLT_POWER_MANAGEMENT_TRANSITION_REASON_TALERTED_EXPIRED }, { .name = "alarm", .val = BCMOLT_POWER_MANAGEMENT_TRANSITION_REASON_ALARM }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_power_management_transition_reason = { .name = "bcmolt_power_management_transition_reason", .descr = "The reason that a power management state change occurred.", .size = sizeof(bcmolt_power_management_transition_reason), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_power_management_transition_reason_string_table } };
bcmcli_enum_val bcmolt_prbs_polynomial_string_table[] = { { .name = "prbs_7", .val = BCMOLT_PRBS_POLYNOMIAL_PRBS_7 }, { .name = "prbs_9", .val = BCMOLT_PRBS_POLYNOMIAL_PRBS_9 }, { .name = "prbs_11", .val = BCMOLT_PRBS_POLYNOMIAL_PRBS_11 }, { .name = "prbs_15", .val = BCMOLT_PRBS_POLYNOMIAL_PRBS_15 }, { .name = "prbs_23", .val = BCMOLT_PRBS_POLYNOMIAL_PRBS_23 }, { .name = "prbs_31", .val = BCMOLT_PRBS_POLYNOMIAL_PRBS_31 }, { .name = "prbs_58", .val = BCMOLT_PRBS_POLYNOMIAL_PRBS_58 }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_prbs_polynomial = { .name = "bcmolt_prbs_polynomial", .descr = "PRBS Polynomial", .size = sizeof(bcmolt_prbs_polynomial), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_prbs_polynomial_string_table } };
bcmcli_enum_val bcmolt_prbs_checker_mode_string_table[] = { { .name = "self_sync", .val = BCMOLT_PRBS_CHECKER_MODE_SELF_SYNC }, { .name = "initial_seed_mode", .val = BCMOLT_PRBS_CHECKER_MODE_INITIAL_SEED_MODE }, { .name = "initial_seed_mode_2", .val = BCMOLT_PRBS_CHECKER_MODE_INITIAL_SEED_MODE_2 }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_prbs_checker_mode = { .name = "bcmolt_prbs_checker_mode", .descr = "PRBS checker mode", .size = sizeof(bcmolt_prbs_checker_mode), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_prbs_checker_mode_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_prbs_checker_config_fields[] = { { .name = "polynom", .descr = "PRBS polynom type", .offset = offsetof(bcmolt_prbs_checker_config, polynom), .type = &type_descr_bcmolt_prbs_polynomial }, { .name = "mode", .descr = "PRBS LOCK state machine.", .offset = offsetof(bcmolt_prbs_checker_config, mode), .type = &type_descr_bcmolt_prbs_checker_mode }, { .name = "data_invert", .descr = "Invert or no invert for received PRBS data", .offset = offsetof(bcmolt_prbs_checker_config, data_invert), .type = &type_descr_bcmos_bool }, { .name = "control", .descr = "Enable\\Disable the US PRBS checker", .offset = offsetof(bcmolt_prbs_checker_config, control), .type = &type_descr_bcmolt_control_state } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_prbs_checker_config = { .name = "bcmolt_prbs_checker_config", .descr = "PRBS checker config", .size = sizeof(bcmolt_prbs_checker_config), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_prbs_checker_config_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_prbs_checker_config_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_prbs_generator_config_fields[] = { { .name = "polynom", .descr = "PRBS polynom type", .offset = offsetof(bcmolt_prbs_generator_config, polynom), .type = &type_descr_bcmolt_prbs_polynomial }, { .name = "error_insert", .descr = "0 to 1 transition on this signal will insert single bit error in the MSB bit of the data bus.", .offset = offsetof(bcmolt_prbs_generator_config, error_insert), .type = &type_descr_bcmos_bool }, { .name = "invert", .descr = "Invert or no invert for transmitted PRBS data", .offset = offsetof(bcmolt_prbs_generator_config, invert), .type = &type_descr_bcmos_bool }, { .name = "control", .descr = "Enable\\Disable the DS PRBS generator", .offset = offsetof(bcmolt_prbs_generator_config, control), .type = &type_descr_bcmolt_control_state } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_prbs_generator_config = { .name = "bcmolt_prbs_generator_config", .descr = "PRBS Generator config", .size = sizeof(bcmolt_prbs_generator_config), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_prbs_generator_config_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_prbs_generator_config_fields } } };
bcmcli_enum_val bcmolt_prbs_lock_state_string_table[] = { { .name = "unlocked", .val = BCMOLT_PRBS_LOCK_STATE_UNLOCKED }, { .name = "locked", .val = BCMOLT_PRBS_LOCK_STATE_LOCKED }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_prbs_lock_state = { .name = "bcmolt_prbs_lock_state", .descr = "PRBS Lock State", .size = sizeof(bcmolt_prbs_lock_state), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_prbs_lock_state_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_prbs_status_fields[] = { { .name = "lock_state", .descr = "The state of the PRBS lock", .offset = offsetof(bcmolt_prbs_status, lock_state), .type = &type_descr_bcmolt_prbs_lock_state }, { .name = "error_counts", .descr = "The bit errors observed during the PRBS test.  This field is clear on read.", .offset = offsetof(bcmolt_prbs_status, error_counts), .type = &type_descr_uint32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_prbs_status = { .name = "bcmolt_prbs_status", .descr = "That state of the PRBS test, lock state, and error counters.", .size = sizeof(bcmolt_prbs_status), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_prbs_status_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_prbs_status_fields } } };
bcmcli_enum_val bcmolt_raman_mitigation_mode_string_table[] = { { .name = "disabled", .val = BCMOLT_RAMAN_MITIGATION_MODE_DISABLED }, { .name = "random", .val = BCMOLT_RAMAN_MITIGATION_MODE_RANDOM }, { .name = "fixed", .val = BCMOLT_RAMAN_MITIGATION_MODE_FIXED }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_raman_mitigation_mode = { .name = "bcmolt_raman_mitigation_mode", .descr = "Raman mitigation mode", .size = sizeof(bcmolt_raman_mitigation_mode), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_raman_mitigation_mode_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_ranging_control_configuration_fields[] = { { .name = "wait_state_1_window_size", .descr = "wait state 1 window size", .offset = offsetof(bcmolt_ranging_control_configuration, wait_state_1_window_size), .type = &type_descr_uint8_t }, { .name = "wait_state_2_window_size", .descr = "wait state 2 window size", .offset = offsetof(bcmolt_ranging_control_configuration, wait_state_2_window_size), .type = &type_descr_uint8_t }, { .name = "wait_after_resync_4", .descr = "wait after resync 4", .offset = offsetof(bcmolt_ranging_control_configuration, wait_after_resync_4), .type = &type_descr_bcmos_bool } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_ranging_control_configuration = { .name = "bcmolt_ranging_control_configuration", .descr = "ranging control configuration", .size = sizeof(bcmolt_ranging_control_configuration), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_ranging_control_configuration_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_ranging_control_configuration_fields } } };
bcmcli_enum_val bcmolt_ranging_fail_reason_string_table[] = { { .name = "none", .val = BCMOLT_RANGING_FAIL_REASON_NONE }, { .name = "ranging_ack_timeout", .val = BCMOLT_RANGING_FAIL_REASON_RANGING_ACK_TIMEOUT }, { .name = "ploam_data_mismatch", .val = BCMOLT_RANGING_FAIL_REASON_PLOAM_DATA_MISMATCH }, { .name = "ploam_type_mismatch", .val = BCMOLT_RANGING_FAIL_REASON_PLOAM_TYPE_MISMATCH }, { .name = "ploam_onu_id_mismatch", .val = BCMOLT_RANGING_FAIL_REASON_PLOAM_ONU_ID_MISMATCH }, { .name = "drift_exceeded", .val = BCMOLT_RANGING_FAIL_REASON_DRIFT_EXCEEDED }, { .name = "no_ploam_received", .val = BCMOLT_RANGING_FAIL_REASON_NO_PLOAM_RECEIVED }, { .name = "los", .val = BCMOLT_RANGING_FAIL_REASON_LOS }, { .name = "alarms", .val = BCMOLT_RANGING_FAIL_REASON_ALARMS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_ranging_fail_reason = { .name = "bcmolt_ranging_fail_reason", .descr = "Ranging fail reason", .size = sizeof(bcmolt_ranging_fail_reason), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_ranging_fail_reason_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_ranging_resync_conditions_fields[] = { { .name = "after_init", .descr = "after init", .offset = offsetof(bcmolt_ranging_resync_conditions, after_init), .type = &type_descr_bcmos_bool }, { .name = "after_no_ed", .descr = "after no ed", .offset = offsetof(bcmolt_ranging_resync_conditions, after_no_ed), .type = &type_descr_bcmos_bool }, { .name = "after_ed", .descr = "after ed", .offset = offsetof(bcmolt_ranging_resync_conditions, after_ed), .type = &type_descr_bcmos_bool }, { .name = "after_no_del", .descr = "after no del", .offset = offsetof(bcmolt_ranging_resync_conditions, after_no_del), .type = &type_descr_bcmos_bool }, { .name = "after_ranging_access", .descr = "after ranging access", .offset = offsetof(bcmolt_ranging_resync_conditions, after_ranging_access), .type = &type_descr_bcmos_bool }, { .name = "med_val", .descr = "med val", .offset = offsetof(bcmolt_ranging_resync_conditions, med_val), .type = &type_descr_uint16_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_ranging_resync_conditions = { .name = "bcmolt_ranging_resync_conditions", .descr = "ranging resync conditions", .size = sizeof(bcmolt_ranging_resync_conditions), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_ranging_resync_conditions_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_ranging_resync_conditions_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_ranging_rssi_control_fields[] = { { .name = "after_no_ed", .descr = "after no ed", .offset = offsetof(bcmolt_ranging_rssi_control, after_no_ed), .type = &type_descr_bcmos_bool }, { .name = "after_ed", .descr = "after ed", .offset = offsetof(bcmolt_ranging_rssi_control, after_ed), .type = &type_descr_bcmos_bool }, { .name = "after_reset_3", .descr = "after reset 3", .offset = offsetof(bcmolt_ranging_rssi_control, after_reset_3), .type = &type_descr_bcmos_bool } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_ranging_rssi_control = { .name = "bcmolt_ranging_rssi_control", .descr = "ranging rssi control", .size = sizeof(bcmolt_ranging_rssi_control), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_ranging_rssi_control_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_ranging_rssi_control_fields } } };
bcmcli_enum_val bcmolt_registration_behavior_string_table[] = { { .name = "automatic", .val = BCMOLT_REGISTRATION_BEHAVIOR_AUTOMATIC }, { .name = "notify_unknown", .val = BCMOLT_REGISTRATION_BEHAVIOR_NOTIFY_UNKNOWN }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_registration_behavior = { .name = "bcmolt_registration_behavior", .descr = "Registration Behavior", .size = sizeof(bcmolt_registration_behavior), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_registration_behavior_string_table } };
bcmcli_enum_val bcmolt_request_registration_fail_reason_string_table[] = { { .name = "none", .val = BCMOLT_REQUEST_REGISTRATION_FAIL_REASON_NONE }, { .name = "registration_ploam_timeout", .val = BCMOLT_REQUEST_REGISTRATION_FAIL_REASON_REGISTRATION_PLOAM_TIMEOUT }, { .name = "onu_alarm", .val = BCMOLT_REQUEST_REGISTRATION_FAIL_REASON_ONU_ALARM }, { .name = "deactivation", .val = BCMOLT_REQUEST_REGISTRATION_FAIL_REASON_DEACTIVATION }, { .name = "disable", .val = BCMOLT_REQUEST_REGISTRATION_FAIL_REASON_DISABLE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_request_registration_fail_reason = { .name = "bcmolt_request_registration_fail_reason", .descr = "request registration fail reason", .size = sizeof(bcmolt_request_registration_fail_reason), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_request_registration_fail_reason_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_request_registration_status_fields[] = { { .name = "request_registration_state", .descr = "request registration state", .offset = offsetof(bcmolt_request_registration_status, request_registration_state), .type = &type_descr_bcmolt_control_state }, { .name = "sma_flag", .descr = "is request registration is part of sma process", .offset = offsetof(bcmolt_request_registration_status, sma_flag), .type = &type_descr_bcmos_bool } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_request_registration_status = { .name = "bcmolt_request_registration_status", .descr = "request registration status", .size = sizeof(bcmolt_request_registration_status), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_request_registration_status_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_request_registration_status_fields } } };
bcmcli_enum_val bcmolt_result_string_table[] = { { .name = "success", .val = BCMOLT_RESULT_SUCCESS }, { .name = "fail", .val = BCMOLT_RESULT_FAIL }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_result = { .name = "bcmolt_result", .descr = "Result", .size = sizeof(bcmolt_result), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_result_string_table } };
bcmcli_enum_val bcmolt_rogue_detection_algorithm_type_string_table[] = { { .name = "early_rogue_detection", .val = BCMOLT_ROGUE_DETECTION_ALGORITHM_TYPE_EARLY_ROGUE_DETECTION }, { .name = "special_map", .val = BCMOLT_ROGUE_DETECTION_ALGORITHM_TYPE_SPECIAL_MAP }, { .name = "extended_guard_time", .val = BCMOLT_ROGUE_DETECTION_ALGORITHM_TYPE_EXTENDED_GUARD_TIME }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_rogue_detection_algorithm_type = { .name = "bcmolt_rogue_detection_algorithm_type", .descr = "Type of the rogue detection algorithm.", .size = sizeof(bcmolt_rogue_detection_algorithm_type), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_rogue_detection_algorithm_type_string_table } };
bcmcli_enum_val bcmolt_rogue_detection_window_string_table[] = { { .name = "silent_window", .val = BCMOLT_ROGUE_DETECTION_WINDOW_SILENT_WINDOW }, { .name = "cut_off_window", .val = BCMOLT_ROGUE_DETECTION_WINDOW_CUT_OFF_WINDOW }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_rogue_detection_window = { .name = "bcmolt_rogue_detection_window", .descr = "Rogue ONU detection measurement type.", .size = sizeof(bcmolt_rogue_detection_window), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_rogue_detection_window_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_rogue_detection_special_map_fields[] = { { .name = "plo_size", .descr = "PLO size", .offset = offsetof(bcmolt_rogue_detection_special_map, plo_size), .type = &type_descr_uint32_t }, { .name = "alloc_id", .descr = "Alloc ID", .offset = offsetof(bcmolt_rogue_detection_special_map, alloc_id), .type = &type_descr_uint16_t }, { .name = "onu_id", .descr = "ONU ID", .offset = offsetof(bcmolt_rogue_detection_special_map, onu_id), .type = &type_descr_uint16_t }, { .name = "access_size", .descr = "Access size", .offset = offsetof(bcmolt_rogue_detection_special_map, access_size), .type = &type_descr_uint8_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_rogue_detection_special_map = { .name = "bcmolt_rogue_detection_special_map", .descr = "Rogue Detection Special Map", .size = sizeof(bcmolt_rogue_detection_special_map), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_rogue_detection_special_map_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_rogue_detection_special_map_fields } } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_rogue_detection_special_map_list_u32_max_8 = { .name = "bcmolt_rogue_detection_special_map_list_u32_max_8", .descr = "Variable-length list of rogue_detection_special_map", .size = sizeof(bcmolt_rogue_detection_special_map_list_u32_max_8), .base_type = BCMOLT_BASE_TYPE_ID_ARR_DYN, .x = { .arr_dyn = { .elem_type = &type_descr_bcmolt_rogue_detection_special_map, .len_size = 4, .max_size = 8 } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_rogue_detection_algorithm_fields[] = { { .name = "algorithm_type", .descr = "Type of the rogue detection algorithm.", .offset = offsetof(bcmolt_rogue_detection_algorithm, algorithm_type), .type = &type_descr_bcmolt_rogue_detection_algorithm_type } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_rogue_detection_algorithm_early_rogue_detection_fields[] = { { .name = "measurement_type", .descr = "Silent Window or Cut off Window", .offset = offsetof(bcmolt_rogue_detection_algorithm, u.early_rogue_detection.measurement_type) - offsetof(bcmolt_rogue_detection_algorithm, u.early_rogue_detection.measurement_type), .type = &type_descr_bcmolt_rogue_detection_window }, { .name = "interval", .descr = "Periodic process timer interval in milliseconds", .offset = offsetof(bcmolt_rogue_detection_algorithm, u.early_rogue_detection.interval) - offsetof(bcmolt_rogue_detection_algorithm, u.early_rogue_detection.measurement_type), .type = &type_descr_uint32_t }, { .name = "second_ranging_window", .descr = "Determines whether the second ranging window should be invoked or not.", .offset = offsetof(bcmolt_rogue_detection_algorithm, u.early_rogue_detection.second_ranging_window) - offsetof(bcmolt_rogue_detection_algorithm, u.early_rogue_detection.measurement_type), .type = &type_descr_bcmos_bool }, { .name = "alloc_type_to_scan", .descr = "Alloc type to scan during rogue detection.  Unused, previously used, or all Alloc-IDs.", .offset = offsetof(bcmolt_rogue_detection_algorithm, u.early_rogue_detection.alloc_type_to_scan) - offsetof(bcmolt_rogue_detection_algorithm, u.early_rogue_detection.measurement_type), .type = &type_descr_bcmolt_alloc_type_to_scan } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_rogue_detection_algorithm_early_rogue_detection = { .name = "bcmolt_rogue_detection_algorithm_early_rogue_detection", .descr = "Rogue Detection Algorithm Early Rogue Detection", .size = sizeof(((bcmolt_rogue_detection_algorithm *)0)->u.early_rogue_detection), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_rogue_detection_algorithm_early_rogue_detection_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_rogue_detection_algorithm_early_rogue_detection_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_rogue_detection_algorithm_special_map_fields[] = { { .name = "accesses", .descr = "Accesses", .offset = offsetof(bcmolt_rogue_detection_algorithm, u.special_map.accesses) - offsetof(bcmolt_rogue_detection_algorithm, u.special_map.accesses), .type = &type_descr_bcmolt_rogue_detection_special_map_list_u32_max_8 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_rogue_detection_algorithm_special_map = { .name = "bcmolt_rogue_detection_algorithm_special_map", .descr = "Rogue Detection Algorithm Special Map", .size = sizeof(((bcmolt_rogue_detection_algorithm *)0)->u.special_map), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_rogue_detection_algorithm_special_map_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_rogue_detection_algorithm_special_map_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_rogue_detection_algorithm_extended_guard_time_fields[] = { { .name = "additional_guard_time", .descr = "Additional guard time (in bytes) for all ONUs on this PON.", .offset = offsetof(bcmolt_rogue_detection_algorithm, u.extended_guard_time.additional_guard_time) - offsetof(bcmolt_rogue_detection_algorithm, u.extended_guard_time.additional_guard_time), .type = &type_descr_uint32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_rogue_detection_algorithm_extended_guard_time = { .name = "bcmolt_rogue_detection_algorithm_extended_guard_time", .descr = "Rogue Detection Algorithm Extended Guard Time", .size = sizeof(((bcmolt_rogue_detection_algorithm *)0)->u.extended_guard_time), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_rogue_detection_algorithm_extended_guard_time_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_rogue_detection_algorithm_extended_guard_time_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_rogue_detection_algorithm_union_fields[] = { { .name = "u.early_rogue_detection", .descr = "", .offset = offsetof(bcmolt_rogue_detection_algorithm, u.early_rogue_detection), .type = &type_descr_bcmolt_rogue_detection_algorithm_early_rogue_detection }, { .name = "u.special_map", .descr = "", .offset = offsetof(bcmolt_rogue_detection_algorithm, u.special_map), .type = &type_descr_bcmolt_rogue_detection_algorithm_special_map }, { .name = "u.extended_guard_time", .descr = "", .offset = offsetof(bcmolt_rogue_detection_algorithm, u.extended_guard_time), .type = &type_descr_bcmolt_rogue_detection_algorithm_extended_guard_time }, { } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_rogue_detection_algorithm = { .name = "bcmolt_rogue_detection_algorithm", .descr = "Type and attributes of the rogue detection algorithm.", .size = sizeof(bcmolt_rogue_detection_algorithm), .base_type = BCMOLT_BASE_TYPE_ID_UNION, .x = { .u = { .num_common_fields = sizeof(type_descr_bcmolt_rogue_detection_algorithm_fields) / sizeof(bcmcli_field_descr), .common_fields = type_descr_bcmolt_rogue_detection_algorithm_fields, .classifier_idx = 0, .union_fields = type_descr_bcmolt_rogue_detection_algorithm_union_fields } } };
bcmcli_enum_val bcmolt_rogue_measurement_result_string_table[] = { { .name = "rssi_complete", .val = BCMOLT_ROGUE_MEASUREMENT_RESULT_RSSI_COMPLETE }, { .name = "not_performed", .val = BCMOLT_ROGUE_MEASUREMENT_RESULT_NOT_PERFORMED }, { .name = "rogue_cycle_stop", .val = BCMOLT_ROGUE_MEASUREMENT_RESULT_ROGUE_CYCLE_STOP }, { .name = "rssi_error", .val = BCMOLT_ROGUE_MEASUREMENT_RESULT_RSSI_ERROR }, { .name = "rssi_not_complete", .val = BCMOLT_ROGUE_MEASUREMENT_RESULT_RSSI_NOT_COMPLETE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_rogue_measurement_result = { .name = "bcmolt_rogue_measurement_result", .descr = "Status of the rogue ONU detection result.", .size = sizeof(bcmolt_rogue_measurement_result), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_rogue_measurement_result_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_rogue_onu_detection_process_fields[] = { { .name = "control", .descr = "Enable/Disable the rogue ONU detection process.", .offset = offsetof(bcmolt_rogue_onu_detection_process, control), .type = &type_descr_bcmolt_control_state }, { .name = "detection_algorithm", .descr = "Type and attributes of the rogue detection algorithm.", .offset = offsetof(bcmolt_rogue_onu_detection_process, detection_algorithm), .type = &type_descr_bcmolt_rogue_detection_algorithm } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_rogue_onu_detection_process = { .name = "bcmolt_rogue_onu_detection_process", .descr = "Configures the attributes of the rogue ONU detection periodic process.", .size = sizeof(bcmolt_rogue_onu_detection_process), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_rogue_onu_detection_process_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_rogue_onu_detection_process_fields } } };
bcmcli_enum_val bcmolt_rogue_scan_status_string_table[] = { { .name = "complete", .val = BCMOLT_ROGUE_SCAN_STATUS_COMPLETE }, { .name = "llid_state_is_bad", .val = BCMOLT_ROGUE_SCAN_STATUS_LLID_STATE_IS_BAD }, { .name = "llid_is_oor", .val = BCMOLT_ROGUE_SCAN_STATUS_LLID_IS_OOR }, { .name = "scan_err_nores", .val = BCMOLT_ROGUE_SCAN_STATUS_SCAN_ERR_NORES }, { .name = "scan_err_internal", .val = BCMOLT_ROGUE_SCAN_STATUS_SCAN_ERR_INTERNAL }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_rogue_scan_status = { .name = "bcmolt_rogue_scan_status", .descr = "Rogue Scan Indication Status ", .size = sizeof(bcmolt_rogue_scan_status), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_rogue_scan_status_string_table } };
bcmcli_enum_val bcmolt_rssi_measurement_fail_reason_string_table[] = { { .name = "none", .val = BCMOLT_RSSI_MEASUREMENT_FAIL_REASON_NONE }, { .name = "no_delimiter", .val = BCMOLT_RSSI_MEASUREMENT_FAIL_REASON_NO_DELIMITER }, { .name = "no_access", .val = BCMOLT_RSSI_MEASUREMENT_FAIL_REASON_NO_ACCESS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_rssi_measurement_fail_reason = { .name = "bcmolt_rssi_measurement_fail_reason", .descr = "RSSI measurement fail reason", .size = sizeof(bcmolt_rssi_measurement_fail_reason), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_rssi_measurement_fail_reason_string_table } };
bcmcli_enum_val bcmolt_secure_mutual_authentication_fail_reason_string_table[] = { { .name = "timeout", .val = BCMOLT_SECURE_MUTUAL_AUTHENTICATION_FAIL_REASON_TIMEOUT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_secure_mutual_authentication_fail_reason = { .name = "bcmolt_secure_mutual_authentication_fail_reason", .descr = "secure mutual authentication fail reason", .size = sizeof(bcmolt_secure_mutual_authentication_fail_reason), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_secure_mutual_authentication_fail_reason_string_table } };
bcmcli_enum_val bcmolt_serdes_ranging_mode_string_table[] = { { .name = "ed_mode", .val = BCMOLT_SERDES_RANGING_MODE_ED_MODE }, { .name = "bcdr_reset_mode", .val = BCMOLT_SERDES_RANGING_MODE_BCDR_RESET_MODE }, { .name = "fast_mode", .val = BCMOLT_SERDES_RANGING_MODE_FAST_MODE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_serdes_ranging_mode = { .name = "bcmolt_serdes_ranging_mode", .descr = "serdes ranging mode", .size = sizeof(bcmolt_serdes_ranging_mode), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_serdes_ranging_mode_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_serdes_configuration_fields[] = { { .name = "ranging_mode", .descr = "ranging mode", .offset = offsetof(bcmolt_serdes_configuration, ranging_mode), .type = &type_descr_bcmolt_serdes_ranging_mode }, { .name = "multi_ed_mode", .descr = "multi ed mode", .offset = offsetof(bcmolt_serdes_configuration, multi_ed_mode), .type = &type_descr_bcmos_bool }, { .name = "burst_enable_start_offset", .descr = "burst enable start offset", .offset = offsetof(bcmolt_serdes_configuration, burst_enable_start_offset), .type = &type_descr_uint16_t }, { .name = "burst_enable_end_offset", .descr = "burst enable end offset", .offset = offsetof(bcmolt_serdes_configuration, burst_enable_end_offset), .type = &type_descr_uint16_t }, { .name = "ed_invertion", .descr = "ed invertion", .offset = offsetof(bcmolt_serdes_configuration, ed_invertion), .type = &type_descr_bcmos_bool } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_serdes_configuration = { .name = "bcmolt_serdes_configuration", .descr = "serdes configuration", .size = sizeof(bcmolt_serdes_configuration), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_serdes_configuration_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_serdes_configuration_fields } } };
bcmcli_enum_val bcmolt_serdes_instance_string_table[] = { { .name = "instance_0", .val = BCMOLT_SERDES_INSTANCE_INSTANCE_0 }, { .name = "instance_1", .val = BCMOLT_SERDES_INSTANCE_INSTANCE_1 }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_serdes_instance = { .name = "bcmolt_serdes_instance", .descr = "SerDes Instance", .size = sizeof(bcmolt_serdes_instance), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_serdes_instance_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_serial_number_fields[] = { { .name = "vendor_id", .descr = "vendor id", .offset = offsetof(bcmolt_serial_number, vendor_id), .type = &type_descr_uint8_t_arr_4 }, { .name = "vendor_specific", .descr = "vendor specific", .offset = offsetof(bcmolt_serial_number, vendor_specific), .type = &type_descr_uint8_t_arr_4 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_serial_number = { .name = "bcmolt_serial_number", .descr = "serial number", .size = sizeof(bcmolt_serial_number), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_serial_number_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_serial_number_fields } } };
bcmcli_enum_val bcmolt_shaper_mode_string_table[] = { { .name = "layer_1", .val = BCMOLT_SHAPER_MODE_LAYER_1 }, { .name = "layer_2", .val = BCMOLT_SHAPER_MODE_LAYER_2 }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_shaper_mode = { .name = "bcmolt_shaper_mode", .descr = "Shaper Mode", .size = sizeof(bcmolt_shaper_mode), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_shaper_mode_string_table } };
bcmcli_enum_val bcmolt_software_error_cfg_id_string_table[] = { { .name = "entry", .val = BCMOLT_SOFTWARE_ERROR_CFG_ID_ENTRY }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_software_error_cfg_id = { .name = "bcmolt_software_error_cfg_id", .descr = "Identifiers for all properties contained in the software_error_cfg group.", .size = sizeof(bcmolt_software_error_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_software_error_cfg_id_string_table } };
bcmcli_enum_val bcmolt_software_error_key_id_string_table[] = { { .name = "reserved", .val = BCMOLT_SOFTWARE_ERROR_KEY_ID_RESERVED }, { .name = "index", .val = BCMOLT_SOFTWARE_ERROR_KEY_ID_IDX }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_software_error_key_id = { .name = "bcmolt_software_error_key_id", .descr = "Identifiers for all properties contained in the software_error_key group.", .size = sizeof(bcmolt_software_error_key_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_software_error_key_id_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_solicited_scheduler_fields[] = { { .name = "bandwidth_Kbps", .descr = "Bandwidth (Kbps)", .offset = offsetof(bcmolt_solicited_scheduler, bandwidth_Kbps), .type = &type_descr_uint32_t }, { .name = "max_burst_size_tq", .descr = "Max Burst Size (TQ)", .offset = offsetof(bcmolt_solicited_scheduler, max_burst_size_tq), .type = &type_descr_uint32_t }, { .name = "priority", .descr = "Priority", .offset = offsetof(bcmolt_solicited_scheduler, priority), .type = &type_descr_uint8_t }, { .name = "weight_tq", .descr = "Weight (TQ)", .offset = offsetof(bcmolt_solicited_scheduler, weight_tq), .type = &type_descr_uint32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_solicited_scheduler = { .name = "bcmolt_solicited_scheduler", .descr = "Solicited Scheduler", .size = sizeof(bcmolt_solicited_scheduler), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_solicited_scheduler_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_solicited_scheduler_fields } } };
bcmcli_enum_val bcmolt_stat_condition_type_string_table[] = { { .name = "none", .val = BCMOLT_STAT_CONDITION_TYPE_NONE }, { .name = "rate_threshold", .val = BCMOLT_STAT_CONDITION_TYPE_RATE_THRESHOLD }, { .name = "rate_range", .val = BCMOLT_STAT_CONDITION_TYPE_RATE_RANGE }, { .name = "value_threshold", .val = BCMOLT_STAT_CONDITION_TYPE_VALUE_THRESHOLD }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_stat_condition_type = { .name = "bcmolt_stat_condition_type", .descr = "All possible statistic alarm trigger conditions.", .size = sizeof(bcmolt_stat_condition_type), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_stat_condition_type_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_stat_alarm_trigger_config_fields[] = { { .name = "type", .descr = "Type of condition to trigger the alarm.", .offset = offsetof(bcmolt_stat_alarm_trigger_config, type), .type = &type_descr_bcmolt_stat_condition_type } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_stat_alarm_trigger_config_rate_threshold_fields[] = { { .name = "rising", .descr = "Rising Threshold", .offset = offsetof(bcmolt_stat_alarm_trigger_config, u.rate_threshold.rising) - offsetof(bcmolt_stat_alarm_trigger_config, u.rate_threshold.rising), .type = &type_descr_uint64_t }, { .name = "falling", .descr = "The alarm is cleared if the stats delta value per second becomes less than this threshold level.", .offset = offsetof(bcmolt_stat_alarm_trigger_config, u.rate_threshold.falling) - offsetof(bcmolt_stat_alarm_trigger_config, u.rate_threshold.rising), .type = &type_descr_uint64_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_stat_alarm_trigger_config_rate_threshold = { .name = "bcmolt_stat_alarm_trigger_config_rate_threshold", .descr = "Statistic Alarm Trigger Configuration Rate threshold", .size = sizeof(((bcmolt_stat_alarm_trigger_config *)0)->u.rate_threshold), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_stat_alarm_trigger_config_rate_threshold_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_stat_alarm_trigger_config_rate_threshold_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_stat_alarm_trigger_config_rate_range_fields[] = { { .name = "upper", .descr = "The alarm is raised if the stats delta value per second becomes greater than this upper level.", .offset = offsetof(bcmolt_stat_alarm_trigger_config, u.rate_range.upper) - offsetof(bcmolt_stat_alarm_trigger_config, u.rate_range.upper), .type = &type_descr_uint64_t }, { .name = "lower", .descr = "The alarm is raised if the stats delta value per second becomes less than this lower level.", .offset = offsetof(bcmolt_stat_alarm_trigger_config, u.rate_range.lower) - offsetof(bcmolt_stat_alarm_trigger_config, u.rate_range.upper), .type = &type_descr_uint64_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_stat_alarm_trigger_config_rate_range = { .name = "bcmolt_stat_alarm_trigger_config_rate_range", .descr = "Statistic Alarm Trigger Configuration Rate range", .size = sizeof(((bcmolt_stat_alarm_trigger_config *)0)->u.rate_range), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_stat_alarm_trigger_config_rate_range_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_stat_alarm_trigger_config_rate_range_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_stat_alarm_trigger_config_value_threshold_fields[] = { { .name = "limit", .descr = "The alarm is raised if the stats sample value becomes greater than this level.  The alarm is cleared when the host clears the stats.", .offset = offsetof(bcmolt_stat_alarm_trigger_config, u.value_threshold.limit) - offsetof(bcmolt_stat_alarm_trigger_config, u.value_threshold.limit), .type = &type_descr_uint64_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_stat_alarm_trigger_config_value_threshold = { .name = "bcmolt_stat_alarm_trigger_config_value_threshold", .descr = "Statistic Alarm Trigger Configuration Value threshold", .size = sizeof(((bcmolt_stat_alarm_trigger_config *)0)->u.value_threshold), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_stat_alarm_trigger_config_value_threshold_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_stat_alarm_trigger_config_value_threshold_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_stat_alarm_trigger_config_union_fields[] = { { }, { .name = "u.rate_threshold", .descr = "", .offset = offsetof(bcmolt_stat_alarm_trigger_config, u.rate_threshold), .type = &type_descr_bcmolt_stat_alarm_trigger_config_rate_threshold }, { .name = "u.rate_range", .descr = "", .offset = offsetof(bcmolt_stat_alarm_trigger_config, u.rate_range), .type = &type_descr_bcmolt_stat_alarm_trigger_config_rate_range }, { .name = "u.value_threshold", .descr = "", .offset = offsetof(bcmolt_stat_alarm_trigger_config, u.value_threshold), .type = &type_descr_bcmolt_stat_alarm_trigger_config_value_threshold }, { } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_stat_alarm_trigger_config = { .name = "bcmolt_stat_alarm_trigger_config", .descr = "Statistic alarm trigger configuration.", .size = sizeof(bcmolt_stat_alarm_trigger_config), .base_type = BCMOLT_BASE_TYPE_ID_UNION, .x = { .u = { .num_common_fields = sizeof(type_descr_bcmolt_stat_alarm_trigger_config_fields) / sizeof(bcmcli_field_descr), .common_fields = type_descr_bcmolt_stat_alarm_trigger_config_fields, .classifier_idx = 0, .union_fields = type_descr_bcmolt_stat_alarm_trigger_config_union_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_stat_alarm_soak_config_fields[] = { { .name = "active_soak_time", .descr = "Active Soak Time", .offset = offsetof(bcmolt_stat_alarm_soak_config, active_soak_time), .type = &type_descr_uint32_t }, { .name = "clear_soak_time", .descr = "Clear Soak Time", .offset = offsetof(bcmolt_stat_alarm_soak_config, clear_soak_time), .type = &type_descr_uint32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_stat_alarm_soak_config = { .name = "bcmolt_stat_alarm_soak_config", .descr = "Statistics alarm soaking configuration", .size = sizeof(bcmolt_stat_alarm_soak_config), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_stat_alarm_soak_config_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_stat_alarm_soak_config_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_stat_alarm_config_fields[] = { { .name = "trigger", .descr = "Statistics alarm trigger configuration.", .offset = offsetof(bcmolt_stat_alarm_config, trigger), .type = &type_descr_bcmolt_stat_alarm_trigger_config }, { .name = "soak", .descr = "Statistics alarm soaking configuration", .offset = offsetof(bcmolt_stat_alarm_config, soak), .type = &type_descr_bcmolt_stat_alarm_soak_config } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_stat_alarm_config = { .name = "bcmolt_stat_alarm_config", .descr = "Statistic alarm configuration.", .size = sizeof(bcmolt_stat_alarm_config), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_stat_alarm_config_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_stat_alarm_config_fields } } };
static bcmcli_type_descr BCM_DESCR string_100 = { .name = "string[100]", .descr = "ASCII string with max length 100", .size = sizeof(char[100]), .base_type = BCMOLT_BASE_TYPE_ID_STRING };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_str_100_fields[] = { { .name = "str", .descr = "String", .offset = offsetof(bcmolt_str_100, str), .type = &string_100 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_str_100 = { .name = "bcmolt_str_100", .descr = "ASCII string with max length 100", .size = sizeof(bcmolt_str_100), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_str_100_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_str_100_fields } } };
static bcmcli_type_descr BCM_DESCR string_1000 = { .name = "string[1000]", .descr = "ASCII string with max length 1000", .size = sizeof(char[1000]), .base_type = BCMOLT_BASE_TYPE_ID_STRING };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_str_1000_fields[] = { { .name = "str", .descr = "String", .offset = offsetof(bcmolt_str_1000, str), .type = &string_1000 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_str_1000 = { .name = "bcmolt_str_1000", .descr = "ASCII string with max length 1000", .size = sizeof(bcmolt_str_1000), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_str_1000_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_str_1000_fields } } };
static bcmcli_type_descr BCM_DESCR string_2000 = { .name = "string[2000]", .descr = "ASCII string with max length 2000", .size = sizeof(char[2000]), .base_type = BCMOLT_BASE_TYPE_ID_STRING };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_str_2000_fields[] = { { .name = "str", .descr = "String", .offset = offsetof(bcmolt_str_2000, str), .type = &string_2000 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_str_2000 = { .name = "bcmolt_str_2000", .descr = "ASCII string with max length 2000", .size = sizeof(bcmolt_str_2000), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_str_2000_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_str_2000_fields } } };
static bcmcli_type_descr BCM_DESCR string_256 = { .name = "string[256]", .descr = "ASCII string with max length 256", .size = sizeof(char[256]), .base_type = BCMOLT_BASE_TYPE_ID_STRING };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_str_256_fields[] = { { .name = "str", .descr = "String", .offset = offsetof(bcmolt_str_256, str), .type = &string_256 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_str_256 = { .name = "bcmolt_str_256", .descr = "ASCII string with max length 256", .size = sizeof(bcmolt_str_256), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_str_256_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_str_256_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_str_64_fields[] = { { .name = "str", .descr = "String", .offset = offsetof(bcmolt_str_64, str), .type = &string_64 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_str_64 = { .name = "bcmolt_str_64", .descr = "ASCII string with max length 64", .size = sizeof(bcmolt_str_64), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_str_64_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_str_64_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_sw_error_fields[] = { { .name = "first_error_time_us", .descr = "Timestamp (in us) when his error first occurred", .offset = offsetof(bcmolt_sw_error, first_error_time_us), .type = &type_descr_uint64_t }, { .name = "last_error_time_us", .descr = "Timestamp (in us) when his error last occurred", .offset = offsetof(bcmolt_sw_error, last_error_time_us), .type = &type_descr_uint64_t }, { .name = "line_number", .descr = "Line Number", .offset = offsetof(bcmolt_sw_error, line_number), .type = &type_descr_uint32_t }, { .name = "error_counter", .descr = "The number of times this error has occurred", .offset = offsetof(bcmolt_sw_error, error_counter), .type = &type_descr_uint32_t }, { .name = "instance", .descr = "Instance", .offset = offsetof(bcmolt_sw_error, instance), .type = &type_descr_uint32_t }, { .name = "filename", .descr = "Filename", .offset = offsetof(bcmolt_sw_error, filename), .type = &string_64 }, { .name = "task_name", .descr = "Task Name", .offset = offsetof(bcmolt_sw_error, task_name), .type = &string_64 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_sw_error = { .name = "bcmolt_sw_error", .descr = "SW Error", .size = sizeof(bcmolt_sw_error), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_sw_error_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_sw_error_fields } } };
bcmcli_enum_val bcmolt_switch_over_type_c_onu_state_string_table[] = { { .name = "active", .val = BCMOLT_SWITCH_OVER_TYPE_C_ONU_STATE_ACTIVE }, { .name = "active_standby", .val = BCMOLT_SWITCH_OVER_TYPE_C_ONU_STATE_ACTIVE_STANDBY }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_switch_over_type_c_onu_state = { .name = "bcmolt_switch_over_type_c_onu_state", .descr = "Switch over type c onu state", .size = sizeof(bcmolt_switch_over_type_c_onu_state), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_switch_over_type_c_onu_state_string_table } };
bcmcli_enum_val bcmolt_system_mode_string_table[] = { { .name = "gpon__16_x", .val = BCMOLT_SYSTEM_MODE_GPON__16_X }, { .name = "gpon__8_x", .val = BCMOLT_SYSTEM_MODE_GPON__8_X }, { .name = "gpon__4_x", .val = BCMOLT_SYSTEM_MODE_GPON__4_X }, { .name = "epon__16_x", .val = BCMOLT_SYSTEM_MODE_EPON__16_X }, { .name = "xgpon_1__8_x", .val = BCMOLT_SYSTEM_MODE_XGPON_1__8_X }, { .name = "epon__8_x_coexistence_tdma", .val = BCMOLT_SYSTEM_MODE_EPON__8_X_COEXISTENCE_TDMA }, { .name = "ae_8_x", .val = BCMOLT_SYSTEM_MODE_AE_8_X }, { .name = "epon__8_x_10_g", .val = BCMOLT_SYSTEM_MODE_EPON__8_X_10_G }, { .name = "gpon_8_xgpon_4_x_coexistence", .val = BCMOLT_SYSTEM_MODE_GPON_8_XGPON_4_X_COEXISTENCE }, { .name = "epon__8_x", .val = BCMOLT_SYSTEM_MODE_EPON__8_X }, { .name = "epon__4_x", .val = BCMOLT_SYSTEM_MODE_EPON__4_X }, { .name = "epon__4_x_coexistence_tdma", .val = BCMOLT_SYSTEM_MODE_EPON__4_X_COEXISTENCE_TDMA }, { .name = "epon__4_x_10_g", .val = BCMOLT_SYSTEM_MODE_EPON__4_X_10_G }, { .name = "xgs__2_x_10_g", .val = BCMOLT_SYSTEM_MODE_XGS__2_X_10_G }, { .name = "ngpon2__2_x_10_g", .val = BCMOLT_SYSTEM_MODE_NGPON2__2_X_10_G }, { .name = "ngpon2__8_x_2_p_5_g", .val = BCMOLT_SYSTEM_MODE_NGPON2__8_X_2_P_5_G }, { .name = "xgpon_1__4_x", .val = BCMOLT_SYSTEM_MODE_XGPON_1__4_X }, { .name = "epon__2_x_10_g", .val = BCMOLT_SYSTEM_MODE_EPON__2_X_10_G }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_system_mode = { .name = "bcmolt_system_mode", .descr = "System working mode (GPON/EPON etc.)", .size = sizeof(bcmolt_system_mode), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_system_mode_string_table } };
bcmcli_enum_val bcmolt_us_operating_wavelength_bands_string_table[] = { { .name = "expanded_spectrum_wide_band", .val = BCMOLT_US_OPERATING_WAVELENGTH_BANDS_EXPANDED_SPECTRUM_WIDE_BAND }, { .name = "expanded_spectrum_reduced_band", .val = BCMOLT_US_OPERATING_WAVELENGTH_BANDS_EXPANDED_SPECTRUM_REDUCED_BAND }, { .name = "expanded_spectrum_narrow_band", .val = BCMOLT_US_OPERATING_WAVELENGTH_BANDS_EXPANDED_SPECTRUM_NARROW_BAND }, { .name = "shared_spectrum_wide_band", .val = BCMOLT_US_OPERATING_WAVELENGTH_BANDS_SHARED_SPECTRUM_WIDE_BAND }, { .name = "shared_spectrum_reduced_band", .val = BCMOLT_US_OPERATING_WAVELENGTH_BANDS_SHARED_SPECTRUM_REDUCED_BAND }, { .name = "shared_spectrum_narrow_band", .val = BCMOLT_US_OPERATING_WAVELENGTH_BANDS_SHARED_SPECTRUM_NARROW_BAND }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_us_operating_wavelength_bands = { .name = "bcmolt_us_operating_wavelength_bands", .descr = "US operating wavelength bands", .size = sizeof(bcmolt_us_operating_wavelength_bands), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_us_operating_wavelength_bands_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_system_profile_fields[] = { { .name = "ng_2_sys_id", .descr = "20-bit identifier of the NGPON2 system", .offset = offsetof(bcmolt_system_profile, ng_2_sys_id), .type = &type_descr_uint32_t }, { .name = "version", .descr = "System profile version", .offset = offsetof(bcmolt_system_profile, version), .type = &type_descr_uint8_t }, { .name = "channel_spacing", .descr = "An integer indicating the channel spacing in units of 1GHz", .offset = offsetof(bcmolt_system_profile, channel_spacing), .type = &type_descr_uint8_t }, { .name = "us_operating_wavelength_bands", .descr = "Upstream operating wavelength bands", .offset = offsetof(bcmolt_system_profile, us_operating_wavelength_bands), .type = &type_descr_bcmolt_us_operating_wavelength_bands }, { .name = "us_mse", .descr = "Upstream Maximum Spectral Excursion (MSE) represented as an unsigned integer indicating the value in units of 1GHz", .offset = offsetof(bcmolt_system_profile, us_mse), .type = &type_descr_uint8_t }, { .name = "loose_calibration_bound", .descr = "Spectral excursion bound below which a TWDM ONU can be considered as loosely calibrated", .offset = offsetof(bcmolt_system_profile, loose_calibration_bound), .type = &type_descr_bcmolt_calibration_record }, { .name = "fsr", .descr = "If a cyclic WM is used in the upstream, Free Spectral Range indicates the value in units of 0.1 GHz", .offset = offsetof(bcmolt_system_profile, fsr), .type = &type_descr_uint16_t }, { .name = "twdm_channel_count", .descr = "The number of Channel_Profile PLOAM messages with distinct Channel Profile indices that an ONU can expect to receive while listening to this downstream wavelength channel", .offset = offsetof(bcmolt_system_profile, twdm_channel_count), .type = &type_descr_uint8_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_system_profile = { .name = "bcmolt_system_profile", .descr = "System profile", .size = sizeof(bcmolt_system_profile), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_system_profile_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_system_profile_fields } } };
bcmcli_enum_val bcmolt_traffic_resume_result_string_table[] = { { .name = "success", .val = BCMOLT_TRAFFIC_RESUME_RESULT_SUCCESS }, { .name = "failure", .val = BCMOLT_TRAFFIC_RESUME_RESULT_FAILURE }, { .name = "suspected_los", .val = BCMOLT_TRAFFIC_RESUME_RESULT_SUSPECTED_LOS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_traffic_resume_result = { .name = "bcmolt_traffic_resume_result", .descr = "Traffic resume result", .size = sizeof(bcmolt_traffic_resume_result), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_traffic_resume_result_string_table } };
bcmcli_enum_val bcmolt_trx_calibration_auto_cfg_id_string_table[] = { { .name = "capture_window_and_statistic_completed", .val = BCMOLT_TRX_CALIBRATION_AUTO_CFG_ID_CAPTURE_WINDOW_AND_STATISTIC_COMPLETED }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_trx_calibration_auto_cfg_id = { .name = "bcmolt_trx_calibration_auto_cfg_id", .descr = "Identifiers for all properties contained in the trx_calibration_auto_cfg group.", .size = sizeof(bcmolt_trx_calibration_auto_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_trx_calibration_auto_cfg_id_string_table } };
bcmcli_enum_val bcmolt_trx_calibration_capture_window_and_statistic_completed_id_string_table[] = { { .name = "data_window", .val = BCMOLT_TRX_CALIBRATION_CAPTURE_WINDOW_AND_STATISTIC_COMPLETED_ID_DATA_WINDOW }, { .name = "strobe_window", .val = BCMOLT_TRX_CALIBRATION_CAPTURE_WINDOW_AND_STATISTIC_COMPLETED_ID_STROBE_WINDOW }, { .name = "edge_rise_min_min", .val = BCMOLT_TRX_CALIBRATION_CAPTURE_WINDOW_AND_STATISTIC_COMPLETED_ID_EDGE_RISE_MIN_MIN }, { .name = "edge_rise_min_max", .val = BCMOLT_TRX_CALIBRATION_CAPTURE_WINDOW_AND_STATISTIC_COMPLETED_ID_EDGE_RISE_MIN_MAX }, { .name = "edge_rise_max_min", .val = BCMOLT_TRX_CALIBRATION_CAPTURE_WINDOW_AND_STATISTIC_COMPLETED_ID_EDGE_RISE_MAX_MIN }, { .name = "edge_rise_max_max", .val = BCMOLT_TRX_CALIBRATION_CAPTURE_WINDOW_AND_STATISTIC_COMPLETED_ID_EDGE_RISE_MAX_MAX }, { .name = "edge_fall_min_min", .val = BCMOLT_TRX_CALIBRATION_CAPTURE_WINDOW_AND_STATISTIC_COMPLETED_ID_EDGE_FALL_MIN_MIN }, { .name = "edge_fall_min_max", .val = BCMOLT_TRX_CALIBRATION_CAPTURE_WINDOW_AND_STATISTIC_COMPLETED_ID_EDGE_FALL_MIN_MAX }, { .name = "edge_fall_max_min", .val = BCMOLT_TRX_CALIBRATION_CAPTURE_WINDOW_AND_STATISTIC_COMPLETED_ID_EDGE_FALL_MAX_MIN }, { .name = "edge_fall_max_max", .val = BCMOLT_TRX_CALIBRATION_CAPTURE_WINDOW_AND_STATISTIC_COMPLETED_ID_EDGE_FALL_MAX_MAX }, { .name = "result", .val = BCMOLT_TRX_CALIBRATION_CAPTURE_WINDOW_AND_STATISTIC_COMPLETED_ID_RESULT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_trx_calibration_capture_window_and_statistic_completed_id = { .name = "bcmolt_trx_calibration_capture_window_and_statistic_completed_id", .descr = "Identifiers for all properties contained in the trx_calibration_capture_window_and_statistic_completed group.", .size = sizeof(bcmolt_trx_calibration_capture_window_and_statistic_completed_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_trx_calibration_capture_window_and_statistic_completed_id_string_table } };
bcmcli_enum_val bcmolt_trx_calibration_key_id_string_table[] = { { .name = "reserved", .val = BCMOLT_TRX_CALIBRATION_KEY_ID_RESERVED }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_trx_calibration_key_id = { .name = "bcmolt_trx_calibration_key_id", .descr = "Identifiers for all properties contained in the trx_calibration_key group.", .size = sizeof(bcmolt_trx_calibration_key_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_trx_calibration_key_id_string_table } };
bcmcli_enum_val bcmolt_trx_calibration_start_capture_window_id_string_table[] = { { .name = "pon_ni", .val = BCMOLT_TRX_CALIBRATION_START_CAPTURE_WINDOW_ID_PON_NI }, { .name = "trigger", .val = BCMOLT_TRX_CALIBRATION_START_CAPTURE_WINDOW_ID_TRIGGER }, { .name = "strobe", .val = BCMOLT_TRX_CALIBRATION_START_CAPTURE_WINDOW_ID_STROBE }, { .name = "window_mode", .val = BCMOLT_TRX_CALIBRATION_START_CAPTURE_WINDOW_ID_WINDOW_MODE }, { .name = "onu_id", .val = BCMOLT_TRX_CALIBRATION_START_CAPTURE_WINDOW_ID_ONU_ID }, { .name = "trigger_position", .val = BCMOLT_TRX_CALIBRATION_START_CAPTURE_WINDOW_ID_TRIGGER_POSITION }, { .name = "stop_due_to_corrupt_strobe", .val = BCMOLT_TRX_CALIBRATION_START_CAPTURE_WINDOW_ID_STOP_DUE_TO_CORRUPT_STROBE }, { .name = "start_offset", .val = BCMOLT_TRX_CALIBRATION_START_CAPTURE_WINDOW_ID_START_OFFSET }, { .name = "end_offset", .val = BCMOLT_TRX_CALIBRATION_START_CAPTURE_WINDOW_ID_END_OFFSET }, { .name = "number_of_cycles", .val = BCMOLT_TRX_CALIBRATION_START_CAPTURE_WINDOW_ID_NUMBER_OF_CYCLES }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_trx_calibration_start_capture_window_id = { .name = "bcmolt_trx_calibration_start_capture_window_id", .descr = "Identifiers for all properties contained in the trx_calibration_start_capture_window group.", .size = sizeof(bcmolt_trx_calibration_start_capture_window_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_trx_calibration_start_capture_window_id_string_table } };
bcmcli_enum_val bcmolt_trx_calibration_stop_capture_window_id_string_table[] = { { .name = "pon_ni", .val = BCMOLT_TRX_CALIBRATION_STOP_CAPTURE_WINDOW_ID_PON_NI }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_trx_calibration_stop_capture_window_id = { .name = "bcmolt_trx_calibration_stop_capture_window_id", .descr = "Identifiers for all properties contained in the trx_calibration_stop_capture_window group.", .size = sizeof(bcmolt_trx_calibration_stop_capture_window_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_trx_calibration_stop_capture_window_id_string_table } };
bcmcli_enum_val bcmolt_trx_calibration_trigger_string_table[] = { { .name = "epon_stat", .val = BCMOLT_TRX_CALIBRATION_TRIGGER_EPON_STAT }, { .name = "gpon_bcdr_reset", .val = BCMOLT_TRX_CALIBRATION_TRIGGER_GPON_BCDR_RESET }, { .name = "gpon_trx_reset", .val = BCMOLT_TRX_CALIBRATION_TRIGGER_GPON_TRX_RESET }, { .name = "gpon_trx_ed", .val = BCMOLT_TRX_CALIBRATION_TRIGGER_GPON_TRX_ED }, { .name = "gpon_rssi", .val = BCMOLT_TRX_CALIBRATION_TRIGGER_GPON_RSSI }, { .name = "gpon_eob", .val = BCMOLT_TRX_CALIBRATION_TRIGGER_GPON_EOB }, { .name = "gpon_ranging", .val = BCMOLT_TRX_CALIBRATION_TRIGGER_GPON_RANGING }, { .name = "serdes_burst_en", .val = BCMOLT_TRX_CALIBRATION_TRIGGER_SERDES_BURST_EN }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_trx_calibration_trigger = { .name = "bcmolt_trx_calibration_trigger", .descr = "trx calibration trigger", .size = sizeof(bcmolt_trx_calibration_trigger), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_trx_calibration_trigger_string_table } };
bcmcli_enum_val bcmolt_trx_calibration_trigger_position_string_table[] = { { .name = "rising", .val = BCMOLT_TRX_CALIBRATION_TRIGGER_POSITION_RISING }, { .name = "falling", .val = BCMOLT_TRX_CALIBRATION_TRIGGER_POSITION_FALLING }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_trx_calibration_trigger_position = { .name = "bcmolt_trx_calibration_trigger_position", .descr = "trx calibration trigger position", .size = sizeof(bcmolt_trx_calibration_trigger_position), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_trx_calibration_trigger_position_string_table } };
bcmcli_enum_val bcmolt_trx_calibration_window_mode_string_table[] = { { .name = "ranging", .val = BCMOLT_TRX_CALIBRATION_WINDOW_MODE_RANGING }, { .name = "non_ranging", .val = BCMOLT_TRX_CALIBRATION_WINDOW_MODE_NON_RANGING }, { .name = "both", .val = BCMOLT_TRX_CALIBRATION_WINDOW_MODE_BOTH }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_trx_calibration_window_mode = { .name = "bcmolt_trx_calibration_window_mode", .descr = "trx calibration window mode", .size = sizeof(bcmolt_trx_calibration_window_mode), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_trx_calibration_window_mode_string_table } };
static bcmcli_type_descr BCM_DESCR type_descr_uint8_t_arr_3 = { .name = "uint8_t[3]", .descr = "Array of 3 elements of type uint8_t", .size = sizeof(uint8_t[3]), .base_type = BCMOLT_BASE_TYPE_ID_ARR_FIXED, .x = { .arr_fixed = { .elem_type = &type_descr_uint8_t, .size = 3 } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_trx_delimiter_fields[] = { { .name = "pattern", .descr = "pattern", .offset = offsetof(bcmolt_trx_delimiter, pattern), .type = &type_descr_uint8_t_arr_3 }, { .name = "size", .descr = "Size in bytes", .offset = offsetof(bcmolt_trx_delimiter, size), .type = &type_descr_uint8_t }, { .name = "window_size", .descr = "Window size", .offset = offsetof(bcmolt_trx_delimiter, window_size), .type = &type_descr_uint8_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_trx_delimiter = { .name = "bcmolt_trx_delimiter", .descr = "TRX Delimiter", .size = sizeof(bcmolt_trx_delimiter), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_trx_delimiter_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_trx_delimiter_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_trx_energy_detect_fields[] = { { .name = "ranging_ed_source", .descr = "Ranging ED source", .offset = offsetof(bcmolt_trx_energy_detect, ranging_ed_source), .type = &type_descr_bcmolt_energy_detect_source }, { .name = "delimiter_ed_source", .descr = "Delimiter ED source", .offset = offsetof(bcmolt_trx_energy_detect, delimiter_ed_source), .type = &type_descr_bcmolt_energy_detect_source }, { .name = "minimum_threshold", .descr = "Minimum threshold", .offset = offsetof(bcmolt_trx_energy_detect, minimum_threshold), .type = &type_descr_uint8_t }, { .name = "maximum_threshold", .descr = "Maximum threshold", .offset = offsetof(bcmolt_trx_energy_detect, maximum_threshold), .type = &type_descr_uint8_t }, { .name = "ed_pattern", .descr = "ED pattern", .offset = offsetof(bcmolt_trx_energy_detect, ed_pattern), .type = &type_descr_uint8_t }, { .name = "ed_pattern_size", .descr = "ED pattern size", .offset = offsetof(bcmolt_trx_energy_detect, ed_pattern_size), .type = &type_descr_uint8_t }, { .name = "window_size", .descr = "Window size", .offset = offsetof(bcmolt_trx_energy_detect, window_size), .type = &type_descr_uint8_t }, { .name = "inversion", .descr = "Inversion", .offset = offsetof(bcmolt_trx_energy_detect, inversion), .type = &type_descr_bcmos_bool }, { .name = "no_ed_threshold", .descr = "no ed threshold", .offset = offsetof(bcmolt_trx_energy_detect, no_ed_threshold), .type = &type_descr_uint8_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_trx_energy_detect = { .name = "bcmolt_trx_energy_detect", .descr = "TRX Energy detect", .size = sizeof(bcmolt_trx_energy_detect), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_trx_energy_detect_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_trx_energy_detect_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_trx_preamble_fields[] = { { .name = "type_1_size", .descr = "Type 1 size", .offset = offsetof(bcmolt_trx_preamble, type_1_size), .type = &type_descr_uint8_t }, { .name = "type_2_size", .descr = "Type 2 size", .offset = offsetof(bcmolt_trx_preamble, type_2_size), .type = &type_descr_uint8_t }, { .name = "type_3_pre_ranging_size", .descr = "Type 3 pre ranging size", .offset = offsetof(bcmolt_trx_preamble, type_3_pre_ranging_size), .type = &type_descr_uint8_t }, { .name = "type_3_post_ranging_size", .descr = "Type 3 post ranging size", .offset = offsetof(bcmolt_trx_preamble, type_3_post_ranging_size), .type = &type_descr_uint8_t }, { .name = "type_3_pattern", .descr = "Type 3 pattern", .offset = offsetof(bcmolt_trx_preamble, type_3_pattern), .type = &type_descr_uint8_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_trx_preamble = { .name = "bcmolt_trx_preamble", .descr = "TRX Preamble", .size = sizeof(bcmolt_trx_preamble), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_trx_preamble_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_trx_preamble_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_trx_rx_configuration_fields[] = { { .name = "wait_window_size", .descr = "Wait Window size", .offset = offsetof(bcmolt_trx_rx_configuration, wait_window_size), .type = &type_descr_uint8_t }, { .name = "ranging_access_window_size", .descr = "Ranging access window size", .offset = offsetof(bcmolt_trx_rx_configuration, ranging_access_window_size), .type = &type_descr_uint8_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_trx_rx_configuration = { .name = "bcmolt_trx_rx_configuration", .descr = "TRX RX configuration", .size = sizeof(bcmolt_trx_rx_configuration), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_trx_rx_configuration_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_trx_rx_configuration_fields } } };
bcmcli_enum_val bcmolt_trx_type_string_table[] = { { .name = "sps_43_48_h_hp_cde_sd_2013", .val = BCMOLT_TRX_TYPE_SPS_43_48_H_HP_CDE_SD_2013 }, { .name = "sog_4321_psgb", .val = BCMOLT_TRX_TYPE_SOG_4321_PSGB }, { .name = "lte_3680_m", .val = BCMOLT_TRX_TYPE_LTE_3680_M }, { .name = "source_photonics", .val = BCMOLT_TRX_TYPE_SOURCE_PHOTONICS }, { .name = "lte_3680_p_type_c_plus", .val = BCMOLT_TRX_TYPE_LTE_3680_P_TYPE_C_PLUS }, { .name = "any", .val = BCMOLT_TRX_TYPE_ANY }, { .name = "any_reset_guard", .val = BCMOLT_TRX_TYPE_ANY_RESET_GUARD }, { .name = "any_reset_preamble", .val = BCMOLT_TRX_TYPE_ANY_RESET_PREAMBLE }, { .name = "wtd_rtxm_167_526_cplus", .val = BCMOLT_TRX_TYPE_WTD_RTXM_167_526_CPLUS }, { .name = "wtd_rtxm_167_522_bplus", .val = BCMOLT_TRX_TYPE_WTD_RTXM_167_522_BPLUS }, { .name = "lte_3680_p_bc", .val = BCMOLT_TRX_TYPE_LTE_3680_P_BC }, { .name = "sogq_4321_psgb_c_plus", .val = BCMOLT_TRX_TYPE_SOGQ_4321_PSGB_C_PLUS }, { .name = "wtd_rtxm167_521", .val = BCMOLT_TRX_TYPE_WTD_RTXM167_521 }, { .name = "lte3678", .val = BCMOLT_TRX_TYPE_LTE3678 }, { .name = "sogp_4321_psga", .val = BCMOLT_TRX_TYPE_SOGP_4321_PSGA }, { .name = "gpon_general_1", .val = BCMOLT_TRX_TYPE_GPON_GENERAL_1 }, { .name = "gpon_general_2", .val = BCMOLT_TRX_TYPE_GPON_GENERAL_2 }, { .name = "gpon_general_3", .val = BCMOLT_TRX_TYPE_GPON_GENERAL_3 }, { .name = "gpon_general_4", .val = BCMOLT_TRX_TYPE_GPON_GENERAL_4 }, { .name = "gpon_general_5", .val = BCMOLT_TRX_TYPE_GPON_GENERAL_5 }, { .name = "gpon_general_6", .val = BCMOLT_TRX_TYPE_GPON_GENERAL_6 }, { .name = "gpon_general_7", .val = BCMOLT_TRX_TYPE_GPON_GENERAL_7 }, { .name = "gpon_general_8", .val = BCMOLT_TRX_TYPE_GPON_GENERAL_8 }, { .name = "gpon_general_9", .val = BCMOLT_TRX_TYPE_GPON_GENERAL_9 }, { .name = "gpon_general_10", .val = BCMOLT_TRX_TYPE_GPON_GENERAL_10 }, { .name = "gpon_general_11", .val = BCMOLT_TRX_TYPE_GPON_GENERAL_11 }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_trx_type = { .name = "bcmolt_trx_type", .descr = "TRX type", .size = sizeof(bcmolt_trx_type), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_trx_type_string_table } };
bcmcli_enum_val bcmolt_tune_in_fail_reason_string_table[] = { { .name = "none", .val = BCMOLT_TUNE_IN_FAIL_REASON_NONE }, { .name = "no_tuning_response_ploam_received", .val = BCMOLT_TUNE_IN_FAIL_REASON_NO_TUNING_RESPONSE_PLOAM_RECEIVED }, { .name = "onu_activation_failed", .val = BCMOLT_TUNE_IN_FAIL_REASON_ONU_ACTIVATION_FAILED }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_tune_in_fail_reason = { .name = "bcmolt_tune_in_fail_reason", .descr = "Tune in fail reason", .size = sizeof(bcmolt_tune_in_fail_reason), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_tune_in_fail_reason_string_table } };
bcmcli_enum_val bcmolt_tune_out_fail_reason_string_table[] = { { .name = "none", .val = BCMOLT_TUNE_OUT_FAIL_REASON_NONE }, { .name = "nack_ploam_received", .val = BCMOLT_TUNE_OUT_FAIL_REASON_NACK_PLOAM_RECEIVED }, { .name = "no_tuning_response_ploam_received", .val = BCMOLT_TUNE_OUT_FAIL_REASON_NO_TUNING_RESPONSE_PLOAM_RECEIVED }, { .name = "tsource_timeout", .val = BCMOLT_TUNE_OUT_FAIL_REASON_TSOURCE_TIMEOUT }, { .name = "rollback_request", .val = BCMOLT_TUNE_OUT_FAIL_REASON_ROLLBACK_REQUEST }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_tune_out_fail_reason = { .name = "bcmolt_tune_out_fail_reason", .descr = "Tune out fail reason", .size = sizeof(bcmolt_tune_out_fail_reason), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_tune_out_fail_reason_string_table } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_u32_list_u32_max_500_hex = { .name = "bcmolt_u32_list_u32_max_500_hex", .descr = "Variable-length list of U32", .size = sizeof(bcmolt_u32_list_u32_max_500_hex), .base_type = BCMOLT_BASE_TYPE_ID_ARR_DYN, .x = { .arr_dyn = { .elem_type = &type_descr_uint32_t_hex, .len_size = 4, .max_size = 500 } } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_u8_list_u16_hex = { .name = "bcmolt_u8_list_u16_hex", .descr = "Variable-length list of U8", .size = sizeof(bcmolt_u8_list_u16_hex), .base_type = BCMOLT_BASE_TYPE_ID_ARR_DYN, .x = { .arr_dyn = { .elem_type = &type_descr_uint8_t_hex, .len_size = 2, .max_size = DEFAULT_DYN_ARR_MAX_SIZE / sizeof(uint8_t) } } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_u8_list_u32 = { .name = "bcmolt_u8_list_u32", .descr = "Variable-length list of U8", .size = sizeof(bcmolt_u8_list_u32), .base_type = BCMOLT_BASE_TYPE_ID_ARR_DYN, .x = { .arr_dyn = { .elem_type = &type_descr_uint8_t, .len_size = 4, .max_size = DEFAULT_DYN_ARR_MAX_SIZE / sizeof(uint8_t) } } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_u8_list_u32_max_2048 = { .name = "bcmolt_u8_list_u32_max_2048", .descr = "Variable-length list of U8", .size = sizeof(bcmolt_u8_list_u32_max_2048), .base_type = BCMOLT_BASE_TYPE_ID_ARR_DYN, .x = { .arr_dyn = { .elem_type = &type_descr_uint8_t, .len_size = 4, .max_size = 2048 } } };
bcmcli_enum_val bcmolt_uart_baudrate_string_table[] = { { .name = "uart_rate_4800", .val = BCMOLT_UART_BAUDRATE_UART_RATE_4800 }, { .name = "uart_rate_9600", .val = BCMOLT_UART_BAUDRATE_UART_RATE_9600 }, { .name = "uart_rate_14400", .val = BCMOLT_UART_BAUDRATE_UART_RATE_14400 }, { .name = "uart_rate_19200", .val = BCMOLT_UART_BAUDRATE_UART_RATE_19200 }, { .name = "uart_rate_38400", .val = BCMOLT_UART_BAUDRATE_UART_RATE_38400 }, { .name = "uart_rate_57600", .val = BCMOLT_UART_BAUDRATE_UART_RATE_57600 }, { .name = "uart_rate_115200", .val = BCMOLT_UART_BAUDRATE_UART_RATE_115200 }, { .name = "uart_rate_230400", .val = BCMOLT_UART_BAUDRATE_UART_RATE_230400 }, { .name = "uart_rate_380400", .val = BCMOLT_UART_BAUDRATE_UART_RATE_380400 }, { .name = "uart_rate_460800", .val = BCMOLT_UART_BAUDRATE_UART_RATE_460800 }, { .name = "uart_rate_921600", .val = BCMOLT_UART_BAUDRATE_UART_RATE_921600 }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_uart_baudrate = { .name = "bcmolt_uart_baudrate", .descr = "UART baud rate", .size = sizeof(bcmolt_uart_baudrate), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_uart_baudrate_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_ubd_info_fields[] = { { .name = "actual_polling_interval", .descr = "Units: 65.536us", .offset = offsetof(bcmolt_ubd_info, actual_polling_interval), .type = &type_descr_uint16_t }, { .name = "actual_grant_threshold_tq", .descr = "Actual Grant Threshold (TQ)", .offset = offsetof(bcmolt_ubd_info, actual_grant_threshold_tq), .type = &type_descr_uint32_t }, { .name = "actual_min_schedulershaper", .descr = "Actual Min Scheduler/Shaper", .offset = offsetof(bcmolt_ubd_info, actual_min_schedulershaper), .type = &type_descr_bcmolt_actual_schedulershaper }, { .name = "actual_max_schedulershaper", .descr = "Actual Max Scheduler/Shaper", .offset = offsetof(bcmolt_ubd_info, actual_max_schedulershaper), .type = &type_descr_bcmolt_actual_schedulershaper } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_ubd_info = { .name = "bcmolt_ubd_info", .descr = "UBD Info", .size = sizeof(bcmolt_ubd_info), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_ubd_info_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_ubd_info_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_upstream_bandwidth_distribution_fields[] = { { .name = "polling_interval_us", .descr = "Polling Interval", .offset = offsetof(bcmolt_upstream_bandwidth_distribution, polling_interval_us), .type = &type_descr_bcmolt_polling_interval }, { .name = "grant_threshold_tq", .descr = "Grant Threshold (TQ)", .offset = offsetof(bcmolt_upstream_bandwidth_distribution, grant_threshold_tq), .type = &type_descr_uint32_t }, { .name = "min_schedulershaper", .descr = "Min Scheduler/Shaper", .offset = offsetof(bcmolt_upstream_bandwidth_distribution, min_schedulershaper), .type = &type_descr_bcmolt_solicited_scheduler }, { .name = "max_schedulershaper", .descr = "Max Scheduler/Shaper", .offset = offsetof(bcmolt_upstream_bandwidth_distribution, max_schedulershaper), .type = &type_descr_bcmolt_solicited_scheduler }, { .name = "tdm_grant_size_tq", .descr = "TDM Grant Size (TQ)", .offset = offsetof(bcmolt_upstream_bandwidth_distribution, tdm_grant_size_tq), .type = &type_descr_uint32_t }, { .name = "tdm_grant_interval_us", .descr = "Interval between TDM grants (in us).", .offset = offsetof(bcmolt_upstream_bandwidth_distribution, tdm_grant_interval_us), .type = &type_descr_uint32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_upstream_bandwidth_distribution = { .name = "bcmolt_upstream_bandwidth_distribution", .descr = "The upstream bandwidth distribution for this LLID.", .size = sizeof(bcmolt_upstream_bandwidth_distribution), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_upstream_bandwidth_distribution_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_upstream_bandwidth_distribution_fields } } };
bcmcli_enum_val bcmolt_us_gem_port_destination_string_table[] = { { .name = "data", .val = BCMOLT_US_GEM_PORT_DESTINATION_DATA }, { .name = "cpu", .val = BCMOLT_US_GEM_PORT_DESTINATION_CPU }, { .name = "omci", .val = BCMOLT_US_GEM_PORT_DESTINATION_OMCI }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_us_gem_port_destination = { .name = "bcmolt_us_gem_port_destination", .descr = "us_gem_port_destination", .size = sizeof(bcmolt_us_gem_port_destination), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_us_gem_port_destination_string_table } };
bcmcli_enum_val bcmolt_us_vlan_action_string_table[] = { { .name = "add", .val = BCMOLT_US_VLAN_ACTION_ADD }, { .name = "transparent", .val = BCMOLT_US_VLAN_ACTION_TRANSPARENT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_us_vlan_action = { .name = "bcmolt_us_vlan_action", .descr = "US VLAN action", .size = sizeof(bcmolt_us_vlan_action), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_us_vlan_action_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_vlan_tag_fields[] = { { .name = "vlan_id", .descr = "VLAN ID", .offset = offsetof(bcmolt_vlan_tag, vlan_id), .type = &type_descr_uint16_t }, { .name = "pbit", .descr = "Pbit", .offset = offsetof(bcmolt_vlan_tag, pbit), .type = &type_descr_uint8_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_vlan_tag = { .name = "bcmolt_vlan_tag", .descr = "VLAN tag", .size = sizeof(bcmolt_vlan_tag), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_vlan_tag_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_vlan_tag_fields } } };
bcmcli_enum_val bcmolt_vlan_to_flow_mapping_method_string_table[] = { { .name = "vid", .val = BCMOLT_VLAN_TO_FLOW_MAPPING_METHOD_VID }, { .name = "macplusvid", .val = BCMOLT_VLAN_TO_FLOW_MAPPING_METHOD_MACPLUSVID }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_vlan_to_flow_mapping_method = { .name = "bcmolt_vlan_to_flow_mapping_method", .descr = "VLAN to flow mapping method", .size = sizeof(bcmolt_vlan_to_flow_mapping_method), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_vlan_to_flow_mapping_method_string_table } };
bcmcli_enum_val bcmolt_xgpon_alloc_auto_cfg_id_string_table[] = { { .name = "configuration_completed", .val = BCMOLT_XGPON_ALLOC_AUTO_CFG_ID_CONFIGURATION_COMPLETED }, { .name = "get_alloc_stats_completed", .val = BCMOLT_XGPON_ALLOC_AUTO_CFG_ID_GET_ALLOC_STATS_COMPLETED }, { .name = "stat_alarm_cleared", .val = BCMOLT_XGPON_ALLOC_AUTO_CFG_ID_STAT_ALARM_CLEARED }, { .name = "stat_alarm_raised", .val = BCMOLT_XGPON_ALLOC_AUTO_CFG_ID_STAT_ALARM_RAISED }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_alloc_auto_cfg_id = { .name = "bcmolt_xgpon_alloc_auto_cfg_id", .descr = "Identifiers for all properties contained in the xgpon_alloc_auto_cfg group.", .size = sizeof(bcmolt_xgpon_alloc_auto_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_alloc_auto_cfg_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_alloc_cfg_id_string_table[] = { { .name = "state", .val = BCMOLT_XGPON_ALLOC_CFG_ID_STATE }, { .name = "sla", .val = BCMOLT_XGPON_ALLOC_CFG_ID_SLA }, { .name = "onu_id", .val = BCMOLT_XGPON_ALLOC_CFG_ID_ONU_ID }, { .name = "collect_stats", .val = BCMOLT_XGPON_ALLOC_CFG_ID_COLLECT_STATS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_alloc_cfg_id = { .name = "bcmolt_xgpon_alloc_cfg_id", .descr = "Identifiers for all properties contained in the xgpon_alloc_cfg group.", .size = sizeof(bcmolt_xgpon_alloc_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_alloc_cfg_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_alloc_configuration_completed_id_string_table[] = { { .name = "status", .val = BCMOLT_XGPON_ALLOC_CONFIGURATION_COMPLETED_ID_STATUS }, { .name = "new_state", .val = BCMOLT_XGPON_ALLOC_CONFIGURATION_COMPLETED_ID_NEW_STATE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_alloc_configuration_completed_id = { .name = "bcmolt_xgpon_alloc_configuration_completed_id", .descr = "Identifiers for all properties contained in the xgpon_alloc_configuration_completed group.", .size = sizeof(bcmolt_xgpon_alloc_configuration_completed_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_alloc_configuration_completed_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_alloc_get_alloc_stats_completed_id_string_table[] = { { .name = "status", .val = BCMOLT_XGPON_ALLOC_GET_ALLOC_STATS_COMPLETED_ID_STATUS }, { .name = "average_nsr_used", .val = BCMOLT_XGPON_ALLOC_GET_ALLOC_STATS_COMPLETED_ID_AVERAGE_NSR_USED }, { .name = "average_nsr_allocated", .val = BCMOLT_XGPON_ALLOC_GET_ALLOC_STATS_COMPLETED_ID_AVERAGE_NSR_ALLOCATED }, { .name = "average_sr_report", .val = BCMOLT_XGPON_ALLOC_GET_ALLOC_STATS_COMPLETED_ID_AVERAGE_SR_REPORT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_alloc_get_alloc_stats_completed_id = { .name = "bcmolt_xgpon_alloc_get_alloc_stats_completed_id", .descr = "Identifiers for all properties contained in the xgpon_alloc_get_alloc_stats_completed group.", .size = sizeof(bcmolt_xgpon_alloc_get_alloc_stats_completed_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_alloc_get_alloc_stats_completed_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_alloc_get_stats_id_string_table[] = { { .name = "num_of_cycles", .val = BCMOLT_XGPON_ALLOC_GET_STATS_ID_NUM_OF_CYCLES }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_alloc_get_stats_id = { .name = "bcmolt_xgpon_alloc_get_stats_id", .descr = "Identifiers for all properties contained in the xgpon_alloc_get_stats group.", .size = sizeof(bcmolt_xgpon_alloc_get_stats_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_alloc_get_stats_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_alloc_key_id_string_table[] = { { .name = "pon_ni", .val = BCMOLT_XGPON_ALLOC_KEY_ID_PON_NI }, { .name = "alloc_id", .val = BCMOLT_XGPON_ALLOC_KEY_ID_ALLOC_ID }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_alloc_key_id = { .name = "bcmolt_xgpon_alloc_key_id", .descr = "Identifiers for all properties contained in the xgpon_alloc_key group.", .size = sizeof(bcmolt_xgpon_alloc_key_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_alloc_key_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_alloc_set_state_id_string_table[] = { { .name = "state", .val = BCMOLT_XGPON_ALLOC_SET_STATE_ID_STATE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_alloc_set_state_id = { .name = "bcmolt_xgpon_alloc_set_state_id", .descr = "Identifiers for all properties contained in the xgpon_alloc_set_state group.", .size = sizeof(bcmolt_xgpon_alloc_set_state_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_alloc_set_state_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_alloc_stat_alarm_cleared_id_string_table[] = { { .name = "stat", .val = BCMOLT_XGPON_ALLOC_STAT_ALARM_CLEARED_ID_STAT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_alloc_stat_alarm_cleared_id = { .name = "bcmolt_xgpon_alloc_stat_alarm_cleared_id", .descr = "Identifiers for all properties contained in the xgpon_alloc_stat_alarm_cleared group.", .size = sizeof(bcmolt_xgpon_alloc_stat_alarm_cleared_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_alloc_stat_alarm_cleared_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_alloc_stat_alarm_raised_id_string_table[] = { { .name = "stat", .val = BCMOLT_XGPON_ALLOC_STAT_ALARM_RAISED_ID_STAT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_alloc_stat_alarm_raised_id = { .name = "bcmolt_xgpon_alloc_stat_alarm_raised_id", .descr = "Identifiers for all properties contained in the xgpon_alloc_stat_alarm_raised group.", .size = sizeof(bcmolt_xgpon_alloc_stat_alarm_raised_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_alloc_stat_alarm_raised_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_alloc_stat_cfg_id_string_table[] = { { .name = "cfg", .val = BCMOLT_XGPON_ALLOC_STAT_CFG_ID_CFG }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_alloc_stat_cfg_id = { .name = "bcmolt_xgpon_alloc_stat_cfg_id", .descr = "Identifiers for all properties contained in the xgpon_alloc_stat_cfg group.", .size = sizeof(bcmolt_xgpon_alloc_stat_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_alloc_stat_cfg_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_alloc_stat_id_string_table[] = { { .name = "rx_bytes", .val = BCMOLT_XGPON_ALLOC_STAT_ID_RX_BYTES }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_alloc_stat_id = { .name = "bcmolt_xgpon_alloc_stat_id", .descr = "Identifiers for all properties contained in the xgpon_alloc_stat group.", .size = sizeof(bcmolt_xgpon_alloc_stat_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_alloc_stat_id_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_alloc_with_state_fields[] = { { .name = "alloc_id", .descr = "Alloc ID", .offset = offsetof(bcmolt_xgpon_alloc_with_state, alloc_id), .type = &type_descr_uint16_t }, { .name = "state", .descr = "State", .offset = offsetof(bcmolt_xgpon_alloc_with_state, state), .type = &type_descr_bcmolt_alloc_state } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_alloc_with_state = { .name = "bcmolt_xgpon_alloc_with_state", .descr = "XGPON Alloc With State", .size = sizeof(bcmolt_xgpon_alloc_with_state), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_alloc_with_state_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_alloc_with_state_fields } } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_alloc_with_state_list_u16_max_32 = { .name = "bcmolt_xgpon_alloc_with_state_list_u16_max_32", .descr = "Variable-length list of xgpon_alloc_with_state", .size = sizeof(bcmolt_xgpon_alloc_with_state_list_u16_max_32), .base_type = BCMOLT_BASE_TYPE_ID_ARR_DYN, .x = { .arr_dyn = { .elem_type = &type_descr_bcmolt_xgpon_alloc_with_state, .len_size = 2, .max_size = 32 } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_ed_state_fields[] = { { .name = "reset_on_ed_fail", .descr = "reset on ED fail", .offset = offsetof(bcmolt_xgpon_ed_state, reset_on_ed_fail), .type = &type_descr_bcmos_bool }, { .name = "reset_on_ed_success", .descr = "reset on ED success", .offset = offsetof(bcmolt_xgpon_ed_state, reset_on_ed_success), .type = &type_descr_bcmos_bool } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ed_state = { .name = "bcmolt_xgpon_ed_state", .descr = "xgpon ed state", .size = sizeof(bcmolt_xgpon_ed_state), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_ed_state_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_ed_state_fields } } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_gem_id_list_u8_max_16 = { .name = "bcmolt_xgpon_gem_id_list_u8_max_16", .descr = "Variable-length list of xgpon_gem_id", .size = sizeof(bcmolt_xgpon_gem_id_list_u8_max_16), .base_type = BCMOLT_BASE_TYPE_ID_ARR_DYN, .x = { .arr_dyn = { .elem_type = &type_descr_uint16_t, .len_size = 1, .max_size = 16 } } };
bcmcli_enum_val bcmolt_xgpon_gem_port_auto_cfg_id_string_table[] = { { .name = "stat_alarm_cleared", .val = BCMOLT_XGPON_GEM_PORT_AUTO_CFG_ID_STAT_ALARM_CLEARED }, { .name = "stat_alarm_raised", .val = BCMOLT_XGPON_GEM_PORT_AUTO_CFG_ID_STAT_ALARM_RAISED }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_gem_port_auto_cfg_id = { .name = "bcmolt_xgpon_gem_port_auto_cfg_id", .descr = "Identifiers for all properties contained in the xgpon_gem_port_auto_cfg group.", .size = sizeof(bcmolt_xgpon_gem_port_auto_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_gem_port_auto_cfg_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_gem_port_cfg_id_string_table[] = { { .name = "configuration", .val = BCMOLT_XGPON_GEM_PORT_CFG_ID_CONFIGURATION }, { .name = "onu_id", .val = BCMOLT_XGPON_GEM_PORT_CFG_ID_ONU_ID }, { .name = "gem_port_state", .val = BCMOLT_XGPON_GEM_PORT_CFG_ID_GEM_PORT_STATE }, { .name = "encryption_mode", .val = BCMOLT_XGPON_GEM_PORT_CFG_ID_ENCRYPTION_MODE }, { .name = "upstream_destination_queue", .val = BCMOLT_XGPON_GEM_PORT_CFG_ID_UPSTREAM_DESTINATION_QUEUE }, { .name = "control", .val = BCMOLT_XGPON_GEM_PORT_CFG_ID_CONTROL }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_gem_port_cfg_id = { .name = "bcmolt_xgpon_gem_port_cfg_id", .descr = "Identifiers for all properties contained in the xgpon_gem_port_cfg group.", .size = sizeof(bcmolt_xgpon_gem_port_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_gem_port_cfg_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_gem_port_key_id_string_table[] = { { .name = "pon_ni", .val = BCMOLT_XGPON_GEM_PORT_KEY_ID_PON_NI }, { .name = "gem_port_id", .val = BCMOLT_XGPON_GEM_PORT_KEY_ID_GEM_PORT_ID }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_gem_port_key_id = { .name = "bcmolt_xgpon_gem_port_key_id", .descr = "Identifiers for all properties contained in the xgpon_gem_port_key group.", .size = sizeof(bcmolt_xgpon_gem_port_key_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_gem_port_key_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_gem_port_stat_alarm_cleared_id_string_table[] = { { .name = "stat", .val = BCMOLT_XGPON_GEM_PORT_STAT_ALARM_CLEARED_ID_STAT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_gem_port_stat_alarm_cleared_id = { .name = "bcmolt_xgpon_gem_port_stat_alarm_cleared_id", .descr = "Identifiers for all properties contained in the xgpon_gem_port_stat_alarm_cleared group.", .size = sizeof(bcmolt_xgpon_gem_port_stat_alarm_cleared_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_gem_port_stat_alarm_cleared_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_gem_port_stat_alarm_raised_id_string_table[] = { { .name = "stat", .val = BCMOLT_XGPON_GEM_PORT_STAT_ALARM_RAISED_ID_STAT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_gem_port_stat_alarm_raised_id = { .name = "bcmolt_xgpon_gem_port_stat_alarm_raised_id", .descr = "Identifiers for all properties contained in the xgpon_gem_port_stat_alarm_raised group.", .size = sizeof(bcmolt_xgpon_gem_port_stat_alarm_raised_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_gem_port_stat_alarm_raised_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_gem_port_stat_cfg_id_string_table[] = { { .name = "cfg", .val = BCMOLT_XGPON_GEM_PORT_STAT_CFG_ID_CFG }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_gem_port_stat_cfg_id = { .name = "bcmolt_xgpon_gem_port_stat_cfg_id", .descr = "Identifiers for all properties contained in the xgpon_gem_port_stat_cfg group.", .size = sizeof(bcmolt_xgpon_gem_port_stat_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_gem_port_stat_cfg_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_gem_port_stat_id_string_table[] = { { .name = "tx_bytes", .val = BCMOLT_XGPON_GEM_PORT_STAT_ID_TX_BYTES }, { .name = "tx_packets", .val = BCMOLT_XGPON_GEM_PORT_STAT_ID_TX_PACKETS }, { .name = "rx_packets", .val = BCMOLT_XGPON_GEM_PORT_STAT_ID_RX_PACKETS }, { .name = "rx_bytes", .val = BCMOLT_XGPON_GEM_PORT_STAT_ID_RX_BYTES }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_gem_port_stat_id = { .name = "bcmolt_xgpon_gem_port_stat_id", .descr = "Identifiers for all properties contained in the xgpon_gem_port_stat group.", .size = sizeof(bcmolt_xgpon_gem_port_stat_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_gem_port_stat_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_gem_port_state_string_table[] = { { .name = "not_configured", .val = BCMOLT_XGPON_GEM_PORT_STATE_NOT_CONFIGURED }, { .name = "inactive", .val = BCMOLT_XGPON_GEM_PORT_STATE_INACTIVE }, { .name = "active", .val = BCMOLT_XGPON_GEM_PORT_STATE_ACTIVE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_gem_port_state = { .name = "bcmolt_xgpon_gem_port_state", .descr = "XGPON GEM Port State", .size = sizeof(bcmolt_xgpon_gem_port_state), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_gem_port_state_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_gem_port_with_state_fields[] = { { .name = "gem_id", .descr = "GEM ID", .offset = offsetof(bcmolt_xgpon_gem_port_with_state, gem_id), .type = &type_descr_uint16_t }, { .name = "state", .descr = "State", .offset = offsetof(bcmolt_xgpon_gem_port_with_state, state), .type = &type_descr_bcmolt_xgpon_gem_port_state } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_gem_port_with_state = { .name = "bcmolt_xgpon_gem_port_with_state", .descr = "XGPON GEM Port With State", .size = sizeof(bcmolt_xgpon_gem_port_with_state), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_gem_port_with_state_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_gem_port_with_state_fields } } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_gem_port_with_state_list_u16_max_128 = { .name = "bcmolt_xgpon_gem_port_with_state_list_u16_max_128", .descr = "Variable-length list of xgpon_gem_port_with_state", .size = sizeof(bcmolt_xgpon_gem_port_with_state_list_u16_max_128), .base_type = BCMOLT_BASE_TYPE_ID_ARR_DYN, .x = { .arr_dyn = { .elem_type = &type_descr_bcmolt_xgpon_gem_port_with_state, .len_size = 2, .max_size = 128 } } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_gem_port_with_state_list_u16_max_256 = { .name = "bcmolt_xgpon_gem_port_with_state_list_u16_max_256", .descr = "Variable-length list of xgpon_gem_port_with_state", .size = sizeof(bcmolt_xgpon_gem_port_with_state_list_u16_max_256), .base_type = BCMOLT_BASE_TYPE_ID_ARR_DYN, .x = { .arr_dyn = { .elem_type = &type_descr_bcmolt_xgpon_gem_port_with_state, .len_size = 2, .max_size = 256 } } };
bcmcli_enum_val bcmolt_xgpon_iwf_cfg_id_string_table[] = { { .name = "us_otag_direct_tpid", .val = BCMOLT_XGPON_IWF_CFG_ID_US_OTAG_DIRECT_TPID }, { .name = "ds_tpid", .val = BCMOLT_XGPON_IWF_CFG_ID_DS_TPID }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_iwf_cfg_id = { .name = "bcmolt_xgpon_iwf_cfg_id", .descr = "Identifiers for all properties contained in the xgpon_iwf_cfg group.", .size = sizeof(bcmolt_xgpon_iwf_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_iwf_cfg_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_iwf_key_id_string_table[] = { { .name = "pon_ni", .val = BCMOLT_XGPON_IWF_KEY_ID_PON_NI }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_iwf_key_id = { .name = "bcmolt_xgpon_iwf_key_id", .descr = "Identifiers for all properties contained in the xgpon_iwf_key group.", .size = sizeof(bcmolt_xgpon_iwf_key_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_iwf_key_id_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_key_exchange_fields[] = { { .name = "interval", .descr = "Key Exchange process interval in milliseconds", .offset = offsetof(bcmolt_xgpon_key_exchange, interval), .type = &type_descr_uint32_t }, { .name = "control", .descr = "Enable\\disable periodic process of Key Exchange for active ONUs", .offset = offsetof(bcmolt_xgpon_key_exchange, control), .type = &type_descr_bcmolt_control_state }, { .name = "encrypted_ports_only", .descr = "Perform key exchange only to ONUs with GEM ports that have downstream encryption enabled", .offset = offsetof(bcmolt_xgpon_key_exchange, encrypted_ports_only), .type = &type_descr_bcmolt_control_state } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_key_exchange = { .name = "bcmolt_xgpon_key_exchange", .descr = "XGPON Key Exchange", .size = sizeof(bcmolt_xgpon_key_exchange), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_key_exchange_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_key_exchange_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_multicast_key_fields[] = { { .name = "key", .descr = "AES encryption key for multicsat XGEM port IDs", .offset = offsetof(bcmolt_xgpon_multicast_key, key), .type = &type_descr_bcmolt_aes_key }, { .name = "key_control", .descr = "Enable\\Disable encryption on multicast XGEM ports", .offset = offsetof(bcmolt_xgpon_multicast_key, key_control), .type = &type_descr_bcmos_bool } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_multicast_key = { .name = "bcmolt_xgpon_multicast_key", .descr = "XGPON Multicast key", .size = sizeof(bcmolt_xgpon_multicast_key), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_multicast_key_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_multicast_key_fields } } };
bcmcli_enum_val bcmolt_xgpon_ni_activate_all_onus_completed_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_activate_all_onus_completed_id = { .name = "bcmolt_xgpon_ni_activate_all_onus_completed_id", .descr = "Identifiers for all properties contained in the xgpon_ni_activate_all_onus_completed group.", .size = sizeof(bcmolt_xgpon_ni_activate_all_onus_completed_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_ni_activate_all_onus_completed_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_ni_adjust_tx_wavelength_id_string_table[] = { { .name = "serial_number", .val = BCMOLT_XGPON_NI_ADJUST_TX_WAVELENGTH_ID_SERIAL_NUMBER }, { .name = "freqency_adjustment_direction", .val = BCMOLT_XGPON_NI_ADJUST_TX_WAVELENGTH_ID_FREQENCY_ADJUSTMENT_DIRECTION }, { .name = "frequency_adjustment_size", .val = BCMOLT_XGPON_NI_ADJUST_TX_WAVELENGTH_ID_FREQUENCY_ADJUSTMENT_SIZE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_adjust_tx_wavelength_id = { .name = "bcmolt_xgpon_ni_adjust_tx_wavelength_id", .descr = "Identifiers for all properties contained in the xgpon_ni_adjust_tx_wavelength group.", .size = sizeof(bcmolt_xgpon_ni_adjust_tx_wavelength_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_ni_adjust_tx_wavelength_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_ni_auto_cfg_id_string_table[] = { { .name = "activate_all_onus_completed", .val = BCMOLT_XGPON_NI_AUTO_CFG_ID_ACTIVATE_ALL_ONUS_COMPLETED }, { .name = "cpu_packets_failure", .val = BCMOLT_XGPON_NI_AUTO_CFG_ID_CPU_PACKETS_FAILURE }, { .name = "deactivate_all_onus_completed", .val = BCMOLT_XGPON_NI_AUTO_CFG_ID_DEACTIVATE_ALL_ONUS_COMPLETED }, { .name = "disable_all_onus_completed", .val = BCMOLT_XGPON_NI_AUTO_CFG_ID_DISABLE_ALL_ONUS_COMPLETED }, { .name = "enable_all_onus_completed", .val = BCMOLT_XGPON_NI_AUTO_CFG_ID_ENABLE_ALL_ONUS_COMPLETED }, { .name = "los", .val = BCMOLT_XGPON_NI_AUTO_CFG_ID_LOS }, { .name = "onu_discovered", .val = BCMOLT_XGPON_NI_AUTO_CFG_ID_ONU_DISCOVERED }, { .name = "onu_upgrade_complete", .val = BCMOLT_XGPON_NI_AUTO_CFG_ID_ONU_UPGRADE_COMPLETE }, { .name = "protection_switching_onus_ranged", .val = BCMOLT_XGPON_NI_AUTO_CFG_ID_PROTECTION_SWITCHING_ONUS_RANGED }, { .name = "protection_switching_switchover_completed", .val = BCMOLT_XGPON_NI_AUTO_CFG_ID_PROTECTION_SWITCHING_SWITCHOVER_COMPLETED }, { .name = "protection_switching_traffic_resume", .val = BCMOLT_XGPON_NI_AUTO_CFG_ID_PROTECTION_SWITCHING_TRAFFIC_RESUME }, { .name = "rogue_detection_completed", .val = BCMOLT_XGPON_NI_AUTO_CFG_ID_ROGUE_DETECTION_COMPLETED }, { .name = "rogue_onu_special_map_cycle_start", .val = BCMOLT_XGPON_NI_AUTO_CFG_ID_ROGUE_ONU_SPECIAL_MAP_CYCLE_START }, { .name = "serial_number_acquisition_cycle_start", .val = BCMOLT_XGPON_NI_AUTO_CFG_ID_SERIAL_NUMBER_ACQUISITION_CYCLE_START }, { .name = "standby_pon_monitoring_cycle_completed", .val = BCMOLT_XGPON_NI_AUTO_CFG_ID_STANDBY_PON_MONITORING_CYCLE_COMPLETED }, { .name = "stat_alarm_cleared", .val = BCMOLT_XGPON_NI_AUTO_CFG_ID_STAT_ALARM_CLEARED }, { .name = "stat_alarm_raised", .val = BCMOLT_XGPON_NI_AUTO_CFG_ID_STAT_ALARM_RAISED }, { .name = "state_change_completed", .val = BCMOLT_XGPON_NI_AUTO_CFG_ID_STATE_CHANGE_COMPLETED }, { .name = "tod_request_completed", .val = BCMOLT_XGPON_NI_AUTO_CFG_ID_TOD_REQUEST_COMPLETED }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_auto_cfg_id = { .name = "bcmolt_xgpon_ni_auto_cfg_id", .descr = "Identifiers for all properties contained in the xgpon_ni_auto_cfg group.", .size = sizeof(bcmolt_xgpon_ni_auto_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_ni_auto_cfg_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_ni_broadcast_ploam_packet_id_string_table[] = { { .name = "ploam", .val = BCMOLT_XGPON_NI_BROADCAST_PLOAM_PACKET_ID_PLOAM }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_broadcast_ploam_packet_id = { .name = "bcmolt_xgpon_ni_broadcast_ploam_packet_id", .descr = "Identifiers for all properties contained in the xgpon_ni_broadcast_ploam_packet group.", .size = sizeof(bcmolt_xgpon_ni_broadcast_ploam_packet_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_ni_broadcast_ploam_packet_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_ni_cfg_id_string_table[] = { { .name = "hw_pon_id", .val = BCMOLT_XGPON_NI_CFG_ID_HW_PON_ID }, { .name = "available_bandwidth", .val = BCMOLT_XGPON_NI_CFG_ID_AVAILABLE_BANDWIDTH }, { .name = "number_of_active_onus", .val = BCMOLT_XGPON_NI_CFG_ID_NUMBER_OF_ACTIVE_ONUS }, { .name = "pon_status", .val = BCMOLT_XGPON_NI_CFG_ID_PON_STATUS }, { .name = "pon_distance", .val = BCMOLT_XGPON_NI_CFG_ID_PON_DISTANCE }, { .name = "ranging_window_size", .val = BCMOLT_XGPON_NI_CFG_ID_RANGING_WINDOW_SIZE }, { .name = "eqd_cycles_number", .val = BCMOLT_XGPON_NI_CFG_ID_EQD_CYCLES_NUMBER }, { .name = "drift_control", .val = BCMOLT_XGPON_NI_CFG_ID_DRIFT_CONTROL }, { .name = "los_alarm_threshold", .val = BCMOLT_XGPON_NI_CFG_ID_LOS_ALARM_THRESHOLD }, { .name = "los_initial_value", .val = BCMOLT_XGPON_NI_CFG_ID_LOS_INITIAL_VALUE }, { .name = "onu_alarms_thresholds", .val = BCMOLT_XGPON_NI_CFG_ID_ONU_ALARMS_THRESHOLDS }, { .name = "ber_monitor", .val = BCMOLT_XGPON_NI_CFG_ID_BER_MONITOR }, { .name = "onu_activation", .val = BCMOLT_XGPON_NI_CFG_ID_ONU_ACTIVATION }, { .name = "sn_acquisition", .val = BCMOLT_XGPON_NI_CFG_ID_SN_ACQUISITION }, { .name = "key_exchange", .val = BCMOLT_XGPON_NI_CFG_ID_KEY_EXCHANGE }, { .name = "protection_switching", .val = BCMOLT_XGPON_NI_CFG_ID_PROTECTION_SWITCHING }, { .name = "protection_switching_debug", .val = BCMOLT_XGPON_NI_CFG_ID_PROTECTION_SWITCHING_DEBUG }, { .name = "cbr_rt_allocation_profile", .val = BCMOLT_XGPON_NI_CFG_ID_CBR_RT_ALLOCATION_PROFILE }, { .name = "cbr_nrt_allocation_profile", .val = BCMOLT_XGPON_NI_CFG_ID_CBR_NRT_ALLOCATION_PROFILE }, { .name = "power_management", .val = BCMOLT_XGPON_NI_CFG_ID_POWER_MANAGEMENT }, { .name = "rogue_onu_detection_process", .val = BCMOLT_XGPON_NI_CFG_ID_ROGUE_ONU_DETECTION_PROCESS }, { .name = "periodic_standby_pon_monitoring", .val = BCMOLT_XGPON_NI_CFG_ID_PERIODIC_STANDBY_PON_MONITORING }, { .name = "dba_mode", .val = BCMOLT_XGPON_NI_CFG_ID_DBA_MODE }, { .name = "ploam_handling", .val = BCMOLT_XGPON_NI_CFG_ID_PLOAM_HANDLING }, { .name = "min_data_alloc_id", .val = BCMOLT_XGPON_NI_CFG_ID_MIN_DATA_ALLOC_ID }, { .name = "min_data_gem_port_id", .val = BCMOLT_XGPON_NI_CFG_ID_MIN_DATA_GEM_PORT_ID }, { .name = "multicast_key", .val = BCMOLT_XGPON_NI_CFG_ID_MULTICAST_KEY }, { .name = "prbs_checker", .val = BCMOLT_XGPON_NI_CFG_ID_PRBS_CHECKER }, { .name = "prbs_generator", .val = BCMOLT_XGPON_NI_CFG_ID_PRBS_GENERATOR }, { .name = "prbs_status", .val = BCMOLT_XGPON_NI_CFG_ID_PRBS_STATUS }, { .name = "automatic_onu_deactivation", .val = BCMOLT_XGPON_NI_CFG_ID_AUTOMATIC_ONU_DEACTIVATION }, { .name = "us_bandwidth_limit", .val = BCMOLT_XGPON_NI_CFG_ID_US_BANDWIDTH_LIMIT }, { .name = "all_onus", .val = BCMOLT_XGPON_NI_CFG_ID_ALL_ONUS }, { .name = "all_mcast_gem_ports", .val = BCMOLT_XGPON_NI_CFG_ID_ALL_MCAST_GEM_PORTS }, { .name = "debug", .val = BCMOLT_XGPON_NI_CFG_ID_DEBUG }, { .name = "onu_upgrade_params", .val = BCMOLT_XGPON_NI_CFG_ID_ONU_UPGRADE_PARAMS }, { .name = "ds_fec_mode", .val = BCMOLT_XGPON_NI_CFG_ID_DS_FEC_MODE }, { .name = "dba_type", .val = BCMOLT_XGPON_NI_CFG_ID_DBA_TYPE }, { .name = "onu_tuning", .val = BCMOLT_XGPON_NI_CFG_ID_ONU_TUNING }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_cfg_id = { .name = "bcmolt_xgpon_ni_cfg_id", .descr = "Identifiers for all properties contained in the xgpon_ni_cfg group.", .size = sizeof(bcmolt_xgpon_ni_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_ni_cfg_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_ni_cpu_packets_failure_id_string_table[] = { { .name = "error", .val = BCMOLT_XGPON_NI_CPU_PACKETS_FAILURE_ID_ERROR }, { .name = "gem_port_id", .val = BCMOLT_XGPON_NI_CPU_PACKETS_FAILURE_ID_GEM_PORT_ID }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_cpu_packets_failure_id = { .name = "bcmolt_xgpon_ni_cpu_packets_failure_id", .descr = "Identifiers for all properties contained in the xgpon_ni_cpu_packets_failure group.", .size = sizeof(bcmolt_xgpon_ni_cpu_packets_failure_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_ni_cpu_packets_failure_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_ni_cpu_packets_id_string_table[] = { { .name = "packet_type", .val = BCMOLT_XGPON_NI_CPU_PACKETS_ID_PACKET_TYPE }, { .name = "calc_crc", .val = BCMOLT_XGPON_NI_CPU_PACKETS_ID_CALC_CRC }, { .name = "gem_port_list", .val = BCMOLT_XGPON_NI_CPU_PACKETS_ID_GEM_PORT_LIST }, { .name = "buffer", .val = BCMOLT_XGPON_NI_CPU_PACKETS_ID_BUFFER }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_cpu_packets_id = { .name = "bcmolt_xgpon_ni_cpu_packets_id", .descr = "Identifiers for all properties contained in the xgpon_ni_cpu_packets group.", .size = sizeof(bcmolt_xgpon_ni_cpu_packets_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_ni_cpu_packets_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_ni_deactivate_all_onus_completed_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_deactivate_all_onus_completed_id = { .name = "bcmolt_xgpon_ni_deactivate_all_onus_completed_id", .descr = "Identifiers for all properties contained in the xgpon_ni_deactivate_all_onus_completed group.", .size = sizeof(bcmolt_xgpon_ni_deactivate_all_onus_completed_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_ni_deactivate_all_onus_completed_id_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_debug_fields[] = { { .name = "increase_available_cbr_bw", .descr = "Use increase available CBR bandwidth for better BW utilization", .offset = offsetof(bcmolt_xgpon_ni_debug, increase_available_cbr_bw), .type = &type_descr_bcmos_bool }, { .name = "inter_burst_gap_in_bytes", .descr = "Gap between two consecutive bursts for the same ONU", .offset = offsetof(bcmolt_xgpon_ni_debug, inter_burst_gap_in_bytes), .type = &type_descr_uint16_t }, { .name = "number_of_gem_ports_per_onu", .descr = "Number of gem ports per onu", .offset = offsetof(bcmolt_xgpon_ni_debug, number_of_gem_ports_per_onu), .type = &type_descr_uint16_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_debug = { .name = "bcmolt_xgpon_ni_debug", .descr = "XGPON NI Debug parameters", .size = sizeof(bcmolt_xgpon_ni_debug), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_ni_debug_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_ni_debug_fields } } };
bcmcli_enum_val bcmolt_xgpon_ni_disable_all_onus_completed_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_disable_all_onus_completed_id = { .name = "bcmolt_xgpon_ni_disable_all_onus_completed_id", .descr = "Identifiers for all properties contained in the xgpon_ni_disable_all_onus_completed group.", .size = sizeof(bcmolt_xgpon_ni_disable_all_onus_completed_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_ni_disable_all_onus_completed_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_ni_disable_serial_number_id_string_table[] = { { .name = "control", .val = BCMOLT_XGPON_NI_DISABLE_SERIAL_NUMBER_ID_CONTROL }, { .name = "serial_number", .val = BCMOLT_XGPON_NI_DISABLE_SERIAL_NUMBER_ID_SERIAL_NUMBER }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_disable_serial_number_id = { .name = "bcmolt_xgpon_ni_disable_serial_number_id", .descr = "Identifiers for all properties contained in the xgpon_ni_disable_serial_number group.", .size = sizeof(bcmolt_xgpon_ni_disable_serial_number_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_ni_disable_serial_number_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_ni_enable_all_onus_completed_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_enable_all_onus_completed_id = { .name = "bcmolt_xgpon_ni_enable_all_onus_completed_id", .descr = "Identifiers for all properties contained in the xgpon_ni_enable_all_onus_completed group.", .size = sizeof(bcmolt_xgpon_ni_enable_all_onus_completed_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_ni_enable_all_onus_completed_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_ni_key_id_string_table[] = { { .name = "pon_ni", .val = BCMOLT_XGPON_NI_KEY_ID_PON_NI }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_key_id = { .name = "bcmolt_xgpon_ni_key_id", .descr = "Identifiers for all properties contained in the xgpon_ni_key group.", .size = sizeof(bcmolt_xgpon_ni_key_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_ni_key_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_ni_los_id_string_table[] = { { .name = "status", .val = BCMOLT_XGPON_NI_LOS_ID_STATUS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_los_id = { .name = "bcmolt_xgpon_ni_los_id", .descr = "Identifiers for all properties contained in the xgpon_ni_los group.", .size = sizeof(bcmolt_xgpon_ni_los_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_ni_los_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_ni_onu_discovered_id_string_table[] = { { .name = "serial_number", .val = BCMOLT_XGPON_NI_ONU_DISCOVERED_ID_SERIAL_NUMBER }, { .name = "ranging_time", .val = BCMOLT_XGPON_NI_ONU_DISCOVERED_ID_RANGING_TIME }, { .name = "onu_id", .val = BCMOLT_XGPON_NI_ONU_DISCOVERED_ID_ONU_ID }, { .name = "upstream_line_rate_capabilities", .val = BCMOLT_XGPON_NI_ONU_DISCOVERED_ID_UPSTREAM_LINE_RATE_CAPABILITIES }, { .name = "current_downstream_pon_id", .val = BCMOLT_XGPON_NI_ONU_DISCOVERED_ID_CURRENT_DOWNSTREAM_PON_ID }, { .name = "current_upstream_pon_id", .val = BCMOLT_XGPON_NI_ONU_DISCOVERED_ID_CURRENT_UPSTREAM_PON_ID }, { .name = "calibration_record", .val = BCMOLT_XGPON_NI_ONU_DISCOVERED_ID_CALIBRATION_RECORD }, { .name = "tuning_granularity", .val = BCMOLT_XGPON_NI_ONU_DISCOVERED_ID_TUNING_GRANULARITY }, { .name = "step_tuning_time", .val = BCMOLT_XGPON_NI_ONU_DISCOVERED_ID_STEP_TUNING_TIME }, { .name = "attenuation", .val = BCMOLT_XGPON_NI_ONU_DISCOVERED_ID_ATTENUATION }, { .name = "power_levelling_capabilities", .val = BCMOLT_XGPON_NI_ONU_DISCOVERED_ID_POWER_LEVELLING_CAPABILITIES }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_onu_discovered_id = { .name = "bcmolt_xgpon_ni_onu_discovered_id", .descr = "Identifiers for all properties contained in the xgpon_ni_onu_discovered group.", .size = sizeof(bcmolt_xgpon_ni_onu_discovered_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_ni_onu_discovered_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_ni_onu_upgrade_complete_id_string_table[] = { { .name = "status", .val = BCMOLT_XGPON_NI_ONU_UPGRADE_COMPLETE_ID_STATUS }, { .name = "list_of_failed_entities", .val = BCMOLT_XGPON_NI_ONU_UPGRADE_COMPLETE_ID_LIST_OF_FAILED_ENTITIES }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_onu_upgrade_complete_id = { .name = "bcmolt_xgpon_ni_onu_upgrade_complete_id", .descr = "Identifiers for all properties contained in the xgpon_ni_onu_upgrade_complete group.", .size = sizeof(bcmolt_xgpon_ni_onu_upgrade_complete_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_ni_onu_upgrade_complete_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_ni_protection_switching_onus_ranged_id_string_table[] = { { .name = "onus", .val = BCMOLT_XGPON_NI_PROTECTION_SWITCHING_ONUS_RANGED_ID_ONUS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_protection_switching_onus_ranged_id = { .name = "bcmolt_xgpon_ni_protection_switching_onus_ranged_id", .descr = "Identifiers for all properties contained in the xgpon_ni_protection_switching_onus_ranged group.", .size = sizeof(bcmolt_xgpon_ni_protection_switching_onus_ranged_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_ni_protection_switching_onus_ranged_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_ni_protection_switching_switchover_completed_id_string_table[] = { { .name = "result", .val = BCMOLT_XGPON_NI_PROTECTION_SWITCHING_SWITCHOVER_COMPLETED_ID_RESULT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_protection_switching_switchover_completed_id = { .name = "bcmolt_xgpon_ni_protection_switching_switchover_completed_id", .descr = "Identifiers for all properties contained in the xgpon_ni_protection_switching_switchover_completed group.", .size = sizeof(bcmolt_xgpon_ni_protection_switching_switchover_completed_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_ni_protection_switching_switchover_completed_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_ni_protection_switching_traffic_resume_id_string_table[] = { { .name = "result", .val = BCMOLT_XGPON_NI_PROTECTION_SWITCHING_TRAFFIC_RESUME_ID_RESULT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_protection_switching_traffic_resume_id = { .name = "bcmolt_xgpon_ni_protection_switching_traffic_resume_id", .descr = "Identifiers for all properties contained in the xgpon_ni_protection_switching_traffic_resume group.", .size = sizeof(bcmolt_xgpon_ni_protection_switching_traffic_resume_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_ni_protection_switching_traffic_resume_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_ni_reset_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_reset_id = { .name = "bcmolt_xgpon_ni_reset_id", .descr = "Identifiers for all properties contained in the xgpon_ni_reset group.", .size = sizeof(bcmolt_xgpon_ni_reset_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_ni_reset_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_ni_rogue_detection_completed_id_string_table[] = { { .name = "window_type", .val = BCMOLT_XGPON_NI_ROGUE_DETECTION_COMPLETED_ID_WINDOW_TYPE }, { .name = "measurement_status", .val = BCMOLT_XGPON_NI_ROGUE_DETECTION_COMPLETED_ID_MEASUREMENT_STATUS }, { .name = "alloc_id", .val = BCMOLT_XGPON_NI_ROGUE_DETECTION_COMPLETED_ID_ALLOC_ID }, { .name = "onu_id", .val = BCMOLT_XGPON_NI_ROGUE_DETECTION_COMPLETED_ID_ONU_ID }, { .name = "is_delineation", .val = BCMOLT_XGPON_NI_ROGUE_DETECTION_COMPLETED_ID_IS_DELINEATION }, { .name = "is_ed", .val = BCMOLT_XGPON_NI_ROGUE_DETECTION_COMPLETED_ID_IS_ED }, { .name = "rx_data", .val = BCMOLT_XGPON_NI_ROGUE_DETECTION_COMPLETED_ID_RX_DATA }, { .name = "ploam_received_onu_id", .val = BCMOLT_XGPON_NI_ROGUE_DETECTION_COMPLETED_ID_PLOAM_RECEIVED_ONU_ID }, { .name = "ploam_received_mic_error", .val = BCMOLT_XGPON_NI_ROGUE_DETECTION_COMPLETED_ID_PLOAM_RECEIVED_MIC_ERROR }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_rogue_detection_completed_id = { .name = "bcmolt_xgpon_ni_rogue_detection_completed_id", .descr = "Identifiers for all properties contained in the xgpon_ni_rogue_detection_completed group.", .size = sizeof(bcmolt_xgpon_ni_rogue_detection_completed_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_ni_rogue_detection_completed_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_ni_rogue_detection_window_id_string_table[] = { { .name = "window_type", .val = BCMOLT_XGPON_NI_ROGUE_DETECTION_WINDOW_ID_WINDOW_TYPE }, { .name = "alloc_id", .val = BCMOLT_XGPON_NI_ROGUE_DETECTION_WINDOW_ID_ALLOC_ID }, { .name = "onu_id", .val = BCMOLT_XGPON_NI_ROGUE_DETECTION_WINDOW_ID_ONU_ID }, { .name = "second_ranging_window", .val = BCMOLT_XGPON_NI_ROGUE_DETECTION_WINDOW_ID_SECOND_RANGING_WINDOW }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_rogue_detection_window_id = { .name = "bcmolt_xgpon_ni_rogue_detection_window_id", .descr = "Identifiers for all properties contained in the xgpon_ni_rogue_detection_window group.", .size = sizeof(bcmolt_xgpon_ni_rogue_detection_window_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_ni_rogue_detection_window_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_ni_rogue_onu_special_map_cycle_start_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_rogue_onu_special_map_cycle_start_id = { .name = "bcmolt_xgpon_ni_rogue_onu_special_map_cycle_start_id", .descr = "Identifiers for all properties contained in the xgpon_ni_rogue_onu_special_map_cycle_start group.", .size = sizeof(bcmolt_xgpon_ni_rogue_onu_special_map_cycle_start_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_ni_rogue_onu_special_map_cycle_start_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_ni_run_special_bw_map_id_string_table[] = { { .name = "number_of_cycle", .val = BCMOLT_XGPON_NI_RUN_SPECIAL_BW_MAP_ID_NUMBER_OF_CYCLE }, { .name = "allocation_number", .val = BCMOLT_XGPON_NI_RUN_SPECIAL_BW_MAP_ID_ALLOCATION_NUMBER }, { .name = "bw_map_array", .val = BCMOLT_XGPON_NI_RUN_SPECIAL_BW_MAP_ID_BW_MAP_ARRAY }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_run_special_bw_map_id = { .name = "bcmolt_xgpon_ni_run_special_bw_map_id", .descr = "Identifiers for all properties contained in the xgpon_ni_run_special_bw_map group.", .size = sizeof(bcmolt_xgpon_ni_run_special_bw_map_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_ni_run_special_bw_map_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_ni_serial_number_acquisition_cycle_start_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_serial_number_acquisition_cycle_start_id = { .name = "bcmolt_xgpon_ni_serial_number_acquisition_cycle_start_id", .descr = "Identifiers for all properties contained in the xgpon_ni_serial_number_acquisition_cycle_start group.", .size = sizeof(bcmolt_xgpon_ni_serial_number_acquisition_cycle_start_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_ni_serial_number_acquisition_cycle_start_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_ni_set_onu_state_id_string_table[] = { { .name = "onu_state", .val = BCMOLT_XGPON_NI_SET_ONU_STATE_ID_ONU_STATE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_set_onu_state_id = { .name = "bcmolt_xgpon_ni_set_onu_state_id", .descr = "Identifiers for all properties contained in the xgpon_ni_set_onu_state group.", .size = sizeof(bcmolt_xgpon_ni_set_onu_state_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_ni_set_onu_state_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_ni_set_pon_state_id_string_table[] = { { .name = "pon_state", .val = BCMOLT_XGPON_NI_SET_PON_STATE_ID_PON_STATE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_set_pon_state_id = { .name = "bcmolt_xgpon_ni_set_pon_state_id", .descr = "Identifiers for all properties contained in the xgpon_ni_set_pon_state group.", .size = sizeof(bcmolt_xgpon_ni_set_pon_state_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_ni_set_pon_state_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_ni_single_request_standby_pon_monitoring_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_single_request_standby_pon_monitoring_id = { .name = "bcmolt_xgpon_ni_single_request_standby_pon_monitoring_id", .descr = "Identifiers for all properties contained in the xgpon_ni_single_request_standby_pon_monitoring group.", .size = sizeof(bcmolt_xgpon_ni_single_request_standby_pon_monitoring_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_ni_single_request_standby_pon_monitoring_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_ni_standby_pon_monitoring_cycle_completed_id_string_table[] = { { .name = "number_of_detected_delimiter", .val = BCMOLT_XGPON_NI_STANDBY_PON_MONITORING_CYCLE_COMPLETED_ID_NUMBER_OF_DETECTED_DELIMITER }, { .name = "energy_detect_signal", .val = BCMOLT_XGPON_NI_STANDBY_PON_MONITORING_CYCLE_COMPLETED_ID_ENERGY_DETECT_SIGNAL }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_standby_pon_monitoring_cycle_completed_id = { .name = "bcmolt_xgpon_ni_standby_pon_monitoring_cycle_completed_id", .descr = "Identifiers for all properties contained in the xgpon_ni_standby_pon_monitoring_cycle_completed group.", .size = sizeof(bcmolt_xgpon_ni_standby_pon_monitoring_cycle_completed_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_ni_standby_pon_monitoring_cycle_completed_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_ni_start_onu_upgrade_id_string_table[] = { { .name = "list_of_onu_ids", .val = BCMOLT_XGPON_NI_START_ONU_UPGRADE_ID_LIST_OF_ONU_IDS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_start_onu_upgrade_id = { .name = "bcmolt_xgpon_ni_start_onu_upgrade_id", .descr = "Identifiers for all properties contained in the xgpon_ni_start_onu_upgrade group.", .size = sizeof(bcmolt_xgpon_ni_start_onu_upgrade_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_ni_start_onu_upgrade_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_ni_stat_alarm_cleared_id_string_table[] = { { .name = "stat", .val = BCMOLT_XGPON_NI_STAT_ALARM_CLEARED_ID_STAT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_stat_alarm_cleared_id = { .name = "bcmolt_xgpon_ni_stat_alarm_cleared_id", .descr = "Identifiers for all properties contained in the xgpon_ni_stat_alarm_cleared group.", .size = sizeof(bcmolt_xgpon_ni_stat_alarm_cleared_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_ni_stat_alarm_cleared_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_ni_stat_alarm_raised_id_string_table[] = { { .name = "stat", .val = BCMOLT_XGPON_NI_STAT_ALARM_RAISED_ID_STAT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_stat_alarm_raised_id = { .name = "bcmolt_xgpon_ni_stat_alarm_raised_id", .descr = "Identifiers for all properties contained in the xgpon_ni_stat_alarm_raised group.", .size = sizeof(bcmolt_xgpon_ni_stat_alarm_raised_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_ni_stat_alarm_raised_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_ni_stat_cfg_id_string_table[] = { { .name = "cfg", .val = BCMOLT_XGPON_NI_STAT_CFG_ID_CFG }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_stat_cfg_id = { .name = "bcmolt_xgpon_ni_stat_cfg_id", .descr = "Identifiers for all properties contained in the xgpon_ni_stat_cfg group.", .size = sizeof(bcmolt_xgpon_ni_stat_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_ni_stat_cfg_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_ni_stat_id_string_table[] = { { .name = "fec_codewords", .val = BCMOLT_XGPON_NI_STAT_ID_FEC_CODEWORDS }, { .name = "bip32_bytes", .val = BCMOLT_XGPON_NI_STAT_ID_BIP32_BYTES }, { .name = "bip32_errors", .val = BCMOLT_XGPON_NI_STAT_ID_BIP32_ERRORS }, { .name = "rx_xgtc_headers", .val = BCMOLT_XGPON_NI_STAT_ID_RX_XGTC_HEADERS }, { .name = "rx_xgtc_corrected", .val = BCMOLT_XGPON_NI_STAT_ID_RX_XGTC_CORRECTED }, { .name = "rx_xgtc_uncorrected", .val = BCMOLT_XGPON_NI_STAT_ID_RX_XGTC_UNCORRECTED }, { .name = "rx_xgem", .val = BCMOLT_XGPON_NI_STAT_ID_RX_XGEM }, { .name = "rx_xgem_dropped", .val = BCMOLT_XGPON_NI_STAT_ID_RX_XGEM_DROPPED }, { .name = "rx_xgem_idle", .val = BCMOLT_XGPON_NI_STAT_ID_RX_XGEM_IDLE }, { .name = "rx_xgem_corrected", .val = BCMOLT_XGPON_NI_STAT_ID_RX_XGEM_CORRECTED }, { .name = "rx_crc_error", .val = BCMOLT_XGPON_NI_STAT_ID_RX_CRC_ERROR }, { .name = "rx_fragment_error", .val = BCMOLT_XGPON_NI_STAT_ID_RX_FRAGMENT_ERROR }, { .name = "rx_packets_dropped", .val = BCMOLT_XGPON_NI_STAT_ID_RX_PACKETS_DROPPED }, { .name = "rx_dropped_too_short", .val = BCMOLT_XGPON_NI_STAT_ID_RX_DROPPED_TOO_SHORT }, { .name = "rx_dropped_too_long", .val = BCMOLT_XGPON_NI_STAT_ID_RX_DROPPED_TOO_LONG }, { .name = "rx_key_error", .val = BCMOLT_XGPON_NI_STAT_ID_RX_KEY_ERROR }, { .name = "tx_ploams", .val = BCMOLT_XGPON_NI_STAT_ID_TX_PLOAMS }, { .name = "rx_ploams_dropped", .val = BCMOLT_XGPON_NI_STAT_ID_RX_PLOAMS_DROPPED }, { .name = "rx_allocations_valid", .val = BCMOLT_XGPON_NI_STAT_ID_RX_ALLOCATIONS_VALID }, { .name = "rx_allocations_invalid", .val = BCMOLT_XGPON_NI_STAT_ID_RX_ALLOCATIONS_INVALID }, { .name = "rx_allocations_disabled", .val = BCMOLT_XGPON_NI_STAT_ID_RX_ALLOCATIONS_DISABLED }, { .name = "rx_ploams", .val = BCMOLT_XGPON_NI_STAT_ID_RX_PLOAMS }, { .name = "rx_ploams_non_idle", .val = BCMOLT_XGPON_NI_STAT_ID_RX_PLOAMS_NON_IDLE }, { .name = "rx_ploams_error", .val = BCMOLT_XGPON_NI_STAT_ID_RX_PLOAMS_ERROR }, { .name = "rx_cpu", .val = BCMOLT_XGPON_NI_STAT_ID_RX_CPU }, { .name = "rx_omci", .val = BCMOLT_XGPON_NI_STAT_ID_RX_OMCI }, { .name = "rx_omci_packets_crc_error", .val = BCMOLT_XGPON_NI_STAT_ID_RX_OMCI_PACKETS_CRC_ERROR }, { .name = "tx_packets", .val = BCMOLT_XGPON_NI_STAT_ID_TX_PACKETS }, { .name = "tx_xgem", .val = BCMOLT_XGPON_NI_STAT_ID_TX_XGEM }, { .name = "tx_cpu", .val = BCMOLT_XGPON_NI_STAT_ID_TX_CPU }, { .name = "tx_omci", .val = BCMOLT_XGPON_NI_STAT_ID_TX_OMCI }, { .name = "tx_cpu_omci_packets_dropped", .val = BCMOLT_XGPON_NI_STAT_ID_TX_CPU_OMCI_PACKETS_DROPPED }, { .name = "tx_dropped_illegal_length", .val = BCMOLT_XGPON_NI_STAT_ID_TX_DROPPED_ILLEGAL_LENGTH }, { .name = "tx_dropped_tpid_miss", .val = BCMOLT_XGPON_NI_STAT_ID_TX_DROPPED_TPID_MISS }, { .name = "tx_dropped_vid_miss", .val = BCMOLT_XGPON_NI_STAT_ID_TX_DROPPED_VID_MISS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_stat_id = { .name = "bcmolt_xgpon_ni_stat_id", .descr = "Identifiers for all properties contained in the xgpon_ni_stat group.", .size = sizeof(bcmolt_xgpon_ni_stat_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_ni_stat_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_ni_state_change_completed_id_string_table[] = { { .name = "result", .val = BCMOLT_XGPON_NI_STATE_CHANGE_COMPLETED_ID_RESULT }, { .name = "previous_state", .val = BCMOLT_XGPON_NI_STATE_CHANGE_COMPLETED_ID_PREVIOUS_STATE }, { .name = "new_state", .val = BCMOLT_XGPON_NI_STATE_CHANGE_COMPLETED_ID_NEW_STATE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_state_change_completed_id = { .name = "bcmolt_xgpon_ni_state_change_completed_id", .descr = "Identifiers for all properties contained in the xgpon_ni_state_change_completed group.", .size = sizeof(bcmolt_xgpon_ni_state_change_completed_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_ni_state_change_completed_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_ni_tod_request_completed_id_string_table[] = { { .name = "tod_string", .val = BCMOLT_XGPON_NI_TOD_REQUEST_COMPLETED_ID_TOD_STRING }, { .name = "sfc", .val = BCMOLT_XGPON_NI_TOD_REQUEST_COMPLETED_ID_SFC }, { .name = "rtc_offset_sec", .val = BCMOLT_XGPON_NI_TOD_REQUEST_COMPLETED_ID_RTC_OFFSET_SEC }, { .name = "rtc_offset_nsec", .val = BCMOLT_XGPON_NI_TOD_REQUEST_COMPLETED_ID_RTC_OFFSET_NSEC }, { .name = "status", .val = BCMOLT_XGPON_NI_TOD_REQUEST_COMPLETED_ID_STATUS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_tod_request_completed_id = { .name = "bcmolt_xgpon_ni_tod_request_completed_id", .descr = "Identifiers for all properties contained in the xgpon_ni_tod_request_completed group.", .size = sizeof(bcmolt_xgpon_ni_tod_request_completed_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_ni_tod_request_completed_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_ni_tod_request_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_tod_request_id = { .name = "bcmolt_xgpon_ni_tod_request_id", .descr = "Identifiers for all properties contained in the xgpon_ni_tod_request group.", .size = sizeof(bcmolt_xgpon_ni_tod_request_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_ni_tod_request_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_num_of_onus_string_table[] = { { .name = "xgpon_support_256_onus", .val = BCMOLT_XGPON_NUM_OF_ONUS_XGPON_SUPPORT_256_ONUS }, { .name = "xgpon_support_510_onus", .val = BCMOLT_XGPON_NUM_OF_ONUS_XGPON_SUPPORT_510_ONUS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_num_of_onus = { .name = "bcmolt_xgpon_num_of_onus", .descr = "xgpon num of onus", .size = sizeof(bcmolt_xgpon_num_of_onus), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_num_of_onus_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_activation_fields[] = { { .name = "key_exchange", .descr = "Perform single key exchange during activation.", .offset = offsetof(bcmolt_xgpon_onu_activation, key_exchange), .type = &type_descr_bcmolt_control_state }, { .name = "fail_due_to_regis_auto_fail", .descr = "Deactivate ONU due to registration authentication failure", .offset = offsetof(bcmolt_xgpon_onu_activation, fail_due_to_regis_auto_fail), .type = &type_descr_bcmolt_control_state } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_activation = { .name = "bcmolt_xgpon_onu_activation", .descr = "XGPON ONU Activation", .size = sizeof(bcmolt_xgpon_onu_activation), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_onu_activation_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_onu_activation_fields } } };
bcmcli_enum_val bcmolt_xgpon_onu_adjust_tx_wavelength_id_string_table[] = { { .name = "frequency_adjustment_direction", .val = BCMOLT_XGPON_ONU_ADJUST_TX_WAVELENGTH_ID_FREQUENCY_ADJUSTMENT_DIRECTION }, { .name = "frequency_adjustment_size", .val = BCMOLT_XGPON_ONU_ADJUST_TX_WAVELENGTH_ID_FREQUENCY_ADJUSTMENT_SIZE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_adjust_tx_wavelength_id = { .name = "bcmolt_xgpon_onu_adjust_tx_wavelength_id", .descr = "Identifiers for all properties contained in the xgpon_onu_adjust_tx_wavelength group.", .size = sizeof(bcmolt_xgpon_onu_adjust_tx_wavelength_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_onu_adjust_tx_wavelength_id_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_aes_key_fields[] = { { .name = "encryption_key", .descr = "encryption key", .offset = offsetof(bcmolt_xgpon_onu_aes_key, encryption_key), .type = &type_descr_bcmolt_aes_key }, { .name = "key_index", .descr = "key index", .offset = offsetof(bcmolt_xgpon_onu_aes_key, key_index), .type = &type_descr_uint8_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_aes_key = { .name = "bcmolt_xgpon_onu_aes_key", .descr = "XGPON ONU AES KEY", .size = sizeof(bcmolt_xgpon_onu_aes_key), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_onu_aes_key_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_onu_aes_key_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_alarm_state_fields[] = { { .name = "losi", .descr = "Loss of signal", .offset = offsetof(bcmolt_xgpon_onu_alarm_state, losi), .type = &type_descr_bcmolt_status }, { .name = "lobi", .descr = "Loss of burst", .offset = offsetof(bcmolt_xgpon_onu_alarm_state, lobi), .type = &type_descr_bcmolt_status }, { .name = "lopci", .descr = "Loss of PLOAM channel", .offset = offsetof(bcmolt_xgpon_onu_alarm_state, lopci), .type = &type_descr_bcmolt_status }, { .name = "lopci_mic_error", .descr = "Mic error on ploam channel", .offset = offsetof(bcmolt_xgpon_onu_alarm_state, lopci_mic_error), .type = &type_descr_bcmolt_status }, { .name = "looci", .descr = "Loss of OMCI channel", .offset = offsetof(bcmolt_xgpon_onu_alarm_state, looci), .type = &type_descr_bcmolt_status }, { .name = "tiwi", .descr = "Transmission interference Alarm", .offset = offsetof(bcmolt_xgpon_onu_alarm_state, tiwi), .type = &type_descr_bcmolt_status }, { .name = "dowi", .descr = "Drift of Window", .offset = offsetof(bcmolt_xgpon_onu_alarm_state, dowi), .type = &type_descr_bcmolt_status }, { .name = "sufi", .descr = "Start UP Failure", .offset = offsetof(bcmolt_xgpon_onu_alarm_state, sufi), .type = &type_descr_bcmolt_status }, { .name = "sfi", .descr = "Signal Fail", .offset = offsetof(bcmolt_xgpon_onu_alarm_state, sfi), .type = &type_descr_bcmolt_status }, { .name = "sdi", .descr = "Signal Degraded", .offset = offsetof(bcmolt_xgpon_onu_alarm_state, sdi), .type = &type_descr_bcmolt_status }, { .name = "dfi", .descr = "Deactivation Failure", .offset = offsetof(bcmolt_xgpon_onu_alarm_state, dfi), .type = &type_descr_bcmolt_status }, { .name = "dgi", .descr = "Dying gasp", .offset = offsetof(bcmolt_xgpon_onu_alarm_state, dgi), .type = &type_descr_bcmolt_status }, { .name = "pqsi", .descr = "Ploam queue status", .offset = offsetof(bcmolt_xgpon_onu_alarm_state, pqsi), .type = &type_descr_bcmolt_status } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_alarm_state = { .name = "bcmolt_xgpon_onu_alarm_state", .descr = "XGPON ONU alarm status", .size = sizeof(bcmolt_xgpon_onu_alarm_state), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_onu_alarm_state_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_onu_alarm_state_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_alarms_fields[] = { { .name = "losi", .descr = "LOSi", .offset = offsetof(bcmolt_xgpon_onu_alarms, losi), .type = &type_descr_bcmolt_status }, { .name = "lobi", .descr = "LOBi", .offset = offsetof(bcmolt_xgpon_onu_alarms, lobi), .type = &type_descr_bcmolt_status }, { .name = "lopci_miss", .descr = "LOPCi miss", .offset = offsetof(bcmolt_xgpon_onu_alarms, lopci_miss), .type = &type_descr_bcmolt_status }, { .name = "lopci_mic_error", .descr = "LOPCi mic error", .offset = offsetof(bcmolt_xgpon_onu_alarms, lopci_mic_error), .type = &type_descr_bcmolt_status } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_alarms = { .name = "bcmolt_xgpon_onu_alarms", .descr = "XGPON ONU alarms", .size = sizeof(bcmolt_xgpon_onu_alarms), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_onu_alarms_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_onu_alarms_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_alarms_thresholds_fields[] = { { .name = "losi", .descr = "Threshold for asserting LOSi alarm.", .offset = offsetof(bcmolt_xgpon_onu_alarms_thresholds, losi), .type = &type_descr_uint8_t }, { .name = "lobi", .descr = "Threshold for asserting LOBi alarm.", .offset = offsetof(bcmolt_xgpon_onu_alarms_thresholds, lobi), .type = &type_descr_uint8_t }, { .name = "looci", .descr = "Threshold for asserting LOOCi alarm.", .offset = offsetof(bcmolt_xgpon_onu_alarms_thresholds, looci), .type = &type_descr_uint8_t }, { .name = "lopci", .descr = "Threshold for asserting LOPCi alarm. ", .offset = offsetof(bcmolt_xgpon_onu_alarms_thresholds, lopci), .type = &type_descr_uint8_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_alarms_thresholds = { .name = "bcmolt_xgpon_onu_alarms_thresholds", .descr = "XGPON ONU alarms thresholds", .size = sizeof(bcmolt_xgpon_onu_alarms_thresholds), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_onu_alarms_thresholds_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_onu_alarms_thresholds_fields } } };
bcmcli_enum_val bcmolt_xgpon_onu_auto_cfg_id_string_table[] = { { .name = "dfi", .val = BCMOLT_XGPON_ONU_AUTO_CFG_ID_DFI }, { .name = "dgi", .val = BCMOLT_XGPON_ONU_AUTO_CFG_ID_DGI }, { .name = "dowi", .val = BCMOLT_XGPON_ONU_AUTO_CFG_ID_DOWI }, { .name = "invalid_dbru_report", .val = BCMOLT_XGPON_ONU_AUTO_CFG_ID_INVALID_DBRU_REPORT }, { .name = "key_exchange_completed", .val = BCMOLT_XGPON_ONU_AUTO_CFG_ID_KEY_EXCHANGE_COMPLETED }, { .name = "key_exchange_cycle_skipped", .val = BCMOLT_XGPON_ONU_AUTO_CFG_ID_KEY_EXCHANGE_CYCLE_SKIPPED }, { .name = "key_exchange_key_mismatch", .val = BCMOLT_XGPON_ONU_AUTO_CFG_ID_KEY_EXCHANGE_KEY_MISMATCH }, { .name = "key_exchange_key_request_timeout", .val = BCMOLT_XGPON_ONU_AUTO_CFG_ID_KEY_EXCHANGE_KEY_REQUEST_TIMEOUT }, { .name = "looci", .val = BCMOLT_XGPON_ONU_AUTO_CFG_ID_LOOCI }, { .name = "onu_activation_completed", .val = BCMOLT_XGPON_ONU_AUTO_CFG_ID_ONU_ACTIVATION_COMPLETED }, { .name = "onu_alarm", .val = BCMOLT_XGPON_ONU_AUTO_CFG_ID_ONU_ALARM }, { .name = "onu_deactivation_completed", .val = BCMOLT_XGPON_ONU_AUTO_CFG_ID_ONU_DEACTIVATION_COMPLETED }, { .name = "onu_disable_completed", .val = BCMOLT_XGPON_ONU_AUTO_CFG_ID_ONU_DISABLE_COMPLETED }, { .name = "onu_enable_completed", .val = BCMOLT_XGPON_ONU_AUTO_CFG_ID_ONU_ENABLE_COMPLETED }, { .name = "onu_tuning_in_completed", .val = BCMOLT_XGPON_ONU_AUTO_CFG_ID_ONU_TUNING_IN_COMPLETED }, { .name = "onu_tuning_out_completed", .val = BCMOLT_XGPON_ONU_AUTO_CFG_ID_ONU_TUNING_OUT_COMPLETED }, { .name = "optical_reflection", .val = BCMOLT_XGPON_ONU_AUTO_CFG_ID_OPTICAL_REFLECTION }, { .name = "possible_drift", .val = BCMOLT_XGPON_ONU_AUTO_CFG_ID_POSSIBLE_DRIFT }, { .name = "power_consumption_report", .val = BCMOLT_XGPON_ONU_AUTO_CFG_ID_POWER_CONSUMPTION_REPORT }, { .name = "power_level_report", .val = BCMOLT_XGPON_ONU_AUTO_CFG_ID_POWER_LEVEL_REPORT }, { .name = "power_management_state_change", .val = BCMOLT_XGPON_ONU_AUTO_CFG_ID_POWER_MANAGEMENT_STATE_CHANGE }, { .name = "pqsi", .val = BCMOLT_XGPON_ONU_AUTO_CFG_ID_PQSI }, { .name = "ranging_completed", .val = BCMOLT_XGPON_ONU_AUTO_CFG_ID_RANGING_COMPLETED }, { .name = "registration_id", .val = BCMOLT_XGPON_ONU_AUTO_CFG_ID_REGISTRATION_ID }, { .name = "rssi_measurement_completed", .val = BCMOLT_XGPON_ONU_AUTO_CFG_ID_RSSI_MEASUREMENT_COMPLETED }, { .name = "sdi", .val = BCMOLT_XGPON_ONU_AUTO_CFG_ID_SDI }, { .name = "secure_mutual_authentication_failure", .val = BCMOLT_XGPON_ONU_AUTO_CFG_ID_SECURE_MUTUAL_AUTHENTICATION_FAILURE }, { .name = "sfi", .val = BCMOLT_XGPON_ONU_AUTO_CFG_ID_SFI }, { .name = "stat_alarm_cleared", .val = BCMOLT_XGPON_ONU_AUTO_CFG_ID_STAT_ALARM_CLEARED }, { .name = "stat_alarm_raised", .val = BCMOLT_XGPON_ONU_AUTO_CFG_ID_STAT_ALARM_RAISED }, { .name = "sufi", .val = BCMOLT_XGPON_ONU_AUTO_CFG_ID_SUFI }, { .name = "tiwi", .val = BCMOLT_XGPON_ONU_AUTO_CFG_ID_TIWI }, { .name = "tuning_response", .val = BCMOLT_XGPON_ONU_AUTO_CFG_ID_TUNING_RESPONSE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_auto_cfg_id = { .name = "bcmolt_xgpon_onu_auto_cfg_id", .descr = "Identifiers for all properties contained in the xgpon_onu_auto_cfg group.", .size = sizeof(bcmolt_xgpon_onu_auto_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_onu_auto_cfg_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_onu_cfg_id_string_table[] = { { .name = "onu_state", .val = BCMOLT_XGPON_ONU_CFG_ID_ONU_STATE }, { .name = "onu_old_state", .val = BCMOLT_XGPON_ONU_CFG_ID_ONU_OLD_STATE }, { .name = "alarm_state", .val = BCMOLT_XGPON_ONU_CFG_ID_ALARM_STATE }, { .name = "registration_encryption_keys", .val = BCMOLT_XGPON_ONU_CFG_ID_REGISTRATION_ENCRYPTION_KEYS }, { .name = "current_encryption_key", .val = BCMOLT_XGPON_ONU_CFG_ID_CURRENT_ENCRYPTION_KEY }, { .name = "serial_number", .val = BCMOLT_XGPON_ONU_CFG_ID_SERIAL_NUMBER }, { .name = "registration_id", .val = BCMOLT_XGPON_ONU_CFG_ID_REGISTRATION_ID }, { .name = "registration_id_auto_learning", .val = BCMOLT_XGPON_ONU_CFG_ID_REGISTRATION_ID_AUTO_LEARNING }, { .name = "ranging_burst_profile", .val = BCMOLT_XGPON_ONU_CFG_ID_RANGING_BURST_PROFILE }, { .name = "data_burst_profile", .val = BCMOLT_XGPON_ONU_CFG_ID_DATA_BURST_PROFILE }, { .name = "ranging_time", .val = BCMOLT_XGPON_ONU_CFG_ID_RANGING_TIME }, { .name = "disabled_after_discovery", .val = BCMOLT_XGPON_ONU_CFG_ID_DISABLED_AFTER_DISCOVERY }, { .name = "deactivation_reason", .val = BCMOLT_XGPON_ONU_CFG_ID_DEACTIVATION_REASON }, { .name = "all_gem_ports", .val = BCMOLT_XGPON_ONU_CFG_ID_ALL_GEM_PORTS }, { .name = "all_allocs", .val = BCMOLT_XGPON_ONU_CFG_ID_ALL_ALLOCS }, { .name = "extended_guard_time", .val = BCMOLT_XGPON_ONU_CFG_ID_EXTENDED_GUARD_TIME }, { .name = "us_line_rate", .val = BCMOLT_XGPON_ONU_CFG_ID_US_LINE_RATE }, { .name = "calibration_record", .val = BCMOLT_XGPON_ONU_CFG_ID_CALIBRATION_RECORD }, { .name = "tuning_granularity", .val = BCMOLT_XGPON_ONU_CFG_ID_TUNING_GRANULARITY }, { .name = "step_tuning_time", .val = BCMOLT_XGPON_ONU_CFG_ID_STEP_TUNING_TIME }, { .name = "power_levelling_capabilities", .val = BCMOLT_XGPON_ONU_CFG_ID_POWER_LEVELLING_CAPABILITIES }, { .name = "request_registration_status", .val = BCMOLT_XGPON_ONU_CFG_ID_REQUEST_REGISTRATION_STATUS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_cfg_id = { .name = "bcmolt_xgpon_onu_cfg_id", .descr = "Identifiers for all properties contained in the xgpon_onu_cfg group.", .size = sizeof(bcmolt_xgpon_onu_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_onu_cfg_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_onu_change_power_levelling_id_string_table[] = { { .name = "control", .val = BCMOLT_XGPON_ONU_CHANGE_POWER_LEVELLING_ID_CONTROL }, { .name = "attenuation", .val = BCMOLT_XGPON_ONU_CHANGE_POWER_LEVELLING_ID_ATTENUATION }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_change_power_levelling_id = { .name = "bcmolt_xgpon_onu_change_power_levelling_id", .descr = "Identifiers for all properties contained in the xgpon_onu_change_power_levelling group.", .size = sizeof(bcmolt_xgpon_onu_change_power_levelling_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_onu_change_power_levelling_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_onu_cpu_packet_id_string_table[] = { { .name = "port_id", .val = BCMOLT_XGPON_ONU_CPU_PACKET_ID_PORT_ID }, { .name = "crc_ok", .val = BCMOLT_XGPON_ONU_CPU_PACKET_ID_CRC_OK }, { .name = "packet_size", .val = BCMOLT_XGPON_ONU_CPU_PACKET_ID_PACKET_SIZE }, { .name = "buffer", .val = BCMOLT_XGPON_ONU_CPU_PACKET_ID_BUFFER }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_cpu_packet_id = { .name = "bcmolt_xgpon_onu_cpu_packet_id", .descr = "Identifiers for all properties contained in the xgpon_onu_cpu_packet group.", .size = sizeof(bcmolt_xgpon_onu_cpu_packet_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_onu_cpu_packet_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_onu_cpu_packets_id_string_table[] = { { .name = "packet_type", .val = BCMOLT_XGPON_ONU_CPU_PACKETS_ID_PACKET_TYPE }, { .name = "calc_crc", .val = BCMOLT_XGPON_ONU_CPU_PACKETS_ID_CALC_CRC }, { .name = "number_of_packets", .val = BCMOLT_XGPON_ONU_CPU_PACKETS_ID_NUMBER_OF_PACKETS }, { .name = "packet_size", .val = BCMOLT_XGPON_ONU_CPU_PACKETS_ID_PACKET_SIZE }, { .name = "buffer", .val = BCMOLT_XGPON_ONU_CPU_PACKETS_ID_BUFFER }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_cpu_packets_id = { .name = "bcmolt_xgpon_onu_cpu_packets_id", .descr = "Identifiers for all properties contained in the xgpon_onu_cpu_packets group.", .size = sizeof(bcmolt_xgpon_onu_cpu_packets_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_onu_cpu_packets_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_onu_dfi_id_string_table[] = { { .name = "alarm_status", .val = BCMOLT_XGPON_ONU_DFI_ID_ALARM_STATUS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_dfi_id = { .name = "bcmolt_xgpon_onu_dfi_id", .descr = "Identifiers for all properties contained in the xgpon_onu_dfi group.", .size = sizeof(bcmolt_xgpon_onu_dfi_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_onu_dfi_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_onu_dgi_id_string_table[] = { { .name = "alarm_status", .val = BCMOLT_XGPON_ONU_DGI_ID_ALARM_STATUS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_dgi_id = { .name = "bcmolt_xgpon_onu_dgi_id", .descr = "Identifiers for all properties contained in the xgpon_onu_dgi group.", .size = sizeof(bcmolt_xgpon_onu_dgi_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_onu_dgi_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_onu_dowi_id_string_table[] = { { .name = "alarm_status", .val = BCMOLT_XGPON_ONU_DOWI_ID_ALARM_STATUS }, { .name = "drift_value", .val = BCMOLT_XGPON_ONU_DOWI_ID_DRIFT_VALUE }, { .name = "new_eqd", .val = BCMOLT_XGPON_ONU_DOWI_ID_NEW_EQD }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_dowi_id = { .name = "bcmolt_xgpon_onu_dowi_id", .descr = "Identifiers for all properties contained in the xgpon_onu_dowi group.", .size = sizeof(bcmolt_xgpon_onu_dowi_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_onu_dowi_id_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_eqd_fields[] = { { .name = "onu_id", .descr = "ONU ID", .offset = offsetof(bcmolt_xgpon_onu_eqd, onu_id), .type = &type_descr_uint16_t }, { .name = "eqd", .descr = "EQD", .offset = offsetof(bcmolt_xgpon_onu_eqd, eqd), .type = &type_descr_uint32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_eqd = { .name = "bcmolt_xgpon_onu_eqd", .descr = "XGPON ONU EQD", .size = sizeof(bcmolt_xgpon_onu_eqd), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_onu_eqd_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_onu_eqd_fields } } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_eqd_list_u32 = { .name = "bcmolt_xgpon_onu_eqd_list_u32", .descr = "Variable-length list of xgpon_onu_eqd", .size = sizeof(bcmolt_xgpon_onu_eqd_list_u32), .base_type = BCMOLT_BASE_TYPE_ID_ARR_DYN, .x = { .arr_dyn = { .elem_type = &type_descr_bcmolt_xgpon_onu_eqd, .len_size = 4, .max_size = DEFAULT_DYN_ARR_MAX_SIZE / sizeof(bcmolt_xgpon_onu_eqd) } } };
bcmcli_enum_val bcmolt_xgpon_onu_get_power_consumption_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_get_power_consumption_id = { .name = "bcmolt_xgpon_onu_get_power_consumption_id", .descr = "Identifiers for all properties contained in the xgpon_onu_get_power_consumption group.", .size = sizeof(bcmolt_xgpon_onu_get_power_consumption_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_onu_get_power_consumption_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_onu_get_power_level_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_get_power_level_id = { .name = "bcmolt_xgpon_onu_get_power_level_id", .descr = "Identifiers for all properties contained in the xgpon_onu_get_power_level group.", .size = sizeof(bcmolt_xgpon_onu_get_power_level_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_onu_get_power_level_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_onu_invalid_dbru_report_id_string_table[] = { { .name = "alloc_id", .val = BCMOLT_XGPON_ONU_INVALID_DBRU_REPORT_ID_ALLOC_ID }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_invalid_dbru_report_id = { .name = "bcmolt_xgpon_onu_invalid_dbru_report_id", .descr = "Identifiers for all properties contained in the xgpon_onu_invalid_dbru_report group.", .size = sizeof(bcmolt_xgpon_onu_invalid_dbru_report_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_onu_invalid_dbru_report_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_onu_key_exchange_completed_id_string_table[] = { { .name = "new_key", .val = BCMOLT_XGPON_ONU_KEY_EXCHANGE_COMPLETED_ID_NEW_KEY }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_key_exchange_completed_id = { .name = "bcmolt_xgpon_onu_key_exchange_completed_id", .descr = "Identifiers for all properties contained in the xgpon_onu_key_exchange_completed group.", .size = sizeof(bcmolt_xgpon_onu_key_exchange_completed_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_onu_key_exchange_completed_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_onu_key_exchange_cycle_skipped_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_key_exchange_cycle_skipped_id = { .name = "bcmolt_xgpon_onu_key_exchange_cycle_skipped_id", .descr = "Identifiers for all properties contained in the xgpon_onu_key_exchange_cycle_skipped group.", .size = sizeof(bcmolt_xgpon_onu_key_exchange_cycle_skipped_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_onu_key_exchange_cycle_skipped_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_onu_key_exchange_key_mismatch_id_string_table[] = { { .name = "expected_key", .val = BCMOLT_XGPON_ONU_KEY_EXCHANGE_KEY_MISMATCH_ID_EXPECTED_KEY }, { .name = "received_key", .val = BCMOLT_XGPON_ONU_KEY_EXCHANGE_KEY_MISMATCH_ID_RECEIVED_KEY }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_key_exchange_key_mismatch_id = { .name = "bcmolt_xgpon_onu_key_exchange_key_mismatch_id", .descr = "Identifiers for all properties contained in the xgpon_onu_key_exchange_key_mismatch group.", .size = sizeof(bcmolt_xgpon_onu_key_exchange_key_mismatch_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_onu_key_exchange_key_mismatch_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_onu_key_exchange_key_request_timeout_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_key_exchange_key_request_timeout_id = { .name = "bcmolt_xgpon_onu_key_exchange_key_request_timeout_id", .descr = "Identifiers for all properties contained in the xgpon_onu_key_exchange_key_request_timeout group.", .size = sizeof(bcmolt_xgpon_onu_key_exchange_key_request_timeout_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_onu_key_exchange_key_request_timeout_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_onu_key_id_string_table[] = { { .name = "pon_ni", .val = BCMOLT_XGPON_ONU_KEY_ID_PON_NI }, { .name = "onu_id", .val = BCMOLT_XGPON_ONU_KEY_ID_ONU_ID }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_key_id = { .name = "bcmolt_xgpon_onu_key_id", .descr = "Identifiers for all properties contained in the xgpon_onu_key group.", .size = sizeof(bcmolt_xgpon_onu_key_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_onu_key_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_onu_looci_id_string_table[] = { { .name = "alarm_status", .val = BCMOLT_XGPON_ONU_LOOCI_ID_ALARM_STATUS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_looci_id = { .name = "bcmolt_xgpon_onu_looci_id", .descr = "Identifiers for all properties contained in the xgpon_onu_looci group.", .size = sizeof(bcmolt_xgpon_onu_looci_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_onu_looci_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_onu_omci_packet_id_string_table[] = { { .name = "port_id", .val = BCMOLT_XGPON_ONU_OMCI_PACKET_ID_PORT_ID }, { .name = "crc_ok", .val = BCMOLT_XGPON_ONU_OMCI_PACKET_ID_CRC_OK }, { .name = "packet_size", .val = BCMOLT_XGPON_ONU_OMCI_PACKET_ID_PACKET_SIZE }, { .name = "buffer", .val = BCMOLT_XGPON_ONU_OMCI_PACKET_ID_BUFFER }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_omci_packet_id = { .name = "bcmolt_xgpon_onu_omci_packet_id", .descr = "Identifiers for all properties contained in the xgpon_onu_omci_packet group.", .size = sizeof(bcmolt_xgpon_onu_omci_packet_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_onu_omci_packet_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_onu_onu_activation_completed_id_string_table[] = { { .name = "status", .val = BCMOLT_XGPON_ONU_ONU_ACTIVATION_COMPLETED_ID_STATUS }, { .name = "fail_reason", .val = BCMOLT_XGPON_ONU_ONU_ACTIVATION_COMPLETED_ID_FAIL_REASON }, { .name = "registration_id", .val = BCMOLT_XGPON_ONU_ONU_ACTIVATION_COMPLETED_ID_REGISTRATION_ID }, { .name = "registration_encryption_keys", .val = BCMOLT_XGPON_ONU_ONU_ACTIVATION_COMPLETED_ID_REGISTRATION_ENCRYPTION_KEYS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_onu_activation_completed_id = { .name = "bcmolt_xgpon_onu_onu_activation_completed_id", .descr = "Identifiers for all properties contained in the xgpon_onu_onu_activation_completed group.", .size = sizeof(bcmolt_xgpon_onu_onu_activation_completed_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_onu_onu_activation_completed_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_onu_onu_alarm_id_string_table[] = { { .name = "onu_alarm", .val = BCMOLT_XGPON_ONU_ONU_ALARM_ID_ONU_ALARM }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_onu_alarm_id = { .name = "bcmolt_xgpon_onu_onu_alarm_id", .descr = "Identifiers for all properties contained in the xgpon_onu_onu_alarm group.", .size = sizeof(bcmolt_xgpon_onu_onu_alarm_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_onu_onu_alarm_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_onu_onu_deactivation_completed_id_string_table[] = { { .name = "status", .val = BCMOLT_XGPON_ONU_ONU_DEACTIVATION_COMPLETED_ID_STATUS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_onu_deactivation_completed_id = { .name = "bcmolt_xgpon_onu_onu_deactivation_completed_id", .descr = "Identifiers for all properties contained in the xgpon_onu_onu_deactivation_completed group.", .size = sizeof(bcmolt_xgpon_onu_onu_deactivation_completed_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_onu_onu_deactivation_completed_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_onu_onu_disable_completed_id_string_table[] = { { .name = "serial_number", .val = BCMOLT_XGPON_ONU_ONU_DISABLE_COMPLETED_ID_SERIAL_NUMBER }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_onu_disable_completed_id = { .name = "bcmolt_xgpon_onu_onu_disable_completed_id", .descr = "Identifiers for all properties contained in the xgpon_onu_onu_disable_completed group.", .size = sizeof(bcmolt_xgpon_onu_onu_disable_completed_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_onu_onu_disable_completed_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_onu_onu_enable_completed_id_string_table[] = { { .name = "serial_number", .val = BCMOLT_XGPON_ONU_ONU_ENABLE_COMPLETED_ID_SERIAL_NUMBER }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_onu_enable_completed_id = { .name = "bcmolt_xgpon_onu_onu_enable_completed_id", .descr = "Identifiers for all properties contained in the xgpon_onu_onu_enable_completed group.", .size = sizeof(bcmolt_xgpon_onu_onu_enable_completed_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_onu_onu_enable_completed_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_onu_onu_tuning_in_completed_id_string_table[] = { { .name = "result", .val = BCMOLT_XGPON_ONU_ONU_TUNING_IN_COMPLETED_ID_RESULT }, { .name = "fail_reason", .val = BCMOLT_XGPON_ONU_ONU_TUNING_IN_COMPLETED_ID_FAIL_REASON }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_onu_tuning_in_completed_id = { .name = "bcmolt_xgpon_onu_onu_tuning_in_completed_id", .descr = "Identifiers for all properties contained in the xgpon_onu_onu_tuning_in_completed group.", .size = sizeof(bcmolt_xgpon_onu_onu_tuning_in_completed_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_onu_onu_tuning_in_completed_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_onu_onu_tuning_in_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_onu_tuning_in_id = { .name = "bcmolt_xgpon_onu_onu_tuning_in_id", .descr = "Identifiers for all properties contained in the xgpon_onu_onu_tuning_in group.", .size = sizeof(bcmolt_xgpon_onu_onu_tuning_in_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_onu_onu_tuning_in_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_onu_onu_tuning_out_completed_id_string_table[] = { { .name = "result", .val = BCMOLT_XGPON_ONU_ONU_TUNING_OUT_COMPLETED_ID_RESULT }, { .name = "fail_reason", .val = BCMOLT_XGPON_ONU_ONU_TUNING_OUT_COMPLETED_ID_FAIL_REASON }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_onu_tuning_out_completed_id = { .name = "bcmolt_xgpon_onu_onu_tuning_out_completed_id", .descr = "Identifiers for all properties contained in the xgpon_onu_onu_tuning_out_completed group.", .size = sizeof(bcmolt_xgpon_onu_onu_tuning_out_completed_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_onu_onu_tuning_out_completed_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_onu_onu_tuning_out_id_string_table[] = { { .name = "target_ds_pon_id", .val = BCMOLT_XGPON_ONU_ONU_TUNING_OUT_ID_TARGET_DS_PON_ID }, { .name = "target_us_pon_id", .val = BCMOLT_XGPON_ONU_ONU_TUNING_OUT_ID_TARGET_US_PON_ID }, { .name = "time_to_switch", .val = BCMOLT_XGPON_ONU_ONU_TUNING_OUT_ID_TIME_TO_SWITCH }, { .name = "rollback", .val = BCMOLT_XGPON_ONU_ONU_TUNING_OUT_ID_ROLLBACK }, { .name = "status", .val = BCMOLT_XGPON_ONU_ONU_TUNING_OUT_ID_STATUS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_onu_tuning_out_id = { .name = "bcmolt_xgpon_onu_onu_tuning_out_id", .descr = "Identifiers for all properties contained in the xgpon_onu_onu_tuning_out group.", .size = sizeof(bcmolt_xgpon_onu_onu_tuning_out_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_onu_onu_tuning_out_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_onu_optical_reflection_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_optical_reflection_id = { .name = "bcmolt_xgpon_onu_optical_reflection_id", .descr = "Identifiers for all properties contained in the xgpon_onu_optical_reflection group.", .size = sizeof(bcmolt_xgpon_onu_optical_reflection_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_onu_optical_reflection_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_onu_ploam_packet_id_string_table[] = { { .name = "default_key", .val = BCMOLT_XGPON_ONU_PLOAM_PACKET_ID_DEFAULT_KEY }, { .name = "ploam", .val = BCMOLT_XGPON_ONU_PLOAM_PACKET_ID_PLOAM }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_ploam_packet_id = { .name = "bcmolt_xgpon_onu_ploam_packet_id", .descr = "Identifiers for all properties contained in the xgpon_onu_ploam_packet group.", .size = sizeof(bcmolt_xgpon_onu_ploam_packet_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_onu_ploam_packet_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_onu_possible_drift_id_string_table[] = { { .name = "alarm_status", .val = BCMOLT_XGPON_ONU_POSSIBLE_DRIFT_ID_ALARM_STATUS }, { .name = "estimated_drift", .val = BCMOLT_XGPON_ONU_POSSIBLE_DRIFT_ID_ESTIMATED_DRIFT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_possible_drift_id = { .name = "bcmolt_xgpon_onu_possible_drift_id", .descr = "Identifiers for all properties contained in the xgpon_onu_possible_drift group.", .size = sizeof(bcmolt_xgpon_onu_possible_drift_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_onu_possible_drift_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_onu_power_consumption_report_id_string_table[] = { { .name = "power_consumption_report", .val = BCMOLT_XGPON_ONU_POWER_CONSUMPTION_REPORT_ID_POWER_CONSUMPTION_REPORT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_power_consumption_report_id = { .name = "bcmolt_xgpon_onu_power_consumption_report_id", .descr = "Identifiers for all properties contained in the xgpon_onu_power_consumption_report group.", .size = sizeof(bcmolt_xgpon_onu_power_consumption_report_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_onu_power_consumption_report_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_onu_power_level_report_id_string_table[] = { { .name = "attenuation", .val = BCMOLT_XGPON_ONU_POWER_LEVEL_REPORT_ID_ATTENUATION }, { .name = "power_levelling_capability", .val = BCMOLT_XGPON_ONU_POWER_LEVEL_REPORT_ID_POWER_LEVELLING_CAPABILITY }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_power_level_report_id = { .name = "bcmolt_xgpon_onu_power_level_report_id", .descr = "Identifiers for all properties contained in the xgpon_onu_power_level_report group.", .size = sizeof(bcmolt_xgpon_onu_power_level_report_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_onu_power_level_report_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_onu_power_management_state_change_id_string_table[] = { { .name = "old_state", .val = BCMOLT_XGPON_ONU_POWER_MANAGEMENT_STATE_CHANGE_ID_OLD_STATE }, { .name = "new_state", .val = BCMOLT_XGPON_ONU_POWER_MANAGEMENT_STATE_CHANGE_ID_NEW_STATE }, { .name = "reason", .val = BCMOLT_XGPON_ONU_POWER_MANAGEMENT_STATE_CHANGE_ID_REASON }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_power_management_state_change_id = { .name = "bcmolt_xgpon_onu_power_management_state_change_id", .descr = "Identifiers for all properties contained in the xgpon_onu_power_management_state_change group.", .size = sizeof(bcmolt_xgpon_onu_power_management_state_change_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_onu_power_management_state_change_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_onu_pqsi_id_string_table[] = { { .name = "alarm_status", .val = BCMOLT_XGPON_ONU_PQSI_ID_ALARM_STATUS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_pqsi_id = { .name = "bcmolt_xgpon_onu_pqsi_id", .descr = "Identifiers for all properties contained in the xgpon_onu_pqsi group.", .size = sizeof(bcmolt_xgpon_onu_pqsi_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_onu_pqsi_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_onu_ranging_completed_id_string_table[] = { { .name = "status", .val = BCMOLT_XGPON_ONU_RANGING_COMPLETED_ID_STATUS }, { .name = "fail_reason", .val = BCMOLT_XGPON_ONU_RANGING_COMPLETED_ID_FAIL_REASON }, { .name = "eqd", .val = BCMOLT_XGPON_ONU_RANGING_COMPLETED_ID_EQD }, { .name = "number_of_ploams", .val = BCMOLT_XGPON_ONU_RANGING_COMPLETED_ID_NUMBER_OF_PLOAMS }, { .name = "power_level", .val = BCMOLT_XGPON_ONU_RANGING_COMPLETED_ID_POWER_LEVEL }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_ranging_completed_id = { .name = "bcmolt_xgpon_onu_ranging_completed_id", .descr = "Identifiers for all properties contained in the xgpon_onu_ranging_completed group.", .size = sizeof(bcmolt_xgpon_onu_ranging_completed_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_onu_ranging_completed_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_onu_registration_id_id_string_table[] = { { .name = "registration_id", .val = BCMOLT_XGPON_ONU_REGISTRATION_ID_ID_REGISTRATION_ID }, { .name = "request_registration_status", .val = BCMOLT_XGPON_ONU_REGISTRATION_ID_ID_REQUEST_REGISTRATION_STATUS }, { .name = "request_registration_fail_reason", .val = BCMOLT_XGPON_ONU_REGISTRATION_ID_ID_REQUEST_REGISTRATION_FAIL_REASON }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_registration_id_id = { .name = "bcmolt_xgpon_onu_registration_id_id", .descr = "Identifiers for all properties contained in the xgpon_onu_registration_id group.", .size = sizeof(bcmolt_xgpon_onu_registration_id_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_onu_registration_id_id_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_registration_keys_fields[] = { { .name = "ploam_ik", .descr = "ploam ik", .offset = offsetof(bcmolt_xgpon_onu_registration_keys, ploam_ik), .type = &type_descr_bcmolt_aes_key }, { .name = "omci_ik", .descr = "omci ik", .offset = offsetof(bcmolt_xgpon_onu_registration_keys, omci_ik), .type = &type_descr_bcmolt_aes_key }, { .name = "omci_k1", .descr = "omci k1", .offset = offsetof(bcmolt_xgpon_onu_registration_keys, omci_k1), .type = &type_descr_bcmolt_aes_key }, { .name = "omci_k2", .descr = "omci k2", .offset = offsetof(bcmolt_xgpon_onu_registration_keys, omci_k2), .type = &type_descr_bcmolt_aes_key }, { .name = "kek", .descr = "kek", .offset = offsetof(bcmolt_xgpon_onu_registration_keys, kek), .type = &type_descr_bcmolt_aes_key } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_registration_keys = { .name = "bcmolt_xgpon_onu_registration_keys", .descr = "XGPON ONU registration keys", .size = sizeof(bcmolt_xgpon_onu_registration_keys), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_onu_registration_keys_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_onu_registration_keys_fields } } };
bcmcli_enum_val bcmolt_xgpon_onu_request_registration_id_string_table[] = { { .name = "sma_flag", .val = BCMOLT_XGPON_ONU_REQUEST_REGISTRATION_ID_SMA_FLAG }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_request_registration_id = { .name = "bcmolt_xgpon_onu_request_registration_id", .descr = "Identifiers for all properties contained in the xgpon_onu_request_registration group.", .size = sizeof(bcmolt_xgpon_onu_request_registration_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_onu_request_registration_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_onu_rssi_measurement_completed_id_string_table[] = { { .name = "status", .val = BCMOLT_XGPON_ONU_RSSI_MEASUREMENT_COMPLETED_ID_STATUS }, { .name = "fail_reason", .val = BCMOLT_XGPON_ONU_RSSI_MEASUREMENT_COMPLETED_ID_FAIL_REASON }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_rssi_measurement_completed_id = { .name = "bcmolt_xgpon_onu_rssi_measurement_completed_id", .descr = "Identifiers for all properties contained in the xgpon_onu_rssi_measurement_completed group.", .size = sizeof(bcmolt_xgpon_onu_rssi_measurement_completed_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_onu_rssi_measurement_completed_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_onu_rssi_measurement_id_string_table[] = { BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_rssi_measurement_id = { .name = "bcmolt_xgpon_onu_rssi_measurement_id", .descr = "Identifiers for all properties contained in the xgpon_onu_rssi_measurement group.", .size = sizeof(bcmolt_xgpon_onu_rssi_measurement_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_onu_rssi_measurement_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_onu_sdi_id_string_table[] = { { .name = "alarm_status", .val = BCMOLT_XGPON_ONU_SDI_ID_ALARM_STATUS }, { .name = "ber", .val = BCMOLT_XGPON_ONU_SDI_ID_BER }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_sdi_id = { .name = "bcmolt_xgpon_onu_sdi_id", .descr = "Identifiers for all properties contained in the xgpon_onu_sdi group.", .size = sizeof(bcmolt_xgpon_onu_sdi_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_onu_sdi_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_onu_secure_mutual_authentication_failure_id_string_table[] = { { .name = "status", .val = BCMOLT_XGPON_ONU_SECURE_MUTUAL_AUTHENTICATION_FAILURE_ID_STATUS }, { .name = "fail_reason", .val = BCMOLT_XGPON_ONU_SECURE_MUTUAL_AUTHENTICATION_FAILURE_ID_FAIL_REASON }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_secure_mutual_authentication_failure_id = { .name = "bcmolt_xgpon_onu_secure_mutual_authentication_failure_id", .descr = "Identifiers for all properties contained in the xgpon_onu_secure_mutual_authentication_failure group.", .size = sizeof(bcmolt_xgpon_onu_secure_mutual_authentication_failure_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_onu_secure_mutual_authentication_failure_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_onu_secure_mutual_authentication_id_string_table[] = { { .name = "master_key", .val = BCMOLT_XGPON_ONU_SECURE_MUTUAL_AUTHENTICATION_ID_MASTER_KEY }, { .name = "buffer", .val = BCMOLT_XGPON_ONU_SECURE_MUTUAL_AUTHENTICATION_ID_BUFFER }, { .name = "mic", .val = BCMOLT_XGPON_ONU_SECURE_MUTUAL_AUTHENTICATION_ID_MIC }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_secure_mutual_authentication_id = { .name = "bcmolt_xgpon_onu_secure_mutual_authentication_id", .descr = "Identifiers for all properties contained in the xgpon_onu_secure_mutual_authentication group.", .size = sizeof(bcmolt_xgpon_onu_secure_mutual_authentication_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_onu_secure_mutual_authentication_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_onu_set_onu_state_id_string_table[] = { { .name = "onu_state", .val = BCMOLT_XGPON_ONU_SET_ONU_STATE_ID_ONU_STATE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_set_onu_state_id = { .name = "bcmolt_xgpon_onu_set_onu_state_id", .descr = "Identifiers for all properties contained in the xgpon_onu_set_onu_state group.", .size = sizeof(bcmolt_xgpon_onu_set_onu_state_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_onu_set_onu_state_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_onu_sfi_id_string_table[] = { { .name = "alarm_status", .val = BCMOLT_XGPON_ONU_SFI_ID_ALARM_STATUS }, { .name = "ber", .val = BCMOLT_XGPON_ONU_SFI_ID_BER }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_sfi_id = { .name = "bcmolt_xgpon_onu_sfi_id", .descr = "Identifiers for all properties contained in the xgpon_onu_sfi group.", .size = sizeof(bcmolt_xgpon_onu_sfi_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_onu_sfi_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_onu_stat_alarm_cleared_id_string_table[] = { { .name = "stat", .val = BCMOLT_XGPON_ONU_STAT_ALARM_CLEARED_ID_STAT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_stat_alarm_cleared_id = { .name = "bcmolt_xgpon_onu_stat_alarm_cleared_id", .descr = "Identifiers for all properties contained in the xgpon_onu_stat_alarm_cleared group.", .size = sizeof(bcmolt_xgpon_onu_stat_alarm_cleared_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_onu_stat_alarm_cleared_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_onu_stat_alarm_raised_id_string_table[] = { { .name = "stat", .val = BCMOLT_XGPON_ONU_STAT_ALARM_RAISED_ID_STAT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_stat_alarm_raised_id = { .name = "bcmolt_xgpon_onu_stat_alarm_raised_id", .descr = "Identifiers for all properties contained in the xgpon_onu_stat_alarm_raised group.", .size = sizeof(bcmolt_xgpon_onu_stat_alarm_raised_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_onu_stat_alarm_raised_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_onu_stat_cfg_id_string_table[] = { { .name = "cfg", .val = BCMOLT_XGPON_ONU_STAT_CFG_ID_CFG }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_stat_cfg_id = { .name = "bcmolt_xgpon_onu_stat_cfg_id", .descr = "Identifiers for all properties contained in the xgpon_onu_stat_cfg group.", .size = sizeof(bcmolt_xgpon_onu_stat_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_onu_stat_cfg_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_onu_stat_id_string_table[] = { { .name = "positive_drift", .val = BCMOLT_XGPON_ONU_STAT_ID_POSITIVE_DRIFT }, { .name = "negative_drift", .val = BCMOLT_XGPON_ONU_STAT_ID_NEGATIVE_DRIFT }, { .name = "delimiter_miss_detection", .val = BCMOLT_XGPON_ONU_STAT_ID_DELIMITER_MISS_DETECTION }, { .name = "bip32_errors", .val = BCMOLT_XGPON_ONU_STAT_ID_BIP32_ERRORS }, { .name = "rx_words", .val = BCMOLT_XGPON_ONU_STAT_ID_RX_WORDS }, { .name = "fec_corrected_symbols", .val = BCMOLT_XGPON_ONU_STAT_ID_FEC_CORRECTED_SYMBOLS }, { .name = "fec_corrected_codewords", .val = BCMOLT_XGPON_ONU_STAT_ID_FEC_CORRECTED_CODEWORDS }, { .name = "fec_uncorrectable_codewords", .val = BCMOLT_XGPON_ONU_STAT_ID_FEC_UNCORRECTABLE_CODEWORDS }, { .name = "fec_codewords", .val = BCMOLT_XGPON_ONU_STAT_ID_FEC_CODEWORDS }, { .name = "fec_corrected_bits", .val = BCMOLT_XGPON_ONU_STAT_ID_FEC_CORRECTED_BITS }, { .name = "xgem_key_errors", .val = BCMOLT_XGPON_ONU_STAT_ID_XGEM_KEY_ERRORS }, { .name = "xgem_loss", .val = BCMOLT_XGPON_ONU_STAT_ID_XGEM_LOSS }, { .name = "rx_ploams_mic_error", .val = BCMOLT_XGPON_ONU_STAT_ID_RX_PLOAMS_MIC_ERROR }, { .name = "rx_ploams_non_idle", .val = BCMOLT_XGPON_ONU_STAT_ID_RX_PLOAMS_NON_IDLE }, { .name = "rx_omci", .val = BCMOLT_XGPON_ONU_STAT_ID_RX_OMCI }, { .name = "rx_omci_packets_crc_error", .val = BCMOLT_XGPON_ONU_STAT_ID_RX_OMCI_PACKETS_CRC_ERROR }, { .name = "rx_bytes", .val = BCMOLT_XGPON_ONU_STAT_ID_RX_BYTES }, { .name = "rx_packets", .val = BCMOLT_XGPON_ONU_STAT_ID_RX_PACKETS }, { .name = "tx_bytes", .val = BCMOLT_XGPON_ONU_STAT_ID_TX_BYTES }, { .name = "tx_packets", .val = BCMOLT_XGPON_ONU_STAT_ID_TX_PACKETS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_stat_id = { .name = "bcmolt_xgpon_onu_stat_id", .descr = "Identifiers for all properties contained in the xgpon_onu_stat group.", .size = sizeof(bcmolt_xgpon_onu_stat_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_onu_stat_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_onu_sufi_id_string_table[] = { { .name = "alarm_status", .val = BCMOLT_XGPON_ONU_SUFI_ID_ALARM_STATUS }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_sufi_id = { .name = "bcmolt_xgpon_onu_sufi_id", .descr = "Identifiers for all properties contained in the xgpon_onu_sufi group.", .size = sizeof(bcmolt_xgpon_onu_sufi_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_onu_sufi_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_onu_tiwi_id_string_table[] = { { .name = "alarm_status", .val = BCMOLT_XGPON_ONU_TIWI_ID_ALARM_STATUS }, { .name = "drift_value", .val = BCMOLT_XGPON_ONU_TIWI_ID_DRIFT_VALUE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_tiwi_id = { .name = "bcmolt_xgpon_onu_tiwi_id", .descr = "Identifiers for all properties contained in the xgpon_onu_tiwi group.", .size = sizeof(bcmolt_xgpon_onu_tiwi_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_onu_tiwi_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_onu_tuning_response_id_string_table[] = { { .name = "ack", .val = BCMOLT_XGPON_ONU_TUNING_RESPONSE_ID_ACK }, { .name = "result", .val = BCMOLT_XGPON_ONU_TUNING_RESPONSE_ID_RESULT }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_tuning_response_id = { .name = "bcmolt_xgpon_onu_tuning_response_id", .descr = "Identifiers for all properties contained in the xgpon_onu_tuning_response group.", .size = sizeof(bcmolt_xgpon_onu_tuning_response_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_onu_tuning_response_id_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_with_state_fields[] = { { .name = "onu_id", .descr = "ONU ID", .offset = offsetof(bcmolt_xgpon_onu_with_state, onu_id), .type = &type_descr_uint16_t }, { .name = "state", .descr = "State", .offset = offsetof(bcmolt_xgpon_onu_with_state, state), .type = &type_descr_bcmolt_onu_state } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_with_state = { .name = "bcmolt_xgpon_onu_with_state", .descr = "XGPON ONU With State", .size = sizeof(bcmolt_xgpon_onu_with_state), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_onu_with_state_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_onu_with_state_fields } } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_with_state_list_u16_max_510 = { .name = "bcmolt_xgpon_onu_with_state_list_u16_max_510", .descr = "Variable-length list of xgpon_onu_with_state", .size = sizeof(bcmolt_xgpon_onu_with_state_list_u16_max_510), .base_type = BCMOLT_BASE_TYPE_ID_ARR_DYN, .x = { .arr_dyn = { .elem_type = &type_descr_bcmolt_xgpon_onu_with_state, .len_size = 2, .max_size = 510 } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_ploam_handling_fields[] = { { .name = "ack_timeout", .descr = "Timeout for receiving ACK ploam", .offset = offsetof(bcmolt_xgpon_ploam_handling, ack_timeout), .type = &type_descr_uint32_t }, { .name = "retrans_ranging_time", .descr = "Number of Ranging Time ploam retransmissions in case of ACK timeout", .offset = offsetof(bcmolt_xgpon_ploam_handling, retrans_ranging_time), .type = &type_descr_uint8_t }, { .name = "retrans_assign_alloc_id", .descr = "Number of Assign Alloc ID ploam retransmissions in case of ACK timeout", .offset = offsetof(bcmolt_xgpon_ploam_handling, retrans_assign_alloc_id), .type = &type_descr_uint8_t }, { .name = "retrans_key_control", .descr = "Number of Key Control ploam retransmissions in case of ACK timeout", .offset = offsetof(bcmolt_xgpon_ploam_handling, retrans_key_control), .type = &type_descr_uint8_t }, { .name = "retrans_request_registration", .descr = "Number of Request Registration ploam retransmissions in case of ACK timeout", .offset = offsetof(bcmolt_xgpon_ploam_handling, retrans_request_registration), .type = &type_descr_uint8_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ploam_handling = { .name = "bcmolt_xgpon_ploam_handling", .descr = "XGPON PLOAM handling", .size = sizeof(bcmolt_xgpon_ploam_handling), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_ploam_handling_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_ploam_handling_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_protection_switching_fields[] = { { .name = "timeout", .descr = "LOS switch over timeout in milliseconds", .offset = offsetof(bcmolt_xgpon_protection_switching, timeout), .type = &type_descr_uint16_t }, { .name = "gpio_pin", .descr = "GPIO pin for input/output signal", .offset = offsetof(bcmolt_xgpon_protection_switching, gpio_pin), .type = &type_descr_bcmolt_gpio_pin }, { .name = "fast_ranging", .descr = "fast ranging ", .offset = offsetof(bcmolt_xgpon_protection_switching, fast_ranging), .type = &type_descr_bcmos_bool } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_protection_switching = { .name = "bcmolt_xgpon_protection_switching", .descr = "XGPON protection switching configuration", .size = sizeof(bcmolt_xgpon_protection_switching), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_protection_switching_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_protection_switching_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_protection_switching_debug_fields[] = { { .name = "data_map_delay_ms", .descr = "delay to wait after sending ranging time delta before running the data map  ", .offset = offsetof(bcmolt_xgpon_protection_switching_debug, data_map_delay_ms), .type = &type_descr_uint16_t }, { .name = "rerange_send_ranging_time", .descr = "Should the SM send the current ranging time before doing the re-ranging ", .offset = offsetof(bcmolt_xgpon_protection_switching_debug, rerange_send_ranging_time), .type = &type_descr_bcmos_bool }, { .name = "rerange_send_ranging_time_delay", .descr = "the delay between sending the ranging time and starting the rerange ", .offset = offsetof(bcmolt_xgpon_protection_switching_debug, rerange_send_ranging_time_delay), .type = &type_descr_uint16_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_protection_switching_debug = { .name = "bcmolt_xgpon_protection_switching_debug", .descr = "xgpon protection switching debug", .size = sizeof(bcmolt_xgpon_protection_switching_debug), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_protection_switching_debug_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_protection_switching_debug_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_rssi_normal_config_fields[] = { { .name = "polarity", .descr = "RSSI signal polarity", .offset = offsetof(bcmolt_xgpon_rssi_normal_config, polarity), .type = &type_descr_bcmolt_polarity }, { .name = "location", .descr = "RSSI signal location in words", .offset = offsetof(bcmolt_xgpon_rssi_normal_config, location), .type = &type_descr_uint8_t }, { .name = "location_sign", .descr = "RSSI signal location sign", .offset = offsetof(bcmolt_xgpon_rssi_normal_config, location_sign), .type = &type_descr_bcmolt_sign }, { .name = "pulse_width", .descr = "RSSI pulse width in words", .offset = offsetof(bcmolt_xgpon_rssi_normal_config, pulse_width), .type = &type_descr_uint16_t }, { .name = "minimum_burst", .descr = "Data minimum burst size in words", .offset = offsetof(bcmolt_xgpon_rssi_normal_config, minimum_burst), .type = &type_descr_uint16_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_rssi_normal_config = { .name = "bcmolt_xgpon_rssi_normal_config", .descr = "XGPON RSSI normal configuration", .size = sizeof(bcmolt_xgpon_rssi_normal_config), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_rssi_normal_config_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_rssi_normal_config_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_rssi_ranging_config_fields[] = { { .name = "start_on_ed", .descr = "start on ED", .offset = offsetof(bcmolt_xgpon_rssi_ranging_config, start_on_ed), .type = &type_descr_bcmos_bool }, { .name = "frame_delay", .descr = "frame delay from ED", .offset = offsetof(bcmolt_xgpon_rssi_ranging_config, frame_delay), .type = &type_descr_uint8_t }, { .name = "word_delay", .descr = "word delay from ED", .offset = offsetof(bcmolt_xgpon_rssi_ranging_config, word_delay), .type = &type_descr_uint16_t }, { .name = "frame_delay_after_ed", .descr = "frame delay from start  of ranging window", .offset = offsetof(bcmolt_xgpon_rssi_ranging_config, frame_delay_after_ed), .type = &type_descr_uint8_t }, { .name = "word_delay_after_ed", .descr = "word delay from start  of ranging window", .offset = offsetof(bcmolt_xgpon_rssi_ranging_config, word_delay_after_ed), .type = &type_descr_uint16_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_rssi_ranging_config = { .name = "bcmolt_xgpon_rssi_ranging_config", .descr = "xgpon rssi ranging config", .size = sizeof(bcmolt_xgpon_rssi_ranging_config), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_rssi_ranging_config_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_rssi_ranging_config_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_rx_ranging_sm_pattern_fields[] = { { .name = "trx_reset_pattern_first", .descr = "trx reset pattern first", .offset = offsetof(bcmolt_xgpon_rx_ranging_sm_pattern, trx_reset_pattern_first), .type = &type_descr_uint32_t_hex }, { .name = "trx_reset_pattern_middle", .descr = "trx reset pattern middle", .offset = offsetof(bcmolt_xgpon_rx_ranging_sm_pattern, trx_reset_pattern_middle), .type = &type_descr_uint32_t_hex }, { .name = "trx_reset_pattern_last", .descr = "trx reset pattern last", .offset = offsetof(bcmolt_xgpon_rx_ranging_sm_pattern, trx_reset_pattern_last), .type = &type_descr_uint32_t_hex }, { .name = "trx_reset_middle_repeats", .descr = "trx reset middle repeats", .offset = offsetof(bcmolt_xgpon_rx_ranging_sm_pattern, trx_reset_middle_repeats), .type = &type_descr_uint8_t }, { .name = "trx_reset_location", .descr = "trx reset location", .offset = offsetof(bcmolt_xgpon_rx_ranging_sm_pattern, trx_reset_location), .type = &type_descr_uint8_t }, { .name = "bcdr_reset_pattern_first", .descr = "bcdr reset pattern first", .offset = offsetof(bcmolt_xgpon_rx_ranging_sm_pattern, bcdr_reset_pattern_first), .type = &type_descr_uint32_t_hex }, { .name = "bcdr_reset_pattern_middle", .descr = "bcdr reset pattern middle", .offset = offsetof(bcmolt_xgpon_rx_ranging_sm_pattern, bcdr_reset_pattern_middle), .type = &type_descr_uint32_t_hex }, { .name = "bcdr_reset_pattern_last", .descr = "bcdr reset pattern last", .offset = offsetof(bcmolt_xgpon_rx_ranging_sm_pattern, bcdr_reset_pattern_last), .type = &type_descr_uint32_t_hex }, { .name = "bcdr_reset_middle_repeats", .descr = "bcdr reset middle repeats", .offset = offsetof(bcmolt_xgpon_rx_ranging_sm_pattern, bcdr_reset_middle_repeats), .type = &type_descr_uint8_t }, { .name = "bcdr_reset_location", .descr = "bcdr reset location", .offset = offsetof(bcmolt_xgpon_rx_ranging_sm_pattern, bcdr_reset_location), .type = &type_descr_uint8_t }, { .name = "bcdr_reset_polarity", .descr = "bcdr reset polarity", .offset = offsetof(bcmolt_xgpon_rx_ranging_sm_pattern, bcdr_reset_polarity), .type = &type_descr_bcmos_bool } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_rx_ranging_sm_pattern = { .name = "bcmolt_xgpon_rx_ranging_sm_pattern", .descr = "xgpon rx ranging SM patterns", .size = sizeof(bcmolt_xgpon_rx_ranging_sm_pattern), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_rx_ranging_sm_pattern_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_rx_ranging_sm_pattern_fields } } };
bcmcli_enum_val bcmolt_xgpon_serdes_ranging_mode_string_table[] = { { .name = "ed", .val = BCMOLT_XGPON_SERDES_RANGING_MODE_ED }, { .name = "bcdr", .val = BCMOLT_XGPON_SERDES_RANGING_MODE_BCDR }, { .name = "fast_ranging1", .val = BCMOLT_XGPON_SERDES_RANGING_MODE_FAST_RANGING1 }, { .name = "fast_ranging2", .val = BCMOLT_XGPON_SERDES_RANGING_MODE_FAST_RANGING2 }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_serdes_ranging_mode = { .name = "bcmolt_xgpon_serdes_ranging_mode", .descr = "xgpon serdes ranging mode", .size = sizeof(bcmolt_xgpon_serdes_ranging_mode), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_serdes_ranging_mode_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_serdes_configuration_fields[] = { { .name = "multi_ed_mode", .descr = "multi ed mode", .offset = offsetof(bcmolt_xgpon_serdes_configuration, multi_ed_mode), .type = &type_descr_bcmos_bool }, { .name = "ranging_mode", .descr = "ranging mode", .offset = offsetof(bcmolt_xgpon_serdes_configuration, ranging_mode), .type = &type_descr_bcmolt_xgpon_serdes_ranging_mode } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_serdes_configuration = { .name = "bcmolt_xgpon_serdes_configuration", .descr = "xgpon serdes configuration", .size = sizeof(bcmolt_xgpon_serdes_configuration), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_serdes_configuration_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_serdes_configuration_fields } } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_sn_acquisition_fields[] = { { .name = "interval", .descr = "SN process interval in milliseconds", .offset = offsetof(bcmolt_xgpon_sn_acquisition, interval), .type = &type_descr_uint32_t }, { .name = "control", .descr = "SN process control", .offset = offsetof(bcmolt_xgpon_sn_acquisition, control), .type = &type_descr_bcmolt_control_state }, { .name = "onu_post_discovery_mode", .descr = "Automatic operation following ONU discovery", .offset = offsetof(bcmolt_xgpon_sn_acquisition, onu_post_discovery_mode), .type = &type_descr_bcmolt_onu_post_discovery_mode }, { .name = "burst_profile", .descr = "Burst profile index to use during SN acquisition window", .offset = offsetof(bcmolt_xgpon_sn_acquisition, burst_profile), .type = &type_descr_uint8_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_sn_acquisition = { .name = "bcmolt_xgpon_sn_acquisition", .descr = "XGPON SN Acquisition", .size = sizeof(bcmolt_xgpon_sn_acquisition), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_sn_acquisition_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_sn_acquisition_fields } } };
bcmcli_enum_val bcmolt_xgpon_trx_cfg_id_string_table[] = { { .name = "burst_profile", .val = BCMOLT_XGPON_TRX_CFG_ID_BURST_PROFILE }, { .name = "transceiver_config", .val = BCMOLT_XGPON_TRX_CFG_ID_TRANSCEIVER_CONFIG }, { .name = "transceiver_type", .val = BCMOLT_XGPON_TRX_CFG_ID_TRANSCEIVER_TYPE }, { .name = "debug", .val = BCMOLT_XGPON_TRX_CFG_ID_DEBUG }, { .name = "rssi_normal_config", .val = BCMOLT_XGPON_TRX_CFG_ID_RSSI_NORMAL_CONFIG }, { .name = "rssi_ranging_config", .val = BCMOLT_XGPON_TRX_CFG_ID_RSSI_RANGING_CONFIG }, { .name = "serdes_configuration", .val = BCMOLT_XGPON_TRX_CFG_ID_SERDES_CONFIGURATION }, { .name = "burst_profile_delimiter_max_errors", .val = BCMOLT_XGPON_TRX_CFG_ID_BURST_PROFILE_DELIMITER_MAX_ERRORS }, { .name = "ranging_sm_patterns_at_init", .val = BCMOLT_XGPON_TRX_CFG_ID_RANGING_SM_PATTERNS_AT_INIT }, { .name = "ranging_sm_patterns_ed_failure", .val = BCMOLT_XGPON_TRX_CFG_ID_RANGING_SM_PATTERNS_ED_FAILURE }, { .name = "reset_on_del_miss", .val = BCMOLT_XGPON_TRX_CFG_ID_RESET_ON_DEL_MISS }, { .name = "ed_state", .val = BCMOLT_XGPON_TRX_CFG_ID_ED_STATE }, { .name = "invert_ed", .val = BCMOLT_XGPON_TRX_CFG_ID_INVERT_ED }, { .name = "end_of_burst_reset", .val = BCMOLT_XGPON_TRX_CFG_ID_END_OF_BURST_RESET }, { .name = "trx_rst_polarity", .val = BCMOLT_XGPON_TRX_CFG_ID_TRX_RST_POLARITY }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_trx_cfg_id = { .name = "bcmolt_xgpon_trx_cfg_id", .descr = "Identifiers for all properties contained in the xgpon_trx_cfg group.", .size = sizeof(bcmolt_xgpon_trx_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_trx_cfg_id_string_table } };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_trx_debug_fields[] = { { .name = "rx_reversed_polarity", .descr = "transceiver reversed polarity", .offset = offsetof(bcmolt_xgpon_trx_debug, rx_reversed_polarity), .type = &type_descr_bcmolt_control_state }, { .name = "neg_out_bit", .descr = "turn all 1 to 0 and all 0 to 1 at the output. default is not to make negative bits", .offset = offsetof(bcmolt_xgpon_trx_debug, neg_out_bit), .type = &type_descr_bcmolt_control_state } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_trx_debug = { .name = "bcmolt_xgpon_trx_debug", .descr = "xgpon_trx_debug", .size = sizeof(bcmolt_xgpon_trx_debug), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_trx_debug_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_trx_debug_fields } } };
bcmcli_enum_val bcmolt_xgpon_trx_key_id_string_table[] = { { .name = "pon_ni", .val = BCMOLT_XGPON_TRX_KEY_ID_PON_NI }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_trx_key_id = { .name = "bcmolt_xgpon_trx_key_id", .descr = "Identifiers for all properties contained in the xgpon_trx_key group.", .size = sizeof(bcmolt_xgpon_trx_key_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_trx_key_id_string_table } };
bcmcli_enum_val bcmolt_xgpon_trx_type_string_table[] = { { .name = "lth_7222_pc", .val = BCMOLT_XGPON_TRX_TYPE_LTH_7222_PC }, { .name = "user_defined", .val = BCMOLT_XGPON_TRX_TYPE_USER_DEFINED }, { .name = "wtd_rtxm266_702", .val = BCMOLT_XGPON_TRX_TYPE_WTD_RTXM266_702 }, { .name = "lth_7222_bc_plus", .val = BCMOLT_XGPON_TRX_TYPE_LTH_7222_BC_PLUS }, { .name = "lth_7226_pc", .val = BCMOLT_XGPON_TRX_TYPE_LTH_7226_PC }, { .name = "lth_5302_pc", .val = BCMOLT_XGPON_TRX_TYPE_LTH_5302_PC }, { .name = "xgpon_general_1", .val = BCMOLT_XGPON_TRX_TYPE_XGPON_GENERAL_1 }, { .name = "xgpon_general_2", .val = BCMOLT_XGPON_TRX_TYPE_XGPON_GENERAL_2 }, { .name = "ltw_627_x_pc", .val = BCMOLT_XGPON_TRX_TYPE_LTW_627_X_PC }, { .name = "xpp_xe_r_3_cdfb", .val = BCMOLT_XGPON_TRX_TYPE_XPP_XE_R_3_CDFB }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_trx_type = { .name = "bcmolt_xgpon_trx_type", .descr = "XGPON TRX type", .size = sizeof(bcmolt_xgpon_trx_type), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xgpon_trx_type_string_table } };
bcmcli_enum_val bcmolt_xpon_serdes_cfg_id_string_table[] = { { .name = "rx_vga", .val = BCMOLT_XPON_SERDES_CFG_ID_RX_VGA }, { .name = "rx_pf", .val = BCMOLT_XPON_SERDES_CFG_ID_RX_PF }, { .name = "rx_lfpf", .val = BCMOLT_XPON_SERDES_CFG_ID_RX_LFPF }, { .name = "rx_dfe1", .val = BCMOLT_XPON_SERDES_CFG_ID_RX_DFE1 }, { .name = "rx_dfe2", .val = BCMOLT_XPON_SERDES_CFG_ID_RX_DFE2 }, { .name = "rx_dfe3", .val = BCMOLT_XPON_SERDES_CFG_ID_RX_DFE3 }, { .name = "rx_dfe4", .val = BCMOLT_XPON_SERDES_CFG_ID_RX_DFE4 }, { .name = "rx_dfe5", .val = BCMOLT_XPON_SERDES_CFG_ID_RX_DFE5 }, { .name = "tx_pre", .val = BCMOLT_XPON_SERDES_CFG_ID_TX_PRE }, { .name = "tx_main", .val = BCMOLT_XPON_SERDES_CFG_ID_TX_MAIN }, { .name = "tx_post1", .val = BCMOLT_XPON_SERDES_CFG_ID_TX_POST1 }, { .name = "tx_post2", .val = BCMOLT_XPON_SERDES_CFG_ID_TX_POST2 }, { .name = "tx_post3", .val = BCMOLT_XPON_SERDES_CFG_ID_TX_POST3 }, { .name = "tx_amp", .val = BCMOLT_XPON_SERDES_CFG_ID_TX_AMP }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xpon_serdes_cfg_id = { .name = "bcmolt_xpon_serdes_cfg_id", .descr = "Identifiers for all properties contained in the xpon_serdes_cfg group.", .size = sizeof(bcmolt_xpon_serdes_cfg_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xpon_serdes_cfg_id_string_table } };
bcmcli_enum_val bcmolt_xpon_serdes_key_id_string_table[] = { { .name = "pon_ni", .val = BCMOLT_XPON_SERDES_KEY_ID_PON_NI }, { .name = "instance", .val = BCMOLT_XPON_SERDES_KEY_ID_INSTANCE }, BCMCLI_ENUM_LAST };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xpon_serdes_key_id = { .name = "bcmolt_xpon_serdes_key_id", .descr = "Identifiers for all properties contained in the xpon_serdes_key group.", .size = sizeof(bcmolt_xpon_serdes_key_id), .base_type = BCMOLT_BASE_TYPE_ID_ENUM, .x = { .e = bcmolt_xpon_serdes_key_id_string_table } };

/* ==== Object: ae_ni ==== */

/* Group: ae_ni - key */
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_ni_key_ae_ni = { .name = "ae_ni", .descr = "The index of a specific AE NI instance as seen by the host.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_AE_NI_KEY_ID_AE_NI, .offset = offsetof(bcmolt_ae_ni_key, ae_ni), .type = &type_descr_uint16_t };
static bcmcli_prop_descr * BCM_DESCR ae_ni_key_prop_array[] = { &prop_descr_ae_ni_key_ae_ni };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_ae_ni_key_fields[] = { { .name = "ae_ni", .descr = "The index of a specific AE NI instance as seen by the host.", .offset = offsetof(bcmolt_ae_ni_key, ae_ni), .type = &type_descr_uint16_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_ae_ni_key = { .name = "bcmolt_ae_ni_key", .descr = "key", .size = sizeof(bcmolt_ae_ni_key), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_ae_ni_key_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_ae_ni_key_fields } } };

/* Group: ae_ni - cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_ni_cfg_mac_address = { .name = "mac_address", .descr = "The MAC address used for all frames generated by the OLT on the network.  This value must be set before AE_NI is first enabled, and cannot be changed while the AE_NI is enabled.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_AE_NI_CFG_ID_MAC_ADDRESS, .offset = offsetof(bcmolt_ae_ni_cfg_data, mac_address), .type = &type_descr_bcmos_mac_address };
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_ni_cfg_ae_ni_en = { .name = "ae_ni_en", .descr = "Indicates the enable state of the AE NI.", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_AE_NI_CFG_ID_AE_NI_EN, .offset = offsetof(bcmolt_ae_ni_cfg_data, ae_ni_en), .type = &type_descr_bcmolt_ae_ni_en_state };
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_ni_cfg_mtu_10g = { .name = "mtu_10g", .descr = "Maximum frame size (including FCS) on the 10G path. This attribute cannot be changed on an enabled AE_NI.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_AE_NI_CFG_ID_MTU_10G, .offset = offsetof(bcmolt_ae_ni_cfg_data, mtu_10g), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_ni_cfg_prbs_generator = { .name = "prbs_generator", .descr = "DS PRBS generator configuration", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_AE_NI_CFG_ID_PRBS_GENERATOR, .offset = offsetof(bcmolt_ae_ni_cfg_data, prbs_generator), .type = &type_descr_bcmolt_prbs_generator_config };
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_ni_cfg_prbs_checker = { .name = "prbs_checker", .descr = "US PRBS checker configuration", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_AE_NI_CFG_ID_PRBS_CHECKER, .offset = offsetof(bcmolt_ae_ni_cfg_data, prbs_checker), .type = &type_descr_bcmolt_prbs_checker_config };
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_ni_cfg_prbs_status = { .name = "prbs_status", .descr = "Result of US PRBS checker", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_AE_NI_CFG_ID_PRBS_STATUS, .offset = offsetof(bcmolt_ae_ni_cfg_data, prbs_status), .type = &type_descr_bcmolt_prbs_status };
static bcmcli_prop_descr * BCM_DESCR ae_ni_cfg_prop_array[] = { &prop_descr_ae_ni_cfg_mac_address, &prop_descr_ae_ni_cfg_ae_ni_en, &prop_descr_ae_ni_cfg_mtu_10g, &prop_descr_ae_ni_cfg_prbs_generator, &prop_descr_ae_ni_cfg_prbs_checker, &prop_descr_ae_ni_cfg_prbs_status };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_ae_ni_cfg_data_fields[] = { { .name = "mac_address", .descr = "The MAC address used for all frames generated by the OLT on the network.  This value must be set before AE_NI is first enabled, and cannot be changed while the AE_NI is enabled.", .offset = offsetof(bcmolt_ae_ni_cfg_data, mac_address), .type = &type_descr_bcmos_mac_address }, { .name = "ae_ni_en", .descr = "Indicates the enable state of the AE NI.", .offset = offsetof(bcmolt_ae_ni_cfg_data, ae_ni_en), .type = &type_descr_bcmolt_ae_ni_en_state }, { .name = "mtu_10g", .descr = "Maximum frame size (including FCS) on the 10G path. This attribute cannot be changed on an enabled AE_NI.", .offset = offsetof(bcmolt_ae_ni_cfg_data, mtu_10g), .type = &type_descr_uint16_t }, { .name = "prbs_generator", .descr = "DS PRBS generator configuration", .offset = offsetof(bcmolt_ae_ni_cfg_data, prbs_generator), .type = &type_descr_bcmolt_prbs_generator_config }, { .name = "prbs_checker", .descr = "US PRBS checker configuration", .offset = offsetof(bcmolt_ae_ni_cfg_data, prbs_checker), .type = &type_descr_bcmolt_prbs_checker_config }, { .name = "prbs_status", .descr = "Result of US PRBS checker", .offset = offsetof(bcmolt_ae_ni_cfg_data, prbs_status), .type = &type_descr_bcmolt_prbs_status } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_ae_ni_cfg_data = { .name = "bcmolt_ae_ni_cfg_data", .descr = "cfg", .size = sizeof(bcmolt_ae_ni_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_ae_ni_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_ae_ni_cfg_data_fields } } };

/* Group: ae_ni - set_ae_ni_en_state */
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_ni_set_ae_ni_en_state_new_state = { .name = "new_state", .descr = "New EPON NI enable state.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_AE_NI_SET_AE_NI_EN_STATE_ID_NEW_STATE, .offset = offsetof(bcmolt_ae_ni_set_ae_ni_en_state_data, new_state), .type = &type_descr_bcmolt_ae_ni_en_state };
static bcmcli_prop_descr * BCM_DESCR ae_ni_set_ae_ni_en_state_prop_array[] = { &prop_descr_ae_ni_set_ae_ni_en_state_new_state };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_ae_ni_set_ae_ni_en_state_data_fields[] = { { .name = "new_state", .descr = "New EPON NI enable state.", .offset = offsetof(bcmolt_ae_ni_set_ae_ni_en_state_data, new_state), .type = &type_descr_bcmolt_ae_ni_en_state } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_ae_ni_set_ae_ni_en_state_data = { .name = "bcmolt_ae_ni_set_ae_ni_en_state_data", .descr = "Set the AE NI enable state.", .size = sizeof(bcmolt_ae_ni_set_ae_ni_en_state_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_ae_ni_set_ae_ni_en_state_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_ae_ni_set_ae_ni_en_state_data_fields } } };

/* ==== Object: ae_path_ds ==== */

/* Group: ae_path_ds - key */
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_path_ds_key_ae_ni = { .name = "ae_ni", .descr = "AE NI associated with this 10G downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_AE_PATH_DS_KEY_ID_AE_NI, .offset = offsetof(bcmolt_ae_path_ds_key, ae_ni), .type = &type_descr_uint16_t };
static bcmcli_prop_descr * BCM_DESCR ae_path_ds_key_prop_array[] = { &prop_descr_ae_path_ds_key_ae_ni };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_ae_path_ds_key_fields[] = { { .name = "ae_ni", .descr = "AE NI associated with this 10G downstream path.", .offset = offsetof(bcmolt_ae_path_ds_key, ae_ni), .type = &type_descr_uint16_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_ae_path_ds_key = { .name = "bcmolt_ae_path_ds_key", .descr = "key", .size = sizeof(bcmolt_ae_path_ds_key), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_ae_path_ds_key_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_ae_path_ds_key_fields } } };

/* Group: ae_path_ds - stat */
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_path_ds_stat_bytes = { .name = "bytes", .descr = "The number of bytes transmitted on this 10g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_AE_PATH_DS_STAT_ID_BYTES, .offset = offsetof(bcmolt_ae_path_ds_stat_data, bytes), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_path_ds_stat_frames = { .name = "frames", .descr = "The number of frames transmitted on this 10g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_AE_PATH_DS_STAT_ID_FRAMES, .offset = offsetof(bcmolt_ae_path_ds_stat_data, frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_path_ds_stat_frames_64 = { .name = "frames_64", .descr = "The number of 64 byte frames transmitted on this 10g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_AE_PATH_DS_STAT_ID_FRAMES_64, .offset = offsetof(bcmolt_ae_path_ds_stat_data, frames_64), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_path_ds_stat_frames_65_127 = { .name = "frames_65_127", .descr = "The number of 65 to 127 byte frames transmitted on this 10g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_AE_PATH_DS_STAT_ID_FRAMES_65_127, .offset = offsetof(bcmolt_ae_path_ds_stat_data, frames_65_127), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_path_ds_stat_frames_128_255 = { .name = "frames_128_255", .descr = "The number of 128 to 255 byte frames transmitted on this 10g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_AE_PATH_DS_STAT_ID_FRAMES_128_255, .offset = offsetof(bcmolt_ae_path_ds_stat_data, frames_128_255), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_path_ds_stat_frames_256_511 = { .name = "frames_256_511", .descr = "The number of 256 to 511 byte frames transmitted on this 10g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_AE_PATH_DS_STAT_ID_FRAMES_256_511, .offset = offsetof(bcmolt_ae_path_ds_stat_data, frames_256_511), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_path_ds_stat_frames_512_1023 = { .name = "frames_512_1023", .descr = "The number of 512 to 1023 byte frames transmitted on this 10g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_AE_PATH_DS_STAT_ID_FRAMES_512_1023, .offset = offsetof(bcmolt_ae_path_ds_stat_data, frames_512_1023), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_path_ds_stat_frames_1024_1518 = { .name = "frames_1024_1518", .descr = "The number of 1024 to 1518 byte frames transmitted on this 10g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_AE_PATH_DS_STAT_ID_FRAMES_1024_1518, .offset = offsetof(bcmolt_ae_path_ds_stat_data, frames_1024_1518), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_path_ds_stat_frames_1519_2047 = { .name = "frames_1519_2047", .descr = "The number of 1519 to 2047 byte frames transmitted on this 10g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_AE_PATH_DS_STAT_ID_FRAMES_1519_2047, .offset = offsetof(bcmolt_ae_path_ds_stat_data, frames_1519_2047), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_path_ds_stat_frames_2048_4095 = { .name = "frames_2048_4095", .descr = "The number of 2048 to 4095 byte frames transmitted on this 10g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_AE_PATH_DS_STAT_ID_FRAMES_2048_4095, .offset = offsetof(bcmolt_ae_path_ds_stat_data, frames_2048_4095), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_path_ds_stat_frames_4096_9216 = { .name = "frames_4096_9216", .descr = "The number of 4096 to 9216 byte frames transmitted on this 10g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_AE_PATH_DS_STAT_ID_FRAMES_4096_9216, .offset = offsetof(bcmolt_ae_path_ds_stat_data, frames_4096_9216), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_path_ds_stat_frames_9217_16383 = { .name = "frames_9217_16383", .descr = "The number of 9217 to 16383 byte frames transmitted on this 10g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_AE_PATH_DS_STAT_ID_FRAMES_9217_16383, .offset = offsetof(bcmolt_ae_path_ds_stat_data, frames_9217_16383), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_path_ds_stat_broadcast_frames = { .name = "broadcast_frames", .descr = "The number of broadcast frames transmitted on this 10g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_AE_PATH_DS_STAT_ID_BROADCAST_FRAMES, .offset = offsetof(bcmolt_ae_path_ds_stat_data, broadcast_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_path_ds_stat_data_bytes = { .name = "data_bytes", .descr = "The number of data bytes transmitted on this 10g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_AE_PATH_DS_STAT_ID_DATA_BYTES, .offset = offsetof(bcmolt_ae_path_ds_stat_data, data_bytes), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_path_ds_stat_multicast_frames = { .name = "multicast_frames", .descr = "The number of multicast frames transmitted on this 10g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_AE_PATH_DS_STAT_ID_MULTICAST_FRAMES, .offset = offsetof(bcmolt_ae_path_ds_stat_data, multicast_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_path_ds_stat_unicast_frames = { .name = "unicast_frames", .descr = "The number of unicast frames transmitted on this 10g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_AE_PATH_DS_STAT_ID_UNICAST_FRAMES, .offset = offsetof(bcmolt_ae_path_ds_stat_data, unicast_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_path_ds_stat_abort_frames = { .name = "abort_frames", .descr = "Number of abort frames transmitted on this 10g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_AE_PATH_DS_STAT_ID_ABORT_FRAMES, .offset = offsetof(bcmolt_ae_path_ds_stat_data, abort_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr * BCM_DESCR ae_path_ds_stat_prop_array[] = { &prop_descr_ae_path_ds_stat_bytes, &prop_descr_ae_path_ds_stat_frames, &prop_descr_ae_path_ds_stat_frames_64, &prop_descr_ae_path_ds_stat_frames_65_127, &prop_descr_ae_path_ds_stat_frames_128_255, &prop_descr_ae_path_ds_stat_frames_256_511, &prop_descr_ae_path_ds_stat_frames_512_1023, &prop_descr_ae_path_ds_stat_frames_1024_1518, &prop_descr_ae_path_ds_stat_frames_1519_2047, &prop_descr_ae_path_ds_stat_frames_2048_4095, &prop_descr_ae_path_ds_stat_frames_4096_9216, &prop_descr_ae_path_ds_stat_frames_9217_16383, &prop_descr_ae_path_ds_stat_broadcast_frames, &prop_descr_ae_path_ds_stat_data_bytes, &prop_descr_ae_path_ds_stat_multicast_frames, &prop_descr_ae_path_ds_stat_unicast_frames, &prop_descr_ae_path_ds_stat_abort_frames };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_ae_path_ds_stat_data_fields[] = { { .name = "bytes", .descr = "The number of bytes transmitted on this 10g downstream path.", .offset = offsetof(bcmolt_ae_path_ds_stat_data, bytes), .type = &type_descr_uint64_t }, { .name = "frames", .descr = "The number of frames transmitted on this 10g downstream path.", .offset = offsetof(bcmolt_ae_path_ds_stat_data, frames), .type = &type_descr_uint64_t }, { .name = "frames_64", .descr = "The number of 64 byte frames transmitted on this 10g downstream path.", .offset = offsetof(bcmolt_ae_path_ds_stat_data, frames_64), .type = &type_descr_uint64_t }, { .name = "frames_65_127", .descr = "The number of 65 to 127 byte frames transmitted on this 10g downstream path.", .offset = offsetof(bcmolt_ae_path_ds_stat_data, frames_65_127), .type = &type_descr_uint64_t }, { .name = "frames_128_255", .descr = "The number of 128 to 255 byte frames transmitted on this 10g downstream path.", .offset = offsetof(bcmolt_ae_path_ds_stat_data, frames_128_255), .type = &type_descr_uint64_t }, { .name = "frames_256_511", .descr = "The number of 256 to 511 byte frames transmitted on this 10g downstream path.", .offset = offsetof(bcmolt_ae_path_ds_stat_data, frames_256_511), .type = &type_descr_uint64_t }, { .name = "frames_512_1023", .descr = "The number of 512 to 1023 byte frames transmitted on this 10g downstream path.", .offset = offsetof(bcmolt_ae_path_ds_stat_data, frames_512_1023), .type = &type_descr_uint64_t }, { .name = "frames_1024_1518", .descr = "The number of 1024 to 1518 byte frames transmitted on this 10g downstream path.", .offset = offsetof(bcmolt_ae_path_ds_stat_data, frames_1024_1518), .type = &type_descr_uint64_t }, { .name = "frames_1519_2047", .descr = "The number of 1519 to 2047 byte frames transmitted on this 10g downstream path.", .offset = offsetof(bcmolt_ae_path_ds_stat_data, frames_1519_2047), .type = &type_descr_uint64_t }, { .name = "frames_2048_4095", .descr = "The number of 2048 to 4095 byte frames transmitted on this 10g downstream path.", .offset = offsetof(bcmolt_ae_path_ds_stat_data, frames_2048_4095), .type = &type_descr_uint64_t }, { .name = "frames_4096_9216", .descr = "The number of 4096 to 9216 byte frames transmitted on this 10g downstream path.", .offset = offsetof(bcmolt_ae_path_ds_stat_data, frames_4096_9216), .type = &type_descr_uint64_t }, { .name = "frames_9217_16383", .descr = "The number of 9217 to 16383 byte frames transmitted on this 10g downstream path.", .offset = offsetof(bcmolt_ae_path_ds_stat_data, frames_9217_16383), .type = &type_descr_uint64_t }, { .name = "broadcast_frames", .descr = "The number of broadcast frames transmitted on this 10g downstream path.", .offset = offsetof(bcmolt_ae_path_ds_stat_data, broadcast_frames), .type = &type_descr_uint64_t }, { .name = "data_bytes", .descr = "The number of data bytes transmitted on this 10g downstream path.", .offset = offsetof(bcmolt_ae_path_ds_stat_data, data_bytes), .type = &type_descr_uint64_t }, { .name = "multicast_frames", .descr = "The number of multicast frames transmitted on this 10g downstream path.", .offset = offsetof(bcmolt_ae_path_ds_stat_data, multicast_frames), .type = &type_descr_uint64_t }, { .name = "unicast_frames", .descr = "The number of unicast frames transmitted on this 10g downstream path.", .offset = offsetof(bcmolt_ae_path_ds_stat_data, unicast_frames), .type = &type_descr_uint64_t }, { .name = "abort_frames", .descr = "Number of abort frames transmitted on this 10g downstream path.", .offset = offsetof(bcmolt_ae_path_ds_stat_data, abort_frames), .type = &type_descr_uint64_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_ae_path_ds_stat_data = { .name = "bcmolt_ae_path_ds_stat_data", .descr = "stat", .size = sizeof(bcmolt_ae_path_ds_stat_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_ae_path_ds_stat_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_ae_path_ds_stat_data_fields } } };

/* Group: ae_path_ds - stat_cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_path_ds_stat_cfg_cfg = { .name = "cfg", .descr = "Statistic alarm configuration.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_AE_PATH_DS_STAT_CFG_ID_CFG, .offset = offsetof(bcmolt_ae_path_ds_stat_cfg_data, cfg), .type = &type_descr_bcmolt_stat_alarm_config };
static bcmcli_prop_descr * BCM_DESCR ae_path_ds_stat_cfg_prop_array[] = { &prop_descr_ae_path_ds_stat_cfg_cfg };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_ae_path_ds_stat_cfg_data_fields[] = { { .name = "cfg", .descr = "Statistic alarm configuration.", .offset = offsetof(bcmolt_ae_path_ds_stat_cfg_data, cfg), .type = &type_descr_bcmolt_stat_alarm_config } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_ae_path_ds_stat_cfg_data = { .name = "bcmolt_ae_path_ds_stat_cfg_data", .descr = "Statistic Configuration", .size = sizeof(bcmolt_ae_path_ds_stat_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_ae_path_ds_stat_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_ae_path_ds_stat_cfg_data_fields } } };

/* Group: ae_path_ds - stat_alarm_raised */
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_path_ds_stat_alarm_raised_stat = { .name = "stat", .descr = "Statistic identifier.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_AE_PATH_DS_STAT_ALARM_RAISED_ID_STAT, .offset = offsetof(bcmolt_ae_path_ds_stat_alarm_raised_data, stat), .type = &type_descr_bcmolt_ae_path_ds_stat_id };
static bcmcli_prop_descr * BCM_DESCR ae_path_ds_stat_alarm_raised_prop_array[] = { &prop_descr_ae_path_ds_stat_alarm_raised_stat };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_ae_path_ds_stat_alarm_raised_data_fields[] = { { .name = "stat", .descr = "Statistic identifier.", .offset = offsetof(bcmolt_ae_path_ds_stat_alarm_raised_data, stat), .type = &type_descr_bcmolt_ae_path_ds_stat_id } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_ae_path_ds_stat_alarm_raised_data = { .name = "bcmolt_ae_path_ds_stat_alarm_raised_data", .descr = "Sent when a configured statistic alarm condition has been met.", .size = sizeof(bcmolt_ae_path_ds_stat_alarm_raised_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_ae_path_ds_stat_alarm_raised_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_ae_path_ds_stat_alarm_raised_data_fields } } };

/* Group: ae_path_ds - stat_alarm_cleared */
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_path_ds_stat_alarm_cleared_stat = { .name = "stat", .descr = "Statistic identifier.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_AE_PATH_DS_STAT_ALARM_CLEARED_ID_STAT, .offset = offsetof(bcmolt_ae_path_ds_stat_alarm_cleared_data, stat), .type = &type_descr_bcmolt_ae_path_ds_stat_id };
static bcmcli_prop_descr * BCM_DESCR ae_path_ds_stat_alarm_cleared_prop_array[] = { &prop_descr_ae_path_ds_stat_alarm_cleared_stat };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_ae_path_ds_stat_alarm_cleared_data_fields[] = { { .name = "stat", .descr = "Statistic identifier.", .offset = offsetof(bcmolt_ae_path_ds_stat_alarm_cleared_data, stat), .type = &type_descr_bcmolt_ae_path_ds_stat_id } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_ae_path_ds_stat_alarm_cleared_data = { .name = "bcmolt_ae_path_ds_stat_alarm_cleared_data", .descr = "Sent when a configured statistic alarm condition is no longer met.", .size = sizeof(bcmolt_ae_path_ds_stat_alarm_cleared_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_ae_path_ds_stat_alarm_cleared_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_ae_path_ds_stat_alarm_cleared_data_fields } } };

/* Group: ae_path_ds - auto_cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_path_ds_auto_cfg_stat_alarm_cleared = { .name = "stat_alarm_cleared", .descr = "If true, indications of type \"stat_alarm_cleared\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_AE_PATH_DS_AUTO_CFG_ID_STAT_ALARM_CLEARED, .offset = offsetof(bcmolt_ae_path_ds_auto_cfg_data, stat_alarm_cleared), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_path_ds_auto_cfg_stat_alarm_raised = { .name = "stat_alarm_raised", .descr = "If true, indications of type \"stat_alarm_raised\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_AE_PATH_DS_AUTO_CFG_ID_STAT_ALARM_RAISED, .offset = offsetof(bcmolt_ae_path_ds_auto_cfg_data, stat_alarm_raised), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr * BCM_DESCR ae_path_ds_auto_cfg_prop_array[] = { &prop_descr_ae_path_ds_auto_cfg_stat_alarm_cleared, &prop_descr_ae_path_ds_auto_cfg_stat_alarm_raised };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_ae_path_ds_auto_cfg_data_fields[] = { { .name = "stat_alarm_cleared", .descr = "If true, indications of type \"stat_alarm_cleared\" will be generated.", .offset = offsetof(bcmolt_ae_path_ds_auto_cfg_data, stat_alarm_cleared), .type = &type_descr_bcmos_bool }, { .name = "stat_alarm_raised", .descr = "If true, indications of type \"stat_alarm_raised\" will be generated.", .offset = offsetof(bcmolt_ae_path_ds_auto_cfg_data, stat_alarm_raised), .type = &type_descr_bcmos_bool } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_ae_path_ds_auto_cfg_data = { .name = "bcmolt_ae_path_ds_auto_cfg_data", .descr = "Indication Configuration", .size = sizeof(bcmolt_ae_path_ds_auto_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_ae_path_ds_auto_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_ae_path_ds_auto_cfg_data_fields } } };

/* ==== Object: ae_path_us ==== */

/* Group: ae_path_us - key */
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_path_us_key_ae_ni = { .name = "ae_ni", .descr = "AE NI associated with this 10G upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_AE_PATH_US_KEY_ID_AE_NI, .offset = offsetof(bcmolt_ae_path_us_key, ae_ni), .type = &type_descr_uint16_t };
static bcmcli_prop_descr * BCM_DESCR ae_path_us_key_prop_array[] = { &prop_descr_ae_path_us_key_ae_ni };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_ae_path_us_key_fields[] = { { .name = "ae_ni", .descr = "AE NI associated with this 10G upstream path.", .offset = offsetof(bcmolt_ae_path_us_key, ae_ni), .type = &type_descr_uint16_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_ae_path_us_key = { .name = "bcmolt_ae_path_us_key", .descr = "key", .size = sizeof(bcmolt_ae_path_us_key), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_ae_path_us_key_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_ae_path_us_key_fields } } };

/* Group: ae_path_us - stat */
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_path_us_stat_bytes = { .name = "bytes", .descr = "The number of bytes received on this 10g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_AE_PATH_US_STAT_ID_BYTES, .offset = offsetof(bcmolt_ae_path_us_stat_data, bytes), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_path_us_stat_frames = { .name = "frames", .descr = "The number of frames received on this 10g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_AE_PATH_US_STAT_ID_FRAMES, .offset = offsetof(bcmolt_ae_path_us_stat_data, frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_path_us_stat_frames_64 = { .name = "frames_64", .descr = "The number of 64 byte frames received on this 10g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_AE_PATH_US_STAT_ID_FRAMES_64, .offset = offsetof(bcmolt_ae_path_us_stat_data, frames_64), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_path_us_stat_frames_65_127 = { .name = "frames_65_127", .descr = "The number of 65 to 127 byte frames received on this 10g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_AE_PATH_US_STAT_ID_FRAMES_65_127, .offset = offsetof(bcmolt_ae_path_us_stat_data, frames_65_127), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_path_us_stat_frames_128_255 = { .name = "frames_128_255", .descr = "The number of 128 to 255 byte frames received on this 10g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_AE_PATH_US_STAT_ID_FRAMES_128_255, .offset = offsetof(bcmolt_ae_path_us_stat_data, frames_128_255), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_path_us_stat_frames_256_511 = { .name = "frames_256_511", .descr = "The number of 256 to 511 byte frames received on this 10g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_AE_PATH_US_STAT_ID_FRAMES_256_511, .offset = offsetof(bcmolt_ae_path_us_stat_data, frames_256_511), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_path_us_stat_frames_512_1023 = { .name = "frames_512_1023", .descr = "The number of 512 to 1023 byte frames received on this 10g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_AE_PATH_US_STAT_ID_FRAMES_512_1023, .offset = offsetof(bcmolt_ae_path_us_stat_data, frames_512_1023), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_path_us_stat_frames_1024_1518 = { .name = "frames_1024_1518", .descr = "The number of 1024 to 1518 byte frames received on this 10g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_AE_PATH_US_STAT_ID_FRAMES_1024_1518, .offset = offsetof(bcmolt_ae_path_us_stat_data, frames_1024_1518), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_path_us_stat_frames_1519_2047 = { .name = "frames_1519_2047", .descr = "The number of 1519 to 2047 byte frames received on this 10g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_AE_PATH_US_STAT_ID_FRAMES_1519_2047, .offset = offsetof(bcmolt_ae_path_us_stat_data, frames_1519_2047), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_path_us_stat_frames_2048_4095 = { .name = "frames_2048_4095", .descr = "The number of 2048 to 4095 byte frames received on this 10g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_AE_PATH_US_STAT_ID_FRAMES_2048_4095, .offset = offsetof(bcmolt_ae_path_us_stat_data, frames_2048_4095), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_path_us_stat_frames_4096_9216 = { .name = "frames_4096_9216", .descr = "The number of 4096 to 9216 byte frames received on this 10g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_AE_PATH_US_STAT_ID_FRAMES_4096_9216, .offset = offsetof(bcmolt_ae_path_us_stat_data, frames_4096_9216), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_path_us_stat_frames_9217_16383 = { .name = "frames_9217_16383", .descr = "The number of 9217 to 16383 byte frames received on this 10g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_AE_PATH_US_STAT_ID_FRAMES_9217_16383, .offset = offsetof(bcmolt_ae_path_us_stat_data, frames_9217_16383), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_path_us_stat_broadcast_frames = { .name = "broadcast_frames", .descr = "The number of broadcast frames received on this 10g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_AE_PATH_US_STAT_ID_BROADCAST_FRAMES, .offset = offsetof(bcmolt_ae_path_us_stat_data, broadcast_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_path_us_stat_data_bytes = { .name = "data_bytes", .descr = "The number of data bytes received on this 10g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_AE_PATH_US_STAT_ID_DATA_BYTES, .offset = offsetof(bcmolt_ae_path_us_stat_data, data_bytes), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_path_us_stat_multicast_frames = { .name = "multicast_frames", .descr = "The number of multicast frames received on this 10g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_AE_PATH_US_STAT_ID_MULTICAST_FRAMES, .offset = offsetof(bcmolt_ae_path_us_stat_data, multicast_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_path_us_stat_unicast_frames = { .name = "unicast_frames", .descr = "The number of unicast frames received on this 10g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_AE_PATH_US_STAT_ID_UNICAST_FRAMES, .offset = offsetof(bcmolt_ae_path_us_stat_data, unicast_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_path_us_stat_abort_frames = { .name = "abort_frames", .descr = "The number of abort frames received on this 10g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_AE_PATH_US_STAT_ID_ABORT_FRAMES, .offset = offsetof(bcmolt_ae_path_us_stat_data, abort_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_path_us_stat_fcs_error = { .name = "fcs_error", .descr = "The number of bad FCS errors received on this 10g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_AE_PATH_US_STAT_ID_FCS_ERROR, .offset = offsetof(bcmolt_ae_path_us_stat_data, fcs_error), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_path_us_stat_oversize_error = { .name = "oversize_error", .descr = "The number of oversize errors received on this 10g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_AE_PATH_US_STAT_ID_OVERSIZE_ERROR, .offset = offsetof(bcmolt_ae_path_us_stat_data, oversize_error), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_path_us_stat_runt_error = { .name = "runt_error", .descr = "The number of runt errors received on this 10g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_AE_PATH_US_STAT_ID_RUNT_ERROR, .offset = offsetof(bcmolt_ae_path_us_stat_data, runt_error), .type = &type_descr_uint64_t };
static bcmcli_prop_descr * BCM_DESCR ae_path_us_stat_prop_array[] = { &prop_descr_ae_path_us_stat_bytes, &prop_descr_ae_path_us_stat_frames, &prop_descr_ae_path_us_stat_frames_64, &prop_descr_ae_path_us_stat_frames_65_127, &prop_descr_ae_path_us_stat_frames_128_255, &prop_descr_ae_path_us_stat_frames_256_511, &prop_descr_ae_path_us_stat_frames_512_1023, &prop_descr_ae_path_us_stat_frames_1024_1518, &prop_descr_ae_path_us_stat_frames_1519_2047, &prop_descr_ae_path_us_stat_frames_2048_4095, &prop_descr_ae_path_us_stat_frames_4096_9216, &prop_descr_ae_path_us_stat_frames_9217_16383, &prop_descr_ae_path_us_stat_broadcast_frames, &prop_descr_ae_path_us_stat_data_bytes, &prop_descr_ae_path_us_stat_multicast_frames, &prop_descr_ae_path_us_stat_unicast_frames, &prop_descr_ae_path_us_stat_abort_frames, &prop_descr_ae_path_us_stat_fcs_error, &prop_descr_ae_path_us_stat_oversize_error, &prop_descr_ae_path_us_stat_runt_error };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_ae_path_us_stat_data_fields[] = { { .name = "bytes", .descr = "The number of bytes received on this 10g upstream path.", .offset = offsetof(bcmolt_ae_path_us_stat_data, bytes), .type = &type_descr_uint64_t }, { .name = "frames", .descr = "The number of frames received on this 10g upstream path.", .offset = offsetof(bcmolt_ae_path_us_stat_data, frames), .type = &type_descr_uint64_t }, { .name = "frames_64", .descr = "The number of 64 byte frames received on this 10g upstream path.", .offset = offsetof(bcmolt_ae_path_us_stat_data, frames_64), .type = &type_descr_uint64_t }, { .name = "frames_65_127", .descr = "The number of 65 to 127 byte frames received on this 10g upstream path.", .offset = offsetof(bcmolt_ae_path_us_stat_data, frames_65_127), .type = &type_descr_uint64_t }, { .name = "frames_128_255", .descr = "The number of 128 to 255 byte frames received on this 10g upstream path.", .offset = offsetof(bcmolt_ae_path_us_stat_data, frames_128_255), .type = &type_descr_uint64_t }, { .name = "frames_256_511", .descr = "The number of 256 to 511 byte frames received on this 10g upstream path.", .offset = offsetof(bcmolt_ae_path_us_stat_data, frames_256_511), .type = &type_descr_uint64_t }, { .name = "frames_512_1023", .descr = "The number of 512 to 1023 byte frames received on this 10g upstream path.", .offset = offsetof(bcmolt_ae_path_us_stat_data, frames_512_1023), .type = &type_descr_uint64_t }, { .name = "frames_1024_1518", .descr = "The number of 1024 to 1518 byte frames received on this 10g upstream path.", .offset = offsetof(bcmolt_ae_path_us_stat_data, frames_1024_1518), .type = &type_descr_uint64_t }, { .name = "frames_1519_2047", .descr = "The number of 1519 to 2047 byte frames received on this 10g upstream path.", .offset = offsetof(bcmolt_ae_path_us_stat_data, frames_1519_2047), .type = &type_descr_uint64_t }, { .name = "frames_2048_4095", .descr = "The number of 2048 to 4095 byte frames received on this 10g upstream path.", .offset = offsetof(bcmolt_ae_path_us_stat_data, frames_2048_4095), .type = &type_descr_uint64_t }, { .name = "frames_4096_9216", .descr = "The number of 4096 to 9216 byte frames received on this 10g upstream path.", .offset = offsetof(bcmolt_ae_path_us_stat_data, frames_4096_9216), .type = &type_descr_uint64_t }, { .name = "frames_9217_16383", .descr = "The number of 9217 to 16383 byte frames received on this 10g upstream path.", .offset = offsetof(bcmolt_ae_path_us_stat_data, frames_9217_16383), .type = &type_descr_uint64_t }, { .name = "broadcast_frames", .descr = "The number of broadcast frames received on this 10g upstream path.", .offset = offsetof(bcmolt_ae_path_us_stat_data, broadcast_frames), .type = &type_descr_uint64_t }, { .name = "data_bytes", .descr = "The number of data bytes received on this 10g upstream path.", .offset = offsetof(bcmolt_ae_path_us_stat_data, data_bytes), .type = &type_descr_uint64_t }, { .name = "multicast_frames", .descr = "The number of multicast frames received on this 10g upstream path.", .offset = offsetof(bcmolt_ae_path_us_stat_data, multicast_frames), .type = &type_descr_uint64_t }, { .name = "unicast_frames", .descr = "The number of unicast frames received on this 10g upstream path.", .offset = offsetof(bcmolt_ae_path_us_stat_data, unicast_frames), .type = &type_descr_uint64_t }, { .name = "abort_frames", .descr = "The number of abort frames received on this 10g upstream path.", .offset = offsetof(bcmolt_ae_path_us_stat_data, abort_frames), .type = &type_descr_uint64_t }, { .name = "fcs_error", .descr = "The number of bad FCS errors received on this 10g upstream path.", .offset = offsetof(bcmolt_ae_path_us_stat_data, fcs_error), .type = &type_descr_uint64_t }, { .name = "oversize_error", .descr = "The number of oversize errors received on this 10g upstream path.", .offset = offsetof(bcmolt_ae_path_us_stat_data, oversize_error), .type = &type_descr_uint64_t }, { .name = "runt_error", .descr = "The number of runt errors received on this 10g upstream path.", .offset = offsetof(bcmolt_ae_path_us_stat_data, runt_error), .type = &type_descr_uint64_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_ae_path_us_stat_data = { .name = "bcmolt_ae_path_us_stat_data", .descr = "stat", .size = sizeof(bcmolt_ae_path_us_stat_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_ae_path_us_stat_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_ae_path_us_stat_data_fields } } };

/* Group: ae_path_us - stat_cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_path_us_stat_cfg_cfg = { .name = "cfg", .descr = "Statistic alarm configuration.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_AE_PATH_US_STAT_CFG_ID_CFG, .offset = offsetof(bcmolt_ae_path_us_stat_cfg_data, cfg), .type = &type_descr_bcmolt_stat_alarm_config };
static bcmcli_prop_descr * BCM_DESCR ae_path_us_stat_cfg_prop_array[] = { &prop_descr_ae_path_us_stat_cfg_cfg };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_ae_path_us_stat_cfg_data_fields[] = { { .name = "cfg", .descr = "Statistic alarm configuration.", .offset = offsetof(bcmolt_ae_path_us_stat_cfg_data, cfg), .type = &type_descr_bcmolt_stat_alarm_config } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_ae_path_us_stat_cfg_data = { .name = "bcmolt_ae_path_us_stat_cfg_data", .descr = "Statistic Configuration", .size = sizeof(bcmolt_ae_path_us_stat_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_ae_path_us_stat_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_ae_path_us_stat_cfg_data_fields } } };

/* Group: ae_path_us - stat_alarm_raised */
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_path_us_stat_alarm_raised_stat = { .name = "stat", .descr = "Statistic identifier.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_AE_PATH_US_STAT_ALARM_RAISED_ID_STAT, .offset = offsetof(bcmolt_ae_path_us_stat_alarm_raised_data, stat), .type = &type_descr_bcmolt_ae_path_us_stat_id };
static bcmcli_prop_descr * BCM_DESCR ae_path_us_stat_alarm_raised_prop_array[] = { &prop_descr_ae_path_us_stat_alarm_raised_stat };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_ae_path_us_stat_alarm_raised_data_fields[] = { { .name = "stat", .descr = "Statistic identifier.", .offset = offsetof(bcmolt_ae_path_us_stat_alarm_raised_data, stat), .type = &type_descr_bcmolt_ae_path_us_stat_id } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_ae_path_us_stat_alarm_raised_data = { .name = "bcmolt_ae_path_us_stat_alarm_raised_data", .descr = "Sent when a configured statistic alarm condition has been met.", .size = sizeof(bcmolt_ae_path_us_stat_alarm_raised_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_ae_path_us_stat_alarm_raised_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_ae_path_us_stat_alarm_raised_data_fields } } };

/* Group: ae_path_us - stat_alarm_cleared */
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_path_us_stat_alarm_cleared_stat = { .name = "stat", .descr = "Statistic identifier.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_AE_PATH_US_STAT_ALARM_CLEARED_ID_STAT, .offset = offsetof(bcmolt_ae_path_us_stat_alarm_cleared_data, stat), .type = &type_descr_bcmolt_ae_path_us_stat_id };
static bcmcli_prop_descr * BCM_DESCR ae_path_us_stat_alarm_cleared_prop_array[] = { &prop_descr_ae_path_us_stat_alarm_cleared_stat };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_ae_path_us_stat_alarm_cleared_data_fields[] = { { .name = "stat", .descr = "Statistic identifier.", .offset = offsetof(bcmolt_ae_path_us_stat_alarm_cleared_data, stat), .type = &type_descr_bcmolt_ae_path_us_stat_id } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_ae_path_us_stat_alarm_cleared_data = { .name = "bcmolt_ae_path_us_stat_alarm_cleared_data", .descr = "Sent when a configured statistic alarm condition is no longer met.", .size = sizeof(bcmolt_ae_path_us_stat_alarm_cleared_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_ae_path_us_stat_alarm_cleared_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_ae_path_us_stat_alarm_cleared_data_fields } } };

/* Group: ae_path_us - auto_cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_path_us_auto_cfg_stat_alarm_cleared = { .name = "stat_alarm_cleared", .descr = "If true, indications of type \"stat_alarm_cleared\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_AE_PATH_US_AUTO_CFG_ID_STAT_ALARM_CLEARED, .offset = offsetof(bcmolt_ae_path_us_auto_cfg_data, stat_alarm_cleared), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_ae_path_us_auto_cfg_stat_alarm_raised = { .name = "stat_alarm_raised", .descr = "If true, indications of type \"stat_alarm_raised\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_AE_PATH_US_AUTO_CFG_ID_STAT_ALARM_RAISED, .offset = offsetof(bcmolt_ae_path_us_auto_cfg_data, stat_alarm_raised), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr * BCM_DESCR ae_path_us_auto_cfg_prop_array[] = { &prop_descr_ae_path_us_auto_cfg_stat_alarm_cleared, &prop_descr_ae_path_us_auto_cfg_stat_alarm_raised };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_ae_path_us_auto_cfg_data_fields[] = { { .name = "stat_alarm_cleared", .descr = "If true, indications of type \"stat_alarm_cleared\" will be generated.", .offset = offsetof(bcmolt_ae_path_us_auto_cfg_data, stat_alarm_cleared), .type = &type_descr_bcmos_bool }, { .name = "stat_alarm_raised", .descr = "If true, indications of type \"stat_alarm_raised\" will be generated.", .offset = offsetof(bcmolt_ae_path_us_auto_cfg_data, stat_alarm_raised), .type = &type_descr_bcmos_bool } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_ae_path_us_auto_cfg_data = { .name = "bcmolt_ae_path_us_auto_cfg_data", .descr = "Indication Configuration", .size = sizeof(bcmolt_ae_path_us_auto_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_ae_path_us_auto_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_ae_path_us_auto_cfg_data_fields } } };

/* ==== Object: channel ==== */

/* Group: channel - key */
static bcmcli_prop_descr BCM_DESCR prop_descr_channel_key_pon_ni = { .name = "pon_ni", .descr = "PON network interface", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_CHANNEL_KEY_ID_PON_NI, .offset = offsetof(bcmolt_channel_key, pon_ni), .type = &type_descr_uint8_t };
static bcmcli_prop_descr * BCM_DESCR channel_key_prop_array[] = { &prop_descr_channel_key_pon_ni };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_channel_key_fields[] = { { .name = "pon_ni", .descr = "PON network interface", .offset = offsetof(bcmolt_channel_key, pon_ni), .type = &type_descr_uint8_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_channel_key = { .name = "bcmolt_channel_key", .descr = "key", .size = sizeof(bcmolt_channel_key), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_channel_key_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_channel_key_fields } } };

/* Group: channel - cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_channel_cfg_operation_control = { .name = "operation_control", .descr = "Operation control", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_CHANNEL_CFG_ID_OPERATION_CONTROL, .offset = offsetof(bcmolt_channel_cfg_data, operation_control), .type = &type_descr_bcmolt_operation_control };
static bcmcli_prop_descr BCM_DESCR prop_descr_channel_cfg_tol = { .name = "tol", .descr = "Transmit Optical Level. An indication of the current OLT CT transceiver channel launch power into the ODN", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_CHANNEL_CFG_ID_TOL, .offset = offsetof(bcmolt_channel_cfg_data, tol), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_channel_cfg_system_profile = { .name = "system_profile", .descr = "System profile", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_CHANNEL_CFG_ID_SYSTEM_PROFILE, .offset = offsetof(bcmolt_channel_cfg_data, system_profile), .type = &type_descr_bcmolt_system_profile };
static bcmcli_prop_descr BCM_DESCR prop_descr_channel_cfg_channel_profile = { .name = "channel_profile", .descr = "Channel profile", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_CHANNEL_CFG_ID_CHANNEL_PROFILE, .offset = offsetof(bcmolt_channel_cfg_data, channel_profile), .type = &type_descr_bcmolt_arr_channel_profile_8 };
static bcmcli_prop_descr * BCM_DESCR channel_cfg_prop_array[] = { &prop_descr_channel_cfg_operation_control, &prop_descr_channel_cfg_tol, &prop_descr_channel_cfg_system_profile, &prop_descr_channel_cfg_channel_profile };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_channel_cfg_data_fields[] = { { .name = "operation_control", .descr = "Operation control", .offset = offsetof(bcmolt_channel_cfg_data, operation_control), .type = &type_descr_bcmolt_operation_control }, { .name = "tol", .descr = "Transmit Optical Level. An indication of the current OLT CT transceiver channel launch power into the ODN", .offset = offsetof(bcmolt_channel_cfg_data, tol), .type = &type_descr_uint16_t }, { .name = "system_profile", .descr = "System profile", .offset = offsetof(bcmolt_channel_cfg_data, system_profile), .type = &type_descr_bcmolt_system_profile }, { .name = "channel_profile", .descr = "Channel profile", .offset = offsetof(bcmolt_channel_cfg_data, channel_profile), .type = &type_descr_bcmolt_arr_channel_profile_8 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_channel_cfg_data = { .name = "bcmolt_channel_cfg_data", .descr = "cfg", .size = sizeof(bcmolt_channel_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_channel_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_channel_cfg_data_fields } } };

/* ==== Object: debug ==== */

/* Group: debug - key */
static bcmcli_prop_descr BCM_DESCR prop_descr_debug_key_reserved = { .name = "reserved", .descr = "Reserved (set to 0)", .access = 0, .property = BCMOLT_DEBUG_KEY_ID_RESERVED, .offset = offsetof(bcmolt_debug_key, reserved), .type = &type_descr_uint32_t };
static bcmcli_prop_descr * BCM_DESCR debug_key_prop_array[] = { &prop_descr_debug_key_reserved };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_debug_key_fields[] = { { .name = "reserved", .descr = "Reserved (set to 0)", .offset = offsetof(bcmolt_debug_key, reserved), .type = &type_descr_uint32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_debug_key = { .name = "bcmolt_debug_key", .descr = "key", .size = sizeof(bcmolt_debug_key), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_debug_key_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_debug_key_fields } } };

/* Group: debug - cli_input */
static bcmcli_prop_descr BCM_DESCR prop_descr_debug_cli_input_data = { .name = "data", .descr = "Input String", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEBUG_CLI_INPUT_ID_DATA, .offset = offsetof(bcmolt_debug_cli_input_data, data), .type = &type_descr_bcmolt_u8_list_u32 };
static bcmcli_prop_descr * BCM_DESCR debug_cli_input_prop_array[] = { &prop_descr_debug_cli_input_data };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_debug_cli_input_data_fields[] = { { .name = "data", .descr = "Input String", .offset = offsetof(bcmolt_debug_cli_input_data, data), .type = &type_descr_bcmolt_u8_list_u32 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_debug_cli_input_data = { .name = "bcmolt_debug_cli_input_data", .descr = "CLI Input String", .size = sizeof(bcmolt_debug_cli_input_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_debug_cli_input_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_debug_cli_input_data_fields } } };

/* Group: debug - cli_output */
static bcmcli_prop_descr BCM_DESCR prop_descr_debug_cli_output_data = { .name = "data", .descr = "output data", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEBUG_CLI_OUTPUT_ID_DATA, .offset = offsetof(bcmolt_debug_cli_output_data, data), .type = &type_descr_bcmolt_u8_list_u32 };
static bcmcli_prop_descr * BCM_DESCR debug_cli_output_prop_array[] = { &prop_descr_debug_cli_output_data };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_debug_cli_output_data_fields[] = { { .name = "data", .descr = "output data", .offset = offsetof(bcmolt_debug_cli_output_data, data), .type = &type_descr_bcmolt_u8_list_u32 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_debug_cli_output_data = { .name = "bcmolt_debug_cli_output_data", .descr = "CLI Output String", .size = sizeof(bcmolt_debug_cli_output_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_debug_cli_output_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_debug_cli_output_data_fields } } };

/* Group: debug - cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_debug_cfg_console_redirection = { .name = "console_redirection", .descr = "Log output redirection", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEBUG_CFG_ID_CONSOLE_REDIRECTION, .offset = offsetof(bcmolt_debug_cfg_data, console_redirection), .type = &type_descr_bcmolt_console_redirection };
static bcmcli_prop_descr BCM_DESCR prop_descr_debug_cfg_indications_dropped = { .name = "indications_dropped", .descr = "Number of indications dropped due to congestion / shaping.", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_DEBUG_CFG_ID_INDICATIONS_DROPPED, .offset = offsetof(bcmolt_debug_cfg_data, indications_dropped), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_debug_cfg_file_used_percent = { .name = "file_used_percent", .descr = "DDR log file used percent", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_DEBUG_CFG_ID_FILE_USED_PERCENT, .offset = offsetof(bcmolt_debug_cfg_data, file_used_percent), .type = &type_descr_uint8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_debug_cfg_api_capture_cfg = { .name = "api_capture_cfg", .descr = "Configuration for API capture.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEBUG_CFG_ID_API_CAPTURE_CFG, .offset = offsetof(bcmolt_debug_cfg_data, api_capture_cfg), .type = &type_descr_bcmolt_api_capture_config };
static bcmcli_prop_descr BCM_DESCR prop_descr_debug_cfg_api_capture_stats = { .name = "api_capture_stats", .descr = "Statistics on the most recent API capture.", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_DEBUG_CFG_ID_API_CAPTURE_STATS, .offset = offsetof(bcmolt_debug_cfg_data, api_capture_stats), .type = &type_descr_bcmolt_api_capture_stats };
static bcmcli_prop_descr BCM_DESCR prop_descr_debug_cfg_api_capture_buffer_read = { .name = "api_capture_buffer_read", .descr = "Controls what portion of the capture buffer is returned when performing a cfg_get.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEBUG_CFG_ID_API_CAPTURE_BUFFER_READ, .offset = offsetof(bcmolt_debug_cfg_data, api_capture_buffer_read), .type = &type_descr_bcmolt_api_capture_buffer_reader };
static bcmcli_prop_descr BCM_DESCR prop_descr_debug_cfg_api_capture_buffer = { .name = "api_capture_buffer", .descr = "The portion of the capture buffer currently specified by api_capture_buffer_read.", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_DEBUG_CFG_ID_API_CAPTURE_BUFFER, .offset = offsetof(bcmolt_debug_cfg_data, api_capture_buffer), .type = &type_descr_bcmolt_u8_list_u32 };
static bcmcli_prop_descr * BCM_DESCR debug_cfg_prop_array[] = { &prop_descr_debug_cfg_console_redirection, &prop_descr_debug_cfg_indications_dropped, &prop_descr_debug_cfg_file_used_percent, &prop_descr_debug_cfg_api_capture_cfg, &prop_descr_debug_cfg_api_capture_stats, &prop_descr_debug_cfg_api_capture_buffer_read, &prop_descr_debug_cfg_api_capture_buffer };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_debug_cfg_data_fields[] = { { .name = "console_redirection", .descr = "Log output redirection", .offset = offsetof(bcmolt_debug_cfg_data, console_redirection), .type = &type_descr_bcmolt_console_redirection }, { .name = "indications_dropped", .descr = "Number of indications dropped due to congestion / shaping.", .offset = offsetof(bcmolt_debug_cfg_data, indications_dropped), .type = &type_descr_uint32_t }, { .name = "file_used_percent", .descr = "DDR log file used percent", .offset = offsetof(bcmolt_debug_cfg_data, file_used_percent), .type = &type_descr_uint8_t }, { .name = "api_capture_cfg", .descr = "Configuration for API capture.", .offset = offsetof(bcmolt_debug_cfg_data, api_capture_cfg), .type = &type_descr_bcmolt_api_capture_config }, { .name = "api_capture_stats", .descr = "Statistics on the most recent API capture.", .offset = offsetof(bcmolt_debug_cfg_data, api_capture_stats), .type = &type_descr_bcmolt_api_capture_stats }, { .name = "api_capture_buffer_read", .descr = "Controls what portion of the capture buffer is returned when performing a cfg_get.", .offset = offsetof(bcmolt_debug_cfg_data, api_capture_buffer_read), .type = &type_descr_bcmolt_api_capture_buffer_reader }, { .name = "api_capture_buffer", .descr = "The portion of the capture buffer currently specified by api_capture_buffer_read.", .offset = offsetof(bcmolt_debug_cfg_data, api_capture_buffer), .type = &type_descr_bcmolt_u8_list_u32 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_debug_cfg_data = { .name = "bcmolt_debug_cfg_data", .descr = "cfg", .size = sizeof(bcmolt_debug_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_debug_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_debug_cfg_data_fields } } };

/* Group: debug - file_almost_full */
static bcmcli_prop_descr * BCM_DESCR debug_file_almost_full_prop_array[] = { };

/* Group: debug - start_api_capture */
static bcmcli_prop_descr * BCM_DESCR debug_start_api_capture_prop_array[] = { };

/* Group: debug - stop_api_capture */
static bcmcli_prop_descr * BCM_DESCR debug_stop_api_capture_prop_array[] = { };

/* Group: debug - reset_api_capture */
static bcmcli_prop_descr * BCM_DESCR debug_reset_api_capture_prop_array[] = { };

/* Group: debug - auto_cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_debug_auto_cfg_cli_output = { .name = "cli_output", .descr = "If true, indications of type \"cli_output\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEBUG_AUTO_CFG_ID_CLI_OUTPUT, .offset = offsetof(bcmolt_debug_auto_cfg_data, cli_output), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_debug_auto_cfg_file_almost_full = { .name = "file_almost_full", .descr = "If true, indications of type \"file_almost_full\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEBUG_AUTO_CFG_ID_FILE_ALMOST_FULL, .offset = offsetof(bcmolt_debug_auto_cfg_data, file_almost_full), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr * BCM_DESCR debug_auto_cfg_prop_array[] = { &prop_descr_debug_auto_cfg_cli_output, &prop_descr_debug_auto_cfg_file_almost_full };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_debug_auto_cfg_data_fields[] = { { .name = "cli_output", .descr = "If true, indications of type \"cli_output\" will be generated.", .offset = offsetof(bcmolt_debug_auto_cfg_data, cli_output), .type = &type_descr_bcmos_bool }, { .name = "file_almost_full", .descr = "If true, indications of type \"file_almost_full\" will be generated.", .offset = offsetof(bcmolt_debug_auto_cfg_data, file_almost_full), .type = &type_descr_bcmos_bool } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_debug_auto_cfg_data = { .name = "bcmolt_debug_auto_cfg_data", .descr = "Indication Configuration", .size = sizeof(bcmolt_debug_auto_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_debug_auto_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_debug_auto_cfg_data_fields } } };

/* ==== Object: device ==== */

/* Group: device - cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_device_cfg_system_mode = { .name = "system_mode", .descr = "System mode - this must be set by the host when initially provisioning the system.  Setting this also sets the \"nni_speed\" property, unless it is overridden.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_CFG_ID_SYSTEM_MODE, .offset = offsetof(bcmolt_device_cfg_data, system_mode), .type = &type_descr_bcmolt_system_mode };
static bcmcli_prop_descr BCM_DESCR prop_descr_device_cfg_keepalive_interval = { .name = "keepalive_interval", .descr = "Keepalive Interval in Seconds  (0 = Disable)", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_CFG_ID_KEEPALIVE_INTERVAL, .offset = offsetof(bcmolt_device_cfg_data, keepalive_interval), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_device_cfg_keepalive_tolerance = { .name = "keepalive_tolerance", .descr = "How many keepalive messages can be lost before triggering a disconnect sequence ", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_CFG_ID_KEEPALIVE_TOLERANCE, .offset = offsetof(bcmolt_device_cfg_data, keepalive_tolerance), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_device_cfg_firmware_sw_version = { .name = "firmware_sw_version", .descr = "Firmware SW Version", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_DEVICE_CFG_ID_FIRMWARE_SW_VERSION, .offset = offsetof(bcmolt_device_cfg_data, firmware_sw_version), .type = &type_descr_bcmolt_firmware_sw_version };
static bcmcli_prop_descr BCM_DESCR prop_descr_device_cfg_host_sw_version = { .name = "host_sw_version", .descr = "Host SW Version", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_DEVICE_CFG_ID_HOST_SW_VERSION, .offset = offsetof(bcmolt_device_cfg_data, host_sw_version), .type = &type_descr_bcmolt_host_sw_version };
static bcmcli_prop_descr BCM_DESCR prop_descr_device_cfg_chip_revision = { .name = "chip_revision", .descr = "Revision of the BCM68620 device.", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_DEVICE_CFG_ID_CHIP_REVISION, .offset = offsetof(bcmolt_device_cfg_data, chip_revision), .type = &type_descr_bcmolt_device_chip_revision };
static bcmcli_prop_descr BCM_DESCR prop_descr_device_cfg_state = { .name = "state", .descr = "Device state", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_DEVICE_CFG_ID_STATE, .offset = offsetof(bcmolt_device_cfg_data, state), .type = &type_descr_bcmolt_device_state };
static bcmcli_prop_descr BCM_DESCR prop_descr_device_cfg_debug = { .name = "debug", .descr = "Device configuration debug parameters", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_CFG_ID_DEBUG, .offset = offsetof(bcmolt_device_cfg_data, debug), .type = &type_descr_bcmolt_debug_device_cfg };
static bcmcli_prop_descr BCM_DESCR prop_descr_device_cfg_nni_speed = { .name = "nni_speed", .descr = "Speed of the NNI interface.  This is calculated automatically when the \"system_mode\" property is set, but can be overridden by the host.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_CFG_ID_NNI_SPEED, .offset = offsetof(bcmolt_device_cfg_data, nni_speed), .type = &type_descr_bcmolt_device_nni_speed };
static bcmcli_prop_descr BCM_DESCR prop_descr_device_cfg_protection_switching_ext_irq = { .name = "protection_switching_ext_irq", .descr = "The selected external IRQ for protection switching", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_CFG_ID_PROTECTION_SWITCHING_EXT_IRQ, .offset = offsetof(bcmolt_device_cfg_data, protection_switching_ext_irq), .type = &type_descr_bcmolt_ext_irq };
static bcmcli_prop_descr BCM_DESCR prop_descr_device_cfg_epon_clock_transport_sample_delay = { .name = "epon_clock_transport_sample_delay", .descr = "The time (in TQ) that it takes from when a pulse is generated at the external source to when we sample it.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_CFG_ID_EPON_CLOCK_TRANSPORT_SAMPLE_DELAY, .offset = offsetof(bcmolt_device_cfg_data, epon_clock_transport_sample_delay), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_device_cfg_indication_shaping = { .name = "indication_shaping", .descr = "Shaping / rate limiting for the indication channel.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_CFG_ID_INDICATION_SHAPING, .offset = offsetof(bcmolt_device_cfg_data, indication_shaping), .type = &type_descr_bcmolt_indication_shaping };
static bcmcli_prop_descr BCM_DESCR prop_descr_device_cfg_chip_temperature = { .name = "chip_temperature", .descr = "Current die temperature.", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_DEVICE_CFG_ID_CHIP_TEMPERATURE, .offset = offsetof(bcmolt_device_cfg_data, chip_temperature), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_device_cfg_gpon_xgpon_tod_enable = { .name = "gpon_xgpon_tod_enable", .descr = "GPON/XGPON ToD control state", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_CFG_ID_GPON_XGPON_TOD_ENABLE, .offset = offsetof(bcmolt_device_cfg_data, gpon_xgpon_tod_enable), .type = &type_descr_bcmolt_control_state };
static bcmcli_prop_descr BCM_DESCR prop_descr_device_cfg_gpon_xgpon_tod_gpio_pin = { .name = "gpon_xgpon_tod_gpio_pin", .descr = "GPON/XGPON ToD GIO pin", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_CFG_ID_GPON_XGPON_TOD_GPIO_PIN, .offset = offsetof(bcmolt_device_cfg_data, gpon_xgpon_tod_gpio_pin), .type = &type_descr_bcmolt_gpio_pin };
static bcmcli_prop_descr BCM_DESCR prop_descr_device_cfg_gpon_xgpon_tod_connected_internally = { .name = "gpon_xgpon_tod_connected_internally", .descr = "GPON/XGPON is ToD internally", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_CFG_ID_GPON_XGPON_TOD_CONNECTED_INTERNALLY, .offset = offsetof(bcmolt_device_cfg_data, gpon_xgpon_tod_connected_internally), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_device_cfg_epon_8021_as_tod_format = { .name = "epon_8021_as_tod_format", .descr = "EPON 802.1AS ToD Format", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_CFG_ID_EPON_8021_AS_TOD_FORMAT, .offset = offsetof(bcmolt_device_cfg_data, epon_8021_as_tod_format), .type = &type_descr_bcmolt_str_256 };
static bcmcli_prop_descr BCM_DESCR prop_descr_device_cfg_epon_shaper_mode = { .name = "epon_shaper_mode", .descr = "Controls EPON shaper behavior.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_CFG_ID_EPON_SHAPER_MODE, .offset = offsetof(bcmolt_device_cfg_data, epon_shaper_mode), .type = &type_descr_bcmolt_shaper_mode };
static bcmcli_prop_descr BCM_DESCR prop_descr_device_cfg_embedded_image_list = { .name = "embedded_image_list", .descr = "List of all file images stored in the OLT.", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_DEVICE_CFG_ID_EMBEDDED_IMAGE_LIST, .offset = offsetof(bcmolt_device_cfg_data, embedded_image_list), .type = &type_descr_bcmolt_embedded_image_entry_list_u8 };
static bcmcli_prop_descr BCM_DESCR prop_descr_device_cfg_chip_voltage = { .name = "chip_voltage", .descr = "Chip voltage in mV", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_DEVICE_CFG_ID_CHIP_VOLTAGE, .offset = offsetof(bcmolt_device_cfg_data, chip_voltage), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_device_cfg_epon_tod_string = { .name = "epon_tod_string", .descr = "EPON ToD String", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_CFG_ID_EPON_TOD_STRING, .offset = offsetof(bcmolt_device_cfg_data, epon_tod_string), .type = &type_descr_bcmolt_str_256 };
static bcmcli_prop_descr BCM_DESCR prop_descr_device_cfg_xgpon_num_of_onus = { .name = "xgpon_num_of_onus", .descr = "xgpon num of onus", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_CFG_ID_XGPON_NUM_OF_ONUS, .offset = offsetof(bcmolt_device_cfg_data, xgpon_num_of_onus), .type = &type_descr_bcmolt_xgpon_num_of_onus };
static bcmcli_prop_descr BCM_DESCR prop_descr_device_cfg_device_ip_address = { .name = "device_ip_address", .descr = "The IP Address of the device", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_CFG_ID_DEVICE_IP_ADDRESS, .offset = offsetof(bcmolt_device_cfg_data, device_ip_address), .type = &type_descr_bcmos_ipv4_address };
static bcmcli_prop_descr BCM_DESCR prop_descr_device_cfg_device_udp_port = { .name = "device_udp_port", .descr = "The UDP port of the Device", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_CFG_ID_DEVICE_UDP_PORT, .offset = offsetof(bcmolt_device_cfg_data, device_udp_port), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_device_cfg_tod_uart_baudrate = { .name = "tod_uart_baudrate", .descr = "UART baud rate", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_CFG_ID_TOD_UART_BAUDRATE, .offset = offsetof(bcmolt_device_cfg_data, tod_uart_baudrate), .type = &type_descr_bcmolt_uart_baudrate };
static bcmcli_prop_descr BCM_DESCR prop_descr_device_cfg_gpon_xgpon_tod_string_length = { .name = "gpon_xgpon_tod_string_length", .descr = "GPON/XGPON ToD string length", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_CFG_ID_GPON_XGPON_TOD_STRING_LENGTH, .offset = offsetof(bcmolt_device_cfg_data, gpon_xgpon_tod_string_length), .type = &type_descr_uint8_t };
static bcmcli_prop_descr * BCM_DESCR device_cfg_prop_array[] = { &prop_descr_device_cfg_system_mode, &prop_descr_device_cfg_keepalive_interval, &prop_descr_device_cfg_keepalive_tolerance, &prop_descr_device_cfg_firmware_sw_version, &prop_descr_device_cfg_host_sw_version, &prop_descr_device_cfg_chip_revision, &prop_descr_device_cfg_state, &prop_descr_device_cfg_debug, &prop_descr_device_cfg_nni_speed, &prop_descr_device_cfg_protection_switching_ext_irq, &prop_descr_device_cfg_epon_clock_transport_sample_delay, &prop_descr_device_cfg_indication_shaping, &prop_descr_device_cfg_chip_temperature, &prop_descr_device_cfg_gpon_xgpon_tod_enable, &prop_descr_device_cfg_gpon_xgpon_tod_gpio_pin, &prop_descr_device_cfg_gpon_xgpon_tod_connected_internally, &prop_descr_device_cfg_epon_8021_as_tod_format, &prop_descr_device_cfg_epon_shaper_mode, &prop_descr_device_cfg_embedded_image_list, &prop_descr_device_cfg_chip_voltage, &prop_descr_device_cfg_epon_tod_string, &prop_descr_device_cfg_xgpon_num_of_onus, &prop_descr_device_cfg_device_ip_address, &prop_descr_device_cfg_device_udp_port, &prop_descr_device_cfg_tod_uart_baudrate, &prop_descr_device_cfg_gpon_xgpon_tod_string_length };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_device_cfg_data_fields[] = { { .name = "system_mode", .descr = "System mode - this must be set by the host when initially provisioning the system.  Setting this also sets the \"nni_speed\" property, unless it is overridden.", .offset = offsetof(bcmolt_device_cfg_data, system_mode), .type = &type_descr_bcmolt_system_mode }, { .name = "keepalive_interval", .descr = "Keepalive Interval in Seconds  (0 = Disable)", .offset = offsetof(bcmolt_device_cfg_data, keepalive_interval), .type = &type_descr_uint32_t }, { .name = "keepalive_tolerance", .descr = "How many keepalive messages can be lost before triggering a disconnect sequence ", .offset = offsetof(bcmolt_device_cfg_data, keepalive_tolerance), .type = &type_descr_uint32_t }, { .name = "firmware_sw_version", .descr = "Firmware SW Version", .offset = offsetof(bcmolt_device_cfg_data, firmware_sw_version), .type = &type_descr_bcmolt_firmware_sw_version }, { .name = "host_sw_version", .descr = "Host SW Version", .offset = offsetof(bcmolt_device_cfg_data, host_sw_version), .type = &type_descr_bcmolt_host_sw_version }, { .name = "chip_revision", .descr = "Revision of the BCM68620 device.", .offset = offsetof(bcmolt_device_cfg_data, chip_revision), .type = &type_descr_bcmolt_device_chip_revision }, { .name = "state", .descr = "Device state", .offset = offsetof(bcmolt_device_cfg_data, state), .type = &type_descr_bcmolt_device_state }, { .name = "debug", .descr = "Device configuration debug parameters", .offset = offsetof(bcmolt_device_cfg_data, debug), .type = &type_descr_bcmolt_debug_device_cfg }, { .name = "nni_speed", .descr = "Speed of the NNI interface.  This is calculated automatically when the \"system_mode\" property is set, but can be overridden by the host.", .offset = offsetof(bcmolt_device_cfg_data, nni_speed), .type = &type_descr_bcmolt_device_nni_speed }, { .name = "protection_switching_ext_irq", .descr = "The selected external IRQ for protection switching", .offset = offsetof(bcmolt_device_cfg_data, protection_switching_ext_irq), .type = &type_descr_bcmolt_ext_irq }, { .name = "epon_clock_transport_sample_delay", .descr = "The time (in TQ) that it takes from when a pulse is generated at the external source to when we sample it.", .offset = offsetof(bcmolt_device_cfg_data, epon_clock_transport_sample_delay), .type = &type_descr_uint32_t }, { .name = "indication_shaping", .descr = "Shaping / rate limiting for the indication channel.", .offset = offsetof(bcmolt_device_cfg_data, indication_shaping), .type = &type_descr_bcmolt_indication_shaping }, { .name = "chip_temperature", .descr = "Current die temperature.", .offset = offsetof(bcmolt_device_cfg_data, chip_temperature), .type = &type_descr_uint32_t }, { .name = "gpon_xgpon_tod_enable", .descr = "GPON/XGPON ToD control state", .offset = offsetof(bcmolt_device_cfg_data, gpon_xgpon_tod_enable), .type = &type_descr_bcmolt_control_state }, { .name = "gpon_xgpon_tod_gpio_pin", .descr = "GPON/XGPON ToD GIO pin", .offset = offsetof(bcmolt_device_cfg_data, gpon_xgpon_tod_gpio_pin), .type = &type_descr_bcmolt_gpio_pin }, { .name = "gpon_xgpon_tod_connected_internally", .descr = "GPON/XGPON is ToD internally", .offset = offsetof(bcmolt_device_cfg_data, gpon_xgpon_tod_connected_internally), .type = &type_descr_bcmos_bool }, { .name = "epon_8021_as_tod_format", .descr = "EPON 802.1AS ToD Format", .offset = offsetof(bcmolt_device_cfg_data, epon_8021_as_tod_format), .type = &type_descr_bcmolt_str_256 }, { .name = "epon_shaper_mode", .descr = "Controls EPON shaper behavior.", .offset = offsetof(bcmolt_device_cfg_data, epon_shaper_mode), .type = &type_descr_bcmolt_shaper_mode }, { .name = "embedded_image_list", .descr = "List of all file images stored in the OLT.", .offset = offsetof(bcmolt_device_cfg_data, embedded_image_list), .type = &type_descr_bcmolt_embedded_image_entry_list_u8 }, { .name = "chip_voltage", .descr = "Chip voltage in mV", .offset = offsetof(bcmolt_device_cfg_data, chip_voltage), .type = &type_descr_uint32_t }, { .name = "epon_tod_string", .descr = "EPON ToD String", .offset = offsetof(bcmolt_device_cfg_data, epon_tod_string), .type = &type_descr_bcmolt_str_256 }, { .name = "xgpon_num_of_onus", .descr = "xgpon num of onus", .offset = offsetof(bcmolt_device_cfg_data, xgpon_num_of_onus), .type = &type_descr_bcmolt_xgpon_num_of_onus }, { .name = "device_ip_address", .descr = "The IP Address of the device", .offset = offsetof(bcmolt_device_cfg_data, device_ip_address), .type = &type_descr_bcmos_ipv4_address }, { .name = "device_udp_port", .descr = "The UDP port of the Device", .offset = offsetof(bcmolt_device_cfg_data, device_udp_port), .type = &type_descr_uint16_t }, { .name = "tod_uart_baudrate", .descr = "UART baud rate", .offset = offsetof(bcmolt_device_cfg_data, tod_uart_baudrate), .type = &type_descr_bcmolt_uart_baudrate }, { .name = "gpon_xgpon_tod_string_length", .descr = "GPON/XGPON ToD string length", .offset = offsetof(bcmolt_device_cfg_data, gpon_xgpon_tod_string_length), .type = &type_descr_uint8_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_device_cfg_data = { .name = "bcmolt_device_cfg_data", .descr = "cfg", .size = sizeof(bcmolt_device_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_device_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_device_cfg_data_fields } } };

/* Group: device - key */
static bcmcli_prop_descr BCM_DESCR prop_descr_device_key_reserved = { .name = "reserved", .descr = "Reserved (set to 0).", .access = 0, .property = BCMOLT_DEVICE_KEY_ID_RESERVED, .offset = offsetof(bcmolt_device_key, reserved), .type = &type_descr_uint32_t };
static bcmcli_prop_descr * BCM_DESCR device_key_prop_array[] = { &prop_descr_device_key_reserved };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_device_key_fields[] = { { .name = "reserved", .descr = "Reserved (set to 0).", .offset = offsetof(bcmolt_device_key, reserved), .type = &type_descr_uint32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_device_key = { .name = "bcmolt_device_key", .descr = "key", .size = sizeof(bcmolt_device_key), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_device_key_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_device_key_fields } } };

/* Group: device - connect */
static bcmcli_prop_descr * BCM_DESCR device_connect_prop_array[] = { };

/* Group: device - disconnect */
static bcmcli_prop_descr * BCM_DESCR device_disconnect_prop_array[] = { };

/* Group: device - reset */
static bcmcli_prop_descr BCM_DESCR prop_descr_device_reset_mode = { .name = "mode", .descr = "Options to control what should be reset.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_RESET_ID_MODE, .offset = offsetof(bcmolt_device_reset_data, mode), .type = &type_descr_bcmolt_device_reset_mode };
static bcmcli_prop_descr * BCM_DESCR device_reset_prop_array[] = { &prop_descr_device_reset_mode };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_device_reset_data_fields[] = { { .name = "mode", .descr = "Options to control what should be reset.", .offset = offsetof(bcmolt_device_reset_data, mode), .type = &type_descr_bcmolt_device_reset_mode } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_device_reset_data = { .name = "bcmolt_device_reset_data", .descr = "Resets the host/device.", .size = sizeof(bcmolt_device_reset_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_device_reset_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_device_reset_data_fields } } };

/* Group: device - host_keep_alive */
static bcmcli_prop_descr BCM_DESCR prop_descr_device_host_keep_alive_sequence_number = { .name = "sequence_number", .descr = "sequence number", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_HOST_KEEP_ALIVE_ID_SEQUENCE_NUMBER, .offset = offsetof(bcmolt_device_host_keep_alive_data, sequence_number), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_device_host_keep_alive_time_stamp = { .name = "time_stamp", .descr = "time stamp", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_HOST_KEEP_ALIVE_ID_TIME_STAMP, .offset = offsetof(bcmolt_device_host_keep_alive_data, time_stamp), .type = &type_descr_uint32_t };
static bcmcli_prop_descr * BCM_DESCR device_host_keep_alive_prop_array[] = { &prop_descr_device_host_keep_alive_sequence_number, &prop_descr_device_host_keep_alive_time_stamp };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_device_host_keep_alive_data_fields[] = { { .name = "sequence_number", .descr = "sequence number", .offset = offsetof(bcmolt_device_host_keep_alive_data, sequence_number), .type = &type_descr_uint32_t }, { .name = "time_stamp", .descr = "time stamp", .offset = offsetof(bcmolt_device_host_keep_alive_data, time_stamp), .type = &type_descr_uint32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_device_host_keep_alive_data = { .name = "bcmolt_device_host_keep_alive_data", .descr = "Keep alive message from the host to the device - used by the device control library (should not be sent by the host application).", .size = sizeof(bcmolt_device_host_keep_alive_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_device_host_keep_alive_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_device_host_keep_alive_data_fields } } };

/* Group: device - sw_upgrade_activate */
static bcmcli_prop_descr * BCM_DESCR device_sw_upgrade_activate_prop_array[] = { };

/* Group: device - device_ready */
static bcmcli_prop_descr BCM_DESCR prop_descr_device_device_ready_firmware_sw_version = { .name = "firmware_sw_version", .descr = "Software Version", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_DEVICE_READY_ID_FIRMWARE_SW_VERSION, .offset = offsetof(bcmolt_device_device_ready_data, firmware_sw_version), .type = &type_descr_bcmolt_firmware_sw_version };
static bcmcli_prop_descr BCM_DESCR prop_descr_device_device_ready_system_mode = { .name = "system_mode", .descr = "System Mode", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_DEVICE_READY_ID_SYSTEM_MODE, .offset = offsetof(bcmolt_device_device_ready_data, system_mode), .type = &type_descr_bcmolt_system_mode };
static bcmcli_prop_descr BCM_DESCR prop_descr_device_device_ready_nni_speed = { .name = "nni_speed", .descr = "NNI Speed", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_DEVICE_READY_ID_NNI_SPEED, .offset = offsetof(bcmolt_device_device_ready_data, nni_speed), .type = &type_descr_bcmolt_device_nni_speed };
static bcmcli_prop_descr BCM_DESCR prop_descr_device_device_ready_chip_revision = { .name = "chip_revision", .descr = "Chip Revision", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_DEVICE_READY_ID_CHIP_REVISION, .offset = offsetof(bcmolt_device_device_ready_data, chip_revision), .type = &type_descr_bcmolt_device_chip_revision };
static bcmcli_prop_descr BCM_DESCR prop_descr_device_device_ready_tod_enable = { .name = "tod_enable", .descr = "ToD control", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_DEVICE_READY_ID_TOD_ENABLE, .offset = offsetof(bcmolt_device_device_ready_data, tod_enable), .type = &type_descr_bcmolt_control_state };
static bcmcli_prop_descr BCM_DESCR prop_descr_device_device_ready_tod_gpio_pin = { .name = "tod_gpio_pin", .descr = "GPIO pin is used when ToD UART is not connected to the embedded, and TOD value is obtained by the host", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_DEVICE_READY_ID_TOD_GPIO_PIN, .offset = offsetof(bcmolt_device_device_ready_data, tod_gpio_pin), .type = &type_descr_bcmolt_gpio_pin };
static bcmcli_prop_descr * BCM_DESCR device_device_ready_prop_array[] = { &prop_descr_device_device_ready_firmware_sw_version, &prop_descr_device_device_ready_system_mode, &prop_descr_device_device_ready_nni_speed, &prop_descr_device_device_ready_chip_revision, &prop_descr_device_device_ready_tod_enable, &prop_descr_device_device_ready_tod_gpio_pin };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_device_device_ready_data_fields[] = { { .name = "firmware_sw_version", .descr = "Software Version", .offset = offsetof(bcmolt_device_device_ready_data, firmware_sw_version), .type = &type_descr_bcmolt_firmware_sw_version }, { .name = "system_mode", .descr = "System Mode", .offset = offsetof(bcmolt_device_device_ready_data, system_mode), .type = &type_descr_bcmolt_system_mode }, { .name = "nni_speed", .descr = "NNI Speed", .offset = offsetof(bcmolt_device_device_ready_data, nni_speed), .type = &type_descr_bcmolt_device_nni_speed }, { .name = "chip_revision", .descr = "Chip Revision", .offset = offsetof(bcmolt_device_device_ready_data, chip_revision), .type = &type_descr_bcmolt_device_chip_revision }, { .name = "tod_enable", .descr = "ToD control", .offset = offsetof(bcmolt_device_device_ready_data, tod_enable), .type = &type_descr_bcmolt_control_state }, { .name = "tod_gpio_pin", .descr = "GPIO pin is used when ToD UART is not connected to the embedded, and TOD value is obtained by the host", .offset = offsetof(bcmolt_device_device_ready_data, tod_gpio_pin), .type = &type_descr_bcmolt_gpio_pin } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_device_device_ready_data = { .name = "bcmolt_device_device_ready_data", .descr = "Device ready indication used by the device control library (not sent to the host application).", .size = sizeof(bcmolt_device_device_ready_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_device_device_ready_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_device_device_ready_data_fields } } };

/* Group: device - connection_established */
static bcmcli_prop_descr * BCM_DESCR device_connection_established_prop_array[] = { };

/* Group: device - device_keep_alive */
static bcmcli_prop_descr BCM_DESCR prop_descr_device_device_keep_alive_sequence_number = { .name = "sequence_number", .descr = "sequence number", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_DEVICE_KEEP_ALIVE_ID_SEQUENCE_NUMBER, .offset = offsetof(bcmolt_device_device_keep_alive_data, sequence_number), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_device_device_keep_alive_time_stamp = { .name = "time_stamp", .descr = "time stamp", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_DEVICE_KEEP_ALIVE_ID_TIME_STAMP, .offset = offsetof(bcmolt_device_device_keep_alive_data, time_stamp), .type = &type_descr_uint32_t };
static bcmcli_prop_descr * BCM_DESCR device_device_keep_alive_prop_array[] = { &prop_descr_device_device_keep_alive_sequence_number, &prop_descr_device_device_keep_alive_time_stamp };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_device_device_keep_alive_data_fields[] = { { .name = "sequence_number", .descr = "sequence number", .offset = offsetof(bcmolt_device_device_keep_alive_data, sequence_number), .type = &type_descr_uint32_t }, { .name = "time_stamp", .descr = "time stamp", .offset = offsetof(bcmolt_device_device_keep_alive_data, time_stamp), .type = &type_descr_uint32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_device_device_keep_alive_data = { .name = "bcmolt_device_device_keep_alive_data", .descr = "Keep alive message from the device to the host - used by the device control library (not sent to the host application).", .size = sizeof(bcmolt_device_device_keep_alive_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_device_device_keep_alive_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_device_device_keep_alive_data_fields } } };

/* Group: device - connection_failure */
static bcmcli_prop_descr BCM_DESCR prop_descr_device_connection_failure_reason = { .name = "reason", .descr = "Connection fail reason", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_CONNECTION_FAILURE_ID_REASON, .offset = offsetof(bcmolt_device_connection_failure_data, reason), .type = &type_descr_bcmolt_host_connection_fail_reason };
static bcmcli_prop_descr * BCM_DESCR device_connection_failure_prop_array[] = { &prop_descr_device_connection_failure_reason };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_device_connection_failure_data_fields[] = { { .name = "reason", .descr = "Connection fail reason", .offset = offsetof(bcmolt_device_connection_failure_data, reason), .type = &type_descr_bcmolt_host_connection_fail_reason } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_device_connection_failure_data = { .name = "bcmolt_device_connection_failure_data", .descr = "The host failed to connect to the device.", .size = sizeof(bcmolt_device_connection_failure_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_device_connection_failure_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_device_connection_failure_data_fields } } };

/* Group: device - connection_complete */
static bcmcli_prop_descr BCM_DESCR prop_descr_device_connection_complete_standalone = { .name = "standalone", .descr = "If true, the device was previously running in standalone mode before this connection was established.  If false, the device was booted from reset with new firmware, etc.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_CONNECTION_COMPLETE_ID_STANDALONE, .offset = offsetof(bcmolt_device_connection_complete_data, standalone), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr * BCM_DESCR device_connection_complete_prop_array[] = { &prop_descr_device_connection_complete_standalone };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_device_connection_complete_data_fields[] = { { .name = "standalone", .descr = "If true, the device was previously running in standalone mode before this connection was established.  If false, the device was booted from reset with new firmware, etc.", .offset = offsetof(bcmolt_device_connection_complete_data, standalone), .type = &type_descr_bcmos_bool } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_device_connection_complete_data = { .name = "bcmolt_device_connection_complete_data", .descr = "The host successfully connected to the device.  The device has either been reprogrammed with new firmware, or a connection was established with an existing device (see the \"standalone\" field).", .size = sizeof(bcmolt_device_connection_complete_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_device_connection_complete_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_device_connection_complete_data_fields } } };

/* Group: device - disconnection_complete */
static bcmcli_prop_descr * BCM_DESCR device_disconnection_complete_prop_array[] = { };

/* Group: device - sw_error */
static bcmcli_prop_descr BCM_DESCR prop_descr_device_sw_error_task_name = { .name = "task_name", .descr = "task name", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_SW_ERROR_ID_TASK_NAME, .offset = offsetof(bcmolt_device_sw_error_data, task_name), .type = &type_descr_bcmolt_str_100 };
static bcmcli_prop_descr BCM_DESCR prop_descr_device_sw_error_file_name = { .name = "file_name", .descr = "file name", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_SW_ERROR_ID_FILE_NAME, .offset = offsetof(bcmolt_device_sw_error_data, file_name), .type = &type_descr_bcmolt_str_100 };
static bcmcli_prop_descr BCM_DESCR prop_descr_device_sw_error_line_number = { .name = "line_number", .descr = "line number", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_SW_ERROR_ID_LINE_NUMBER, .offset = offsetof(bcmolt_device_sw_error_data, line_number), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_device_sw_error_pon_ni = { .name = "pon_ni", .descr = "pon_ni", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_SW_ERROR_ID_PON_NI, .offset = offsetof(bcmolt_device_sw_error_data, pon_ni), .type = &type_descr_uint8_t };
static bcmcli_prop_descr * BCM_DESCR device_sw_error_prop_array[] = { &prop_descr_device_sw_error_task_name, &prop_descr_device_sw_error_file_name, &prop_descr_device_sw_error_line_number, &prop_descr_device_sw_error_pon_ni };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_device_sw_error_data_fields[] = { { .name = "task_name", .descr = "task name", .offset = offsetof(bcmolt_device_sw_error_data, task_name), .type = &type_descr_bcmolt_str_100 }, { .name = "file_name", .descr = "file name", .offset = offsetof(bcmolt_device_sw_error_data, file_name), .type = &type_descr_bcmolt_str_100 }, { .name = "line_number", .descr = "line number", .offset = offsetof(bcmolt_device_sw_error_data, line_number), .type = &type_descr_uint32_t }, { .name = "pon_ni", .descr = "pon_ni", .offset = offsetof(bcmolt_device_sw_error_data, pon_ni), .type = &type_descr_uint8_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_device_sw_error_data = { .name = "bcmolt_device_sw_error_data", .descr = "sw error", .size = sizeof(bcmolt_device_sw_error_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_device_sw_error_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_device_sw_error_data_fields } } };

/* Group: device - sw_exception */
static bcmcli_prop_descr BCM_DESCR prop_descr_device_sw_exception_cpu_id = { .name = "cpu_id", .descr = "CPU ID", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_SW_EXCEPTION_ID_CPU_ID, .offset = offsetof(bcmolt_device_sw_exception_data, cpu_id), .type = &type_descr_uint8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_device_sw_exception_text = { .name = "text", .descr = "text", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_SW_EXCEPTION_ID_TEXT, .offset = offsetof(bcmolt_device_sw_exception_data, text), .type = &type_descr_bcmolt_str_2000 };
static bcmcli_prop_descr * BCM_DESCR device_sw_exception_prop_array[] = { &prop_descr_device_sw_exception_cpu_id, &prop_descr_device_sw_exception_text };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_device_sw_exception_data_fields[] = { { .name = "cpu_id", .descr = "CPU ID", .offset = offsetof(bcmolt_device_sw_exception_data, cpu_id), .type = &type_descr_uint8_t }, { .name = "text", .descr = "text", .offset = offsetof(bcmolt_device_sw_exception_data, text), .type = &type_descr_bcmolt_str_2000 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_device_sw_exception_data = { .name = "bcmolt_device_sw_exception_data", .descr = "sw exception", .size = sizeof(bcmolt_device_sw_exception_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_device_sw_exception_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_device_sw_exception_data_fields } } };

/* Group: device - indications_dropped */
static bcmcli_prop_descr BCM_DESCR prop_descr_device_indications_dropped_total_count = { .name = "total_count", .descr = "Total number of indications dropped since the system was started.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_INDICATIONS_DROPPED_ID_TOTAL_COUNT, .offset = offsetof(bcmolt_device_indications_dropped_data, total_count), .type = &type_descr_uint32_t };
static bcmcli_prop_descr * BCM_DESCR device_indications_dropped_prop_array[] = { &prop_descr_device_indications_dropped_total_count };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_device_indications_dropped_data_fields[] = { { .name = "total_count", .descr = "Total number of indications dropped since the system was started.", .offset = offsetof(bcmolt_device_indications_dropped_data, total_count), .type = &type_descr_uint32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_device_indications_dropped_data = { .name = "bcmolt_device_indications_dropped_data", .descr = "Sent when indications are dropped due to congestion / shaping.", .size = sizeof(bcmolt_device_indications_dropped_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_device_indications_dropped_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_device_indications_dropped_data_fields } } };

/* Group: device - image_transfer_start */
static bcmcli_prop_descr BCM_DESCR prop_descr_device_image_transfer_start_image_type = { .name = "image_type", .descr = "File type.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_IMAGE_TRANSFER_START_ID_IMAGE_TYPE, .offset = offsetof(bcmolt_device_image_transfer_start_data, image_type), .type = &type_descr_bcmolt_device_image_type };
static bcmcli_prop_descr BCM_DESCR prop_descr_device_image_transfer_start_image_size = { .name = "image_size", .descr = "Size of the file image.  Ignored for RRQ operation.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_IMAGE_TRANSFER_START_ID_IMAGE_SIZE, .offset = offsetof(bcmolt_device_image_transfer_start_data, image_size), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_device_image_transfer_start_crc32 = { .name = "crc32", .descr = "CRC32 checksum of the entire file image.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_IMAGE_TRANSFER_START_ID_CRC32, .offset = offsetof(bcmolt_device_image_transfer_start_data, crc32), .type = &type_descr_uint32_t_hex };
static bcmcli_prop_descr BCM_DESCR prop_descr_device_image_transfer_start_image_name = { .name = "image_name", .descr = "Name of the file image.  Null-terminated string.  This is required for the DPoE ONU only.  DPoE requires the write request OAM contains the name of the file.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_IMAGE_TRANSFER_START_ID_IMAGE_NAME, .offset = offsetof(bcmolt_device_image_transfer_start_data, image_name), .type = &type_descr_bcmolt_str_64 };
static bcmcli_prop_descr * BCM_DESCR device_image_transfer_start_prop_array[] = { &prop_descr_device_image_transfer_start_image_type, &prop_descr_device_image_transfer_start_image_size, &prop_descr_device_image_transfer_start_crc32, &prop_descr_device_image_transfer_start_image_name };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_device_image_transfer_start_data_fields[] = { { .name = "image_type", .descr = "File type.", .offset = offsetof(bcmolt_device_image_transfer_start_data, image_type), .type = &type_descr_bcmolt_device_image_type }, { .name = "image_size", .descr = "Size of the file image.  Ignored for RRQ operation.", .offset = offsetof(bcmolt_device_image_transfer_start_data, image_size), .type = &type_descr_uint32_t }, { .name = "crc32", .descr = "CRC32 checksum of the entire file image.", .offset = offsetof(bcmolt_device_image_transfer_start_data, crc32), .type = &type_descr_uint32_t_hex }, { .name = "image_name", .descr = "Name of the file image.  Null-terminated string.  This is required for the DPoE ONU only.  DPoE requires the write request OAM contains the name of the file.", .offset = offsetof(bcmolt_device_image_transfer_start_data, image_name), .type = &type_descr_bcmolt_str_64 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_device_image_transfer_start_data = { .name = "bcmolt_device_image_transfer_start_data", .descr = "This API message informs the OLT of the start of image transfer, and provides the information of the file image.", .size = sizeof(bcmolt_device_image_transfer_start_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_device_image_transfer_start_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_device_image_transfer_start_data_fields } } };

/* Group: device - image_transfer_data */
static bcmcli_prop_descr BCM_DESCR prop_descr_device_image_transfer_data_block_number = { .name = "block_number", .descr = "Block number.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_IMAGE_TRANSFER_DATA_ID_BLOCK_NUMBER, .offset = offsetof(bcmolt_device_image_transfer_data_data, block_number), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_device_image_transfer_data_more_data = { .name = "more_data", .descr = "Specifies that there are more data to come.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_IMAGE_TRANSFER_DATA_ID_MORE_DATA, .offset = offsetof(bcmolt_device_image_transfer_data_data, more_data), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_device_image_transfer_data_data = { .name = "data", .descr = "Data.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_IMAGE_TRANSFER_DATA_ID_DATA, .offset = offsetof(bcmolt_device_image_transfer_data_data, data), .type = &type_descr_bcmolt_u8_list_u16_hex };
static bcmcli_prop_descr * BCM_DESCR device_image_transfer_data_prop_array[] = { &prop_descr_device_image_transfer_data_block_number, &prop_descr_device_image_transfer_data_more_data, &prop_descr_device_image_transfer_data_data };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_device_image_transfer_data_data_fields[] = { { .name = "block_number", .descr = "Block number.", .offset = offsetof(bcmolt_device_image_transfer_data_data, block_number), .type = &type_descr_uint32_t }, { .name = "more_data", .descr = "Specifies that there are more data to come.", .offset = offsetof(bcmolt_device_image_transfer_data_data, more_data), .type = &type_descr_bcmos_bool }, { .name = "data", .descr = "Data.", .offset = offsetof(bcmolt_device_image_transfer_data_data, data), .type = &type_descr_bcmolt_u8_list_u16_hex } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_device_image_transfer_data_data = { .name = "bcmolt_device_image_transfer_data_data", .descr = "used for transferring the actual data from/to the OLT.   not to be directly called by the user.", .size = sizeof(bcmolt_device_image_transfer_data_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_device_image_transfer_data_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_device_image_transfer_data_data_fields } } };

/* Group: device - image_transfer_complete */
static bcmcli_prop_descr BCM_DESCR prop_descr_device_image_transfer_complete_image_type = { .name = "image_type", .descr = "Image type.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_IMAGE_TRANSFER_COMPLETE_ID_IMAGE_TYPE, .offset = offsetof(bcmolt_device_image_transfer_complete_data, image_type), .type = &type_descr_bcmolt_device_image_type };
static bcmcli_prop_descr BCM_DESCR prop_descr_device_image_transfer_complete_block_number = { .name = "block_number", .descr = "Block number.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_IMAGE_TRANSFER_COMPLETE_ID_BLOCK_NUMBER, .offset = offsetof(bcmolt_device_image_transfer_complete_data, block_number), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_device_image_transfer_complete_status = { .name = "status", .descr = "Image transfer status.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_IMAGE_TRANSFER_COMPLETE_ID_STATUS, .offset = offsetof(bcmolt_device_image_transfer_complete_data, status), .type = &type_descr_bcmolt_image_transfer_status };
static bcmcli_prop_descr * BCM_DESCR device_image_transfer_complete_prop_array[] = { &prop_descr_device_image_transfer_complete_image_type, &prop_descr_device_image_transfer_complete_block_number, &prop_descr_device_image_transfer_complete_status };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_device_image_transfer_complete_data_fields[] = { { .name = "image_type", .descr = "Image type.", .offset = offsetof(bcmolt_device_image_transfer_complete_data, image_type), .type = &type_descr_bcmolt_device_image_type }, { .name = "block_number", .descr = "Block number.", .offset = offsetof(bcmolt_device_image_transfer_complete_data, block_number), .type = &type_descr_uint32_t }, { .name = "status", .descr = "Image transfer status.", .offset = offsetof(bcmolt_device_image_transfer_complete_data, status), .type = &type_descr_bcmolt_image_transfer_status } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_device_image_transfer_complete_data = { .name = "bcmolt_device_image_transfer_complete_data", .descr = "Image Transfer Complete", .size = sizeof(bcmolt_device_image_transfer_complete_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_device_image_transfer_complete_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_device_image_transfer_complete_data_fields } } };

/* Group: device - run_ddr_test */
static bcmcli_prop_descr BCM_DESCR prop_descr_device_run_ddr_test_cpu = { .name = "cpu", .descr = "Whether or not to test the CPU DDR", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_RUN_DDR_TEST_ID_CPU, .offset = offsetof(bcmolt_device_run_ddr_test_data, cpu), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_device_run_ddr_test_ras_0 = { .name = "ras_0", .descr = "Whether or not to test RAS 0 DDR", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_RUN_DDR_TEST_ID_RAS_0, .offset = offsetof(bcmolt_device_run_ddr_test_data, ras_0), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_device_run_ddr_test_ras_1 = { .name = "ras_1", .descr = "Whether or not to test RAS 1 DDR", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_RUN_DDR_TEST_ID_RAS_1, .offset = offsetof(bcmolt_device_run_ddr_test_data, ras_1), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr * BCM_DESCR device_run_ddr_test_prop_array[] = { &prop_descr_device_run_ddr_test_cpu, &prop_descr_device_run_ddr_test_ras_0, &prop_descr_device_run_ddr_test_ras_1 };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_device_run_ddr_test_data_fields[] = { { .name = "cpu", .descr = "Whether or not to test the CPU DDR", .offset = offsetof(bcmolt_device_run_ddr_test_data, cpu), .type = &type_descr_bcmos_bool }, { .name = "ras_0", .descr = "Whether or not to test RAS 0 DDR", .offset = offsetof(bcmolt_device_run_ddr_test_data, ras_0), .type = &type_descr_bcmos_bool }, { .name = "ras_1", .descr = "Whether or not to test RAS 1 DDR", .offset = offsetof(bcmolt_device_run_ddr_test_data, ras_1), .type = &type_descr_bcmos_bool } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_device_run_ddr_test_data = { .name = "bcmolt_device_run_ddr_test_data", .descr = "Run a test on one or more of the DDR components.", .size = sizeof(bcmolt_device_run_ddr_test_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_device_run_ddr_test_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_device_run_ddr_test_data_fields } } };

/* Group: device - ddr_test_complete */
static bcmcli_prop_descr BCM_DESCR prop_descr_device_ddr_test_complete_ddr_test = { .name = "ddr_test", .descr = "Results of the DDR Test", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_DDR_TEST_COMPLETE_ID_DDR_TEST, .offset = offsetof(bcmolt_device_ddr_test_complete_data, ddr_test), .type = &type_descr_bcmolt_ddr_test_completed };
static bcmcli_prop_descr * BCM_DESCR device_ddr_test_complete_prop_array[] = { &prop_descr_device_ddr_test_complete_ddr_test };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_device_ddr_test_complete_data_fields[] = { { .name = "ddr_test", .descr = "Results of the DDR Test", .offset = offsetof(bcmolt_device_ddr_test_complete_data, ddr_test), .type = &type_descr_bcmolt_ddr_test_completed } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_device_ddr_test_complete_data = { .name = "bcmolt_device_ddr_test_complete_data", .descr = "The DDR Test has completed", .size = sizeof(bcmolt_device_ddr_test_complete_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_device_ddr_test_complete_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_device_ddr_test_complete_data_fields } } };

/* Group: device - auto_cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_device_auto_cfg_connection_complete = { .name = "connection_complete", .descr = "If true, indications of type \"connection_complete\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_AUTO_CFG_ID_CONNECTION_COMPLETE, .offset = offsetof(bcmolt_device_auto_cfg_data, connection_complete), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_device_auto_cfg_connection_established = { .name = "connection_established", .descr = "If true, indications of type \"connection_established\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_AUTO_CFG_ID_CONNECTION_ESTABLISHED, .offset = offsetof(bcmolt_device_auto_cfg_data, connection_established), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_device_auto_cfg_connection_failure = { .name = "connection_failure", .descr = "If true, indications of type \"connection_failure\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_AUTO_CFG_ID_CONNECTION_FAILURE, .offset = offsetof(bcmolt_device_auto_cfg_data, connection_failure), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_device_auto_cfg_ddr_test_complete = { .name = "ddr_test_complete", .descr = "If true, indications of type \"ddr_test_complete\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_AUTO_CFG_ID_DDR_TEST_COMPLETE, .offset = offsetof(bcmolt_device_auto_cfg_data, ddr_test_complete), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_device_auto_cfg_device_keep_alive = { .name = "device_keep_alive", .descr = "If true, indications of type \"device_keep_alive\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_AUTO_CFG_ID_DEVICE_KEEP_ALIVE, .offset = offsetof(bcmolt_device_auto_cfg_data, device_keep_alive), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_device_auto_cfg_device_ready = { .name = "device_ready", .descr = "If true, indications of type \"device_ready\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_AUTO_CFG_ID_DEVICE_READY, .offset = offsetof(bcmolt_device_auto_cfg_data, device_ready), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_device_auto_cfg_disconnection_complete = { .name = "disconnection_complete", .descr = "If true, indications of type \"disconnection_complete\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_AUTO_CFG_ID_DISCONNECTION_COMPLETE, .offset = offsetof(bcmolt_device_auto_cfg_data, disconnection_complete), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_device_auto_cfg_image_transfer_complete = { .name = "image_transfer_complete", .descr = "If true, indications of type \"image_transfer_complete\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_AUTO_CFG_ID_IMAGE_TRANSFER_COMPLETE, .offset = offsetof(bcmolt_device_auto_cfg_data, image_transfer_complete), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_device_auto_cfg_indications_dropped = { .name = "indications_dropped", .descr = "If true, indications of type \"indications_dropped\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_AUTO_CFG_ID_INDICATIONS_DROPPED, .offset = offsetof(bcmolt_device_auto_cfg_data, indications_dropped), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_device_auto_cfg_sw_error = { .name = "sw_error", .descr = "If true, indications of type \"sw_error\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_AUTO_CFG_ID_SW_ERROR, .offset = offsetof(bcmolt_device_auto_cfg_data, sw_error), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_device_auto_cfg_sw_exception = { .name = "sw_exception", .descr = "If true, indications of type \"sw_exception\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_DEVICE_AUTO_CFG_ID_SW_EXCEPTION, .offset = offsetof(bcmolt_device_auto_cfg_data, sw_exception), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr * BCM_DESCR device_auto_cfg_prop_array[] = { &prop_descr_device_auto_cfg_connection_complete, &prop_descr_device_auto_cfg_connection_established, &prop_descr_device_auto_cfg_connection_failure, &prop_descr_device_auto_cfg_ddr_test_complete, &prop_descr_device_auto_cfg_device_keep_alive, &prop_descr_device_auto_cfg_device_ready, &prop_descr_device_auto_cfg_disconnection_complete, &prop_descr_device_auto_cfg_image_transfer_complete, &prop_descr_device_auto_cfg_indications_dropped, &prop_descr_device_auto_cfg_sw_error, &prop_descr_device_auto_cfg_sw_exception };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_device_auto_cfg_data_fields[] = { { .name = "connection_complete", .descr = "If true, indications of type \"connection_complete\" will be generated.", .offset = offsetof(bcmolt_device_auto_cfg_data, connection_complete), .type = &type_descr_bcmos_bool }, { .name = "connection_established", .descr = "If true, indications of type \"connection_established\" will be generated.", .offset = offsetof(bcmolt_device_auto_cfg_data, connection_established), .type = &type_descr_bcmos_bool }, { .name = "connection_failure", .descr = "If true, indications of type \"connection_failure\" will be generated.", .offset = offsetof(bcmolt_device_auto_cfg_data, connection_failure), .type = &type_descr_bcmos_bool }, { .name = "ddr_test_complete", .descr = "If true, indications of type \"ddr_test_complete\" will be generated.", .offset = offsetof(bcmolt_device_auto_cfg_data, ddr_test_complete), .type = &type_descr_bcmos_bool }, { .name = "device_keep_alive", .descr = "If true, indications of type \"device_keep_alive\" will be generated.", .offset = offsetof(bcmolt_device_auto_cfg_data, device_keep_alive), .type = &type_descr_bcmos_bool }, { .name = "device_ready", .descr = "If true, indications of type \"device_ready\" will be generated.", .offset = offsetof(bcmolt_device_auto_cfg_data, device_ready), .type = &type_descr_bcmos_bool }, { .name = "disconnection_complete", .descr = "If true, indications of type \"disconnection_complete\" will be generated.", .offset = offsetof(bcmolt_device_auto_cfg_data, disconnection_complete), .type = &type_descr_bcmos_bool }, { .name = "image_transfer_complete", .descr = "If true, indications of type \"image_transfer_complete\" will be generated.", .offset = offsetof(bcmolt_device_auto_cfg_data, image_transfer_complete), .type = &type_descr_bcmos_bool }, { .name = "indications_dropped", .descr = "If true, indications of type \"indications_dropped\" will be generated.", .offset = offsetof(bcmolt_device_auto_cfg_data, indications_dropped), .type = &type_descr_bcmos_bool }, { .name = "sw_error", .descr = "If true, indications of type \"sw_error\" will be generated.", .offset = offsetof(bcmolt_device_auto_cfg_data, sw_error), .type = &type_descr_bcmos_bool }, { .name = "sw_exception", .descr = "If true, indications of type \"sw_exception\" will be generated.", .offset = offsetof(bcmolt_device_auto_cfg_data, sw_exception), .type = &type_descr_bcmos_bool } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_device_auto_cfg_data = { .name = "bcmolt_device_auto_cfg_data", .descr = "Indication Configuration", .size = sizeof(bcmolt_device_auto_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_device_auto_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_device_auto_cfg_data_fields } } };

/* ==== Object: epon_denied_link ==== */

/* Group: epon_denied_link - key */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_denied_link_key_epon_ni = { .name = "epon_ni", .descr = "Uniquely identifies the EPON NI containing the link.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_DENIED_LINK_KEY_ID_EPON_NI, .offset = offsetof(bcmolt_epon_denied_link_key, epon_ni), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_denied_link_key_mac_address = { .name = "mac_address", .descr = "The MAC address associated with the EPON link.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_DENIED_LINK_KEY_ID_MAC_ADDRESS, .offset = offsetof(bcmolt_epon_denied_link_key, mac_address), .type = &type_descr_bcmos_mac_address };
static bcmcli_prop_descr * BCM_DESCR epon_denied_link_key_prop_array[] = { &prop_descr_epon_denied_link_key_epon_ni, &prop_descr_epon_denied_link_key_mac_address };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_denied_link_key_fields[] = { { .name = "epon_ni", .descr = "Uniquely identifies the EPON NI containing the link.", .offset = offsetof(bcmolt_epon_denied_link_key, epon_ni), .type = &type_descr_uint16_t }, { .name = "mac_address", .descr = "The MAC address associated with the EPON link.", .offset = offsetof(bcmolt_epon_denied_link_key, mac_address), .type = &type_descr_bcmos_mac_address } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_denied_link_key = { .name = "bcmolt_epon_denied_link_key", .descr = "key", .size = sizeof(bcmolt_epon_denied_link_key), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_denied_link_key_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_denied_link_key_fields } } };

/* Group: epon_denied_link - cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_denied_link_cfg_alarm_state = { .name = "alarm_state", .descr = "The state of the alarms on this link.", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_EPON_DENIED_LINK_CFG_ID_ALARM_STATE, .offset = offsetof(bcmolt_epon_denied_link_cfg_data, alarm_state), .type = &type_descr_bcmolt_epon_denied_link_alarm_state };
static bcmcli_prop_descr * BCM_DESCR epon_denied_link_cfg_prop_array[] = { &prop_descr_epon_denied_link_cfg_alarm_state };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_denied_link_cfg_data_fields[] = { { .name = "alarm_state", .descr = "The state of the alarms on this link.", .offset = offsetof(bcmolt_epon_denied_link_cfg_data, alarm_state), .type = &type_descr_bcmolt_epon_denied_link_alarm_state } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_denied_link_cfg_data = { .name = "bcmolt_epon_denied_link_cfg_data", .descr = "cfg", .size = sizeof(bcmolt_epon_denied_link_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_denied_link_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_denied_link_cfg_data_fields } } };

/* Group: epon_denied_link - unknown_link_violation */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_denied_link_unknown_link_violation_alarm_status = { .name = "alarm_status", .descr = "Alarm Status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_DENIED_LINK_UNKNOWN_LINK_VIOLATION_ID_ALARM_STATUS, .offset = offsetof(bcmolt_epon_denied_link_unknown_link_violation_data, alarm_status), .type = &type_descr_bcmolt_unknown_link_status };
static bcmcli_prop_descr * BCM_DESCR epon_denied_link_unknown_link_violation_prop_array[] = { &prop_descr_epon_denied_link_unknown_link_violation_alarm_status };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_denied_link_unknown_link_violation_data_fields[] = { { .name = "alarm_status", .descr = "Alarm Status", .offset = offsetof(bcmolt_epon_denied_link_unknown_link_violation_data, alarm_status), .type = &type_descr_bcmolt_unknown_link_status } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_denied_link_unknown_link_violation_data = { .name = "bcmolt_epon_denied_link_unknown_link_violation_data", .descr = "A link tried to register while the PON was set to \"notify unknown\" registration behavior and this link was not pre-provisioned.", .size = sizeof(bcmolt_epon_denied_link_unknown_link_violation_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_denied_link_unknown_link_violation_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_denied_link_unknown_link_violation_data_fields } } };

/* Group: epon_denied_link - overhead_profile_violation */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_denied_link_overhead_profile_violation_alarm_status = { .name = "alarm_status", .descr = "Alarm status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_DENIED_LINK_OVERHEAD_PROFILE_VIOLATION_ID_ALARM_STATUS, .offset = offsetof(bcmolt_epon_denied_link_overhead_profile_violation_data, alarm_status), .type = &type_descr_bcmolt_status };
static bcmcli_prop_descr * BCM_DESCR epon_denied_link_overhead_profile_violation_prop_array[] = { &prop_descr_epon_denied_link_overhead_profile_violation_alarm_status };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_denied_link_overhead_profile_violation_data_fields[] = { { .name = "alarm_status", .descr = "Alarm status", .offset = offsetof(bcmolt_epon_denied_link_overhead_profile_violation_data, alarm_status), .type = &type_descr_bcmolt_status } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_denied_link_overhead_profile_violation_data = { .name = "bcmolt_epon_denied_link_overhead_profile_violation_data", .descr = "This is when link tries to register and there are already too many existing laser on/off combinations.", .size = sizeof(bcmolt_epon_denied_link_overhead_profile_violation_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_denied_link_overhead_profile_violation_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_denied_link_overhead_profile_violation_data_fields } } };

/* Group: epon_denied_link - laser_on_off_violation */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_denied_link_laser_on_off_violation_alarm_status = { .name = "alarm_status", .descr = "Alarm Status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_DENIED_LINK_LASER_ON_OFF_VIOLATION_ID_ALARM_STATUS, .offset = offsetof(bcmolt_epon_denied_link_laser_on_off_violation_data, alarm_status), .type = &type_descr_bcmolt_laser_on_off_status };
static bcmcli_prop_descr * BCM_DESCR epon_denied_link_laser_on_off_violation_prop_array[] = { &prop_descr_epon_denied_link_laser_on_off_violation_alarm_status };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_denied_link_laser_on_off_violation_data_fields[] = { { .name = "alarm_status", .descr = "Alarm Status", .offset = offsetof(bcmolt_epon_denied_link_laser_on_off_violation_data, alarm_status), .type = &type_descr_bcmolt_laser_on_off_status } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_denied_link_laser_on_off_violation_data = { .name = "bcmolt_epon_denied_link_laser_on_off_violation_data", .descr = "This is when a link tries to reigster with an impossible laser on or off time.", .size = sizeof(bcmolt_epon_denied_link_laser_on_off_violation_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_denied_link_laser_on_off_violation_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_denied_link_laser_on_off_violation_data_fields } } };

/* Group: epon_denied_link - max_link_violation */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_denied_link_max_link_violation_alarm_status = { .name = "alarm_status", .descr = "Alarm Status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_DENIED_LINK_MAX_LINK_VIOLATION_ID_ALARM_STATUS, .offset = offsetof(bcmolt_epon_denied_link_max_link_violation_data, alarm_status), .type = &type_descr_bcmolt_status };
static bcmcli_prop_descr * BCM_DESCR epon_denied_link_max_link_violation_prop_array[] = { &prop_descr_epon_denied_link_max_link_violation_alarm_status };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_denied_link_max_link_violation_data_fields[] = { { .name = "alarm_status", .descr = "Alarm Status", .offset = offsetof(bcmolt_epon_denied_link_max_link_violation_data, alarm_status), .type = &type_descr_bcmolt_status } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_denied_link_max_link_violation_data = { .name = "bcmolt_epon_denied_link_max_link_violation_data", .descr = "A link tried to register and it would have put us over the provisioned max links for the corresponding EPON NI.", .size = sizeof(bcmolt_epon_denied_link_max_link_violation_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_denied_link_max_link_violation_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_denied_link_max_link_violation_data_fields } } };

/* Group: epon_denied_link - llid_pool_empty_violation */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_denied_link_llid_pool_empty_violation_alarm_status = { .name = "alarm_status", .descr = "Alarm Status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_DENIED_LINK_LLID_POOL_EMPTY_VIOLATION_ID_ALARM_STATUS, .offset = offsetof(bcmolt_epon_denied_link_llid_pool_empty_violation_data, alarm_status), .type = &type_descr_bcmolt_status };
static bcmcli_prop_descr * BCM_DESCR epon_denied_link_llid_pool_empty_violation_prop_array[] = { &prop_descr_epon_denied_link_llid_pool_empty_violation_alarm_status };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_denied_link_llid_pool_empty_violation_data_fields[] = { { .name = "alarm_status", .descr = "Alarm Status", .offset = offsetof(bcmolt_epon_denied_link_llid_pool_empty_violation_data, alarm_status), .type = &type_descr_bcmolt_status } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_denied_link_llid_pool_empty_violation_data = { .name = "bcmolt_epon_denied_link_llid_pool_empty_violation_data", .descr = "A link tried to register and it there are no LLIDs available. If this occurs, it is possible there is an issue with your 'max links' and/or 'Base LLID' fields on your RP.", .size = sizeof(bcmolt_epon_denied_link_llid_pool_empty_violation_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_denied_link_llid_pool_empty_violation_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_denied_link_llid_pool_empty_violation_data_fields } } };

/* Group: epon_denied_link - system_resource_violation */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_denied_link_system_resource_violation_alarm_status = { .name = "alarm_status", .descr = "Alarm Status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_DENIED_LINK_SYSTEM_RESOURCE_VIOLATION_ID_ALARM_STATUS, .offset = offsetof(bcmolt_epon_denied_link_system_resource_violation_data, alarm_status), .type = &type_descr_bcmolt_status };
static bcmcli_prop_descr * BCM_DESCR epon_denied_link_system_resource_violation_prop_array[] = { &prop_descr_epon_denied_link_system_resource_violation_alarm_status };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_denied_link_system_resource_violation_data_fields[] = { { .name = "alarm_status", .descr = "Alarm Status", .offset = offsetof(bcmolt_epon_denied_link_system_resource_violation_data, alarm_status), .type = &type_descr_bcmolt_status } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_denied_link_system_resource_violation_data = { .name = "bcmolt_epon_denied_link_system_resource_violation_data", .descr = "A link tried to register and we were unable to allocate system resources for it.", .size = sizeof(bcmolt_epon_denied_link_system_resource_violation_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_denied_link_system_resource_violation_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_denied_link_system_resource_violation_data_fields } } };

/* Group: epon_denied_link - range_violation */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_denied_link_range_violation_alarm_status = { .name = "alarm_status", .descr = "Alarm Status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_DENIED_LINK_RANGE_VIOLATION_ID_ALARM_STATUS, .offset = offsetof(bcmolt_epon_denied_link_range_violation_data, alarm_status), .type = &type_descr_bcmolt_range_status };
static bcmcli_prop_descr * BCM_DESCR epon_denied_link_range_violation_prop_array[] = { &prop_descr_epon_denied_link_range_violation_alarm_status };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_denied_link_range_violation_data_fields[] = { { .name = "alarm_status", .descr = "Alarm Status", .offset = offsetof(bcmolt_epon_denied_link_range_violation_data, alarm_status), .type = &type_descr_bcmolt_range_status } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_denied_link_range_violation_data = { .name = "bcmolt_epon_denied_link_range_violation_data", .descr = "A link tried to register with a range value that was outside of the min/max fiber length.", .size = sizeof(bcmolt_epon_denied_link_range_violation_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_denied_link_range_violation_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_denied_link_range_violation_data_fields } } };

/* Group: epon_denied_link - tdm_channels_exhausted */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_denied_link_tdm_channels_exhausted_alarm_status = { .name = "alarm_status", .descr = "Alarm Status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_DENIED_LINK_TDM_CHANNELS_EXHAUSTED_ID_ALARM_STATUS, .offset = offsetof(bcmolt_epon_denied_link_tdm_channels_exhausted_data, alarm_status), .type = &type_descr_bcmolt_status };
static bcmcli_prop_descr * BCM_DESCR epon_denied_link_tdm_channels_exhausted_prop_array[] = { &prop_descr_epon_denied_link_tdm_channels_exhausted_alarm_status };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_denied_link_tdm_channels_exhausted_data_fields[] = { { .name = "alarm_status", .descr = "Alarm Status", .offset = offsetof(bcmolt_epon_denied_link_tdm_channels_exhausted_data, alarm_status), .type = &type_descr_bcmolt_status } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_denied_link_tdm_channels_exhausted_data = { .name = "bcmolt_epon_denied_link_tdm_channels_exhausted_data", .descr = "TDM Channels Exhausted", .size = sizeof(bcmolt_epon_denied_link_tdm_channels_exhausted_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_denied_link_tdm_channels_exhausted_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_denied_link_tdm_channels_exhausted_data_fields } } };

/* Group: epon_denied_link - rogue_violation */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_denied_link_rogue_violation_alarm_status = { .name = "alarm_status", .descr = "Alarm Status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_DENIED_LINK_ROGUE_VIOLATION_ID_ALARM_STATUS, .offset = offsetof(bcmolt_epon_denied_link_rogue_violation_data, alarm_status), .type = &type_descr_bcmolt_rogue_status };
static bcmcli_prop_descr * BCM_DESCR epon_denied_link_rogue_violation_prop_array[] = { &prop_descr_epon_denied_link_rogue_violation_alarm_status };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_denied_link_rogue_violation_data_fields[] = { { .name = "alarm_status", .descr = "Alarm Status", .offset = offsetof(bcmolt_epon_denied_link_rogue_violation_data, alarm_status), .type = &type_descr_bcmolt_rogue_status } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_denied_link_rogue_violation_data = { .name = "bcmolt_epon_denied_link_rogue_violation_data", .descr = "A Rogue ONU was detected on this link/LLID. ", .size = sizeof(bcmolt_epon_denied_link_rogue_violation_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_denied_link_rogue_violation_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_denied_link_rogue_violation_data_fields } } };

/* Group: epon_denied_link - upstream_bandwidth_violation */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_denied_link_upstream_bandwidth_violation_alarm_status = { .name = "alarm_status", .descr = "Alarm Status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_DENIED_LINK_UPSTREAM_BANDWIDTH_VIOLATION_ID_ALARM_STATUS, .offset = offsetof(bcmolt_epon_denied_link_upstream_bandwidth_violation_data, alarm_status), .type = &type_descr_bcmolt_status };
static bcmcli_prop_descr * BCM_DESCR epon_denied_link_upstream_bandwidth_violation_prop_array[] = { &prop_descr_epon_denied_link_upstream_bandwidth_violation_alarm_status };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_denied_link_upstream_bandwidth_violation_data_fields[] = { { .name = "alarm_status", .descr = "Alarm Status", .offset = offsetof(bcmolt_epon_denied_link_upstream_bandwidth_violation_data, alarm_status), .type = &type_descr_bcmolt_status } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_denied_link_upstream_bandwidth_violation_data = { .name = "bcmolt_epon_denied_link_upstream_bandwidth_violation_data", .descr = "This link failed to register because there was insufficient upstream bandwidth available to provide the default UBD.", .size = sizeof(bcmolt_epon_denied_link_upstream_bandwidth_violation_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_denied_link_upstream_bandwidth_violation_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_denied_link_upstream_bandwidth_violation_data_fields } } };

/* Group: epon_denied_link - auto_cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_denied_link_auto_cfg_laser_on_off_violation = { .name = "laser_on_off_violation", .descr = "If true, indications of type \"laser_on_off_violation\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_DENIED_LINK_AUTO_CFG_ID_LASER_ON_OFF_VIOLATION, .offset = offsetof(bcmolt_epon_denied_link_auto_cfg_data, laser_on_off_violation), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_denied_link_auto_cfg_llid_pool_empty_violation = { .name = "llid_pool_empty_violation", .descr = "If true, indications of type \"llid_pool_empty_violation\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_DENIED_LINK_AUTO_CFG_ID_LLID_POOL_EMPTY_VIOLATION, .offset = offsetof(bcmolt_epon_denied_link_auto_cfg_data, llid_pool_empty_violation), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_denied_link_auto_cfg_max_link_violation = { .name = "max_link_violation", .descr = "If true, indications of type \"max_link_violation\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_DENIED_LINK_AUTO_CFG_ID_MAX_LINK_VIOLATION, .offset = offsetof(bcmolt_epon_denied_link_auto_cfg_data, max_link_violation), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_denied_link_auto_cfg_overhead_profile_violation = { .name = "overhead_profile_violation", .descr = "If true, indications of type \"overhead_profile_violation\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_DENIED_LINK_AUTO_CFG_ID_OVERHEAD_PROFILE_VIOLATION, .offset = offsetof(bcmolt_epon_denied_link_auto_cfg_data, overhead_profile_violation), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_denied_link_auto_cfg_range_violation = { .name = "range_violation", .descr = "If true, indications of type \"range_violation\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_DENIED_LINK_AUTO_CFG_ID_RANGE_VIOLATION, .offset = offsetof(bcmolt_epon_denied_link_auto_cfg_data, range_violation), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_denied_link_auto_cfg_rogue_violation = { .name = "rogue_violation", .descr = "If true, indications of type \"rogue_violation\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_DENIED_LINK_AUTO_CFG_ID_ROGUE_VIOLATION, .offset = offsetof(bcmolt_epon_denied_link_auto_cfg_data, rogue_violation), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_denied_link_auto_cfg_system_resource_violation = { .name = "system_resource_violation", .descr = "If true, indications of type \"system_resource_violation\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_DENIED_LINK_AUTO_CFG_ID_SYSTEM_RESOURCE_VIOLATION, .offset = offsetof(bcmolt_epon_denied_link_auto_cfg_data, system_resource_violation), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_denied_link_auto_cfg_tdm_channels_exhausted = { .name = "tdm_channels_exhausted", .descr = "If true, indications of type \"tdm_channels_exhausted\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_DENIED_LINK_AUTO_CFG_ID_TDM_CHANNELS_EXHAUSTED, .offset = offsetof(bcmolt_epon_denied_link_auto_cfg_data, tdm_channels_exhausted), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_denied_link_auto_cfg_unknown_link_violation = { .name = "unknown_link_violation", .descr = "If true, indications of type \"unknown_link_violation\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_DENIED_LINK_AUTO_CFG_ID_UNKNOWN_LINK_VIOLATION, .offset = offsetof(bcmolt_epon_denied_link_auto_cfg_data, unknown_link_violation), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_denied_link_auto_cfg_upstream_bandwidth_violation = { .name = "upstream_bandwidth_violation", .descr = "If true, indications of type \"upstream_bandwidth_violation\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_DENIED_LINK_AUTO_CFG_ID_UPSTREAM_BANDWIDTH_VIOLATION, .offset = offsetof(bcmolt_epon_denied_link_auto_cfg_data, upstream_bandwidth_violation), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr * BCM_DESCR epon_denied_link_auto_cfg_prop_array[] = { &prop_descr_epon_denied_link_auto_cfg_laser_on_off_violation, &prop_descr_epon_denied_link_auto_cfg_llid_pool_empty_violation, &prop_descr_epon_denied_link_auto_cfg_max_link_violation, &prop_descr_epon_denied_link_auto_cfg_overhead_profile_violation, &prop_descr_epon_denied_link_auto_cfg_range_violation, &prop_descr_epon_denied_link_auto_cfg_rogue_violation, &prop_descr_epon_denied_link_auto_cfg_system_resource_violation, &prop_descr_epon_denied_link_auto_cfg_tdm_channels_exhausted, &prop_descr_epon_denied_link_auto_cfg_unknown_link_violation, &prop_descr_epon_denied_link_auto_cfg_upstream_bandwidth_violation };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_denied_link_auto_cfg_data_fields[] = { { .name = "laser_on_off_violation", .descr = "If true, indications of type \"laser_on_off_violation\" will be generated.", .offset = offsetof(bcmolt_epon_denied_link_auto_cfg_data, laser_on_off_violation), .type = &type_descr_bcmos_bool }, { .name = "llid_pool_empty_violation", .descr = "If true, indications of type \"llid_pool_empty_violation\" will be generated.", .offset = offsetof(bcmolt_epon_denied_link_auto_cfg_data, llid_pool_empty_violation), .type = &type_descr_bcmos_bool }, { .name = "max_link_violation", .descr = "If true, indications of type \"max_link_violation\" will be generated.", .offset = offsetof(bcmolt_epon_denied_link_auto_cfg_data, max_link_violation), .type = &type_descr_bcmos_bool }, { .name = "overhead_profile_violation", .descr = "If true, indications of type \"overhead_profile_violation\" will be generated.", .offset = offsetof(bcmolt_epon_denied_link_auto_cfg_data, overhead_profile_violation), .type = &type_descr_bcmos_bool }, { .name = "range_violation", .descr = "If true, indications of type \"range_violation\" will be generated.", .offset = offsetof(bcmolt_epon_denied_link_auto_cfg_data, range_violation), .type = &type_descr_bcmos_bool }, { .name = "rogue_violation", .descr = "If true, indications of type \"rogue_violation\" will be generated.", .offset = offsetof(bcmolt_epon_denied_link_auto_cfg_data, rogue_violation), .type = &type_descr_bcmos_bool }, { .name = "system_resource_violation", .descr = "If true, indications of type \"system_resource_violation\" will be generated.", .offset = offsetof(bcmolt_epon_denied_link_auto_cfg_data, system_resource_violation), .type = &type_descr_bcmos_bool }, { .name = "tdm_channels_exhausted", .descr = "If true, indications of type \"tdm_channels_exhausted\" will be generated.", .offset = offsetof(bcmolt_epon_denied_link_auto_cfg_data, tdm_channels_exhausted), .type = &type_descr_bcmos_bool }, { .name = "unknown_link_violation", .descr = "If true, indications of type \"unknown_link_violation\" will be generated.", .offset = offsetof(bcmolt_epon_denied_link_auto_cfg_data, unknown_link_violation), .type = &type_descr_bcmos_bool }, { .name = "upstream_bandwidth_violation", .descr = "If true, indications of type \"upstream_bandwidth_violation\" will be generated.", .offset = offsetof(bcmolt_epon_denied_link_auto_cfg_data, upstream_bandwidth_violation), .type = &type_descr_bcmos_bool } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_denied_link_auto_cfg_data = { .name = "bcmolt_epon_denied_link_auto_cfg_data", .descr = "Indication Configuration", .size = sizeof(bcmolt_epon_denied_link_auto_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_denied_link_auto_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_denied_link_auto_cfg_data_fields } } };

/* ==== Object: epon_link ==== */

/* Group: epon_link - key */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_key_epon_ni = { .name = "epon_ni", .descr = "Uniquely identifies the EPON NI containing the link.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_KEY_ID_EPON_NI, .offset = offsetof(bcmolt_epon_link_key, epon_ni), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_key_mac_address = { .name = "mac_address", .descr = "The MAC address associated with the EPON link.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_KEY_ID_MAC_ADDRESS, .offset = offsetof(bcmolt_epon_link_key, mac_address), .type = &type_descr_bcmos_mac_address };
static bcmcli_prop_descr * BCM_DESCR epon_link_key_prop_array[] = { &prop_descr_epon_link_key_epon_ni, &prop_descr_epon_link_key_mac_address };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_link_key_fields[] = { { .name = "epon_ni", .descr = "Uniquely identifies the EPON NI containing the link.", .offset = offsetof(bcmolt_epon_link_key, epon_ni), .type = &type_descr_uint16_t }, { .name = "mac_address", .descr = "The MAC address associated with the EPON link.", .offset = offsetof(bcmolt_epon_link_key, mac_address), .type = &type_descr_bcmos_mac_address } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_key = { .name = "bcmolt_epon_link_key", .descr = "key", .size = sizeof(bcmolt_epon_link_key), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_link_key_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_link_key_fields } } };

/* Group: epon_link - cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_cfg_link_rate = { .name = "link_rate", .descr = "This link's downstream and upstream rate.", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_EPON_LINK_CFG_ID_LINK_RATE, .offset = offsetof(bcmolt_epon_link_cfg_data, link_rate), .type = &type_descr_bcmolt_epon_link_rate };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_cfg_state_flags = { .name = "state_flags", .descr = "EPON link state flags reflect the current status of the link.   Registered state flag is controled by the static registration operation for links on a protected-standby PON.", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_EPON_LINK_CFG_ID_STATE_FLAGS, .offset = offsetof(bcmolt_epon_link_cfg_data, state_flags), .type = &type_descr_bcmolt_epon_link_state_flags };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_cfg_llid = { .name = "llid", .descr = "LLID associated with this link.", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_EPON_LINK_CFG_ID_LLID, .offset = offsetof(bcmolt_epon_link_cfg_data, llid), .type = &type_descr_uint16_t_hex };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_cfg_laser_on_time_tq = { .name = "laser_on_time_tq", .descr = "Laser-on time in time quanta.", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_EPON_LINK_CFG_ID_LASER_ON_TIME_TQ, .offset = offsetof(bcmolt_epon_link_cfg_data, laser_on_time_tq), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_cfg_laser_off_time_tq = { .name = "laser_off_time_tq", .descr = "Laser-off time in time quanta.", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_EPON_LINK_CFG_ID_LASER_OFF_TIME_TQ, .offset = offsetof(bcmolt_epon_link_cfg_data, laser_off_time_tq), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_cfg_range_value_tq = { .name = "range_value_tq", .descr = "Range value used for this link - in time quanta.", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_EPON_LINK_CFG_ID_RANGE_VALUE_TQ, .offset = offsetof(bcmolt_epon_link_cfg_data, range_value_tq), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_cfg_distance = { .name = "distance", .descr = "Distance to the ONU (Differs from range value in that this ignores internal delays)", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_EPON_LINK_CFG_ID_DISTANCE, .offset = offsetof(bcmolt_epon_link_cfg_data, distance), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_cfg_alarm_state = { .name = "alarm_state", .descr = "The state of the alarms on this link.", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_EPON_LINK_CFG_ID_ALARM_STATE, .offset = offsetof(bcmolt_epon_link_cfg_data, alarm_state), .type = &type_descr_bcmolt_epon_link_alarm_state };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_cfg_tunnel_id = { .name = "tunnel_id", .descr = "Tunnel ID", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_CFG_ID_TUNNEL_ID, .offset = offsetof(bcmolt_epon_link_cfg_data, tunnel_id), .type = &type_descr_uint32_t_hex };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_cfg_onu_id = { .name = "onu_id", .descr = "ONU associated with this EPON link.  A value of 0xFF indicates that the link has not been associated with an ONU.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_CFG_ID_ONU_ID, .offset = offsetof(bcmolt_epon_link_cfg_data, onu_id), .type = &type_descr_uint8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_cfg_min_laser_overhead = { .name = "min_laser_overhead", .descr = "Min Laser Overhead", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_CFG_ID_MIN_LASER_OVERHEAD, .offset = offsetof(bcmolt_epon_link_cfg_data, min_laser_overhead), .type = &type_descr_bcmolt_epon_laser_overhead_parameters };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_cfg_key_exchange_config = { .name = "key_exchange_config", .descr = "Encryption key exchange configuration for this link.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_CFG_ID_KEY_EXCHANGE_CONFIG, .offset = offsetof(bcmolt_epon_link_cfg_data, key_exchange_config), .type = &type_descr_bcmolt_epon_key_exchange_config };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_cfg_epon_encryption = { .name = "epon_encryption", .descr = "EPON Encryption ", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_CFG_ID_EPON_ENCRYPTION, .offset = offsetof(bcmolt_epon_link_cfg_data, epon_encryption), .type = &type_descr_bcmolt_epon_encryption_config };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_cfg_fec_enable = { .name = "fec_enable", .descr = "FEC enable state for this link.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_CFG_ID_FEC_ENABLE, .offset = offsetof(bcmolt_epon_link_cfg_data, fec_enable), .type = &type_descr_bcmolt_epon_link_fec_en };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_cfg_oam_heartbeat_config = { .name = "oam_heartbeat_config", .descr = "OAM heartbeat configuration", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_CFG_ID_OAM_HEARTBEAT_CONFIG, .offset = offsetof(bcmolt_epon_link_cfg_data, oam_heartbeat_config), .type = &type_descr_bcmolt_oam_heartbeat_config };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_cfg_upstream_bandwidth = { .name = "upstream_bandwidth", .descr = "Upstream Bandwidth", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_CFG_ID_UPSTREAM_BANDWIDTH, .offset = offsetof(bcmolt_epon_link_cfg_data, upstream_bandwidth), .type = &type_descr_bcmolt_upstream_bandwidth_distribution };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_cfg_ubd_info = { .name = "ubd_info", .descr = "Returns the actual values from the UBD. Useful if you want to see what value the firmware chose for a field set to 'automatic'.", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_EPON_LINK_CFG_ID_UBD_INFO, .offset = offsetof(bcmolt_epon_link_cfg_data, ubd_info), .type = &type_descr_bcmolt_ubd_info };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_cfg_clock_transport_enable = { .name = "clock_transport_enable", .descr = "Whether or not to enable clock transport on this link.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_CFG_ID_CLOCK_TRANSPORT_ENABLE, .offset = offsetof(bcmolt_epon_link_cfg_data, clock_transport_enable), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_cfg_pending_grants = { .name = "pending_grants", .descr = "The number of pending grants.", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_EPON_LINK_CFG_ID_PENDING_GRANTS, .offset = offsetof(bcmolt_epon_link_cfg_data, pending_grants), .type = &type_descr_uint8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_cfg_link_type = { .name = "link_type", .descr = "Link Type", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_EPON_LINK_CFG_ID_LINK_TYPE, .offset = offsetof(bcmolt_epon_link_cfg_data, link_type), .type = &type_descr_bcmolt_epon_link_type };
static bcmcli_prop_descr * BCM_DESCR epon_link_cfg_prop_array[] = { &prop_descr_epon_link_cfg_link_rate, &prop_descr_epon_link_cfg_state_flags, &prop_descr_epon_link_cfg_llid, &prop_descr_epon_link_cfg_laser_on_time_tq, &prop_descr_epon_link_cfg_laser_off_time_tq, &prop_descr_epon_link_cfg_range_value_tq, &prop_descr_epon_link_cfg_distance, &prop_descr_epon_link_cfg_alarm_state, &prop_descr_epon_link_cfg_tunnel_id, &prop_descr_epon_link_cfg_onu_id, &prop_descr_epon_link_cfg_min_laser_overhead, &prop_descr_epon_link_cfg_key_exchange_config, &prop_descr_epon_link_cfg_epon_encryption, &prop_descr_epon_link_cfg_fec_enable, &prop_descr_epon_link_cfg_oam_heartbeat_config, &prop_descr_epon_link_cfg_upstream_bandwidth, &prop_descr_epon_link_cfg_ubd_info, &prop_descr_epon_link_cfg_clock_transport_enable, &prop_descr_epon_link_cfg_pending_grants, &prop_descr_epon_link_cfg_link_type };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_link_cfg_data_fields[] = { { .name = "link_rate", .descr = "This link's downstream and upstream rate.", .offset = offsetof(bcmolt_epon_link_cfg_data, link_rate), .type = &type_descr_bcmolt_epon_link_rate }, { .name = "state_flags", .descr = "EPON link state flags reflect the current status of the link.   Registered state flag is controled by the static registration operation for links on a protected-standby PON.", .offset = offsetof(bcmolt_epon_link_cfg_data, state_flags), .type = &type_descr_bcmolt_epon_link_state_flags }, { .name = "llid", .descr = "LLID associated with this link.", .offset = offsetof(bcmolt_epon_link_cfg_data, llid), .type = &type_descr_uint16_t_hex }, { .name = "laser_on_time_tq", .descr = "Laser-on time in time quanta.", .offset = offsetof(bcmolt_epon_link_cfg_data, laser_on_time_tq), .type = &type_descr_uint32_t }, { .name = "laser_off_time_tq", .descr = "Laser-off time in time quanta.", .offset = offsetof(bcmolt_epon_link_cfg_data, laser_off_time_tq), .type = &type_descr_uint32_t }, { .name = "range_value_tq", .descr = "Range value used for this link - in time quanta.", .offset = offsetof(bcmolt_epon_link_cfg_data, range_value_tq), .type = &type_descr_uint32_t }, { .name = "distance", .descr = "Distance to the ONU (Differs from range value in that this ignores internal delays)", .offset = offsetof(bcmolt_epon_link_cfg_data, distance), .type = &type_descr_uint32_t }, { .name = "alarm_state", .descr = "The state of the alarms on this link.", .offset = offsetof(bcmolt_epon_link_cfg_data, alarm_state), .type = &type_descr_bcmolt_epon_link_alarm_state }, { .name = "tunnel_id", .descr = "Tunnel ID", .offset = offsetof(bcmolt_epon_link_cfg_data, tunnel_id), .type = &type_descr_uint32_t_hex }, { .name = "onu_id", .descr = "ONU associated with this EPON link.  A value of 0xFF indicates that the link has not been associated with an ONU.", .offset = offsetof(bcmolt_epon_link_cfg_data, onu_id), .type = &type_descr_uint8_t }, { .name = "min_laser_overhead", .descr = "Min Laser Overhead", .offset = offsetof(bcmolt_epon_link_cfg_data, min_laser_overhead), .type = &type_descr_bcmolt_epon_laser_overhead_parameters }, { .name = "key_exchange_config", .descr = "Encryption key exchange configuration for this link.", .offset = offsetof(bcmolt_epon_link_cfg_data, key_exchange_config), .type = &type_descr_bcmolt_epon_key_exchange_config }, { .name = "epon_encryption", .descr = "EPON Encryption ", .offset = offsetof(bcmolt_epon_link_cfg_data, epon_encryption), .type = &type_descr_bcmolt_epon_encryption_config }, { .name = "fec_enable", .descr = "FEC enable state for this link.", .offset = offsetof(bcmolt_epon_link_cfg_data, fec_enable), .type = &type_descr_bcmolt_epon_link_fec_en }, { .name = "oam_heartbeat_config", .descr = "OAM heartbeat configuration", .offset = offsetof(bcmolt_epon_link_cfg_data, oam_heartbeat_config), .type = &type_descr_bcmolt_oam_heartbeat_config }, { .name = "upstream_bandwidth", .descr = "Upstream Bandwidth", .offset = offsetof(bcmolt_epon_link_cfg_data, upstream_bandwidth), .type = &type_descr_bcmolt_upstream_bandwidth_distribution }, { .name = "ubd_info", .descr = "Returns the actual values from the UBD. Useful if you want to see what value the firmware chose for a field set to 'automatic'.", .offset = offsetof(bcmolt_epon_link_cfg_data, ubd_info), .type = &type_descr_bcmolt_ubd_info }, { .name = "clock_transport_enable", .descr = "Whether or not to enable clock transport on this link.", .offset = offsetof(bcmolt_epon_link_cfg_data, clock_transport_enable), .type = &type_descr_bcmos_bool }, { .name = "pending_grants", .descr = "The number of pending grants.", .offset = offsetof(bcmolt_epon_link_cfg_data, pending_grants), .type = &type_descr_uint8_t }, { .name = "link_type", .descr = "Link Type", .offset = offsetof(bcmolt_epon_link_cfg_data, link_type), .type = &type_descr_bcmolt_epon_link_type } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_cfg_data = { .name = "bcmolt_epon_link_cfg_data", .descr = "cfg", .size = sizeof(bcmolt_epon_link_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_link_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_link_cfg_data_fields } } };

/* Group: epon_link - stat */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_stat_rx_data_bytes = { .name = "rx_data_bytes", .descr = "The number of data bytes received on this EPON link.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_STAT_ID_RX_DATA_BYTES, .offset = offsetof(bcmolt_epon_link_stat_data, rx_data_bytes), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_stat_rx_data_frames = { .name = "rx_data_frames", .descr = "The number of data frames received on this EPON link.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_STAT_ID_RX_DATA_FRAMES, .offset = offsetof(bcmolt_epon_link_stat_data, rx_data_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_stat_rx_frames_64 = { .name = "rx_frames_64", .descr = "The number of 64 byte frames received on this EPON Link", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_STAT_ID_RX_FRAMES_64, .offset = offsetof(bcmolt_epon_link_stat_data, rx_frames_64), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_stat_rx_frames_65_127 = { .name = "rx_frames_65_127", .descr = "The number of 65 to 127 byte frames received on this EPON Link", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_STAT_ID_RX_FRAMES_65_127, .offset = offsetof(bcmolt_epon_link_stat_data, rx_frames_65_127), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_stat_rx_frames_128_255 = { .name = "rx_frames_128_255", .descr = "The number of 128 to 255 byte frames received on this EPON Link", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_STAT_ID_RX_FRAMES_128_255, .offset = offsetof(bcmolt_epon_link_stat_data, rx_frames_128_255), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_stat_rx_frames_256_511 = { .name = "rx_frames_256_511", .descr = "The number of 256 to 511 byte frames received on this EPON Link", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_STAT_ID_RX_FRAMES_256_511, .offset = offsetof(bcmolt_epon_link_stat_data, rx_frames_256_511), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_stat_rx_frames_512_1023 = { .name = "rx_frames_512_1023", .descr = "The number of 512 to 1023 byte frames received on this EPON Link", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_STAT_ID_RX_FRAMES_512_1023, .offset = offsetof(bcmolt_epon_link_stat_data, rx_frames_512_1023), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_stat_rx_frames_1024_1518 = { .name = "rx_frames_1024_1518", .descr = "The number of 1024 to 1518 byte frames received on this EPON Link", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_STAT_ID_RX_FRAMES_1024_1518, .offset = offsetof(bcmolt_epon_link_stat_data, rx_frames_1024_1518), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_stat_rx_frames_1519_2047 = { .name = "rx_frames_1519_2047", .descr = "The number of 1519 to 2047 byte frames received on this EPON Link", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_STAT_ID_RX_FRAMES_1519_2047, .offset = offsetof(bcmolt_epon_link_stat_data, rx_frames_1519_2047), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_stat_rx_frames_2048_4095 = { .name = "rx_frames_2048_4095", .descr = "The number of 2048 to 4095 byte frames received on this EPON Link", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_STAT_ID_RX_FRAMES_2048_4095, .offset = offsetof(bcmolt_epon_link_stat_data, rx_frames_2048_4095), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_stat_rx_frames_4096_9216 = { .name = "rx_frames_4096_9216", .descr = "The number of 4096 to 9216 byte frames received on this EPON Link", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_STAT_ID_RX_FRAMES_4096_9216, .offset = offsetof(bcmolt_epon_link_stat_data, rx_frames_4096_9216), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_stat_rx_frames_9217_16383 = { .name = "rx_frames_9217_16383", .descr = "The number of 9217 to 16383 byte frames received on this EPON Link", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_STAT_ID_RX_FRAMES_9217_16383, .offset = offsetof(bcmolt_epon_link_stat_data, rx_frames_9217_16383), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_stat_rx_oam_bytes = { .name = "rx_oam_bytes", .descr = "The number of OAM bytes received on this EPON link.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_STAT_ID_RX_OAM_BYTES, .offset = offsetof(bcmolt_epon_link_stat_data, rx_oam_bytes), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_stat_rx_oam_frames = { .name = "rx_oam_frames", .descr = "The number of OAM frames received on this EPON link.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_STAT_ID_RX_OAM_FRAMES, .offset = offsetof(bcmolt_epon_link_stat_data, rx_oam_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_stat_rx_mpcp_frames = { .name = "rx_mpcp_frames", .descr = "The number of MPCP frames received on this EPON link.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_STAT_ID_RX_MPCP_FRAMES, .offset = offsetof(bcmolt_epon_link_stat_data, rx_mpcp_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_stat_rx_broadcast_frames = { .name = "rx_broadcast_frames", .descr = "The number of broadcast frames received on this EPON link.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_STAT_ID_RX_BROADCAST_FRAMES, .offset = offsetof(bcmolt_epon_link_stat_data, rx_broadcast_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_stat_rx_unicast_frames = { .name = "rx_unicast_frames", .descr = "The number of unicast frames received on this EPON link.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_STAT_ID_RX_UNICAST_FRAMES, .offset = offsetof(bcmolt_epon_link_stat_data, rx_unicast_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_stat_rx_multicast_frames = { .name = "rx_multicast_frames", .descr = "The number of multicast frames received on this EPON link.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_STAT_ID_RX_MULTICAST_FRAMES, .offset = offsetof(bcmolt_epon_link_stat_data, rx_multicast_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_stat_rx_report_frames = { .name = "rx_report_frames", .descr = "The number of report frames received on this EPON link.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_STAT_ID_RX_REPORT_FRAMES, .offset = offsetof(bcmolt_epon_link_stat_data, rx_report_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_stat_rx_fcs_error = { .name = "rx_fcs_error", .descr = "The number of bad FCS errors received on this EPON Link", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_STAT_ID_RX_FCS_ERROR, .offset = offsetof(bcmolt_epon_link_stat_data, rx_fcs_error), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_stat_rx_oversize_error = { .name = "rx_oversize_error", .descr = "The number of oversize errors received on this EPON Link", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_STAT_ID_RX_OVERSIZE_ERROR, .offset = offsetof(bcmolt_epon_link_stat_data, rx_oversize_error), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_stat_rx_runt_error = { .name = "rx_runt_error", .descr = "The number of runt errors received on this EPON Link", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_STAT_ID_RX_RUNT_ERROR, .offset = offsetof(bcmolt_epon_link_stat_data, rx_runt_error), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_stat_rx_line_code_error = { .name = "rx_line_code_error", .descr = "The number of line code errors received on this EPON Link", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_STAT_ID_RX_LINE_CODE_ERROR, .offset = offsetof(bcmolt_epon_link_stat_data, rx_line_code_error), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_stat_rx_line_code_error_max = { .name = "rx_line_code_error_max", .descr = "The number of line code errors max received on this EPON Link", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_STAT_ID_RX_LINE_CODE_ERROR_MAX, .offset = offsetof(bcmolt_epon_link_stat_data, rx_line_code_error_max), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_stat_tx_data_bytes = { .name = "tx_data_bytes", .descr = "The number of data bytes transmitted on this EPON link.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_STAT_ID_TX_DATA_BYTES, .offset = offsetof(bcmolt_epon_link_stat_data, tx_data_bytes), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_stat_tx_data_frames = { .name = "tx_data_frames", .descr = "The number of data frames transmitted on this EPON link.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_STAT_ID_TX_DATA_FRAMES, .offset = offsetof(bcmolt_epon_link_stat_data, tx_data_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_stat_tx_frames_64 = { .name = "tx_frames_64", .descr = "The number of 64 byte frames transmitted on this EPON Link", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_STAT_ID_TX_FRAMES_64, .offset = offsetof(bcmolt_epon_link_stat_data, tx_frames_64), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_stat_tx_frames_65_127 = { .name = "tx_frames_65_127", .descr = "The number of 65 to 127 byte frames transmitted on this EPON Link", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_STAT_ID_TX_FRAMES_65_127, .offset = offsetof(bcmolt_epon_link_stat_data, tx_frames_65_127), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_stat_tx_frames_128_255 = { .name = "tx_frames_128_255", .descr = "The number of 128 to 255 byte frames transmitted on this EPON Link", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_STAT_ID_TX_FRAMES_128_255, .offset = offsetof(bcmolt_epon_link_stat_data, tx_frames_128_255), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_stat_tx_frames_256_511 = { .name = "tx_frames_256_511", .descr = "The number of 256 to 511 byte frames transmitted on this EPON Link", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_STAT_ID_TX_FRAMES_256_511, .offset = offsetof(bcmolt_epon_link_stat_data, tx_frames_256_511), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_stat_tx_frames_512_1023 = { .name = "tx_frames_512_1023", .descr = "The number of 512 to 1023 byte frames transmitted on this EPON Link", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_STAT_ID_TX_FRAMES_512_1023, .offset = offsetof(bcmolt_epon_link_stat_data, tx_frames_512_1023), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_stat_tx_frames_1024_1518 = { .name = "tx_frames_1024_1518", .descr = "The number of 1024 to 1518 byte frames transmitted on this EPON Link", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_STAT_ID_TX_FRAMES_1024_1518, .offset = offsetof(bcmolt_epon_link_stat_data, tx_frames_1024_1518), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_stat_tx_frames_1519_2047 = { .name = "tx_frames_1519_2047", .descr = "The number of 1519 to 2047 byte frames transmitted on this EPON Link", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_STAT_ID_TX_FRAMES_1519_2047, .offset = offsetof(bcmolt_epon_link_stat_data, tx_frames_1519_2047), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_stat_tx_frames_2048_4095 = { .name = "tx_frames_2048_4095", .descr = "The number of 2048 to 4095 byte frames transmitted on this EPON Link", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_STAT_ID_TX_FRAMES_2048_4095, .offset = offsetof(bcmolt_epon_link_stat_data, tx_frames_2048_4095), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_stat_tx_frames_4096_9216 = { .name = "tx_frames_4096_9216", .descr = "The number of 4096 to 9216 byte frames transmitted on this EPON Link", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_STAT_ID_TX_FRAMES_4096_9216, .offset = offsetof(bcmolt_epon_link_stat_data, tx_frames_4096_9216), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_stat_tx_frames_9217_16383 = { .name = "tx_frames_9217_16383", .descr = "The number of 9217 to 16383 byte frames transmitted on this EPON Link", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_STAT_ID_TX_FRAMES_9217_16383, .offset = offsetof(bcmolt_epon_link_stat_data, tx_frames_9217_16383), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_stat_tx_oam_bytes = { .name = "tx_oam_bytes", .descr = "The number of OAM bytes transmitted on this EPON link.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_STAT_ID_TX_OAM_BYTES, .offset = offsetof(bcmolt_epon_link_stat_data, tx_oam_bytes), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_stat_tx_oam_frames = { .name = "tx_oam_frames", .descr = "The number of OAM frames transmitted on this EPON link.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_STAT_ID_TX_OAM_FRAMES, .offset = offsetof(bcmolt_epon_link_stat_data, tx_oam_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_stat_tx_mpcp_frames = { .name = "tx_mpcp_frames", .descr = "The number of MPCP frames transmitted on this EPON link.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_STAT_ID_TX_MPCP_FRAMES, .offset = offsetof(bcmolt_epon_link_stat_data, tx_mpcp_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_stat_tx_broadcast_frames = { .name = "tx_broadcast_frames", .descr = "The number of broadcast frames transmitted on this EPON link.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_STAT_ID_TX_BROADCAST_FRAMES, .offset = offsetof(bcmolt_epon_link_stat_data, tx_broadcast_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_stat_tx_unicast_frames = { .name = "tx_unicast_frames", .descr = "The number of unicast frames transmitted on this EPON link.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_STAT_ID_TX_UNICAST_FRAMES, .offset = offsetof(bcmolt_epon_link_stat_data, tx_unicast_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_stat_tx_multicast_frames = { .name = "tx_multicast_frames", .descr = "The number of multicast frames transmitted on this EPON link.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_STAT_ID_TX_MULTICAST_FRAMES, .offset = offsetof(bcmolt_epon_link_stat_data, tx_multicast_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_stat_tx_gates = { .name = "tx_gates", .descr = "The number of gates transmitted on this EPON link.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_STAT_ID_TX_GATES, .offset = offsetof(bcmolt_epon_link_stat_data, tx_gates), .type = &type_descr_uint64_t };
static bcmcli_prop_descr * BCM_DESCR epon_link_stat_prop_array[] = { &prop_descr_epon_link_stat_rx_data_bytes, &prop_descr_epon_link_stat_rx_data_frames, &prop_descr_epon_link_stat_rx_frames_64, &prop_descr_epon_link_stat_rx_frames_65_127, &prop_descr_epon_link_stat_rx_frames_128_255, &prop_descr_epon_link_stat_rx_frames_256_511, &prop_descr_epon_link_stat_rx_frames_512_1023, &prop_descr_epon_link_stat_rx_frames_1024_1518, &prop_descr_epon_link_stat_rx_frames_1519_2047, &prop_descr_epon_link_stat_rx_frames_2048_4095, &prop_descr_epon_link_stat_rx_frames_4096_9216, &prop_descr_epon_link_stat_rx_frames_9217_16383, &prop_descr_epon_link_stat_rx_oam_bytes, &prop_descr_epon_link_stat_rx_oam_frames, &prop_descr_epon_link_stat_rx_mpcp_frames, &prop_descr_epon_link_stat_rx_broadcast_frames, &prop_descr_epon_link_stat_rx_unicast_frames, &prop_descr_epon_link_stat_rx_multicast_frames, &prop_descr_epon_link_stat_rx_report_frames, &prop_descr_epon_link_stat_rx_fcs_error, &prop_descr_epon_link_stat_rx_oversize_error, &prop_descr_epon_link_stat_rx_runt_error, &prop_descr_epon_link_stat_rx_line_code_error, &prop_descr_epon_link_stat_rx_line_code_error_max, &prop_descr_epon_link_stat_tx_data_bytes, &prop_descr_epon_link_stat_tx_data_frames, &prop_descr_epon_link_stat_tx_frames_64, &prop_descr_epon_link_stat_tx_frames_65_127, &prop_descr_epon_link_stat_tx_frames_128_255, &prop_descr_epon_link_stat_tx_frames_256_511, &prop_descr_epon_link_stat_tx_frames_512_1023, &prop_descr_epon_link_stat_tx_frames_1024_1518, &prop_descr_epon_link_stat_tx_frames_1519_2047, &prop_descr_epon_link_stat_tx_frames_2048_4095, &prop_descr_epon_link_stat_tx_frames_4096_9216, &prop_descr_epon_link_stat_tx_frames_9217_16383, &prop_descr_epon_link_stat_tx_oam_bytes, &prop_descr_epon_link_stat_tx_oam_frames, &prop_descr_epon_link_stat_tx_mpcp_frames, &prop_descr_epon_link_stat_tx_broadcast_frames, &prop_descr_epon_link_stat_tx_unicast_frames, &prop_descr_epon_link_stat_tx_multicast_frames, &prop_descr_epon_link_stat_tx_gates };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_link_stat_data_fields[] = { { .name = "rx_data_bytes", .descr = "The number of data bytes received on this EPON link.", .offset = offsetof(bcmolt_epon_link_stat_data, rx_data_bytes), .type = &type_descr_uint64_t }, { .name = "rx_data_frames", .descr = "The number of data frames received on this EPON link.", .offset = offsetof(bcmolt_epon_link_stat_data, rx_data_frames), .type = &type_descr_uint64_t }, { .name = "rx_frames_64", .descr = "The number of 64 byte frames received on this EPON Link", .offset = offsetof(bcmolt_epon_link_stat_data, rx_frames_64), .type = &type_descr_uint64_t }, { .name = "rx_frames_65_127", .descr = "The number of 65 to 127 byte frames received on this EPON Link", .offset = offsetof(bcmolt_epon_link_stat_data, rx_frames_65_127), .type = &type_descr_uint64_t }, { .name = "rx_frames_128_255", .descr = "The number of 128 to 255 byte frames received on this EPON Link", .offset = offsetof(bcmolt_epon_link_stat_data, rx_frames_128_255), .type = &type_descr_uint64_t }, { .name = "rx_frames_256_511", .descr = "The number of 256 to 511 byte frames received on this EPON Link", .offset = offsetof(bcmolt_epon_link_stat_data, rx_frames_256_511), .type = &type_descr_uint64_t }, { .name = "rx_frames_512_1023", .descr = "The number of 512 to 1023 byte frames received on this EPON Link", .offset = offsetof(bcmolt_epon_link_stat_data, rx_frames_512_1023), .type = &type_descr_uint64_t }, { .name = "rx_frames_1024_1518", .descr = "The number of 1024 to 1518 byte frames received on this EPON Link", .offset = offsetof(bcmolt_epon_link_stat_data, rx_frames_1024_1518), .type = &type_descr_uint64_t }, { .name = "rx_frames_1519_2047", .descr = "The number of 1519 to 2047 byte frames received on this EPON Link", .offset = offsetof(bcmolt_epon_link_stat_data, rx_frames_1519_2047), .type = &type_descr_uint64_t }, { .name = "rx_frames_2048_4095", .descr = "The number of 2048 to 4095 byte frames received on this EPON Link", .offset = offsetof(bcmolt_epon_link_stat_data, rx_frames_2048_4095), .type = &type_descr_uint64_t }, { .name = "rx_frames_4096_9216", .descr = "The number of 4096 to 9216 byte frames received on this EPON Link", .offset = offsetof(bcmolt_epon_link_stat_data, rx_frames_4096_9216), .type = &type_descr_uint64_t }, { .name = "rx_frames_9217_16383", .descr = "The number of 9217 to 16383 byte frames received on this EPON Link", .offset = offsetof(bcmolt_epon_link_stat_data, rx_frames_9217_16383), .type = &type_descr_uint64_t }, { .name = "rx_oam_bytes", .descr = "The number of OAM bytes received on this EPON link.", .offset = offsetof(bcmolt_epon_link_stat_data, rx_oam_bytes), .type = &type_descr_uint64_t }, { .name = "rx_oam_frames", .descr = "The number of OAM frames received on this EPON link.", .offset = offsetof(bcmolt_epon_link_stat_data, rx_oam_frames), .type = &type_descr_uint64_t }, { .name = "rx_mpcp_frames", .descr = "The number of MPCP frames received on this EPON link.", .offset = offsetof(bcmolt_epon_link_stat_data, rx_mpcp_frames), .type = &type_descr_uint64_t }, { .name = "rx_broadcast_frames", .descr = "The number of broadcast frames received on this EPON link.", .offset = offsetof(bcmolt_epon_link_stat_data, rx_broadcast_frames), .type = &type_descr_uint64_t }, { .name = "rx_unicast_frames", .descr = "The number of unicast frames received on this EPON link.", .offset = offsetof(bcmolt_epon_link_stat_data, rx_unicast_frames), .type = &type_descr_uint64_t }, { .name = "rx_multicast_frames", .descr = "The number of multicast frames received on this EPON link.", .offset = offsetof(bcmolt_epon_link_stat_data, rx_multicast_frames), .type = &type_descr_uint64_t }, { .name = "rx_report_frames", .descr = "The number of report frames received on this EPON link.", .offset = offsetof(bcmolt_epon_link_stat_data, rx_report_frames), .type = &type_descr_uint64_t }, { .name = "rx_fcs_error", .descr = "The number of bad FCS errors received on this EPON Link", .offset = offsetof(bcmolt_epon_link_stat_data, rx_fcs_error), .type = &type_descr_uint64_t }, { .name = "rx_oversize_error", .descr = "The number of oversize errors received on this EPON Link", .offset = offsetof(bcmolt_epon_link_stat_data, rx_oversize_error), .type = &type_descr_uint64_t }, { .name = "rx_runt_error", .descr = "The number of runt errors received on this EPON Link", .offset = offsetof(bcmolt_epon_link_stat_data, rx_runt_error), .type = &type_descr_uint64_t }, { .name = "rx_line_code_error", .descr = "The number of line code errors received on this EPON Link", .offset = offsetof(bcmolt_epon_link_stat_data, rx_line_code_error), .type = &type_descr_uint64_t }, { .name = "rx_line_code_error_max", .descr = "The number of line code errors max received on this EPON Link", .offset = offsetof(bcmolt_epon_link_stat_data, rx_line_code_error_max), .type = &type_descr_uint64_t }, { .name = "tx_data_bytes", .descr = "The number of data bytes transmitted on this EPON link.", .offset = offsetof(bcmolt_epon_link_stat_data, tx_data_bytes), .type = &type_descr_uint64_t }, { .name = "tx_data_frames", .descr = "The number of data frames transmitted on this EPON link.", .offset = offsetof(bcmolt_epon_link_stat_data, tx_data_frames), .type = &type_descr_uint64_t }, { .name = "tx_frames_64", .descr = "The number of 64 byte frames transmitted on this EPON Link", .offset = offsetof(bcmolt_epon_link_stat_data, tx_frames_64), .type = &type_descr_uint64_t }, { .name = "tx_frames_65_127", .descr = "The number of 65 to 127 byte frames transmitted on this EPON Link", .offset = offsetof(bcmolt_epon_link_stat_data, tx_frames_65_127), .type = &type_descr_uint64_t }, { .name = "tx_frames_128_255", .descr = "The number of 128 to 255 byte frames transmitted on this EPON Link", .offset = offsetof(bcmolt_epon_link_stat_data, tx_frames_128_255), .type = &type_descr_uint64_t }, { .name = "tx_frames_256_511", .descr = "The number of 256 to 511 byte frames transmitted on this EPON Link", .offset = offsetof(bcmolt_epon_link_stat_data, tx_frames_256_511), .type = &type_descr_uint64_t }, { .name = "tx_frames_512_1023", .descr = "The number of 512 to 1023 byte frames transmitted on this EPON Link", .offset = offsetof(bcmolt_epon_link_stat_data, tx_frames_512_1023), .type = &type_descr_uint64_t }, { .name = "tx_frames_1024_1518", .descr = "The number of 1024 to 1518 byte frames transmitted on this EPON Link", .offset = offsetof(bcmolt_epon_link_stat_data, tx_frames_1024_1518), .type = &type_descr_uint64_t }, { .name = "tx_frames_1519_2047", .descr = "The number of 1519 to 2047 byte frames transmitted on this EPON Link", .offset = offsetof(bcmolt_epon_link_stat_data, tx_frames_1519_2047), .type = &type_descr_uint64_t }, { .name = "tx_frames_2048_4095", .descr = "The number of 2048 to 4095 byte frames transmitted on this EPON Link", .offset = offsetof(bcmolt_epon_link_stat_data, tx_frames_2048_4095), .type = &type_descr_uint64_t }, { .name = "tx_frames_4096_9216", .descr = "The number of 4096 to 9216 byte frames transmitted on this EPON Link", .offset = offsetof(bcmolt_epon_link_stat_data, tx_frames_4096_9216), .type = &type_descr_uint64_t }, { .name = "tx_frames_9217_16383", .descr = "The number of 9217 to 16383 byte frames transmitted on this EPON Link", .offset = offsetof(bcmolt_epon_link_stat_data, tx_frames_9217_16383), .type = &type_descr_uint64_t }, { .name = "tx_oam_bytes", .descr = "The number of OAM bytes transmitted on this EPON link.", .offset = offsetof(bcmolt_epon_link_stat_data, tx_oam_bytes), .type = &type_descr_uint64_t }, { .name = "tx_oam_frames", .descr = "The number of OAM frames transmitted on this EPON link.", .offset = offsetof(bcmolt_epon_link_stat_data, tx_oam_frames), .type = &type_descr_uint64_t }, { .name = "tx_mpcp_frames", .descr = "The number of MPCP frames transmitted on this EPON link.", .offset = offsetof(bcmolt_epon_link_stat_data, tx_mpcp_frames), .type = &type_descr_uint64_t }, { .name = "tx_broadcast_frames", .descr = "The number of broadcast frames transmitted on this EPON link.", .offset = offsetof(bcmolt_epon_link_stat_data, tx_broadcast_frames), .type = &type_descr_uint64_t }, { .name = "tx_unicast_frames", .descr = "The number of unicast frames transmitted on this EPON link.", .offset = offsetof(bcmolt_epon_link_stat_data, tx_unicast_frames), .type = &type_descr_uint64_t }, { .name = "tx_multicast_frames", .descr = "The number of multicast frames transmitted on this EPON link.", .offset = offsetof(bcmolt_epon_link_stat_data, tx_multicast_frames), .type = &type_descr_uint64_t }, { .name = "tx_gates", .descr = "The number of gates transmitted on this EPON link.", .offset = offsetof(bcmolt_epon_link_stat_data, tx_gates), .type = &type_descr_uint64_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_stat_data = { .name = "bcmolt_epon_link_stat_data", .descr = "stat", .size = sizeof(bcmolt_epon_link_stat_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_link_stat_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_link_stat_data_fields } } };

/* Group: epon_link - force_rediscovery */
static bcmcli_prop_descr * BCM_DESCR epon_link_force_rediscovery_prop_array[] = { };

/* Group: epon_link - delete_link */
static bcmcli_prop_descr * BCM_DESCR epon_link_delete_link_prop_array[] = { };

/* Group: epon_link - key_exchange_failure */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_key_exchange_failure_alarm_status = { .name = "alarm_status", .descr = "alarm status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_KEY_EXCHANGE_FAILURE_ID_ALARM_STATUS, .offset = offsetof(bcmolt_epon_link_key_exchange_failure_data, alarm_status), .type = &type_descr_bcmolt_status };
static bcmcli_prop_descr * BCM_DESCR epon_link_key_exchange_failure_prop_array[] = { &prop_descr_epon_link_key_exchange_failure_alarm_status };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_link_key_exchange_failure_data_fields[] = { { .name = "alarm_status", .descr = "alarm status", .offset = offsetof(bcmolt_epon_link_key_exchange_failure_data, alarm_status), .type = &type_descr_bcmolt_status } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_key_exchange_failure_data = { .name = "bcmolt_epon_link_key_exchange_failure_data", .descr = "The OLT failed to receive an updated encryption key within the expected time period after encryption key exchange has been initiated.", .size = sizeof(bcmolt_epon_link_key_exchange_failure_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_link_key_exchange_failure_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_link_key_exchange_failure_data_fields } } };

/* Group: epon_link - encryption_enabled */
static bcmcli_prop_descr * BCM_DESCR epon_link_encryption_enabled_prop_array[] = { };

/* Group: epon_link - mpcp_reg_ack_timeout */
static bcmcli_prop_descr * BCM_DESCR epon_link_mpcp_reg_ack_timeout_prop_array[] = { };

/* Group: epon_link - range_value_changed */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_range_value_changed_range_value_tq = { .name = "range_value_tq", .descr = "New range value.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_RANGE_VALUE_CHANGED_ID_RANGE_VALUE_TQ, .offset = offsetof(bcmolt_epon_link_range_value_changed_data, range_value_tq), .type = &type_descr_uint32_t };
static bcmcli_prop_descr * BCM_DESCR epon_link_range_value_changed_prop_array[] = { &prop_descr_epon_link_range_value_changed_range_value_tq };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_link_range_value_changed_data_fields[] = { { .name = "range_value_tq", .descr = "New range value.", .offset = offsetof(bcmolt_epon_link_range_value_changed_data, range_value_tq), .type = &type_descr_uint32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_range_value_changed_data = { .name = "bcmolt_epon_link_range_value_changed_data", .descr = "Indication sent when a range value has been changed.", .size = sizeof(bcmolt_epon_link_range_value_changed_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_link_range_value_changed_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_link_range_value_changed_data_fields } } };

/* Group: epon_link - protection_switch_occurred */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_protection_switch_occurred_protection_status = { .name = "protection_status", .descr = "The link's post-switch role (working or standby).", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_PROTECTION_SWITCH_OCCURRED_ID_PROTECTION_STATUS, .offset = offsetof(bcmolt_epon_link_protection_switch_occurred_data, protection_status), .type = &type_descr_bcmolt_epon_protection_state };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_protection_switch_occurred_range_value_tq = { .name = "range_value_tq", .descr = "Current range value in time quanta.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_PROTECTION_SWITCH_OCCURRED_ID_RANGE_VALUE_TQ, .offset = offsetof(bcmolt_epon_link_protection_switch_occurred_data, range_value_tq), .type = &type_descr_uint32_t };
static bcmcli_prop_descr * BCM_DESCR epon_link_protection_switch_occurred_prop_array[] = { &prop_descr_epon_link_protection_switch_occurred_protection_status, &prop_descr_epon_link_protection_switch_occurred_range_value_tq };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_link_protection_switch_occurred_data_fields[] = { { .name = "protection_status", .descr = "The link's post-switch role (working or standby).", .offset = offsetof(bcmolt_epon_link_protection_switch_occurred_data, protection_status), .type = &type_descr_bcmolt_epon_protection_state }, { .name = "range_value_tq", .descr = "Current range value in time quanta.", .offset = offsetof(bcmolt_epon_link_protection_switch_occurred_data, range_value_tq), .type = &type_descr_uint32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_protection_switch_occurred_data = { .name = "bcmolt_epon_link_protection_switch_occurred_data", .descr = "The link has undergone a protection switch event.", .size = sizeof(bcmolt_epon_link_protection_switch_occurred_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_link_protection_switch_occurred_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_link_protection_switch_occurred_data_fields } } };

/* Group: epon_link - duplicate_mpcp_registration_request */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_duplicate_mpcp_registration_request_initial_range_tq = { .name = "initial_range_tq", .descr = "Range as calculated from the first frame received.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_DUPLICATE_MPCP_REGISTRATION_REQUEST_ID_INITIAL_RANGE_TQ, .offset = offsetof(bcmolt_epon_link_duplicate_mpcp_registration_request_data, initial_range_tq), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_duplicate_mpcp_registration_request_current_range_tq = { .name = "current_range_tq", .descr = "Range as calculated from the current frame.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_DUPLICATE_MPCP_REGISTRATION_REQUEST_ID_CURRENT_RANGE_TQ, .offset = offsetof(bcmolt_epon_link_duplicate_mpcp_registration_request_data, current_range_tq), .type = &type_descr_uint32_t };
static bcmcli_prop_descr * BCM_DESCR epon_link_duplicate_mpcp_registration_request_prop_array[] = { &prop_descr_epon_link_duplicate_mpcp_registration_request_initial_range_tq, &prop_descr_epon_link_duplicate_mpcp_registration_request_current_range_tq };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_link_duplicate_mpcp_registration_request_data_fields[] = { { .name = "initial_range_tq", .descr = "Range as calculated from the first frame received.", .offset = offsetof(bcmolt_epon_link_duplicate_mpcp_registration_request_data, initial_range_tq), .type = &type_descr_uint32_t }, { .name = "current_range_tq", .descr = "Range as calculated from the current frame.", .offset = offsetof(bcmolt_epon_link_duplicate_mpcp_registration_request_data, current_range_tq), .type = &type_descr_uint32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_duplicate_mpcp_registration_request_data = { .name = "bcmolt_epon_link_duplicate_mpcp_registration_request_data", .descr = "A register requested was received for a link with the same MAC address as a link that has already registered.", .size = sizeof(bcmolt_epon_link_duplicate_mpcp_registration_request_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_link_duplicate_mpcp_registration_request_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_link_duplicate_mpcp_registration_request_data_fields } } };

/* Group: epon_link - link_speed_mismatch */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_link_speed_mismatch_previous_rate = { .name = "previous_rate", .descr = "PON rate link initially registered", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_LINK_SPEED_MISMATCH_ID_PREVIOUS_RATE, .offset = offsetof(bcmolt_epon_link_link_speed_mismatch_data, previous_rate), .type = &type_descr_bcmolt_epon_link_rate };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_link_speed_mismatch_current_rate = { .name = "current_rate", .descr = "PON rate link is currently attempting to register at", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_LINK_SPEED_MISMATCH_ID_CURRENT_RATE, .offset = offsetof(bcmolt_epon_link_link_speed_mismatch_data, current_rate), .type = &type_descr_bcmolt_epon_link_rate };
static bcmcli_prop_descr * BCM_DESCR epon_link_link_speed_mismatch_prop_array[] = { &prop_descr_epon_link_link_speed_mismatch_previous_rate, &prop_descr_epon_link_link_speed_mismatch_current_rate };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_link_link_speed_mismatch_data_fields[] = { { .name = "previous_rate", .descr = "PON rate link initially registered", .offset = offsetof(bcmolt_epon_link_link_speed_mismatch_data, previous_rate), .type = &type_descr_bcmolt_epon_link_rate }, { .name = "current_rate", .descr = "PON rate link is currently attempting to register at", .offset = offsetof(bcmolt_epon_link_link_speed_mismatch_data, current_rate), .type = &type_descr_bcmolt_epon_link_rate } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_link_speed_mismatch_data = { .name = "bcmolt_epon_link_link_speed_mismatch_data", .descr = "Host will receive this indication if a link registers then attempts to register later at a different speed, or if the link registers at a different speed than the speed with which it was pre-provisioned.", .size = sizeof(bcmolt_epon_link_link_speed_mismatch_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_link_link_speed_mismatch_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_link_link_speed_mismatch_data_fields } } };

/* Group: epon_link - mpcp_report_timeout */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_mpcp_report_timeout_alarm_status = { .name = "alarm_status", .descr = "Alarm Status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_MPCP_REPORT_TIMEOUT_ID_ALARM_STATUS, .offset = offsetof(bcmolt_epon_link_mpcp_report_timeout_data, alarm_status), .type = &type_descr_bcmolt_status };
static bcmcli_prop_descr * BCM_DESCR epon_link_mpcp_report_timeout_prop_array[] = { &prop_descr_epon_link_mpcp_report_timeout_alarm_status };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_link_mpcp_report_timeout_data_fields[] = { { .name = "alarm_status", .descr = "Alarm Status", .offset = offsetof(bcmolt_epon_link_mpcp_report_timeout_data, alarm_status), .type = &type_descr_bcmolt_status } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_mpcp_report_timeout_data = { .name = "bcmolt_epon_link_mpcp_report_timeout_data", .descr = "The provisioned limit between reports for the specified link has been exceeded.  This link will be de-registered, and the alarm_status set when this occurs.  The alarm_status will be cleared when the link attempts to register again.", .size = sizeof(bcmolt_epon_link_mpcp_report_timeout_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_link_mpcp_report_timeout_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_link_mpcp_report_timeout_data_fields } } };

/* Group: epon_link - oam_keepalive_timeout */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_oam_keepalive_timeout_alarm_status = { .name = "alarm_status", .descr = "Alarm Status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_OAM_KEEPALIVE_TIMEOUT_ID_ALARM_STATUS, .offset = offsetof(bcmolt_epon_link_oam_keepalive_timeout_data, alarm_status), .type = &type_descr_bcmolt_status };
static bcmcli_prop_descr * BCM_DESCR epon_link_oam_keepalive_timeout_prop_array[] = { &prop_descr_epon_link_oam_keepalive_timeout_alarm_status };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_link_oam_keepalive_timeout_data_fields[] = { { .name = "alarm_status", .descr = "Alarm Status", .offset = offsetof(bcmolt_epon_link_oam_keepalive_timeout_data, alarm_status), .type = &type_descr_bcmolt_status } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_oam_keepalive_timeout_data = { .name = "bcmolt_epon_link_oam_keepalive_timeout_data", .descr = "The provisioned time limit between receiving upstream info frames has been exceeded.  Normally an ONU will reset its OAM state machine when this occurrs and the host must re-negotiate OAM and reprovision the link.", .size = sizeof(bcmolt_epon_link_oam_keepalive_timeout_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_link_oam_keepalive_timeout_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_link_oam_keepalive_timeout_data_fields } } };

/* Group: epon_link - mpcp_discovered */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_mpcp_discovered_link_info = { .name = "link_info", .descr = "Information associated with the discovered link.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_MPCP_DISCOVERED_ID_LINK_INFO, .offset = offsetof(bcmolt_epon_link_mpcp_discovered_data, link_info), .type = &type_descr_bcmolt_epon_link_info };
static bcmcli_prop_descr * BCM_DESCR epon_link_mpcp_discovered_prop_array[] = { &prop_descr_epon_link_mpcp_discovered_link_info };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_link_mpcp_discovered_data_fields[] = { { .name = "link_info", .descr = "Information associated with the discovered link.", .offset = offsetof(bcmolt_epon_link_mpcp_discovered_data, link_info), .type = &type_descr_bcmolt_epon_link_info } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_mpcp_discovered_data = { .name = "bcmolt_epon_link_mpcp_discovered_data", .descr = "A link has completed MPCP link registration.", .size = sizeof(bcmolt_epon_link_mpcp_discovered_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_link_mpcp_discovered_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_link_mpcp_discovered_data_fields } } };

/* Group: epon_link - mpcp_deregistered */
static bcmcli_prop_descr * BCM_DESCR epon_link_mpcp_deregistered_prop_array[] = { };

/* Group: epon_link - preprovisioned_link_created */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_preprovisioned_link_created_link_info = { .name = "link_info", .descr = "Information associated with the link.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_PREPROVISIONED_LINK_CREATED_ID_LINK_INFO, .offset = offsetof(bcmolt_epon_link_preprovisioned_link_created_data, link_info), .type = &type_descr_bcmolt_epon_link_info };
static bcmcli_prop_descr * BCM_DESCR epon_link_preprovisioned_link_created_prop_array[] = { &prop_descr_epon_link_preprovisioned_link_created_link_info };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_link_preprovisioned_link_created_data_fields[] = { { .name = "link_info", .descr = "Information associated with the link.", .offset = offsetof(bcmolt_epon_link_preprovisioned_link_created_data, link_info), .type = &type_descr_bcmolt_epon_link_info } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_preprovisioned_link_created_data = { .name = "bcmolt_epon_link_preprovisioned_link_created_data", .descr = "Raised after an 'add_link' operation on an EPON NI completes successfully", .size = sizeof(bcmolt_epon_link_preprovisioned_link_created_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_link_preprovisioned_link_created_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_link_preprovisioned_link_created_data_fields } } };

/* Group: epon_link - oam_keepalive_timer_start */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_oam_keepalive_timer_start_send_period = { .name = "send_period", .descr = "The period at which to send OAM info frames (in seconds).", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_OAM_KEEPALIVE_TIMER_START_ID_SEND_PERIOD, .offset = offsetof(bcmolt_epon_link_oam_keepalive_timer_start_data, send_period), .type = &type_descr_uint16_t };
static bcmcli_prop_descr * BCM_DESCR epon_link_oam_keepalive_timer_start_prop_array[] = { &prop_descr_epon_link_oam_keepalive_timer_start_send_period };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_link_oam_keepalive_timer_start_data_fields[] = { { .name = "send_period", .descr = "The period at which to send OAM info frames (in seconds).", .offset = offsetof(bcmolt_epon_link_oam_keepalive_timer_start_data, send_period), .type = &type_descr_uint16_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_oam_keepalive_timer_start_data = { .name = "bcmolt_epon_link_oam_keepalive_timer_start_data", .descr = "Start the OAM keepalive timer against this link.", .size = sizeof(bcmolt_epon_link_oam_keepalive_timer_start_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_link_oam_keepalive_timer_start_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_link_oam_keepalive_timer_start_data_fields } } };

/* Group: epon_link - oam_keepalive_timer_stop */
static bcmcli_prop_descr * BCM_DESCR epon_link_oam_keepalive_timer_stop_prop_array[] = { };

/* Group: epon_link - key_exchange_start */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_key_exchange_start_period = { .name = "period", .descr = "Key exchange period in seconds.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_KEY_EXCHANGE_START_ID_PERIOD, .offset = offsetof(bcmolt_epon_link_key_exchange_start_data, period), .type = &type_descr_uint16_t };
static bcmcli_prop_descr * BCM_DESCR epon_link_key_exchange_start_prop_array[] = { &prop_descr_epon_link_key_exchange_start_period };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_link_key_exchange_start_data_fields[] = { { .name = "period", .descr = "Key exchange period in seconds.", .offset = offsetof(bcmolt_epon_link_key_exchange_start_data, period), .type = &type_descr_uint16_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_key_exchange_start_data = { .name = "bcmolt_epon_link_key_exchange_start_data", .descr = "Apply the corresponding provisioning for 'epon_link.key_exchange_config' against this link and then start key exchange timer with the given period.", .size = sizeof(bcmolt_epon_link_key_exchange_start_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_link_key_exchange_start_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_link_key_exchange_start_data_fields } } };

/* Group: epon_link - key_exchange_stop */
static bcmcli_prop_descr * BCM_DESCR epon_link_key_exchange_stop_prop_array[] = { };

/* Group: epon_link - oam_keepalive_timer_started */
static bcmcli_prop_descr * BCM_DESCR epon_link_oam_keepalive_timer_started_prop_array[] = { };

/* Group: epon_link - oam_keepalive_timer_stopped */
static bcmcli_prop_descr * BCM_DESCR epon_link_oam_keepalive_timer_stopped_prop_array[] = { };

/* Group: epon_link - key_exchange_started */
static bcmcli_prop_descr * BCM_DESCR epon_link_key_exchange_started_prop_array[] = { };

/* Group: epon_link - key_exchange_stopped */
static bcmcli_prop_descr * BCM_DESCR epon_link_key_exchange_stopped_prop_array[] = { };

/* Group: epon_link - static_registration */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_static_registration_laseron_time_tq = { .name = "laseron_time_tq", .descr = "Laser-on time in time quanta.\\", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_STATIC_REGISTRATION_ID_LASERON_TIME_TQ, .offset = offsetof(bcmolt_epon_link_static_registration_data, laseron_time_tq), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_static_registration_laseroff_time_tq = { .name = "laseroff_time_tq", .descr = "Laser-off time in time quanta.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_STATIC_REGISTRATION_ID_LASEROFF_TIME_TQ, .offset = offsetof(bcmolt_epon_link_static_registration_data, laseroff_time_tq), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_static_registration_range_value_tq = { .name = "range_value_tq", .descr = "Range value used for this link - in time quanta.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_STATIC_REGISTRATION_ID_RANGE_VALUE_TQ, .offset = offsetof(bcmolt_epon_link_static_registration_data, range_value_tq), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_static_registration_pending_grants = { .name = "pending_grants", .descr = "The number of pending grants.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_STATIC_REGISTRATION_ID_PENDING_GRANTS, .offset = offsetof(bcmolt_epon_link_static_registration_data, pending_grants), .type = &type_descr_uint8_t };
static bcmcli_prop_descr * BCM_DESCR epon_link_static_registration_prop_array[] = { &prop_descr_epon_link_static_registration_laseron_time_tq, &prop_descr_epon_link_static_registration_laseroff_time_tq, &prop_descr_epon_link_static_registration_range_value_tq, &prop_descr_epon_link_static_registration_pending_grants };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_link_static_registration_data_fields[] = { { .name = "laseron_time_tq", .descr = "Laser-on time in time quanta.\\", .offset = offsetof(bcmolt_epon_link_static_registration_data, laseron_time_tq), .type = &type_descr_uint32_t }, { .name = "laseroff_time_tq", .descr = "Laser-off time in time quanta.", .offset = offsetof(bcmolt_epon_link_static_registration_data, laseroff_time_tq), .type = &type_descr_uint32_t }, { .name = "range_value_tq", .descr = "Range value used for this link - in time quanta.", .offset = offsetof(bcmolt_epon_link_static_registration_data, range_value_tq), .type = &type_descr_uint32_t }, { .name = "pending_grants", .descr = "The number of pending grants.", .offset = offsetof(bcmolt_epon_link_static_registration_data, pending_grants), .type = &type_descr_uint8_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_static_registration_data = { .name = "bcmolt_epon_link_static_registration_data", .descr = "Statically registers the logical link", .size = sizeof(bcmolt_epon_link_static_registration_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_link_static_registration_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_link_static_registration_data_fields } } };

/* Group: epon_link - static_registration_done */
static bcmcli_prop_descr * BCM_DESCR epon_link_static_registration_done_prop_array[] = { };

/* Group: epon_link - rerange_failure */
static bcmcli_prop_descr * BCM_DESCR epon_link_rerange_failure_prop_array[] = { };

/* Group: epon_link - inject_frame */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_inject_frame_frame = { .name = "frame", .descr = "Complete contents of the frame beginning with the DA up through but not including the CRC.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_INJECT_FRAME_ID_FRAME, .offset = offsetof(bcmolt_epon_link_inject_frame_data, frame), .type = &type_descr_bcmolt_ethernet_frame_unmasked };
static bcmcli_prop_descr * BCM_DESCR epon_link_inject_frame_prop_array[] = { &prop_descr_epon_link_inject_frame_frame };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_link_inject_frame_data_fields[] = { { .name = "frame", .descr = "Complete contents of the frame beginning with the DA up through but not including the CRC.", .offset = offsetof(bcmolt_epon_link_inject_frame_data, frame), .type = &type_descr_bcmolt_ethernet_frame_unmasked } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_inject_frame_data = { .name = "bcmolt_epon_link_inject_frame_data", .descr = "Send an arbitrary frame across the specified link.", .size = sizeof(bcmolt_epon_link_inject_frame_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_link_inject_frame_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_link_inject_frame_data_fields } } };

/* Group: epon_link - frame_captured */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_frame_captured_frame = { .name = "frame", .descr = "Contents of the frame.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_FRAME_CAPTURED_ID_FRAME, .offset = offsetof(bcmolt_epon_link_frame_captured_data, frame), .type = &type_descr_bcmolt_u8_list_u32 };
static bcmcli_prop_descr * BCM_DESCR epon_link_frame_captured_prop_array[] = { &prop_descr_epon_link_frame_captured_frame };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_link_frame_captured_data_fields[] = { { .name = "frame", .descr = "Contents of the frame.", .offset = offsetof(bcmolt_epon_link_frame_captured_data, frame), .type = &type_descr_bcmolt_u8_list_u32 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_frame_captured_data = { .name = "bcmolt_epon_link_frame_captured_data", .descr = "A frame matching host-specified criteria was received.", .size = sizeof(bcmolt_epon_link_frame_captured_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_link_frame_captured_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_link_frame_captured_data_fields } } };

/* Group: epon_link - link_deleted */
static bcmcli_prop_descr * BCM_DESCR epon_link_link_deleted_prop_array[] = { };

/* Group: epon_link - stat_cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_stat_cfg_cfg = { .name = "cfg", .descr = "Statistic alarm configuration.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_STAT_CFG_ID_CFG, .offset = offsetof(bcmolt_epon_link_stat_cfg_data, cfg), .type = &type_descr_bcmolt_stat_alarm_config };
static bcmcli_prop_descr * BCM_DESCR epon_link_stat_cfg_prop_array[] = { &prop_descr_epon_link_stat_cfg_cfg };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_link_stat_cfg_data_fields[] = { { .name = "cfg", .descr = "Statistic alarm configuration.", .offset = offsetof(bcmolt_epon_link_stat_cfg_data, cfg), .type = &type_descr_bcmolt_stat_alarm_config } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_stat_cfg_data = { .name = "bcmolt_epon_link_stat_cfg_data", .descr = "Statistic Configuration", .size = sizeof(bcmolt_epon_link_stat_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_link_stat_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_link_stat_cfg_data_fields } } };

/* Group: epon_link - stat_alarm_raised */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_stat_alarm_raised_stat = { .name = "stat", .descr = "Statistic identifier.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_STAT_ALARM_RAISED_ID_STAT, .offset = offsetof(bcmolt_epon_link_stat_alarm_raised_data, stat), .type = &type_descr_bcmolt_epon_link_stat_id };
static bcmcli_prop_descr * BCM_DESCR epon_link_stat_alarm_raised_prop_array[] = { &prop_descr_epon_link_stat_alarm_raised_stat };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_link_stat_alarm_raised_data_fields[] = { { .name = "stat", .descr = "Statistic identifier.", .offset = offsetof(bcmolt_epon_link_stat_alarm_raised_data, stat), .type = &type_descr_bcmolt_epon_link_stat_id } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_stat_alarm_raised_data = { .name = "bcmolt_epon_link_stat_alarm_raised_data", .descr = "Sent when a configured statistic alarm condition has been met.", .size = sizeof(bcmolt_epon_link_stat_alarm_raised_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_link_stat_alarm_raised_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_link_stat_alarm_raised_data_fields } } };

/* Group: epon_link - stat_alarm_cleared */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_stat_alarm_cleared_stat = { .name = "stat", .descr = "Statistic identifier.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_STAT_ALARM_CLEARED_ID_STAT, .offset = offsetof(bcmolt_epon_link_stat_alarm_cleared_data, stat), .type = &type_descr_bcmolt_epon_link_stat_id };
static bcmcli_prop_descr * BCM_DESCR epon_link_stat_alarm_cleared_prop_array[] = { &prop_descr_epon_link_stat_alarm_cleared_stat };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_link_stat_alarm_cleared_data_fields[] = { { .name = "stat", .descr = "Statistic identifier.", .offset = offsetof(bcmolt_epon_link_stat_alarm_cleared_data, stat), .type = &type_descr_bcmolt_epon_link_stat_id } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_stat_alarm_cleared_data = { .name = "bcmolt_epon_link_stat_alarm_cleared_data", .descr = "Sent when a configured statistic alarm condition is no longer met.", .size = sizeof(bcmolt_epon_link_stat_alarm_cleared_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_link_stat_alarm_cleared_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_link_stat_alarm_cleared_data_fields } } };

/* Group: epon_link - auto_cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_auto_cfg_duplicate_mpcp_registration_request = { .name = "duplicate_mpcp_registration_request", .descr = "If true, indications of type \"duplicate_mpcp_registration_request\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_AUTO_CFG_ID_DUPLICATE_MPCP_REGISTRATION_REQUEST, .offset = offsetof(bcmolt_epon_link_auto_cfg_data, duplicate_mpcp_registration_request), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_auto_cfg_encryption_enabled = { .name = "encryption_enabled", .descr = "If true, indications of type \"encryption_enabled\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_AUTO_CFG_ID_ENCRYPTION_ENABLED, .offset = offsetof(bcmolt_epon_link_auto_cfg_data, encryption_enabled), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_auto_cfg_key_exchange_failure = { .name = "key_exchange_failure", .descr = "If true, indications of type \"key_exchange_failure\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_AUTO_CFG_ID_KEY_EXCHANGE_FAILURE, .offset = offsetof(bcmolt_epon_link_auto_cfg_data, key_exchange_failure), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_auto_cfg_key_exchange_started = { .name = "key_exchange_started", .descr = "If true, indications of type \"key_exchange_started\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_AUTO_CFG_ID_KEY_EXCHANGE_STARTED, .offset = offsetof(bcmolt_epon_link_auto_cfg_data, key_exchange_started), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_auto_cfg_key_exchange_stopped = { .name = "key_exchange_stopped", .descr = "If true, indications of type \"key_exchange_stopped\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_AUTO_CFG_ID_KEY_EXCHANGE_STOPPED, .offset = offsetof(bcmolt_epon_link_auto_cfg_data, key_exchange_stopped), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_auto_cfg_link_deleted = { .name = "link_deleted", .descr = "If true, indications of type \"link_deleted\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_AUTO_CFG_ID_LINK_DELETED, .offset = offsetof(bcmolt_epon_link_auto_cfg_data, link_deleted), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_auto_cfg_link_speed_mismatch = { .name = "link_speed_mismatch", .descr = "If true, indications of type \"link_speed_mismatch\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_AUTO_CFG_ID_LINK_SPEED_MISMATCH, .offset = offsetof(bcmolt_epon_link_auto_cfg_data, link_speed_mismatch), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_auto_cfg_mpcp_deregistered = { .name = "mpcp_deregistered", .descr = "If true, indications of type \"mpcp_deregistered\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_AUTO_CFG_ID_MPCP_DEREGISTERED, .offset = offsetof(bcmolt_epon_link_auto_cfg_data, mpcp_deregistered), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_auto_cfg_mpcp_discovered = { .name = "mpcp_discovered", .descr = "If true, indications of type \"mpcp_discovered\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_AUTO_CFG_ID_MPCP_DISCOVERED, .offset = offsetof(bcmolt_epon_link_auto_cfg_data, mpcp_discovered), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_auto_cfg_mpcp_reg_ack_timeout = { .name = "mpcp_reg_ack_timeout", .descr = "If true, indications of type \"mpcp_reg_ack_timeout\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_AUTO_CFG_ID_MPCP_REG_ACK_TIMEOUT, .offset = offsetof(bcmolt_epon_link_auto_cfg_data, mpcp_reg_ack_timeout), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_auto_cfg_mpcp_report_timeout = { .name = "mpcp_report_timeout", .descr = "If true, indications of type \"mpcp_report_timeout\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_AUTO_CFG_ID_MPCP_REPORT_TIMEOUT, .offset = offsetof(bcmolt_epon_link_auto_cfg_data, mpcp_report_timeout), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_auto_cfg_oam_keepalive_timeout = { .name = "oam_keepalive_timeout", .descr = "If true, indications of type \"oam_keepalive_timeout\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_AUTO_CFG_ID_OAM_KEEPALIVE_TIMEOUT, .offset = offsetof(bcmolt_epon_link_auto_cfg_data, oam_keepalive_timeout), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_auto_cfg_oam_keepalive_timer_started = { .name = "oam_keepalive_timer_started", .descr = "If true, indications of type \"oam_keepalive_timer_started\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_AUTO_CFG_ID_OAM_KEEPALIVE_TIMER_STARTED, .offset = offsetof(bcmolt_epon_link_auto_cfg_data, oam_keepalive_timer_started), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_auto_cfg_oam_keepalive_timer_stopped = { .name = "oam_keepalive_timer_stopped", .descr = "If true, indications of type \"oam_keepalive_timer_stopped\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_AUTO_CFG_ID_OAM_KEEPALIVE_TIMER_STOPPED, .offset = offsetof(bcmolt_epon_link_auto_cfg_data, oam_keepalive_timer_stopped), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_auto_cfg_preprovisioned_link_created = { .name = "preprovisioned_link_created", .descr = "If true, indications of type \"preprovisioned_link_created\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_AUTO_CFG_ID_PREPROVISIONED_LINK_CREATED, .offset = offsetof(bcmolt_epon_link_auto_cfg_data, preprovisioned_link_created), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_auto_cfg_protection_switch_occurred = { .name = "protection_switch_occurred", .descr = "If true, indications of type \"protection_switch_occurred\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_AUTO_CFG_ID_PROTECTION_SWITCH_OCCURRED, .offset = offsetof(bcmolt_epon_link_auto_cfg_data, protection_switch_occurred), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_auto_cfg_range_value_changed = { .name = "range_value_changed", .descr = "If true, indications of type \"range_value_changed\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_AUTO_CFG_ID_RANGE_VALUE_CHANGED, .offset = offsetof(bcmolt_epon_link_auto_cfg_data, range_value_changed), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_auto_cfg_rerange_failure = { .name = "rerange_failure", .descr = "If true, indications of type \"rerange_failure\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_AUTO_CFG_ID_RERANGE_FAILURE, .offset = offsetof(bcmolt_epon_link_auto_cfg_data, rerange_failure), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_auto_cfg_stat_alarm_cleared = { .name = "stat_alarm_cleared", .descr = "If true, indications of type \"stat_alarm_cleared\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_AUTO_CFG_ID_STAT_ALARM_CLEARED, .offset = offsetof(bcmolt_epon_link_auto_cfg_data, stat_alarm_cleared), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_auto_cfg_stat_alarm_raised = { .name = "stat_alarm_raised", .descr = "If true, indications of type \"stat_alarm_raised\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_AUTO_CFG_ID_STAT_ALARM_RAISED, .offset = offsetof(bcmolt_epon_link_auto_cfg_data, stat_alarm_raised), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_link_auto_cfg_static_registration_done = { .name = "static_registration_done", .descr = "If true, indications of type \"static_registration_done\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_LINK_AUTO_CFG_ID_STATIC_REGISTRATION_DONE, .offset = offsetof(bcmolt_epon_link_auto_cfg_data, static_registration_done), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr * BCM_DESCR epon_link_auto_cfg_prop_array[] = { &prop_descr_epon_link_auto_cfg_duplicate_mpcp_registration_request, &prop_descr_epon_link_auto_cfg_encryption_enabled, &prop_descr_epon_link_auto_cfg_key_exchange_failure, &prop_descr_epon_link_auto_cfg_key_exchange_started, &prop_descr_epon_link_auto_cfg_key_exchange_stopped, &prop_descr_epon_link_auto_cfg_link_deleted, &prop_descr_epon_link_auto_cfg_link_speed_mismatch, &prop_descr_epon_link_auto_cfg_mpcp_deregistered, &prop_descr_epon_link_auto_cfg_mpcp_discovered, &prop_descr_epon_link_auto_cfg_mpcp_reg_ack_timeout, &prop_descr_epon_link_auto_cfg_mpcp_report_timeout, &prop_descr_epon_link_auto_cfg_oam_keepalive_timeout, &prop_descr_epon_link_auto_cfg_oam_keepalive_timer_started, &prop_descr_epon_link_auto_cfg_oam_keepalive_timer_stopped, &prop_descr_epon_link_auto_cfg_preprovisioned_link_created, &prop_descr_epon_link_auto_cfg_protection_switch_occurred, &prop_descr_epon_link_auto_cfg_range_value_changed, &prop_descr_epon_link_auto_cfg_rerange_failure, &prop_descr_epon_link_auto_cfg_stat_alarm_cleared, &prop_descr_epon_link_auto_cfg_stat_alarm_raised, &prop_descr_epon_link_auto_cfg_static_registration_done };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_link_auto_cfg_data_fields[] = { { .name = "duplicate_mpcp_registration_request", .descr = "If true, indications of type \"duplicate_mpcp_registration_request\" will be generated.", .offset = offsetof(bcmolt_epon_link_auto_cfg_data, duplicate_mpcp_registration_request), .type = &type_descr_bcmos_bool }, { .name = "encryption_enabled", .descr = "If true, indications of type \"encryption_enabled\" will be generated.", .offset = offsetof(bcmolt_epon_link_auto_cfg_data, encryption_enabled), .type = &type_descr_bcmos_bool }, { .name = "key_exchange_failure", .descr = "If true, indications of type \"key_exchange_failure\" will be generated.", .offset = offsetof(bcmolt_epon_link_auto_cfg_data, key_exchange_failure), .type = &type_descr_bcmos_bool }, { .name = "key_exchange_started", .descr = "If true, indications of type \"key_exchange_started\" will be generated.", .offset = offsetof(bcmolt_epon_link_auto_cfg_data, key_exchange_started), .type = &type_descr_bcmos_bool }, { .name = "key_exchange_stopped", .descr = "If true, indications of type \"key_exchange_stopped\" will be generated.", .offset = offsetof(bcmolt_epon_link_auto_cfg_data, key_exchange_stopped), .type = &type_descr_bcmos_bool }, { .name = "link_deleted", .descr = "If true, indications of type \"link_deleted\" will be generated.", .offset = offsetof(bcmolt_epon_link_auto_cfg_data, link_deleted), .type = &type_descr_bcmos_bool }, { .name = "link_speed_mismatch", .descr = "If true, indications of type \"link_speed_mismatch\" will be generated.", .offset = offsetof(bcmolt_epon_link_auto_cfg_data, link_speed_mismatch), .type = &type_descr_bcmos_bool }, { .name = "mpcp_deregistered", .descr = "If true, indications of type \"mpcp_deregistered\" will be generated.", .offset = offsetof(bcmolt_epon_link_auto_cfg_data, mpcp_deregistered), .type = &type_descr_bcmos_bool }, { .name = "mpcp_discovered", .descr = "If true, indications of type \"mpcp_discovered\" will be generated.", .offset = offsetof(bcmolt_epon_link_auto_cfg_data, mpcp_discovered), .type = &type_descr_bcmos_bool }, { .name = "mpcp_reg_ack_timeout", .descr = "If true, indications of type \"mpcp_reg_ack_timeout\" will be generated.", .offset = offsetof(bcmolt_epon_link_auto_cfg_data, mpcp_reg_ack_timeout), .type = &type_descr_bcmos_bool }, { .name = "mpcp_report_timeout", .descr = "If true, indications of type \"mpcp_report_timeout\" will be generated.", .offset = offsetof(bcmolt_epon_link_auto_cfg_data, mpcp_report_timeout), .type = &type_descr_bcmos_bool }, { .name = "oam_keepalive_timeout", .descr = "If true, indications of type \"oam_keepalive_timeout\" will be generated.", .offset = offsetof(bcmolt_epon_link_auto_cfg_data, oam_keepalive_timeout), .type = &type_descr_bcmos_bool }, { .name = "oam_keepalive_timer_started", .descr = "If true, indications of type \"oam_keepalive_timer_started\" will be generated.", .offset = offsetof(bcmolt_epon_link_auto_cfg_data, oam_keepalive_timer_started), .type = &type_descr_bcmos_bool }, { .name = "oam_keepalive_timer_stopped", .descr = "If true, indications of type \"oam_keepalive_timer_stopped\" will be generated.", .offset = offsetof(bcmolt_epon_link_auto_cfg_data, oam_keepalive_timer_stopped), .type = &type_descr_bcmos_bool }, { .name = "preprovisioned_link_created", .descr = "If true, indications of type \"preprovisioned_link_created\" will be generated.", .offset = offsetof(bcmolt_epon_link_auto_cfg_data, preprovisioned_link_created), .type = &type_descr_bcmos_bool }, { .name = "protection_switch_occurred", .descr = "If true, indications of type \"protection_switch_occurred\" will be generated.", .offset = offsetof(bcmolt_epon_link_auto_cfg_data, protection_switch_occurred), .type = &type_descr_bcmos_bool }, { .name = "range_value_changed", .descr = "If true, indications of type \"range_value_changed\" will be generated.", .offset = offsetof(bcmolt_epon_link_auto_cfg_data, range_value_changed), .type = &type_descr_bcmos_bool }, { .name = "rerange_failure", .descr = "If true, indications of type \"rerange_failure\" will be generated.", .offset = offsetof(bcmolt_epon_link_auto_cfg_data, rerange_failure), .type = &type_descr_bcmos_bool }, { .name = "stat_alarm_cleared", .descr = "If true, indications of type \"stat_alarm_cleared\" will be generated.", .offset = offsetof(bcmolt_epon_link_auto_cfg_data, stat_alarm_cleared), .type = &type_descr_bcmos_bool }, { .name = "stat_alarm_raised", .descr = "If true, indications of type \"stat_alarm_raised\" will be generated.", .offset = offsetof(bcmolt_epon_link_auto_cfg_data, stat_alarm_raised), .type = &type_descr_bcmos_bool }, { .name = "static_registration_done", .descr = "If true, indications of type \"static_registration_done\" will be generated.", .offset = offsetof(bcmolt_epon_link_auto_cfg_data, static_registration_done), .type = &type_descr_bcmos_bool } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_link_auto_cfg_data = { .name = "bcmolt_epon_link_auto_cfg_data", .descr = "Indication Configuration", .size = sizeof(bcmolt_epon_link_auto_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_link_auto_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_link_auto_cfg_data_fields } } };

/* ==== Object: epon_ni ==== */

/* Group: epon_ni - key */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_key_epon_ni = { .name = "epon_ni", .descr = "The index of a specific EPON NI instance as seen by the host.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_KEY_ID_EPON_NI, .offset = offsetof(bcmolt_epon_ni_key, epon_ni), .type = &type_descr_uint16_t };
static bcmcli_prop_descr * BCM_DESCR epon_ni_key_prop_array[] = { &prop_descr_epon_ni_key_epon_ni };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_ni_key_fields[] = { { .name = "epon_ni", .descr = "The index of a specific EPON NI instance as seen by the host.", .offset = offsetof(bcmolt_epon_ni_key, epon_ni), .type = &type_descr_uint16_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_ni_key = { .name = "bcmolt_epon_ni_key", .descr = "key", .size = sizeof(bcmolt_epon_ni_key), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_ni_key_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_ni_key_fields } } };

/* Group: epon_ni - cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_cfg_mac_address = { .name = "mac_address", .descr = "The MAC address used for all frames generated by the OLT on the PON.  This value must be set before EPON_NI is first enabled, and cannot be changed while the EPON_NI is enabled.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_CFG_ID_MAC_ADDRESS, .offset = offsetof(bcmolt_epon_ni_cfg_data, mac_address), .type = &type_descr_bcmos_mac_address };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_cfg_epon_ni_en = { .name = "epon_ni_en", .descr = "Indicates the enable state of the EPON NI.", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_EPON_NI_CFG_ID_EPON_NI_EN, .offset = offsetof(bcmolt_epon_ni_cfg_data, epon_ni_en), .type = &type_descr_bcmolt_epon_ni_en_state };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_cfg_registration_behavior = { .name = "registration_behavior", .descr = "Determines how registration requests from unknown links are handled.  Set to 'Notify Unknown' to force all links to be pre-provisioned.  If in 'Notify Unknown' mode, MPCP Registration of an unknown link will be denied, and a 'White List Violation\" will be sent to the host. If set to 'Automatic', the link registers fully without host interaction. ", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_CFG_ID_REGISTRATION_BEHAVIOR, .offset = offsetof(bcmolt_epon_ni_cfg_data, registration_behavior), .type = &type_descr_bcmolt_registration_behavior };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_cfg_mtu_1g = { .name = "mtu_1g", .descr = "Maximum frame size (including FCS) on the 1G path. This attribute cannot be changed on an enabled EPON_NI. This attribute cannot be an odd value.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_CFG_ID_MTU_1G, .offset = offsetof(bcmolt_epon_ni_cfg_data, mtu_1g), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_cfg_mtu_10g = { .name = "mtu_10g", .descr = "Maximum frame size (including FCS) on the 10G path. This attribute cannot be changed on an enabled EPON_NI. This attribute cannot be an odd value.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_CFG_ID_MTU_10G, .offset = offsetof(bcmolt_epon_ni_cfg_data, mtu_10g), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_cfg_minimum_fiber_length = { .name = "minimum_fiber_length", .descr = "The minimum fiber length, in meters, at which we expect to find an ONU. Notes: The difference between the minimum and maximum fiber length cannot exceed 100 km. This attribute cannot be changed on an enabled EPON_NI. Some ONUs can register at distances that are less than the provisioned minimum.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_CFG_ID_MINIMUM_FIBER_LENGTH, .offset = offsetof(bcmolt_epon_ni_cfg_data, minimum_fiber_length), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_cfg_maximum_fiber_length = { .name = "maximum_fiber_length", .descr = "The maximum fiber length, in meters, at which we expect to find an ONU. Notes: The difference between the minimum and maximum fiber length cannot exceed 100 km. This attribute cannot be changed on an enabled EPON_NI. Some ONUs can register at distances that are greater than the provisioned maximum.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_CFG_ID_MAXIMUM_FIBER_LENGTH, .offset = offsetof(bcmolt_epon_ni_cfg_data, maximum_fiber_length), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_cfg_grant_spacing_tq = { .name = "grant_spacing_tq", .descr = "The dead time on the PON between upstream bursts.  This attribute cannot be changed on an enabled EPON_NI.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_CFG_ID_GRANT_SPACING_TQ, .offset = offsetof(bcmolt_epon_ni_cfg_data, grant_spacing_tq), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_cfg_epon_logical_link_options = { .name = "epon_logical_link_options", .descr = "Configuration related to EPON links registration and reporting. This value cannot be changed on an enabled EPON_NI.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_CFG_ID_EPON_LOGICAL_LINK_OPTIONS, .offset = offsetof(bcmolt_epon_ni_cfg_data, epon_logical_link_options), .type = &type_descr_bcmolt_epon_logical_link_options };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_cfg_mpcp_discovery_period_ms = { .name = "mpcp_discovery_period_ms", .descr = "Period of MPCP discovery windows.  In this time period, one discovery gate will be sent for every enabled RP.  The discovery gates will be spaced equally across the time period.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_CFG_ID_MPCP_DISCOVERY_PERIOD_MS, .offset = offsetof(bcmolt_epon_ni_cfg_data, mpcp_discovery_period_ms), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_cfg_alarm_state = { .name = "alarm_state", .descr = "The state of the alarms on this EPON NI.", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_EPON_NI_CFG_ID_ALARM_STATE, .offset = offsetof(bcmolt_epon_ni_cfg_data, alarm_state), .type = &type_descr_bcmolt_epon_ni_alarm_state };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_cfg_all_links = { .name = "all_links", .descr = "List of all links on the EPON NI.", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_EPON_NI_CFG_ID_ALL_LINKS, .offset = offsetof(bcmolt_epon_ni_cfg_data, all_links), .type = &type_descr_bcmolt_macaddress_list_u32_max_2048 };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_cfg_encryption_cfg = { .name = "encryption_cfg", .descr = "Encryption configuration that applies to the EPON NI as a whole.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_CFG_ID_ENCRYPTION_CFG, .offset = offsetof(bcmolt_epon_ni_cfg_data, encryption_cfg), .type = &type_descr_bcmolt_epon_ni_encryption_cfg };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_cfg_protection_switching_cfg = { .name = "protection_switching_cfg", .descr = "Protection switching configuration.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_CFG_ID_PROTECTION_SWITCHING_CFG, .offset = offsetof(bcmolt_epon_ni_cfg_data, protection_switching_cfg), .type = &type_descr_bcmolt_epon_protection_switching_configuration };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_cfg_clock_transport_cfg = { .name = "clock_transport_cfg", .descr = "Clock transport configuration.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_CFG_ID_CLOCK_TRANSPORT_CFG, .offset = offsetof(bcmolt_epon_ni_cfg_data, clock_transport_cfg), .type = &type_descr_bcmolt_epon_clock_transport_configuration };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_cfg_dropdown_weights = { .name = "dropdown_weights", .descr = "Drop-down Weights", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_CFG_ID_DROPDOWN_WEIGHTS, .offset = offsetof(bcmolt_epon_ni_cfg_data, dropdown_weights), .type = &type_descr_bcmolt_arr_u16_7 };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_cfg_approximate_solicited_usage = { .name = "approximate_solicited_usage", .descr = "Approximate Solicited Usage", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_EPON_NI_CFG_ID_APPROXIMATE_SOLICITED_USAGE, .offset = offsetof(bcmolt_epon_ni_cfg_data, approximate_solicited_usage), .type = &type_descr_bcmolt_arr_bounds_8 };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_cfg_approximate_tdm_usage = { .name = "approximate_tdm_usage", .descr = "Approximate TDM Usage", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_EPON_NI_CFG_ID_APPROXIMATE_TDM_USAGE, .offset = offsetof(bcmolt_epon_ni_cfg_data, approximate_tdm_usage), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_cfg_no_reports_soak_time = { .name = "no_reports_soak_time", .descr = "Period of time after last report received to send no reports alarm (in ms).", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_CFG_ID_NO_REPORTS_SOAK_TIME, .offset = offsetof(bcmolt_epon_ni_cfg_data, no_reports_soak_time), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_cfg_pon_aggregate_shaper = { .name = "pon_aggregate_shaper", .descr = "PON Aggregate Shaper", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_CFG_ID_PON_AGGREGATE_SHAPER, .offset = offsetof(bcmolt_epon_ni_cfg_data, pon_aggregate_shaper), .type = &type_descr_bcmolt_pon_aggregate_shaper };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_cfg_estimated_pon_latency_tq = { .name = "estimated_pon_latency_tq", .descr = "Estimated PON Latency (TQ)", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_EPON_NI_CFG_ID_ESTIMATED_PON_LATENCY_TQ, .offset = offsetof(bcmolt_epon_ni_cfg_data, estimated_pon_latency_tq), .type = &type_descr_bcmolt_arr_bounds_8 };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_cfg_onu_upgrade_params = { .name = "onu_upgrade_params", .descr = "ONU upgrade params", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_CFG_ID_ONU_UPGRADE_PARAMS, .offset = offsetof(bcmolt_epon_ni_cfg_data, onu_upgrade_params), .type = &type_descr_bcmolt_epon_onu_upgrade_params };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_cfg_auto_rogue_detect_10g_en = { .name = "auto_rogue_detect_10g_en", .descr = "Enable 10G Autonomous Rogue Dection during discovery window", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_CFG_ID_AUTO_ROGUE_DETECT_10G_EN, .offset = offsetof(bcmolt_epon_ni_cfg_data, auto_rogue_detect_10g_en), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_cfg_auto_rogue_detect_1g_en = { .name = "auto_rogue_detect_1g_en", .descr = "Enable 1G Autonomous Rogue Dection during discovery window", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_CFG_ID_AUTO_ROGUE_DETECT_1G_EN, .offset = offsetof(bcmolt_epon_ni_cfg_data, auto_rogue_detect_1g_en), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_cfg_auto_rogue_detect_10g_threshold = { .name = "auto_rogue_detect_10g_threshold", .descr = "Set threshold for number of SyncPatterns received without a Burst Delimiter to trigger the fault.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_CFG_ID_AUTO_ROGUE_DETECT_10G_THRESHOLD, .offset = offsetof(bcmolt_epon_ni_cfg_data, auto_rogue_detect_10g_threshold), .type = &type_descr_uint8_t };
static bcmcli_prop_descr * BCM_DESCR epon_ni_cfg_prop_array[] = { &prop_descr_epon_ni_cfg_mac_address, &prop_descr_epon_ni_cfg_epon_ni_en, &prop_descr_epon_ni_cfg_registration_behavior, &prop_descr_epon_ni_cfg_mtu_1g, &prop_descr_epon_ni_cfg_mtu_10g, &prop_descr_epon_ni_cfg_minimum_fiber_length, &prop_descr_epon_ni_cfg_maximum_fiber_length, &prop_descr_epon_ni_cfg_grant_spacing_tq, &prop_descr_epon_ni_cfg_epon_logical_link_options, &prop_descr_epon_ni_cfg_mpcp_discovery_period_ms, &prop_descr_epon_ni_cfg_alarm_state, &prop_descr_epon_ni_cfg_all_links, &prop_descr_epon_ni_cfg_encryption_cfg, &prop_descr_epon_ni_cfg_protection_switching_cfg, &prop_descr_epon_ni_cfg_clock_transport_cfg, &prop_descr_epon_ni_cfg_dropdown_weights, &prop_descr_epon_ni_cfg_approximate_solicited_usage, &prop_descr_epon_ni_cfg_approximate_tdm_usage, &prop_descr_epon_ni_cfg_no_reports_soak_time, &prop_descr_epon_ni_cfg_pon_aggregate_shaper, &prop_descr_epon_ni_cfg_estimated_pon_latency_tq, &prop_descr_epon_ni_cfg_onu_upgrade_params, &prop_descr_epon_ni_cfg_auto_rogue_detect_10g_en, &prop_descr_epon_ni_cfg_auto_rogue_detect_1g_en, &prop_descr_epon_ni_cfg_auto_rogue_detect_10g_threshold };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_ni_cfg_data_fields[] = { { .name = "mac_address", .descr = "The MAC address used for all frames generated by the OLT on the PON.  This value must be set before EPON_NI is first enabled, and cannot be changed while the EPON_NI is enabled.", .offset = offsetof(bcmolt_epon_ni_cfg_data, mac_address), .type = &type_descr_bcmos_mac_address }, { .name = "epon_ni_en", .descr = "Indicates the enable state of the EPON NI.", .offset = offsetof(bcmolt_epon_ni_cfg_data, epon_ni_en), .type = &type_descr_bcmolt_epon_ni_en_state }, { .name = "registration_behavior", .descr = "Determines how registration requests from unknown links are handled.  Set to 'Notify Unknown' to force all links to be pre-provisioned.  If in 'Notify Unknown' mode, MPCP Registration of an unknown link will be denied, and a 'White List Violation\" will be sent to the host. If set to 'Automatic', the link registers fully without host interaction. ", .offset = offsetof(bcmolt_epon_ni_cfg_data, registration_behavior), .type = &type_descr_bcmolt_registration_behavior }, { .name = "mtu_1g", .descr = "Maximum frame size (including FCS) on the 1G path. This attribute cannot be changed on an enabled EPON_NI. This attribute cannot be an odd value.", .offset = offsetof(bcmolt_epon_ni_cfg_data, mtu_1g), .type = &type_descr_uint16_t }, { .name = "mtu_10g", .descr = "Maximum frame size (including FCS) on the 10G path. This attribute cannot be changed on an enabled EPON_NI. This attribute cannot be an odd value.", .offset = offsetof(bcmolt_epon_ni_cfg_data, mtu_10g), .type = &type_descr_uint16_t }, { .name = "minimum_fiber_length", .descr = "The minimum fiber length, in meters, at which we expect to find an ONU. Notes: The difference between the minimum and maximum fiber length cannot exceed 100 km. This attribute cannot be changed on an enabled EPON_NI. Some ONUs can register at distances that are less than the provisioned minimum.", .offset = offsetof(bcmolt_epon_ni_cfg_data, minimum_fiber_length), .type = &type_descr_uint32_t }, { .name = "maximum_fiber_length", .descr = "The maximum fiber length, in meters, at which we expect to find an ONU. Notes: The difference between the minimum and maximum fiber length cannot exceed 100 km. This attribute cannot be changed on an enabled EPON_NI. Some ONUs can register at distances that are greater than the provisioned maximum.", .offset = offsetof(bcmolt_epon_ni_cfg_data, maximum_fiber_length), .type = &type_descr_uint32_t }, { .name = "grant_spacing_tq", .descr = "The dead time on the PON between upstream bursts.  This attribute cannot be changed on an enabled EPON_NI.", .offset = offsetof(bcmolt_epon_ni_cfg_data, grant_spacing_tq), .type = &type_descr_uint32_t }, { .name = "epon_logical_link_options", .descr = "Configuration related to EPON links registration and reporting. This value cannot be changed on an enabled EPON_NI.", .offset = offsetof(bcmolt_epon_ni_cfg_data, epon_logical_link_options), .type = &type_descr_bcmolt_epon_logical_link_options }, { .name = "mpcp_discovery_period_ms", .descr = "Period of MPCP discovery windows.  In this time period, one discovery gate will be sent for every enabled RP.  The discovery gates will be spaced equally across the time period.", .offset = offsetof(bcmolt_epon_ni_cfg_data, mpcp_discovery_period_ms), .type = &type_descr_uint32_t }, { .name = "alarm_state", .descr = "The state of the alarms on this EPON NI.", .offset = offsetof(bcmolt_epon_ni_cfg_data, alarm_state), .type = &type_descr_bcmolt_epon_ni_alarm_state }, { .name = "all_links", .descr = "List of all links on the EPON NI.", .offset = offsetof(bcmolt_epon_ni_cfg_data, all_links), .type = &type_descr_bcmolt_macaddress_list_u32_max_2048 }, { .name = "encryption_cfg", .descr = "Encryption configuration that applies to the EPON NI as a whole.", .offset = offsetof(bcmolt_epon_ni_cfg_data, encryption_cfg), .type = &type_descr_bcmolt_epon_ni_encryption_cfg }, { .name = "protection_switching_cfg", .descr = "Protection switching configuration.", .offset = offsetof(bcmolt_epon_ni_cfg_data, protection_switching_cfg), .type = &type_descr_bcmolt_epon_protection_switching_configuration }, { .name = "clock_transport_cfg", .descr = "Clock transport configuration.", .offset = offsetof(bcmolt_epon_ni_cfg_data, clock_transport_cfg), .type = &type_descr_bcmolt_epon_clock_transport_configuration }, { .name = "dropdown_weights", .descr = "Drop-down Weights", .offset = offsetof(bcmolt_epon_ni_cfg_data, dropdown_weights), .type = &type_descr_bcmolt_arr_u16_7 }, { .name = "approximate_solicited_usage", .descr = "Approximate Solicited Usage", .offset = offsetof(bcmolt_epon_ni_cfg_data, approximate_solicited_usage), .type = &type_descr_bcmolt_arr_bounds_8 }, { .name = "approximate_tdm_usage", .descr = "Approximate TDM Usage", .offset = offsetof(bcmolt_epon_ni_cfg_data, approximate_tdm_usage), .type = &type_descr_uint32_t }, { .name = "no_reports_soak_time", .descr = "Period of time after last report received to send no reports alarm (in ms).", .offset = offsetof(bcmolt_epon_ni_cfg_data, no_reports_soak_time), .type = &type_descr_uint16_t }, { .name = "pon_aggregate_shaper", .descr = "PON Aggregate Shaper", .offset = offsetof(bcmolt_epon_ni_cfg_data, pon_aggregate_shaper), .type = &type_descr_bcmolt_pon_aggregate_shaper }, { .name = "estimated_pon_latency_tq", .descr = "Estimated PON Latency (TQ)", .offset = offsetof(bcmolt_epon_ni_cfg_data, estimated_pon_latency_tq), .type = &type_descr_bcmolt_arr_bounds_8 }, { .name = "onu_upgrade_params", .descr = "ONU upgrade params", .offset = offsetof(bcmolt_epon_ni_cfg_data, onu_upgrade_params), .type = &type_descr_bcmolt_epon_onu_upgrade_params }, { .name = "auto_rogue_detect_10g_en", .descr = "Enable 10G Autonomous Rogue Dection during discovery window", .offset = offsetof(bcmolt_epon_ni_cfg_data, auto_rogue_detect_10g_en), .type = &type_descr_bcmos_bool }, { .name = "auto_rogue_detect_1g_en", .descr = "Enable 1G Autonomous Rogue Dection during discovery window", .offset = offsetof(bcmolt_epon_ni_cfg_data, auto_rogue_detect_1g_en), .type = &type_descr_bcmos_bool }, { .name = "auto_rogue_detect_10g_threshold", .descr = "Set threshold for number of SyncPatterns received without a Burst Delimiter to trigger the fault.", .offset = offsetof(bcmolt_epon_ni_cfg_data, auto_rogue_detect_10g_threshold), .type = &type_descr_uint8_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_ni_cfg_data = { .name = "bcmolt_epon_ni_cfg_data", .descr = "cfg", .size = sizeof(bcmolt_epon_ni_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_ni_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_ni_cfg_data_fields } } };

/* Group: epon_ni - set_epon_ni_en_state */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_set_epon_ni_en_state_new_state = { .name = "new_state", .descr = "New EPON NI enable state.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_SET_EPON_NI_EN_STATE_ID_NEW_STATE, .offset = offsetof(bcmolt_epon_ni_set_epon_ni_en_state_data, new_state), .type = &type_descr_bcmolt_epon_ni_en_state };
static bcmcli_prop_descr * BCM_DESCR epon_ni_set_epon_ni_en_state_prop_array[] = { &prop_descr_epon_ni_set_epon_ni_en_state_new_state };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_ni_set_epon_ni_en_state_data_fields[] = { { .name = "new_state", .descr = "New EPON NI enable state.", .offset = offsetof(bcmolt_epon_ni_set_epon_ni_en_state_data, new_state), .type = &type_descr_bcmolt_epon_ni_en_state } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_ni_set_epon_ni_en_state_data = { .name = "bcmolt_epon_ni_set_epon_ni_en_state_data", .descr = "Set the EPON NI enable state.", .size = sizeof(bcmolt_epon_ni_set_epon_ni_en_state_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_ni_set_epon_ni_en_state_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_ni_set_epon_ni_en_state_data_fields } } };

/* Group: epon_ni - issue_rssi_grant */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_issue_rssi_grant_granted_link = { .name = "granted_link", .descr = "Logical link to grant, which should either be associated with a particular unicast link of interest on the PON or, 0 for idle power measurement. 0 will use a link that will not result in upstream transmission by any device on the PON.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_ISSUE_RSSI_GRANT_ID_GRANTED_LINK, .offset = offsetof(bcmolt_epon_ni_issue_rssi_grant_data, granted_link), .type = &type_descr_bcmos_mac_address };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_issue_rssi_grant_trigger_width = { .name = "trigger_width", .descr = "Rssi Trigger Width in ns", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_ISSUE_RSSI_GRANT_ID_TRIGGER_WIDTH, .offset = offsetof(bcmolt_epon_ni_issue_rssi_grant_data, trigger_width), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_issue_rssi_grant_trigger_delay = { .name = "trigger_delay", .descr = "Rssi Trigger Delay in ns", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_ISSUE_RSSI_GRANT_ID_TRIGGER_DELAY, .offset = offsetof(bcmolt_epon_ni_issue_rssi_grant_data, trigger_delay), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_issue_rssi_grant_sample_period = { .name = "sample_period", .descr = "Rssi Sampe Period in us", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_ISSUE_RSSI_GRANT_ID_SAMPLE_PERIOD, .offset = offsetof(bcmolt_epon_ni_issue_rssi_grant_data, sample_period), .type = &type_descr_uint16_t };
static bcmcli_prop_descr * BCM_DESCR epon_ni_issue_rssi_grant_prop_array[] = { &prop_descr_epon_ni_issue_rssi_grant_granted_link, &prop_descr_epon_ni_issue_rssi_grant_trigger_width, &prop_descr_epon_ni_issue_rssi_grant_trigger_delay, &prop_descr_epon_ni_issue_rssi_grant_sample_period };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_ni_issue_rssi_grant_data_fields[] = { { .name = "granted_link", .descr = "Logical link to grant, which should either be associated with a particular unicast link of interest on the PON or, 0 for idle power measurement. 0 will use a link that will not result in upstream transmission by any device on the PON.", .offset = offsetof(bcmolt_epon_ni_issue_rssi_grant_data, granted_link), .type = &type_descr_bcmos_mac_address }, { .name = "trigger_width", .descr = "Rssi Trigger Width in ns", .offset = offsetof(bcmolt_epon_ni_issue_rssi_grant_data, trigger_width), .type = &type_descr_uint16_t }, { .name = "trigger_delay", .descr = "Rssi Trigger Delay in ns", .offset = offsetof(bcmolt_epon_ni_issue_rssi_grant_data, trigger_delay), .type = &type_descr_uint16_t }, { .name = "sample_period", .descr = "Rssi Sampe Period in us", .offset = offsetof(bcmolt_epon_ni_issue_rssi_grant_data, sample_period), .type = &type_descr_uint16_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_ni_issue_rssi_grant_data = { .name = "bcmolt_epon_ni_issue_rssi_grant_data", .descr = "Issues an RSSI grant to read RX Power", .size = sizeof(bcmolt_epon_ni_issue_rssi_grant_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_ni_issue_rssi_grant_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_ni_issue_rssi_grant_data_fields } } };

/* Group: epon_ni - add_link */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_add_link_mac_address = { .name = "mac_address", .descr = "The MAC address of the EPON link.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_ADD_LINK_ID_MAC_ADDRESS, .offset = offsetof(bcmolt_epon_ni_add_link_data, mac_address), .type = &type_descr_bcmos_mac_address };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_add_link_rate = { .name = "rate", .descr = "Rate of link to pre-provision.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_ADD_LINK_ID_RATE, .offset = offsetof(bcmolt_epon_ni_add_link_data, rate), .type = &type_descr_bcmolt_epon_link_rate };
static bcmcli_prop_descr * BCM_DESCR epon_ni_add_link_prop_array[] = { &prop_descr_epon_ni_add_link_mac_address, &prop_descr_epon_ni_add_link_rate };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_ni_add_link_data_fields[] = { { .name = "mac_address", .descr = "The MAC address of the EPON link.", .offset = offsetof(bcmolt_epon_ni_add_link_data, mac_address), .type = &type_descr_bcmos_mac_address }, { .name = "rate", .descr = "Rate of link to pre-provision.", .offset = offsetof(bcmolt_epon_ni_add_link_data, rate), .type = &type_descr_bcmolt_epon_link_rate } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_ni_add_link_data = { .name = "bcmolt_epon_ni_add_link_data", .descr = "Pre-provision an EPON link.", .size = sizeof(bcmolt_epon_ni_add_link_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_ni_add_link_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_ni_add_link_data_fields } } };

/* Group: epon_ni - add_multicast_link */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_add_multicast_link_mac_address = { .name = "mac_address", .descr = "The MAC address of the EPON link.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_ADD_MULTICAST_LINK_ID_MAC_ADDRESS, .offset = offsetof(bcmolt_epon_ni_add_multicast_link_data, mac_address), .type = &type_descr_bcmos_mac_address };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_add_multicast_link_rate = { .name = "rate", .descr = "Rate of link to pre-provision.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_ADD_MULTICAST_LINK_ID_RATE, .offset = offsetof(bcmolt_epon_ni_add_multicast_link_data, rate), .type = &type_descr_bcmolt_epon_link_rate };
static bcmcli_prop_descr * BCM_DESCR epon_ni_add_multicast_link_prop_array[] = { &prop_descr_epon_ni_add_multicast_link_mac_address, &prop_descr_epon_ni_add_multicast_link_rate };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_ni_add_multicast_link_data_fields[] = { { .name = "mac_address", .descr = "The MAC address of the EPON link.", .offset = offsetof(bcmolt_epon_ni_add_multicast_link_data, mac_address), .type = &type_descr_bcmos_mac_address }, { .name = "rate", .descr = "Rate of link to pre-provision.", .offset = offsetof(bcmolt_epon_ni_add_multicast_link_data, rate), .type = &type_descr_bcmolt_epon_link_rate } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_ni_add_multicast_link_data = { .name = "bcmolt_epon_ni_add_multicast_link_data", .descr = "Pre-provision an EPON multicast link.", .size = sizeof(bcmolt_epon_ni_add_multicast_link_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_ni_add_multicast_link_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_ni_add_multicast_link_data_fields } } };

/* Group: epon_ni - add_protected_standby_link */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_add_protected_standby_link_mac_address = { .name = "mac_address", .descr = "The MAC address of the EPON link.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_ADD_PROTECTED_STANDBY_LINK_ID_MAC_ADDRESS, .offset = offsetof(bcmolt_epon_ni_add_protected_standby_link_data, mac_address), .type = &type_descr_bcmos_mac_address };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_add_protected_standby_link_working_link_info = { .name = "working_link_info", .descr = "Link info for the associated working link.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_ADD_PROTECTED_STANDBY_LINK_ID_WORKING_LINK_INFO, .offset = offsetof(bcmolt_epon_ni_add_protected_standby_link_data, working_link_info), .type = &type_descr_bcmolt_epon_link_info };
static bcmcli_prop_descr * BCM_DESCR epon_ni_add_protected_standby_link_prop_array[] = { &prop_descr_epon_ni_add_protected_standby_link_mac_address, &prop_descr_epon_ni_add_protected_standby_link_working_link_info };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_ni_add_protected_standby_link_data_fields[] = { { .name = "mac_address", .descr = "The MAC address of the EPON link.", .offset = offsetof(bcmolt_epon_ni_add_protected_standby_link_data, mac_address), .type = &type_descr_bcmos_mac_address }, { .name = "working_link_info", .descr = "Link info for the associated working link.", .offset = offsetof(bcmolt_epon_ni_add_protected_standby_link_data, working_link_info), .type = &type_descr_bcmolt_epon_link_info } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_ni_add_protected_standby_link_data = { .name = "bcmolt_epon_ni_add_protected_standby_link_data", .descr = "Adds a protected standby link.  Once it has been created, the link is considered \"standby\" for the puposes of protection switching.", .size = sizeof(bcmolt_epon_ni_add_protected_standby_link_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_ni_add_protected_standby_link_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_ni_add_protected_standby_link_data_fields } } };

/* Group: epon_ni - no_reports */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_no_reports_alarm_status = { .name = "alarm_status", .descr = "Alarm Status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_NO_REPORTS_ID_ALARM_STATUS, .offset = offsetof(bcmolt_epon_ni_no_reports_data, alarm_status), .type = &type_descr_bcmolt_status };
static bcmcli_prop_descr * BCM_DESCR epon_ni_no_reports_prop_array[] = { &prop_descr_epon_ni_no_reports_alarm_status };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_ni_no_reports_data_fields[] = { { .name = "alarm_status", .descr = "Alarm Status", .offset = offsetof(bcmolt_epon_ni_no_reports_data, alarm_status), .type = &type_descr_bcmolt_status } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_ni_no_reports_data = { .name = "bcmolt_epon_ni_no_reports_data", .descr = "Loss of all reports on all links on the EPON NI", .size = sizeof(bcmolt_epon_ni_no_reports_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_ni_no_reports_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_ni_no_reports_data_fields } } };

/* Group: epon_ni - llid_quarantined */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_llid_quarantined_llid = { .name = "llid", .descr = "LLID", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_LLID_QUARANTINED_ID_LLID, .offset = offsetof(bcmolt_epon_ni_llid_quarantined_data, llid), .type = &type_descr_uint16_t_hex };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_llid_quarantined_link_rate = { .name = "link_rate", .descr = "Link Rate", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_LLID_QUARANTINED_ID_LINK_RATE, .offset = offsetof(bcmolt_epon_ni_llid_quarantined_data, link_rate), .type = &type_descr_bcmolt_epon_link_rate };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_llid_quarantined_link_mac = { .name = "link_mac", .descr = "Link MAC", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_LLID_QUARANTINED_ID_LINK_MAC, .offset = offsetof(bcmolt_epon_ni_llid_quarantined_data, link_mac), .type = &type_descr_bcmos_mac_address };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_llid_quarantined_range_value_tq = { .name = "range_value_tq", .descr = "Range value in time quanta", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_LLID_QUARANTINED_ID_RANGE_VALUE_TQ, .offset = offsetof(bcmolt_epon_ni_llid_quarantined_data, range_value_tq), .type = &type_descr_uint32_t };
static bcmcli_prop_descr * BCM_DESCR epon_ni_llid_quarantined_prop_array[] = { &prop_descr_epon_ni_llid_quarantined_llid, &prop_descr_epon_ni_llid_quarantined_link_rate, &prop_descr_epon_ni_llid_quarantined_link_mac, &prop_descr_epon_ni_llid_quarantined_range_value_tq };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_ni_llid_quarantined_data_fields[] = { { .name = "llid", .descr = "LLID", .offset = offsetof(bcmolt_epon_ni_llid_quarantined_data, llid), .type = &type_descr_uint16_t_hex }, { .name = "link_rate", .descr = "Link Rate", .offset = offsetof(bcmolt_epon_ni_llid_quarantined_data, link_rate), .type = &type_descr_bcmolt_epon_link_rate }, { .name = "link_mac", .descr = "Link MAC", .offset = offsetof(bcmolt_epon_ni_llid_quarantined_data, link_mac), .type = &type_descr_bcmos_mac_address }, { .name = "range_value_tq", .descr = "Range value in time quanta", .offset = offsetof(bcmolt_epon_ni_llid_quarantined_data, range_value_tq), .type = &type_descr_uint32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_ni_llid_quarantined_data = { .name = "bcmolt_epon_ni_llid_quarantined_data", .descr = "LLID Quarantined", .size = sizeof(bcmolt_epon_ni_llid_quarantined_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_ni_llid_quarantined_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_ni_llid_quarantined_data_fields } } };

/* Group: epon_ni - state_change_completed */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_state_change_completed_new_state = { .name = "new_state", .descr = "New EPON NI enable state.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_STATE_CHANGE_COMPLETED_ID_NEW_STATE, .offset = offsetof(bcmolt_epon_ni_state_change_completed_data, new_state), .type = &type_descr_bcmolt_epon_ni_en_state };
static bcmcli_prop_descr * BCM_DESCR epon_ni_state_change_completed_prop_array[] = { &prop_descr_epon_ni_state_change_completed_new_state };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_ni_state_change_completed_data_fields[] = { { .name = "new_state", .descr = "New EPON NI enable state.", .offset = offsetof(bcmolt_epon_ni_state_change_completed_data, new_state), .type = &type_descr_bcmolt_epon_ni_en_state } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_ni_state_change_completed_data = { .name = "bcmolt_epon_ni_state_change_completed_data", .descr = "Sent after a 'set_epon_ni_en_state' operation has completed.", .size = sizeof(bcmolt_epon_ni_state_change_completed_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_ni_state_change_completed_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_ni_state_change_completed_data_fields } } };

/* Group: epon_ni - protection_switching_apply_rerange_delta */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_protection_switching_apply_rerange_delta_rerange_delta = { .name = "rerange_delta", .descr = "Re-range delta", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_PROTECTION_SWITCHING_APPLY_RERANGE_DELTA_ID_RERANGE_DELTA, .offset = offsetof(bcmolt_epon_ni_protection_switching_apply_rerange_delta_data, rerange_delta), .type = &type_descr_uint32_t };
static bcmcli_prop_descr * BCM_DESCR epon_ni_protection_switching_apply_rerange_delta_prop_array[] = { &prop_descr_epon_ni_protection_switching_apply_rerange_delta_rerange_delta };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_ni_protection_switching_apply_rerange_delta_data_fields[] = { { .name = "rerange_delta", .descr = "Re-range delta", .offset = offsetof(bcmolt_epon_ni_protection_switching_apply_rerange_delta_data, rerange_delta), .type = &type_descr_uint32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_ni_protection_switching_apply_rerange_delta_data = { .name = "bcmolt_epon_ni_protection_switching_apply_rerange_delta_data", .descr = "Protection switching apply re-range delta", .size = sizeof(bcmolt_epon_ni_protection_switching_apply_rerange_delta_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_ni_protection_switching_apply_rerange_delta_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_ni_protection_switching_apply_rerange_delta_data_fields } } };

/* Group: epon_ni - rerange_failure */
static bcmcli_prop_descr * BCM_DESCR epon_ni_rerange_failure_prop_array[] = { };

/* Group: epon_ni - rssi_measurement_completed */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_rssi_measurement_completed_status = { .name = "status", .descr = "status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_RSSI_MEASUREMENT_COMPLETED_ID_STATUS, .offset = offsetof(bcmolt_epon_ni_rssi_measurement_completed_data, status), .type = &type_descr_bcmolt_result };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_rssi_measurement_completed_llid = { .name = "llid", .descr = "LLID", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_RSSI_MEASUREMENT_COMPLETED_ID_LLID, .offset = offsetof(bcmolt_epon_ni_rssi_measurement_completed_data, llid), .type = &type_descr_uint16_t_hex };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_rssi_measurement_completed_link_mac = { .name = "link_mac", .descr = "Link MAC ", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_RSSI_MEASUREMENT_COMPLETED_ID_LINK_MAC, .offset = offsetof(bcmolt_epon_ni_rssi_measurement_completed_data, link_mac), .type = &type_descr_bcmos_mac_address };
static bcmcli_prop_descr * BCM_DESCR epon_ni_rssi_measurement_completed_prop_array[] = { &prop_descr_epon_ni_rssi_measurement_completed_status, &prop_descr_epon_ni_rssi_measurement_completed_llid, &prop_descr_epon_ni_rssi_measurement_completed_link_mac };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_ni_rssi_measurement_completed_data_fields[] = { { .name = "status", .descr = "status", .offset = offsetof(bcmolt_epon_ni_rssi_measurement_completed_data, status), .type = &type_descr_bcmolt_result }, { .name = "llid", .descr = "LLID", .offset = offsetof(bcmolt_epon_ni_rssi_measurement_completed_data, llid), .type = &type_descr_uint16_t_hex }, { .name = "link_mac", .descr = "Link MAC ", .offset = offsetof(bcmolt_epon_ni_rssi_measurement_completed_data, link_mac), .type = &type_descr_bcmos_mac_address } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_ni_rssi_measurement_completed_data = { .name = "bcmolt_epon_ni_rssi_measurement_completed_data", .descr = "RSSI Measurement Completed", .size = sizeof(bcmolt_epon_ni_rssi_measurement_completed_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_ni_rssi_measurement_completed_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_ni_rssi_measurement_completed_data_fields } } };

/* Group: epon_ni - rogue_llid_scan */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_rogue_llid_scan_mode = { .name = "mode", .descr = "True = Scan all LLIDS on the PON", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_ROGUE_LLID_SCAN_ID_MODE, .offset = offsetof(bcmolt_epon_ni_rogue_llid_scan_data, mode), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_rogue_llid_scan_llid = { .name = "llid", .descr = "Specific LLID to scan or 0 to scan all when mode is ALL", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_ROGUE_LLID_SCAN_ID_LLID, .offset = offsetof(bcmolt_epon_ni_rogue_llid_scan_data, llid), .type = &type_descr_uint16_t_hex };
static bcmcli_prop_descr * BCM_DESCR epon_ni_rogue_llid_scan_prop_array[] = { &prop_descr_epon_ni_rogue_llid_scan_mode, &prop_descr_epon_ni_rogue_llid_scan_llid };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_ni_rogue_llid_scan_data_fields[] = { { .name = "mode", .descr = "True = Scan all LLIDS on the PON", .offset = offsetof(bcmolt_epon_ni_rogue_llid_scan_data, mode), .type = &type_descr_bcmos_bool }, { .name = "llid", .descr = "Specific LLID to scan or 0 to scan all when mode is ALL", .offset = offsetof(bcmolt_epon_ni_rogue_llid_scan_data, llid), .type = &type_descr_uint16_t_hex } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_ni_rogue_llid_scan_data = { .name = "bcmolt_epon_ni_rogue_llid_scan_data", .descr = "Issue a request to scan all LLIDs or a specific LLID on a PON", .size = sizeof(bcmolt_epon_ni_rogue_llid_scan_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_ni_rogue_llid_scan_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_ni_rogue_llid_scan_data_fields } } };

/* Group: epon_ni - start_onu_upgrade */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_start_onu_upgrade_list_of_onu_ids = { .name = "list_of_onu_ids", .descr = "List of ONUs to upgrade the firmware.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_START_ONU_UPGRADE_ID_LIST_OF_ONU_IDS, .offset = offsetof(bcmolt_epon_ni_start_onu_upgrade_data, list_of_onu_ids), .type = &type_descr_bcmolt_macaddress_list_u32 };
static bcmcli_prop_descr * BCM_DESCR epon_ni_start_onu_upgrade_prop_array[] = { &prop_descr_epon_ni_start_onu_upgrade_list_of_onu_ids };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_ni_start_onu_upgrade_data_fields[] = { { .name = "list_of_onu_ids", .descr = "List of ONUs to upgrade the firmware.", .offset = offsetof(bcmolt_epon_ni_start_onu_upgrade_data, list_of_onu_ids), .type = &type_descr_bcmolt_macaddress_list_u32 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_ni_start_onu_upgrade_data = { .name = "bcmolt_epon_ni_start_onu_upgrade_data", .descr = "Start ONU Firmware Upgrade", .size = sizeof(bcmolt_epon_ni_start_onu_upgrade_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_ni_start_onu_upgrade_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_ni_start_onu_upgrade_data_fields } } };

/* Group: epon_ni - onu_upgrade_complete */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_onu_upgrade_complete_status = { .name = "status", .descr = "Success or failure.  Against entire upgrade process.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_ONU_UPGRADE_COMPLETE_ID_STATUS, .offset = offsetof(bcmolt_epon_ni_onu_upgrade_complete_data, status), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_onu_upgrade_complete_list_of_failed_entities = { .name = "list_of_failed_entities", .descr = "List of ONU-IDs the upgrade failed for.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_ONU_UPGRADE_COMPLETE_ID_LIST_OF_FAILED_ENTITIES, .offset = offsetof(bcmolt_epon_ni_onu_upgrade_complete_data, list_of_failed_entities), .type = &type_descr_bcmolt_epon_onu_upgrade_status_list_u32 };
static bcmcli_prop_descr * BCM_DESCR epon_ni_onu_upgrade_complete_prop_array[] = { &prop_descr_epon_ni_onu_upgrade_complete_status, &prop_descr_epon_ni_onu_upgrade_complete_list_of_failed_entities };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_ni_onu_upgrade_complete_data_fields[] = { { .name = "status", .descr = "Success or failure.  Against entire upgrade process.", .offset = offsetof(bcmolt_epon_ni_onu_upgrade_complete_data, status), .type = &type_descr_bcmos_bool }, { .name = "list_of_failed_entities", .descr = "List of ONU-IDs the upgrade failed for.", .offset = offsetof(bcmolt_epon_ni_onu_upgrade_complete_data, list_of_failed_entities), .type = &type_descr_bcmolt_epon_onu_upgrade_status_list_u32 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_ni_onu_upgrade_complete_data = { .name = "bcmolt_epon_ni_onu_upgrade_complete_data", .descr = "ONU Upgrade Complete", .size = sizeof(bcmolt_epon_ni_onu_upgrade_complete_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_ni_onu_upgrade_complete_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_ni_onu_upgrade_complete_data_fields } } };

/* Group: epon_ni - rogue_scan_complete */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_rogue_scan_complete_return_ind_status = { .name = "return_ind_status", .descr = "Status of completed scan", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_ROGUE_SCAN_COMPLETE_ID_RETURN_IND_STATUS, .offset = offsetof(bcmolt_epon_ni_rogue_scan_complete_data, return_ind_status), .type = &type_descr_bcmolt_rogue_scan_status };
static bcmcli_prop_descr * BCM_DESCR epon_ni_rogue_scan_complete_prop_array[] = { &prop_descr_epon_ni_rogue_scan_complete_return_ind_status };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_ni_rogue_scan_complete_data_fields[] = { { .name = "return_ind_status", .descr = "Status of completed scan", .offset = offsetof(bcmolt_epon_ni_rogue_scan_complete_data, return_ind_status), .type = &type_descr_bcmolt_rogue_scan_status } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_ni_rogue_scan_complete_data = { .name = "bcmolt_epon_ni_rogue_scan_complete_data", .descr = "Indciation that a scan is complete, any error is also returned. ", .size = sizeof(bcmolt_epon_ni_rogue_scan_complete_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_ni_rogue_scan_complete_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_ni_rogue_scan_complete_data_fields } } };

/* Group: epon_ni - mpcp_timestamp_changed */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_mpcp_timestamp_changed_mpcp_timestamp = { .name = "mpcp_timestamp", .descr = "The MPCP time at which the pulse was received.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_MPCP_TIMESTAMP_CHANGED_ID_MPCP_TIMESTAMP, .offset = offsetof(bcmolt_epon_ni_mpcp_timestamp_changed_data, mpcp_timestamp), .type = &type_descr_uint32_t };
static bcmcli_prop_descr * BCM_DESCR epon_ni_mpcp_timestamp_changed_prop_array[] = { &prop_descr_epon_ni_mpcp_timestamp_changed_mpcp_timestamp };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_ni_mpcp_timestamp_changed_data_fields[] = { { .name = "mpcp_timestamp", .descr = "The MPCP time at which the pulse was received.", .offset = offsetof(bcmolt_epon_ni_mpcp_timestamp_changed_data, mpcp_timestamp), .type = &type_descr_uint32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_ni_mpcp_timestamp_changed_data = { .name = "bcmolt_epon_ni_mpcp_timestamp_changed_data", .descr = "A clock transport pulse was received at the given MPCP timestamp.", .size = sizeof(bcmolt_epon_ni_mpcp_timestamp_changed_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_ni_mpcp_timestamp_changed_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_ni_mpcp_timestamp_changed_data_fields } } };

/* Group: epon_ni - auto_rogue_scan_1g_failure */
static bcmcli_prop_descr * BCM_DESCR epon_ni_auto_rogue_scan_1g_failure_prop_array[] = { };

/* Group: epon_ni - auto_rogue_scan_10g_failure */
static bcmcli_prop_descr * BCM_DESCR epon_ni_auto_rogue_scan_10g_failure_prop_array[] = { };

/* Group: epon_ni - auto_cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_auto_cfg_auto_rogue_scan_10g_failure = { .name = "auto_rogue_scan_10g_failure", .descr = "If true, indications of type \"auto_rogue_scan_10g_failure\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_AUTO_CFG_ID_AUTO_ROGUE_SCAN_10G_FAILURE, .offset = offsetof(bcmolt_epon_ni_auto_cfg_data, auto_rogue_scan_10g_failure), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_auto_cfg_auto_rogue_scan_1g_failure = { .name = "auto_rogue_scan_1g_failure", .descr = "If true, indications of type \"auto_rogue_scan_1g_failure\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_AUTO_CFG_ID_AUTO_ROGUE_SCAN_1G_FAILURE, .offset = offsetof(bcmolt_epon_ni_auto_cfg_data, auto_rogue_scan_1g_failure), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_auto_cfg_llid_quarantined = { .name = "llid_quarantined", .descr = "If true, indications of type \"llid_quarantined\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_AUTO_CFG_ID_LLID_QUARANTINED, .offset = offsetof(bcmolt_epon_ni_auto_cfg_data, llid_quarantined), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_auto_cfg_mpcp_timestamp_changed = { .name = "mpcp_timestamp_changed", .descr = "If true, indications of type \"mpcp_timestamp_changed\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_AUTO_CFG_ID_MPCP_TIMESTAMP_CHANGED, .offset = offsetof(bcmolt_epon_ni_auto_cfg_data, mpcp_timestamp_changed), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_auto_cfg_no_reports = { .name = "no_reports", .descr = "If true, indications of type \"no_reports\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_AUTO_CFG_ID_NO_REPORTS, .offset = offsetof(bcmolt_epon_ni_auto_cfg_data, no_reports), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_auto_cfg_onu_upgrade_complete = { .name = "onu_upgrade_complete", .descr = "If true, indications of type \"onu_upgrade_complete\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_AUTO_CFG_ID_ONU_UPGRADE_COMPLETE, .offset = offsetof(bcmolt_epon_ni_auto_cfg_data, onu_upgrade_complete), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_auto_cfg_rerange_failure = { .name = "rerange_failure", .descr = "If true, indications of type \"rerange_failure\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_AUTO_CFG_ID_RERANGE_FAILURE, .offset = offsetof(bcmolt_epon_ni_auto_cfg_data, rerange_failure), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_auto_cfg_rogue_scan_complete = { .name = "rogue_scan_complete", .descr = "If true, indications of type \"rogue_scan_complete\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_AUTO_CFG_ID_ROGUE_SCAN_COMPLETE, .offset = offsetof(bcmolt_epon_ni_auto_cfg_data, rogue_scan_complete), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_auto_cfg_rssi_measurement_completed = { .name = "rssi_measurement_completed", .descr = "If true, indications of type \"rssi_measurement_completed\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_AUTO_CFG_ID_RSSI_MEASUREMENT_COMPLETED, .offset = offsetof(bcmolt_epon_ni_auto_cfg_data, rssi_measurement_completed), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_ni_auto_cfg_state_change_completed = { .name = "state_change_completed", .descr = "If true, indications of type \"state_change_completed\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_NI_AUTO_CFG_ID_STATE_CHANGE_COMPLETED, .offset = offsetof(bcmolt_epon_ni_auto_cfg_data, state_change_completed), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr * BCM_DESCR epon_ni_auto_cfg_prop_array[] = { &prop_descr_epon_ni_auto_cfg_auto_rogue_scan_10g_failure, &prop_descr_epon_ni_auto_cfg_auto_rogue_scan_1g_failure, &prop_descr_epon_ni_auto_cfg_llid_quarantined, &prop_descr_epon_ni_auto_cfg_mpcp_timestamp_changed, &prop_descr_epon_ni_auto_cfg_no_reports, &prop_descr_epon_ni_auto_cfg_onu_upgrade_complete, &prop_descr_epon_ni_auto_cfg_rerange_failure, &prop_descr_epon_ni_auto_cfg_rogue_scan_complete, &prop_descr_epon_ni_auto_cfg_rssi_measurement_completed, &prop_descr_epon_ni_auto_cfg_state_change_completed };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_ni_auto_cfg_data_fields[] = { { .name = "auto_rogue_scan_10g_failure", .descr = "If true, indications of type \"auto_rogue_scan_10g_failure\" will be generated.", .offset = offsetof(bcmolt_epon_ni_auto_cfg_data, auto_rogue_scan_10g_failure), .type = &type_descr_bcmos_bool }, { .name = "auto_rogue_scan_1g_failure", .descr = "If true, indications of type \"auto_rogue_scan_1g_failure\" will be generated.", .offset = offsetof(bcmolt_epon_ni_auto_cfg_data, auto_rogue_scan_1g_failure), .type = &type_descr_bcmos_bool }, { .name = "llid_quarantined", .descr = "If true, indications of type \"llid_quarantined\" will be generated.", .offset = offsetof(bcmolt_epon_ni_auto_cfg_data, llid_quarantined), .type = &type_descr_bcmos_bool }, { .name = "mpcp_timestamp_changed", .descr = "If true, indications of type \"mpcp_timestamp_changed\" will be generated.", .offset = offsetof(bcmolt_epon_ni_auto_cfg_data, mpcp_timestamp_changed), .type = &type_descr_bcmos_bool }, { .name = "no_reports", .descr = "If true, indications of type \"no_reports\" will be generated.", .offset = offsetof(bcmolt_epon_ni_auto_cfg_data, no_reports), .type = &type_descr_bcmos_bool }, { .name = "onu_upgrade_complete", .descr = "If true, indications of type \"onu_upgrade_complete\" will be generated.", .offset = offsetof(bcmolt_epon_ni_auto_cfg_data, onu_upgrade_complete), .type = &type_descr_bcmos_bool }, { .name = "rerange_failure", .descr = "If true, indications of type \"rerange_failure\" will be generated.", .offset = offsetof(bcmolt_epon_ni_auto_cfg_data, rerange_failure), .type = &type_descr_bcmos_bool }, { .name = "rogue_scan_complete", .descr = "If true, indications of type \"rogue_scan_complete\" will be generated.", .offset = offsetof(bcmolt_epon_ni_auto_cfg_data, rogue_scan_complete), .type = &type_descr_bcmos_bool }, { .name = "rssi_measurement_completed", .descr = "If true, indications of type \"rssi_measurement_completed\" will be generated.", .offset = offsetof(bcmolt_epon_ni_auto_cfg_data, rssi_measurement_completed), .type = &type_descr_bcmos_bool }, { .name = "state_change_completed", .descr = "If true, indications of type \"state_change_completed\" will be generated.", .offset = offsetof(bcmolt_epon_ni_auto_cfg_data, state_change_completed), .type = &type_descr_bcmos_bool } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_ni_auto_cfg_data = { .name = "bcmolt_epon_ni_auto_cfg_data", .descr = "Indication Configuration", .size = sizeof(bcmolt_epon_ni_auto_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_ni_auto_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_ni_auto_cfg_data_fields } } };

/* ==== Object: epon_onu_10g_us ==== */

/* Group: epon_onu_10g_us - key */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_onu_10g_us_key_epon_ni = { .name = "epon_ni", .descr = "EPON NI with which this ONU interface is associated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_ONU_10G_US_KEY_ID_EPON_NI, .offset = offsetof(bcmolt_epon_onu_10g_us_key, epon_ni), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_onu_10g_us_key_onu_id = { .name = "onu_id", .descr = "Unique identifier of the ONU interface within its EPON NI.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_ONU_10G_US_KEY_ID_ONU_ID, .offset = offsetof(bcmolt_epon_onu_10g_us_key, onu_id), .type = &type_descr_uint8_t };
static bcmcli_prop_descr * BCM_DESCR epon_onu_10g_us_key_prop_array[] = { &prop_descr_epon_onu_10g_us_key_epon_ni, &prop_descr_epon_onu_10g_us_key_onu_id };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_onu_10g_us_key_fields[] = { { .name = "epon_ni", .descr = "EPON NI with which this ONU interface is associated.", .offset = offsetof(bcmolt_epon_onu_10g_us_key, epon_ni), .type = &type_descr_uint16_t }, { .name = "onu_id", .descr = "Unique identifier of the ONU interface within its EPON NI.", .offset = offsetof(bcmolt_epon_onu_10g_us_key, onu_id), .type = &type_descr_uint8_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_onu_10g_us_key = { .name = "bcmolt_epon_onu_10g_us_key", .descr = "key", .size = sizeof(bcmolt_epon_onu_10g_us_key), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_onu_10g_us_key_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_onu_10g_us_key_fields } } };

/* Group: epon_onu_10g_us - stat */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_onu_10g_us_stat_fec_code_words_total = { .name = "fec_code_words_total", .descr = "FEC stats code words total", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_ONU_10G_US_STAT_ID_FEC_CODE_WORDS_TOTAL, .offset = offsetof(bcmolt_epon_onu_10g_us_stat_data, fec_code_words_total), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_onu_10g_us_stat_fec_code_words_decode_fails = { .name = "fec_code_words_decode_fails", .descr = "FEC stats code words decode fails", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_ONU_10G_US_STAT_ID_FEC_CODE_WORDS_DECODE_FAILS, .offset = offsetof(bcmolt_epon_onu_10g_us_stat_data, fec_code_words_decode_fails), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_onu_10g_us_stat_fec_zeroes_corrected = { .name = "fec_zeroes_corrected", .descr = "FEC stats zeros corrected", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_ONU_10G_US_STAT_ID_FEC_ZEROES_CORRECTED, .offset = offsetof(bcmolt_epon_onu_10g_us_stat_data, fec_zeroes_corrected), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_onu_10g_us_stat_fec_ones_corrected = { .name = "fec_ones_corrected", .descr = "FEC stats ones corected", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_ONU_10G_US_STAT_ID_FEC_ONES_CORRECTED, .offset = offsetof(bcmolt_epon_onu_10g_us_stat_data, fec_ones_corrected), .type = &type_descr_uint64_t };
static bcmcli_prop_descr * BCM_DESCR epon_onu_10g_us_stat_prop_array[] = { &prop_descr_epon_onu_10g_us_stat_fec_code_words_total, &prop_descr_epon_onu_10g_us_stat_fec_code_words_decode_fails, &prop_descr_epon_onu_10g_us_stat_fec_zeroes_corrected, &prop_descr_epon_onu_10g_us_stat_fec_ones_corrected };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_onu_10g_us_stat_data_fields[] = { { .name = "fec_code_words_total", .descr = "FEC stats code words total", .offset = offsetof(bcmolt_epon_onu_10g_us_stat_data, fec_code_words_total), .type = &type_descr_uint64_t }, { .name = "fec_code_words_decode_fails", .descr = "FEC stats code words decode fails", .offset = offsetof(bcmolt_epon_onu_10g_us_stat_data, fec_code_words_decode_fails), .type = &type_descr_uint64_t }, { .name = "fec_zeroes_corrected", .descr = "FEC stats zeros corrected", .offset = offsetof(bcmolt_epon_onu_10g_us_stat_data, fec_zeroes_corrected), .type = &type_descr_uint64_t }, { .name = "fec_ones_corrected", .descr = "FEC stats ones corected", .offset = offsetof(bcmolt_epon_onu_10g_us_stat_data, fec_ones_corrected), .type = &type_descr_uint64_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_onu_10g_us_stat_data = { .name = "bcmolt_epon_onu_10g_us_stat_data", .descr = "stat", .size = sizeof(bcmolt_epon_onu_10g_us_stat_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_onu_10g_us_stat_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_onu_10g_us_stat_data_fields } } };

/* Group: epon_onu_10g_us - cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_onu_10g_us_cfg_all_links = { .name = "all_links", .descr = "List of MAC Addresses for all links on the ONU Id.", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_EPON_ONU_10G_US_CFG_ID_ALL_LINKS, .offset = offsetof(bcmolt_epon_onu_10g_us_cfg_data, all_links), .type = &type_descr_bcmolt_macaddress_list_u32_max_2048 };
static bcmcli_prop_descr * BCM_DESCR epon_onu_10g_us_cfg_prop_array[] = { &prop_descr_epon_onu_10g_us_cfg_all_links };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_onu_10g_us_cfg_data_fields[] = { { .name = "all_links", .descr = "List of MAC Addresses for all links on the ONU Id.", .offset = offsetof(bcmolt_epon_onu_10g_us_cfg_data, all_links), .type = &type_descr_bcmolt_macaddress_list_u32_max_2048 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_onu_10g_us_cfg_data = { .name = "bcmolt_epon_onu_10g_us_cfg_data", .descr = "cfg", .size = sizeof(bcmolt_epon_onu_10g_us_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_onu_10g_us_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_onu_10g_us_cfg_data_fields } } };

/* Group: epon_onu_10g_us - stat_cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_onu_10g_us_stat_cfg_cfg = { .name = "cfg", .descr = "Statistic alarm configuration.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_ONU_10G_US_STAT_CFG_ID_CFG, .offset = offsetof(bcmolt_epon_onu_10g_us_stat_cfg_data, cfg), .type = &type_descr_bcmolt_stat_alarm_config };
static bcmcli_prop_descr * BCM_DESCR epon_onu_10g_us_stat_cfg_prop_array[] = { &prop_descr_epon_onu_10g_us_stat_cfg_cfg };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_onu_10g_us_stat_cfg_data_fields[] = { { .name = "cfg", .descr = "Statistic alarm configuration.", .offset = offsetof(bcmolt_epon_onu_10g_us_stat_cfg_data, cfg), .type = &type_descr_bcmolt_stat_alarm_config } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_onu_10g_us_stat_cfg_data = { .name = "bcmolt_epon_onu_10g_us_stat_cfg_data", .descr = "Statistic Configuration", .size = sizeof(bcmolt_epon_onu_10g_us_stat_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_onu_10g_us_stat_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_onu_10g_us_stat_cfg_data_fields } } };

/* Group: epon_onu_10g_us - stat_alarm_raised */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_onu_10g_us_stat_alarm_raised_stat = { .name = "stat", .descr = "Statistic identifier.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_ONU_10G_US_STAT_ALARM_RAISED_ID_STAT, .offset = offsetof(bcmolt_epon_onu_10g_us_stat_alarm_raised_data, stat), .type = &type_descr_bcmolt_epon_onu_10g_us_stat_id };
static bcmcli_prop_descr * BCM_DESCR epon_onu_10g_us_stat_alarm_raised_prop_array[] = { &prop_descr_epon_onu_10g_us_stat_alarm_raised_stat };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_onu_10g_us_stat_alarm_raised_data_fields[] = { { .name = "stat", .descr = "Statistic identifier.", .offset = offsetof(bcmolt_epon_onu_10g_us_stat_alarm_raised_data, stat), .type = &type_descr_bcmolt_epon_onu_10g_us_stat_id } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_onu_10g_us_stat_alarm_raised_data = { .name = "bcmolt_epon_onu_10g_us_stat_alarm_raised_data", .descr = "Sent when a configured statistic alarm condition has been met.", .size = sizeof(bcmolt_epon_onu_10g_us_stat_alarm_raised_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_onu_10g_us_stat_alarm_raised_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_onu_10g_us_stat_alarm_raised_data_fields } } };

/* Group: epon_onu_10g_us - stat_alarm_cleared */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_onu_10g_us_stat_alarm_cleared_stat = { .name = "stat", .descr = "Statistic identifier.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_ONU_10G_US_STAT_ALARM_CLEARED_ID_STAT, .offset = offsetof(bcmolt_epon_onu_10g_us_stat_alarm_cleared_data, stat), .type = &type_descr_bcmolt_epon_onu_10g_us_stat_id };
static bcmcli_prop_descr * BCM_DESCR epon_onu_10g_us_stat_alarm_cleared_prop_array[] = { &prop_descr_epon_onu_10g_us_stat_alarm_cleared_stat };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_onu_10g_us_stat_alarm_cleared_data_fields[] = { { .name = "stat", .descr = "Statistic identifier.", .offset = offsetof(bcmolt_epon_onu_10g_us_stat_alarm_cleared_data, stat), .type = &type_descr_bcmolt_epon_onu_10g_us_stat_id } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_onu_10g_us_stat_alarm_cleared_data = { .name = "bcmolt_epon_onu_10g_us_stat_alarm_cleared_data", .descr = "Sent when a configured statistic alarm condition is no longer met.", .size = sizeof(bcmolt_epon_onu_10g_us_stat_alarm_cleared_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_onu_10g_us_stat_alarm_cleared_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_onu_10g_us_stat_alarm_cleared_data_fields } } };

/* Group: epon_onu_10g_us - auto_cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_onu_10g_us_auto_cfg_stat_alarm_cleared = { .name = "stat_alarm_cleared", .descr = "If true, indications of type \"stat_alarm_cleared\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_ONU_10G_US_AUTO_CFG_ID_STAT_ALARM_CLEARED, .offset = offsetof(bcmolt_epon_onu_10g_us_auto_cfg_data, stat_alarm_cleared), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_onu_10g_us_auto_cfg_stat_alarm_raised = { .name = "stat_alarm_raised", .descr = "If true, indications of type \"stat_alarm_raised\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_ONU_10G_US_AUTO_CFG_ID_STAT_ALARM_RAISED, .offset = offsetof(bcmolt_epon_onu_10g_us_auto_cfg_data, stat_alarm_raised), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr * BCM_DESCR epon_onu_10g_us_auto_cfg_prop_array[] = { &prop_descr_epon_onu_10g_us_auto_cfg_stat_alarm_cleared, &prop_descr_epon_onu_10g_us_auto_cfg_stat_alarm_raised };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_onu_10g_us_auto_cfg_data_fields[] = { { .name = "stat_alarm_cleared", .descr = "If true, indications of type \"stat_alarm_cleared\" will be generated.", .offset = offsetof(bcmolt_epon_onu_10g_us_auto_cfg_data, stat_alarm_cleared), .type = &type_descr_bcmos_bool }, { .name = "stat_alarm_raised", .descr = "If true, indications of type \"stat_alarm_raised\" will be generated.", .offset = offsetof(bcmolt_epon_onu_10g_us_auto_cfg_data, stat_alarm_raised), .type = &type_descr_bcmos_bool } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_onu_10g_us_auto_cfg_data = { .name = "bcmolt_epon_onu_10g_us_auto_cfg_data", .descr = "Indication Configuration", .size = sizeof(bcmolt_epon_onu_10g_us_auto_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_onu_10g_us_auto_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_onu_10g_us_auto_cfg_data_fields } } };

/* ==== Object: epon_onu_1g_us ==== */

/* Group: epon_onu_1g_us - key */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_onu_1g_us_key_epon_ni = { .name = "epon_ni", .descr = "EPON NI with which this ONU interface is associated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_ONU_1G_US_KEY_ID_EPON_NI, .offset = offsetof(bcmolt_epon_onu_1g_us_key, epon_ni), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_onu_1g_us_key_onu_id = { .name = "onu_id", .descr = "Unique identifier of the ONU interface within its EPON NI.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_ONU_1G_US_KEY_ID_ONU_ID, .offset = offsetof(bcmolt_epon_onu_1g_us_key, onu_id), .type = &type_descr_uint8_t };
static bcmcli_prop_descr * BCM_DESCR epon_onu_1g_us_key_prop_array[] = { &prop_descr_epon_onu_1g_us_key_epon_ni, &prop_descr_epon_onu_1g_us_key_onu_id };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_onu_1g_us_key_fields[] = { { .name = "epon_ni", .descr = "EPON NI with which this ONU interface is associated.", .offset = offsetof(bcmolt_epon_onu_1g_us_key, epon_ni), .type = &type_descr_uint16_t }, { .name = "onu_id", .descr = "Unique identifier of the ONU interface within its EPON NI.", .offset = offsetof(bcmolt_epon_onu_1g_us_key, onu_id), .type = &type_descr_uint8_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_onu_1g_us_key = { .name = "bcmolt_epon_onu_1g_us_key", .descr = "key", .size = sizeof(bcmolt_epon_onu_1g_us_key), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_onu_1g_us_key_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_onu_1g_us_key_fields } } };

/* Group: epon_onu_1g_us - stat */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_onu_1g_us_stat_good_frames = { .name = "good_frames", .descr = "Good Frame Count, including nonFEC and FEC", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_ONU_1G_US_STAT_ID_GOOD_FRAMES, .offset = offsetof(bcmolt_epon_onu_1g_us_stat_data, good_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_onu_1g_us_stat_good_bytes = { .name = "good_bytes", .descr = "Good Byte Count, including nonFEC and FEC", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_ONU_1G_US_STAT_ID_GOOD_BYTES, .offset = offsetof(bcmolt_epon_onu_1g_us_stat_data, good_bytes), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_onu_1g_us_stat_oversz_frames = { .name = "oversz_frames", .descr = "Oversized frame count (frames larger than 2000 bytes)", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_ONU_1G_US_STAT_ID_OVERSZ_FRAMES, .offset = offsetof(bcmolt_epon_onu_1g_us_stat_data, oversz_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_onu_1g_us_stat_non_fec_good_frames = { .name = "non_fec_good_frames", .descr = "Non FEC Good Frame Count", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_ONU_1G_US_STAT_ID_NON_FEC_GOOD_FRAMES, .offset = offsetof(bcmolt_epon_onu_1g_us_stat_data, non_fec_good_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_onu_1g_us_stat_non_fec_good_bytes = { .name = "non_fec_good_bytes", .descr = "Non FEC Good Byte Count", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_ONU_1G_US_STAT_ID_NON_FEC_GOOD_BYTES, .offset = offsetof(bcmolt_epon_onu_1g_us_stat_data, non_fec_good_bytes), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_onu_1g_us_stat_fec_good_frames = { .name = "fec_good_frames", .descr = "FEC Good Frame Count", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_ONU_1G_US_STAT_ID_FEC_GOOD_FRAMES, .offset = offsetof(bcmolt_epon_onu_1g_us_stat_data, fec_good_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_onu_1g_us_stat_fec_good_bytes = { .name = "fec_good_bytes", .descr = "FEC Good Byte Count", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_ONU_1G_US_STAT_ID_FEC_GOOD_BYTES, .offset = offsetof(bcmolt_epon_onu_1g_us_stat_data, fec_good_bytes), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_onu_1g_us_stat_fec_frames_exc_errs = { .name = "fec_frames_exc_errs", .descr = "FEC Frames which exceeded 8 symbol errors", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_ONU_1G_US_STAT_ID_FEC_FRAMES_EXC_ERRS, .offset = offsetof(bcmolt_epon_onu_1g_us_stat_data, fec_frames_exc_errs), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_onu_1g_us_stat_fec_blks_no_errs = { .name = "fec_blks_no_errs", .descr = "FEC Blocks with no errors", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_ONU_1G_US_STAT_ID_FEC_BLKS_NO_ERRS, .offset = offsetof(bcmolt_epon_onu_1g_us_stat_data, fec_blks_no_errs), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_onu_1g_us_stat_fec_blks_corr_errs = { .name = "fec_blks_corr_errs", .descr = "FEC Blocks with correctable errors", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_ONU_1G_US_STAT_ID_FEC_BLKS_CORR_ERRS, .offset = offsetof(bcmolt_epon_onu_1g_us_stat_data, fec_blks_corr_errs), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_onu_1g_us_stat_fec_blks_uncorr_errs = { .name = "fec_blks_uncorr_errs", .descr = "FEC Blocks with uncorrectable errors", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_ONU_1G_US_STAT_ID_FEC_BLKS_UNCORR_ERRS, .offset = offsetof(bcmolt_epon_onu_1g_us_stat_data, fec_blks_uncorr_errs), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_onu_1g_us_stat_fec_corr_bytes = { .name = "fec_corr_bytes", .descr = "FEC Corrected Bytes/Symbols", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_ONU_1G_US_STAT_ID_FEC_CORR_BYTES, .offset = offsetof(bcmolt_epon_onu_1g_us_stat_data, fec_corr_bytes), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_onu_1g_us_stat_fec_corr_zeroes = { .name = "fec_corr_zeroes", .descr = "FEC Corrected Zeroes, 8b domain", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_ONU_1G_US_STAT_ID_FEC_CORR_ZEROES, .offset = offsetof(bcmolt_epon_onu_1g_us_stat_data, fec_corr_zeroes), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_onu_1g_us_stat_fec_corr_ones = { .name = "fec_corr_ones", .descr = "FEC Corrected Ones, 8b domain", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_ONU_1G_US_STAT_ID_FEC_CORR_ONES, .offset = offsetof(bcmolt_epon_onu_1g_us_stat_data, fec_corr_ones), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_onu_1g_us_stat_undersz_frames = { .name = "undersz_frames", .descr = "Undersize frame count (frames less than 64 bytes)", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_ONU_1G_US_STAT_ID_UNDERSZ_FRAMES, .offset = offsetof(bcmolt_epon_onu_1g_us_stat_data, undersz_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_onu_1g_us_stat_errorsz_frames = { .name = "errorsz_frames", .descr = "Errored frame ", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_ONU_1G_US_STAT_ID_ERRORSZ_FRAMES, .offset = offsetof(bcmolt_epon_onu_1g_us_stat_data, errorsz_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr * BCM_DESCR epon_onu_1g_us_stat_prop_array[] = { &prop_descr_epon_onu_1g_us_stat_good_frames, &prop_descr_epon_onu_1g_us_stat_good_bytes, &prop_descr_epon_onu_1g_us_stat_oversz_frames, &prop_descr_epon_onu_1g_us_stat_non_fec_good_frames, &prop_descr_epon_onu_1g_us_stat_non_fec_good_bytes, &prop_descr_epon_onu_1g_us_stat_fec_good_frames, &prop_descr_epon_onu_1g_us_stat_fec_good_bytes, &prop_descr_epon_onu_1g_us_stat_fec_frames_exc_errs, &prop_descr_epon_onu_1g_us_stat_fec_blks_no_errs, &prop_descr_epon_onu_1g_us_stat_fec_blks_corr_errs, &prop_descr_epon_onu_1g_us_stat_fec_blks_uncorr_errs, &prop_descr_epon_onu_1g_us_stat_fec_corr_bytes, &prop_descr_epon_onu_1g_us_stat_fec_corr_zeroes, &prop_descr_epon_onu_1g_us_stat_fec_corr_ones, &prop_descr_epon_onu_1g_us_stat_undersz_frames, &prop_descr_epon_onu_1g_us_stat_errorsz_frames };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_onu_1g_us_stat_data_fields[] = { { .name = "good_frames", .descr = "Good Frame Count, including nonFEC and FEC", .offset = offsetof(bcmolt_epon_onu_1g_us_stat_data, good_frames), .type = &type_descr_uint64_t }, { .name = "good_bytes", .descr = "Good Byte Count, including nonFEC and FEC", .offset = offsetof(bcmolt_epon_onu_1g_us_stat_data, good_bytes), .type = &type_descr_uint64_t }, { .name = "oversz_frames", .descr = "Oversized frame count (frames larger than 2000 bytes)", .offset = offsetof(bcmolt_epon_onu_1g_us_stat_data, oversz_frames), .type = &type_descr_uint64_t }, { .name = "non_fec_good_frames", .descr = "Non FEC Good Frame Count", .offset = offsetof(bcmolt_epon_onu_1g_us_stat_data, non_fec_good_frames), .type = &type_descr_uint64_t }, { .name = "non_fec_good_bytes", .descr = "Non FEC Good Byte Count", .offset = offsetof(bcmolt_epon_onu_1g_us_stat_data, non_fec_good_bytes), .type = &type_descr_uint64_t }, { .name = "fec_good_frames", .descr = "FEC Good Frame Count", .offset = offsetof(bcmolt_epon_onu_1g_us_stat_data, fec_good_frames), .type = &type_descr_uint64_t }, { .name = "fec_good_bytes", .descr = "FEC Good Byte Count", .offset = offsetof(bcmolt_epon_onu_1g_us_stat_data, fec_good_bytes), .type = &type_descr_uint64_t }, { .name = "fec_frames_exc_errs", .descr = "FEC Frames which exceeded 8 symbol errors", .offset = offsetof(bcmolt_epon_onu_1g_us_stat_data, fec_frames_exc_errs), .type = &type_descr_uint64_t }, { .name = "fec_blks_no_errs", .descr = "FEC Blocks with no errors", .offset = offsetof(bcmolt_epon_onu_1g_us_stat_data, fec_blks_no_errs), .type = &type_descr_uint64_t }, { .name = "fec_blks_corr_errs", .descr = "FEC Blocks with correctable errors", .offset = offsetof(bcmolt_epon_onu_1g_us_stat_data, fec_blks_corr_errs), .type = &type_descr_uint64_t }, { .name = "fec_blks_uncorr_errs", .descr = "FEC Blocks with uncorrectable errors", .offset = offsetof(bcmolt_epon_onu_1g_us_stat_data, fec_blks_uncorr_errs), .type = &type_descr_uint64_t }, { .name = "fec_corr_bytes", .descr = "FEC Corrected Bytes/Symbols", .offset = offsetof(bcmolt_epon_onu_1g_us_stat_data, fec_corr_bytes), .type = &type_descr_uint64_t }, { .name = "fec_corr_zeroes", .descr = "FEC Corrected Zeroes, 8b domain", .offset = offsetof(bcmolt_epon_onu_1g_us_stat_data, fec_corr_zeroes), .type = &type_descr_uint64_t }, { .name = "fec_corr_ones", .descr = "FEC Corrected Ones, 8b domain", .offset = offsetof(bcmolt_epon_onu_1g_us_stat_data, fec_corr_ones), .type = &type_descr_uint64_t }, { .name = "undersz_frames", .descr = "Undersize frame count (frames less than 64 bytes)", .offset = offsetof(bcmolt_epon_onu_1g_us_stat_data, undersz_frames), .type = &type_descr_uint64_t }, { .name = "errorsz_frames", .descr = "Errored frame ", .offset = offsetof(bcmolt_epon_onu_1g_us_stat_data, errorsz_frames), .type = &type_descr_uint64_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_onu_1g_us_stat_data = { .name = "bcmolt_epon_onu_1g_us_stat_data", .descr = "stat", .size = sizeof(bcmolt_epon_onu_1g_us_stat_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_onu_1g_us_stat_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_onu_1g_us_stat_data_fields } } };

/* Group: epon_onu_1g_us - cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_onu_1g_us_cfg_all_links = { .name = "all_links", .descr = "List of MAC Addresses for all links on the ONU Id.", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_EPON_ONU_1G_US_CFG_ID_ALL_LINKS, .offset = offsetof(bcmolt_epon_onu_1g_us_cfg_data, all_links), .type = &type_descr_bcmolt_macaddress_list_u32 };
static bcmcli_prop_descr * BCM_DESCR epon_onu_1g_us_cfg_prop_array[] = { &prop_descr_epon_onu_1g_us_cfg_all_links };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_onu_1g_us_cfg_data_fields[] = { { .name = "all_links", .descr = "List of MAC Addresses for all links on the ONU Id.", .offset = offsetof(bcmolt_epon_onu_1g_us_cfg_data, all_links), .type = &type_descr_bcmolt_macaddress_list_u32 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_onu_1g_us_cfg_data = { .name = "bcmolt_epon_onu_1g_us_cfg_data", .descr = "cfg", .size = sizeof(bcmolt_epon_onu_1g_us_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_onu_1g_us_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_onu_1g_us_cfg_data_fields } } };

/* Group: epon_onu_1g_us - stat_cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_onu_1g_us_stat_cfg_cfg = { .name = "cfg", .descr = "Statistic alarm configuration.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_ONU_1G_US_STAT_CFG_ID_CFG, .offset = offsetof(bcmolt_epon_onu_1g_us_stat_cfg_data, cfg), .type = &type_descr_bcmolt_stat_alarm_config };
static bcmcli_prop_descr * BCM_DESCR epon_onu_1g_us_stat_cfg_prop_array[] = { &prop_descr_epon_onu_1g_us_stat_cfg_cfg };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_onu_1g_us_stat_cfg_data_fields[] = { { .name = "cfg", .descr = "Statistic alarm configuration.", .offset = offsetof(bcmolt_epon_onu_1g_us_stat_cfg_data, cfg), .type = &type_descr_bcmolt_stat_alarm_config } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_onu_1g_us_stat_cfg_data = { .name = "bcmolt_epon_onu_1g_us_stat_cfg_data", .descr = "Statistic Configuration", .size = sizeof(bcmolt_epon_onu_1g_us_stat_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_onu_1g_us_stat_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_onu_1g_us_stat_cfg_data_fields } } };

/* Group: epon_onu_1g_us - stat_alarm_raised */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_onu_1g_us_stat_alarm_raised_stat = { .name = "stat", .descr = "Statistic identifier.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_ONU_1G_US_STAT_ALARM_RAISED_ID_STAT, .offset = offsetof(bcmolt_epon_onu_1g_us_stat_alarm_raised_data, stat), .type = &type_descr_bcmolt_epon_onu_1g_us_stat_id };
static bcmcli_prop_descr * BCM_DESCR epon_onu_1g_us_stat_alarm_raised_prop_array[] = { &prop_descr_epon_onu_1g_us_stat_alarm_raised_stat };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_onu_1g_us_stat_alarm_raised_data_fields[] = { { .name = "stat", .descr = "Statistic identifier.", .offset = offsetof(bcmolt_epon_onu_1g_us_stat_alarm_raised_data, stat), .type = &type_descr_bcmolt_epon_onu_1g_us_stat_id } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_onu_1g_us_stat_alarm_raised_data = { .name = "bcmolt_epon_onu_1g_us_stat_alarm_raised_data", .descr = "Sent when a configured statistic alarm condition has been met.", .size = sizeof(bcmolt_epon_onu_1g_us_stat_alarm_raised_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_onu_1g_us_stat_alarm_raised_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_onu_1g_us_stat_alarm_raised_data_fields } } };

/* Group: epon_onu_1g_us - stat_alarm_cleared */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_onu_1g_us_stat_alarm_cleared_stat = { .name = "stat", .descr = "Statistic identifier.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_ONU_1G_US_STAT_ALARM_CLEARED_ID_STAT, .offset = offsetof(bcmolt_epon_onu_1g_us_stat_alarm_cleared_data, stat), .type = &type_descr_bcmolt_epon_onu_1g_us_stat_id };
static bcmcli_prop_descr * BCM_DESCR epon_onu_1g_us_stat_alarm_cleared_prop_array[] = { &prop_descr_epon_onu_1g_us_stat_alarm_cleared_stat };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_onu_1g_us_stat_alarm_cleared_data_fields[] = { { .name = "stat", .descr = "Statistic identifier.", .offset = offsetof(bcmolt_epon_onu_1g_us_stat_alarm_cleared_data, stat), .type = &type_descr_bcmolt_epon_onu_1g_us_stat_id } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_onu_1g_us_stat_alarm_cleared_data = { .name = "bcmolt_epon_onu_1g_us_stat_alarm_cleared_data", .descr = "Sent when a configured statistic alarm condition is no longer met.", .size = sizeof(bcmolt_epon_onu_1g_us_stat_alarm_cleared_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_onu_1g_us_stat_alarm_cleared_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_onu_1g_us_stat_alarm_cleared_data_fields } } };

/* Group: epon_onu_1g_us - auto_cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_onu_1g_us_auto_cfg_stat_alarm_cleared = { .name = "stat_alarm_cleared", .descr = "If true, indications of type \"stat_alarm_cleared\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_ONU_1G_US_AUTO_CFG_ID_STAT_ALARM_CLEARED, .offset = offsetof(bcmolt_epon_onu_1g_us_auto_cfg_data, stat_alarm_cleared), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_onu_1g_us_auto_cfg_stat_alarm_raised = { .name = "stat_alarm_raised", .descr = "If true, indications of type \"stat_alarm_raised\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_ONU_1G_US_AUTO_CFG_ID_STAT_ALARM_RAISED, .offset = offsetof(bcmolt_epon_onu_1g_us_auto_cfg_data, stat_alarm_raised), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr * BCM_DESCR epon_onu_1g_us_auto_cfg_prop_array[] = { &prop_descr_epon_onu_1g_us_auto_cfg_stat_alarm_cleared, &prop_descr_epon_onu_1g_us_auto_cfg_stat_alarm_raised };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_onu_1g_us_auto_cfg_data_fields[] = { { .name = "stat_alarm_cleared", .descr = "If true, indications of type \"stat_alarm_cleared\" will be generated.", .offset = offsetof(bcmolt_epon_onu_1g_us_auto_cfg_data, stat_alarm_cleared), .type = &type_descr_bcmos_bool }, { .name = "stat_alarm_raised", .descr = "If true, indications of type \"stat_alarm_raised\" will be generated.", .offset = offsetof(bcmolt_epon_onu_1g_us_auto_cfg_data, stat_alarm_raised), .type = &type_descr_bcmos_bool } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_onu_1g_us_auto_cfg_data = { .name = "bcmolt_epon_onu_1g_us_auto_cfg_data", .descr = "Indication Configuration", .size = sizeof(bcmolt_epon_onu_1g_us_auto_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_onu_1g_us_auto_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_onu_1g_us_auto_cfg_data_fields } } };

/* ==== Object: epon_path_10g_ds ==== */

/* Group: epon_path_10g_ds - key */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_ds_key_epon_ni = { .name = "epon_ni", .descr = "EPON NI associated with this 10G downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_DS_KEY_ID_EPON_NI, .offset = offsetof(bcmolt_epon_path_10g_ds_key, epon_ni), .type = &type_descr_uint16_t };
static bcmcli_prop_descr * BCM_DESCR epon_path_10g_ds_key_prop_array[] = { &prop_descr_epon_path_10g_ds_key_epon_ni };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_path_10g_ds_key_fields[] = { { .name = "epon_ni", .descr = "EPON NI associated with this 10G downstream path.", .offset = offsetof(bcmolt_epon_path_10g_ds_key, epon_ni), .type = &type_descr_uint16_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_10g_ds_key = { .name = "bcmolt_epon_path_10g_ds_key", .descr = "key", .size = sizeof(bcmolt_epon_path_10g_ds_key), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_path_10g_ds_key_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_path_10g_ds_key_fields } } };

/* Group: epon_path_10g_ds - cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_ds_cfg_fec_state = { .name = "fec_state", .descr = "FEC enable state for the 10G downstream path on this EPON NI.  This attribute cannot be changed while the EPON_NI is enabled.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_DS_CFG_ID_FEC_STATE, .offset = offsetof(bcmolt_epon_path_10g_ds_cfg_data, fec_state), .type = &type_descr_bcmolt_epon_fec_en_state };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_ds_cfg_prbs_generator = { .name = "prbs_generator", .descr = "DS PRBS generator configuration", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_DS_CFG_ID_PRBS_GENERATOR, .offset = offsetof(bcmolt_epon_path_10g_ds_cfg_data, prbs_generator), .type = &type_descr_bcmolt_prbs_generator_config };
static bcmcli_prop_descr * BCM_DESCR epon_path_10g_ds_cfg_prop_array[] = { &prop_descr_epon_path_10g_ds_cfg_fec_state, &prop_descr_epon_path_10g_ds_cfg_prbs_generator };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_path_10g_ds_cfg_data_fields[] = { { .name = "fec_state", .descr = "FEC enable state for the 10G downstream path on this EPON NI.  This attribute cannot be changed while the EPON_NI is enabled.", .offset = offsetof(bcmolt_epon_path_10g_ds_cfg_data, fec_state), .type = &type_descr_bcmolt_epon_fec_en_state }, { .name = "prbs_generator", .descr = "DS PRBS generator configuration", .offset = offsetof(bcmolt_epon_path_10g_ds_cfg_data, prbs_generator), .type = &type_descr_bcmolt_prbs_generator_config } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_10g_ds_cfg_data = { .name = "bcmolt_epon_path_10g_ds_cfg_data", .descr = "cfg", .size = sizeof(bcmolt_epon_path_10g_ds_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_path_10g_ds_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_path_10g_ds_cfg_data_fields } } };

/* Group: epon_path_10g_ds - stat */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_ds_stat_bytes = { .name = "bytes", .descr = "The number of bytes transmitted on this 10g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_DS_STAT_ID_BYTES, .offset = offsetof(bcmolt_epon_path_10g_ds_stat_data, bytes), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_ds_stat_frames = { .name = "frames", .descr = "The number of frames transmitted on this 10g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_DS_STAT_ID_FRAMES, .offset = offsetof(bcmolt_epon_path_10g_ds_stat_data, frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_ds_stat_frames_64 = { .name = "frames_64", .descr = "The number of 64 byte frames transmitted on this 10g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_DS_STAT_ID_FRAMES_64, .offset = offsetof(bcmolt_epon_path_10g_ds_stat_data, frames_64), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_ds_stat_frames_65_127 = { .name = "frames_65_127", .descr = "The number of 65 to 127 byte frames transmitted on this 10g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_DS_STAT_ID_FRAMES_65_127, .offset = offsetof(bcmolt_epon_path_10g_ds_stat_data, frames_65_127), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_ds_stat_frames_128_255 = { .name = "frames_128_255", .descr = "The number of 128 to 255 byte frames transmitted on this 10g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_DS_STAT_ID_FRAMES_128_255, .offset = offsetof(bcmolt_epon_path_10g_ds_stat_data, frames_128_255), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_ds_stat_frames_256_511 = { .name = "frames_256_511", .descr = "The number of 256 to 511 byte frames transmitted on this 10g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_DS_STAT_ID_FRAMES_256_511, .offset = offsetof(bcmolt_epon_path_10g_ds_stat_data, frames_256_511), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_ds_stat_frames_512_1023 = { .name = "frames_512_1023", .descr = "The number of 512 to 1023 byte frames transmitted on this 10g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_DS_STAT_ID_FRAMES_512_1023, .offset = offsetof(bcmolt_epon_path_10g_ds_stat_data, frames_512_1023), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_ds_stat_frames_1024_1518 = { .name = "frames_1024_1518", .descr = "The number of 1024 to 1518 byte frames transmitted on this 10g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_DS_STAT_ID_FRAMES_1024_1518, .offset = offsetof(bcmolt_epon_path_10g_ds_stat_data, frames_1024_1518), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_ds_stat_frames_1519_2047 = { .name = "frames_1519_2047", .descr = "The number of 1519 to 2047 byte frames transmitted on this 10g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_DS_STAT_ID_FRAMES_1519_2047, .offset = offsetof(bcmolt_epon_path_10g_ds_stat_data, frames_1519_2047), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_ds_stat_frames_2048_4095 = { .name = "frames_2048_4095", .descr = "The number of 2048 to 4095 byte frames transmitted on this 10g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_DS_STAT_ID_FRAMES_2048_4095, .offset = offsetof(bcmolt_epon_path_10g_ds_stat_data, frames_2048_4095), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_ds_stat_frames_4096_9216 = { .name = "frames_4096_9216", .descr = "The number of 4096 to 9216 byte frames transmitted on this 10g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_DS_STAT_ID_FRAMES_4096_9216, .offset = offsetof(bcmolt_epon_path_10g_ds_stat_data, frames_4096_9216), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_ds_stat_frames_9217_16383 = { .name = "frames_9217_16383", .descr = "The number of 9217 to 16383 byte frames transmitted on this 10g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_DS_STAT_ID_FRAMES_9217_16383, .offset = offsetof(bcmolt_epon_path_10g_ds_stat_data, frames_9217_16383), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_ds_stat_broadcast_frames = { .name = "broadcast_frames", .descr = "The number of broadcast frames transmitted on this 10g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_DS_STAT_ID_BROADCAST_FRAMES, .offset = offsetof(bcmolt_epon_path_10g_ds_stat_data, broadcast_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_ds_stat_data_bytes = { .name = "data_bytes", .descr = "The number of data bytes transmitted on this 10g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_DS_STAT_ID_DATA_BYTES, .offset = offsetof(bcmolt_epon_path_10g_ds_stat_data, data_bytes), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_ds_stat_multicast_frames = { .name = "multicast_frames", .descr = "The number of multicast frames transmitted on this 10g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_DS_STAT_ID_MULTICAST_FRAMES, .offset = offsetof(bcmolt_epon_path_10g_ds_stat_data, multicast_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_ds_stat_unicast_frames = { .name = "unicast_frames", .descr = "The number of unicast frames transmitted on this 10g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_DS_STAT_ID_UNICAST_FRAMES, .offset = offsetof(bcmolt_epon_path_10g_ds_stat_data, unicast_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_ds_stat_oam_bytes = { .name = "oam_bytes", .descr = "Number of OAM bytes transmitted on this 10g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_DS_STAT_ID_OAM_BYTES, .offset = offsetof(bcmolt_epon_path_10g_ds_stat_data, oam_bytes), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_ds_stat_oam_frames = { .name = "oam_frames", .descr = "Number of OAM frames transmitted on this 10g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_DS_STAT_ID_OAM_FRAMES, .offset = offsetof(bcmolt_epon_path_10g_ds_stat_data, oam_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_ds_stat_gate_frames = { .name = "gate_frames", .descr = "Number of gate frames transmitted on this 10g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_DS_STAT_ID_GATE_FRAMES, .offset = offsetof(bcmolt_epon_path_10g_ds_stat_data, gate_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_ds_stat_mpcp_frames = { .name = "mpcp_frames", .descr = "Number of MPCP frames transmitted on this 10g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_DS_STAT_ID_MPCP_FRAMES, .offset = offsetof(bcmolt_epon_path_10g_ds_stat_data, mpcp_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_ds_stat_abort_frames = { .name = "abort_frames", .descr = "Number of abort frames transmitted on this 10g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_DS_STAT_ID_ABORT_FRAMES, .offset = offsetof(bcmolt_epon_path_10g_ds_stat_data, abort_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr * BCM_DESCR epon_path_10g_ds_stat_prop_array[] = { &prop_descr_epon_path_10g_ds_stat_bytes, &prop_descr_epon_path_10g_ds_stat_frames, &prop_descr_epon_path_10g_ds_stat_frames_64, &prop_descr_epon_path_10g_ds_stat_frames_65_127, &prop_descr_epon_path_10g_ds_stat_frames_128_255, &prop_descr_epon_path_10g_ds_stat_frames_256_511, &prop_descr_epon_path_10g_ds_stat_frames_512_1023, &prop_descr_epon_path_10g_ds_stat_frames_1024_1518, &prop_descr_epon_path_10g_ds_stat_frames_1519_2047, &prop_descr_epon_path_10g_ds_stat_frames_2048_4095, &prop_descr_epon_path_10g_ds_stat_frames_4096_9216, &prop_descr_epon_path_10g_ds_stat_frames_9217_16383, &prop_descr_epon_path_10g_ds_stat_broadcast_frames, &prop_descr_epon_path_10g_ds_stat_data_bytes, &prop_descr_epon_path_10g_ds_stat_multicast_frames, &prop_descr_epon_path_10g_ds_stat_unicast_frames, &prop_descr_epon_path_10g_ds_stat_oam_bytes, &prop_descr_epon_path_10g_ds_stat_oam_frames, &prop_descr_epon_path_10g_ds_stat_gate_frames, &prop_descr_epon_path_10g_ds_stat_mpcp_frames, &prop_descr_epon_path_10g_ds_stat_abort_frames };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_path_10g_ds_stat_data_fields[] = { { .name = "bytes", .descr = "The number of bytes transmitted on this 10g downstream path.", .offset = offsetof(bcmolt_epon_path_10g_ds_stat_data, bytes), .type = &type_descr_uint64_t }, { .name = "frames", .descr = "The number of frames transmitted on this 10g downstream path.", .offset = offsetof(bcmolt_epon_path_10g_ds_stat_data, frames), .type = &type_descr_uint64_t }, { .name = "frames_64", .descr = "The number of 64 byte frames transmitted on this 10g downstream path.", .offset = offsetof(bcmolt_epon_path_10g_ds_stat_data, frames_64), .type = &type_descr_uint64_t }, { .name = "frames_65_127", .descr = "The number of 65 to 127 byte frames transmitted on this 10g downstream path.", .offset = offsetof(bcmolt_epon_path_10g_ds_stat_data, frames_65_127), .type = &type_descr_uint64_t }, { .name = "frames_128_255", .descr = "The number of 128 to 255 byte frames transmitted on this 10g downstream path.", .offset = offsetof(bcmolt_epon_path_10g_ds_stat_data, frames_128_255), .type = &type_descr_uint64_t }, { .name = "frames_256_511", .descr = "The number of 256 to 511 byte frames transmitted on this 10g downstream path.", .offset = offsetof(bcmolt_epon_path_10g_ds_stat_data, frames_256_511), .type = &type_descr_uint64_t }, { .name = "frames_512_1023", .descr = "The number of 512 to 1023 byte frames transmitted on this 10g downstream path.", .offset = offsetof(bcmolt_epon_path_10g_ds_stat_data, frames_512_1023), .type = &type_descr_uint64_t }, { .name = "frames_1024_1518", .descr = "The number of 1024 to 1518 byte frames transmitted on this 10g downstream path.", .offset = offsetof(bcmolt_epon_path_10g_ds_stat_data, frames_1024_1518), .type = &type_descr_uint64_t }, { .name = "frames_1519_2047", .descr = "The number of 1519 to 2047 byte frames transmitted on this 10g downstream path.", .offset = offsetof(bcmolt_epon_path_10g_ds_stat_data, frames_1519_2047), .type = &type_descr_uint64_t }, { .name = "frames_2048_4095", .descr = "The number of 2048 to 4095 byte frames transmitted on this 10g downstream path.", .offset = offsetof(bcmolt_epon_path_10g_ds_stat_data, frames_2048_4095), .type = &type_descr_uint64_t }, { .name = "frames_4096_9216", .descr = "The number of 4096 to 9216 byte frames transmitted on this 10g downstream path.", .offset = offsetof(bcmolt_epon_path_10g_ds_stat_data, frames_4096_9216), .type = &type_descr_uint64_t }, { .name = "frames_9217_16383", .descr = "The number of 9217 to 16383 byte frames transmitted on this 10g downstream path.", .offset = offsetof(bcmolt_epon_path_10g_ds_stat_data, frames_9217_16383), .type = &type_descr_uint64_t }, { .name = "broadcast_frames", .descr = "The number of broadcast frames transmitted on this 10g downstream path.", .offset = offsetof(bcmolt_epon_path_10g_ds_stat_data, broadcast_frames), .type = &type_descr_uint64_t }, { .name = "data_bytes", .descr = "The number of data bytes transmitted on this 10g downstream path.", .offset = offsetof(bcmolt_epon_path_10g_ds_stat_data, data_bytes), .type = &type_descr_uint64_t }, { .name = "multicast_frames", .descr = "The number of multicast frames transmitted on this 10g downstream path.", .offset = offsetof(bcmolt_epon_path_10g_ds_stat_data, multicast_frames), .type = &type_descr_uint64_t }, { .name = "unicast_frames", .descr = "The number of unicast frames transmitted on this 10g downstream path.", .offset = offsetof(bcmolt_epon_path_10g_ds_stat_data, unicast_frames), .type = &type_descr_uint64_t }, { .name = "oam_bytes", .descr = "Number of OAM bytes transmitted on this 10g downstream path.", .offset = offsetof(bcmolt_epon_path_10g_ds_stat_data, oam_bytes), .type = &type_descr_uint64_t }, { .name = "oam_frames", .descr = "Number of OAM frames transmitted on this 10g downstream path.", .offset = offsetof(bcmolt_epon_path_10g_ds_stat_data, oam_frames), .type = &type_descr_uint64_t }, { .name = "gate_frames", .descr = "Number of gate frames transmitted on this 10g downstream path.", .offset = offsetof(bcmolt_epon_path_10g_ds_stat_data, gate_frames), .type = &type_descr_uint64_t }, { .name = "mpcp_frames", .descr = "Number of MPCP frames transmitted on this 10g downstream path.", .offset = offsetof(bcmolt_epon_path_10g_ds_stat_data, mpcp_frames), .type = &type_descr_uint64_t }, { .name = "abort_frames", .descr = "Number of abort frames transmitted on this 10g downstream path.", .offset = offsetof(bcmolt_epon_path_10g_ds_stat_data, abort_frames), .type = &type_descr_uint64_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_10g_ds_stat_data = { .name = "bcmolt_epon_path_10g_ds_stat_data", .descr = "stat", .size = sizeof(bcmolt_epon_path_10g_ds_stat_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_path_10g_ds_stat_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_path_10g_ds_stat_data_fields } } };

/* Group: epon_path_10g_ds - stat_cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_ds_stat_cfg_cfg = { .name = "cfg", .descr = "Statistic alarm configuration.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_DS_STAT_CFG_ID_CFG, .offset = offsetof(bcmolt_epon_path_10g_ds_stat_cfg_data, cfg), .type = &type_descr_bcmolt_stat_alarm_config };
static bcmcli_prop_descr * BCM_DESCR epon_path_10g_ds_stat_cfg_prop_array[] = { &prop_descr_epon_path_10g_ds_stat_cfg_cfg };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_path_10g_ds_stat_cfg_data_fields[] = { { .name = "cfg", .descr = "Statistic alarm configuration.", .offset = offsetof(bcmolt_epon_path_10g_ds_stat_cfg_data, cfg), .type = &type_descr_bcmolt_stat_alarm_config } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_10g_ds_stat_cfg_data = { .name = "bcmolt_epon_path_10g_ds_stat_cfg_data", .descr = "Statistic Configuration", .size = sizeof(bcmolt_epon_path_10g_ds_stat_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_path_10g_ds_stat_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_path_10g_ds_stat_cfg_data_fields } } };

/* Group: epon_path_10g_ds - stat_alarm_raised */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_ds_stat_alarm_raised_stat = { .name = "stat", .descr = "Statistic identifier.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_DS_STAT_ALARM_RAISED_ID_STAT, .offset = offsetof(bcmolt_epon_path_10g_ds_stat_alarm_raised_data, stat), .type = &type_descr_bcmolt_epon_path_10g_ds_stat_id };
static bcmcli_prop_descr * BCM_DESCR epon_path_10g_ds_stat_alarm_raised_prop_array[] = { &prop_descr_epon_path_10g_ds_stat_alarm_raised_stat };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_path_10g_ds_stat_alarm_raised_data_fields[] = { { .name = "stat", .descr = "Statistic identifier.", .offset = offsetof(bcmolt_epon_path_10g_ds_stat_alarm_raised_data, stat), .type = &type_descr_bcmolt_epon_path_10g_ds_stat_id } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_10g_ds_stat_alarm_raised_data = { .name = "bcmolt_epon_path_10g_ds_stat_alarm_raised_data", .descr = "Sent when a configured statistic alarm condition has been met.", .size = sizeof(bcmolt_epon_path_10g_ds_stat_alarm_raised_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_path_10g_ds_stat_alarm_raised_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_path_10g_ds_stat_alarm_raised_data_fields } } };

/* Group: epon_path_10g_ds - stat_alarm_cleared */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_ds_stat_alarm_cleared_stat = { .name = "stat", .descr = "Statistic identifier.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_DS_STAT_ALARM_CLEARED_ID_STAT, .offset = offsetof(bcmolt_epon_path_10g_ds_stat_alarm_cleared_data, stat), .type = &type_descr_bcmolt_epon_path_10g_ds_stat_id };
static bcmcli_prop_descr * BCM_DESCR epon_path_10g_ds_stat_alarm_cleared_prop_array[] = { &prop_descr_epon_path_10g_ds_stat_alarm_cleared_stat };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_path_10g_ds_stat_alarm_cleared_data_fields[] = { { .name = "stat", .descr = "Statistic identifier.", .offset = offsetof(bcmolt_epon_path_10g_ds_stat_alarm_cleared_data, stat), .type = &type_descr_bcmolt_epon_path_10g_ds_stat_id } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_10g_ds_stat_alarm_cleared_data = { .name = "bcmolt_epon_path_10g_ds_stat_alarm_cleared_data", .descr = "Sent when a configured statistic alarm condition is no longer met.", .size = sizeof(bcmolt_epon_path_10g_ds_stat_alarm_cleared_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_path_10g_ds_stat_alarm_cleared_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_path_10g_ds_stat_alarm_cleared_data_fields } } };

/* Group: epon_path_10g_ds - auto_cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_ds_auto_cfg_stat_alarm_cleared = { .name = "stat_alarm_cleared", .descr = "If true, indications of type \"stat_alarm_cleared\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_DS_AUTO_CFG_ID_STAT_ALARM_CLEARED, .offset = offsetof(bcmolt_epon_path_10g_ds_auto_cfg_data, stat_alarm_cleared), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_ds_auto_cfg_stat_alarm_raised = { .name = "stat_alarm_raised", .descr = "If true, indications of type \"stat_alarm_raised\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_DS_AUTO_CFG_ID_STAT_ALARM_RAISED, .offset = offsetof(bcmolt_epon_path_10g_ds_auto_cfg_data, stat_alarm_raised), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr * BCM_DESCR epon_path_10g_ds_auto_cfg_prop_array[] = { &prop_descr_epon_path_10g_ds_auto_cfg_stat_alarm_cleared, &prop_descr_epon_path_10g_ds_auto_cfg_stat_alarm_raised };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_path_10g_ds_auto_cfg_data_fields[] = { { .name = "stat_alarm_cleared", .descr = "If true, indications of type \"stat_alarm_cleared\" will be generated.", .offset = offsetof(bcmolt_epon_path_10g_ds_auto_cfg_data, stat_alarm_cleared), .type = &type_descr_bcmos_bool }, { .name = "stat_alarm_raised", .descr = "If true, indications of type \"stat_alarm_raised\" will be generated.", .offset = offsetof(bcmolt_epon_path_10g_ds_auto_cfg_data, stat_alarm_raised), .type = &type_descr_bcmos_bool } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_10g_ds_auto_cfg_data = { .name = "bcmolt_epon_path_10g_ds_auto_cfg_data", .descr = "Indication Configuration", .size = sizeof(bcmolt_epon_path_10g_ds_auto_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_path_10g_ds_auto_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_path_10g_ds_auto_cfg_data_fields } } };

/* ==== Object: epon_path_10g_us ==== */

/* Group: epon_path_10g_us - key */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_us_key_epon_ni = { .name = "epon_ni", .descr = "EPON NI associated with this 10G upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_US_KEY_ID_EPON_NI, .offset = offsetof(bcmolt_epon_path_10g_us_key, epon_ni), .type = &type_descr_uint16_t };
static bcmcli_prop_descr * BCM_DESCR epon_path_10g_us_key_prop_array[] = { &prop_descr_epon_path_10g_us_key_epon_ni };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_path_10g_us_key_fields[] = { { .name = "epon_ni", .descr = "EPON NI associated with this 10G upstream path.", .offset = offsetof(bcmolt_epon_path_10g_us_key, epon_ni), .type = &type_descr_uint16_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_10g_us_key = { .name = "bcmolt_epon_path_10g_us_key", .descr = "key", .size = sizeof(bcmolt_epon_path_10g_us_key), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_path_10g_us_key_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_path_10g_us_key_fields } } };

/* Group: epon_path_10g_us - cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_us_cfg_fec_state = { .name = "fec_state", .descr = "FEC enable state for the 10G upstream path on this EPON NI.  This attribute cannot be changed while the EPON_NI is enabled.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_US_CFG_ID_FEC_STATE, .offset = offsetof(bcmolt_epon_path_10g_us_cfg_data, fec_state), .type = &type_descr_bcmolt_epon_fec_en_state };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_us_cfg_sync_time_tq = { .name = "sync_time_tq", .descr = "Time quanta of sync at start of US burst.  This attribute cannot be changed while the EPON_NI is enabled.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_US_CFG_ID_SYNC_TIME_TQ, .offset = offsetof(bcmolt_epon_path_10g_us_cfg_data, sync_time_tq), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_us_cfg_prbs_checker = { .name = "prbs_checker", .descr = "US PRBS checker configuration", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_US_CFG_ID_PRBS_CHECKER, .offset = offsetof(bcmolt_epon_path_10g_us_cfg_data, prbs_checker), .type = &type_descr_bcmolt_prbs_checker_config };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_us_cfg_prbs_status = { .name = "prbs_status", .descr = "Result of US PRBS checker", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_EPON_PATH_10G_US_CFG_ID_PRBS_STATUS, .offset = offsetof(bcmolt_epon_path_10g_us_cfg_data, prbs_status), .type = &type_descr_bcmolt_prbs_status };
static bcmcli_prop_descr * BCM_DESCR epon_path_10g_us_cfg_prop_array[] = { &prop_descr_epon_path_10g_us_cfg_fec_state, &prop_descr_epon_path_10g_us_cfg_sync_time_tq, &prop_descr_epon_path_10g_us_cfg_prbs_checker, &prop_descr_epon_path_10g_us_cfg_prbs_status };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_path_10g_us_cfg_data_fields[] = { { .name = "fec_state", .descr = "FEC enable state for the 10G upstream path on this EPON NI.  This attribute cannot be changed while the EPON_NI is enabled.", .offset = offsetof(bcmolt_epon_path_10g_us_cfg_data, fec_state), .type = &type_descr_bcmolt_epon_fec_en_state }, { .name = "sync_time_tq", .descr = "Time quanta of sync at start of US burst.  This attribute cannot be changed while the EPON_NI is enabled.", .offset = offsetof(bcmolt_epon_path_10g_us_cfg_data, sync_time_tq), .type = &type_descr_uint32_t }, { .name = "prbs_checker", .descr = "US PRBS checker configuration", .offset = offsetof(bcmolt_epon_path_10g_us_cfg_data, prbs_checker), .type = &type_descr_bcmolt_prbs_checker_config }, { .name = "prbs_status", .descr = "Result of US PRBS checker", .offset = offsetof(bcmolt_epon_path_10g_us_cfg_data, prbs_status), .type = &type_descr_bcmolt_prbs_status } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_10g_us_cfg_data = { .name = "bcmolt_epon_path_10g_us_cfg_data", .descr = "cfg", .size = sizeof(bcmolt_epon_path_10g_us_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_path_10g_us_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_path_10g_us_cfg_data_fields } } };

/* Group: epon_path_10g_us - stat */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_us_stat_bytes = { .name = "bytes", .descr = "The number of bytes received on this 10g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_US_STAT_ID_BYTES, .offset = offsetof(bcmolt_epon_path_10g_us_stat_data, bytes), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_us_stat_frames = { .name = "frames", .descr = "The number of frames received on this 10g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_US_STAT_ID_FRAMES, .offset = offsetof(bcmolt_epon_path_10g_us_stat_data, frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_us_stat_frames_64 = { .name = "frames_64", .descr = "The number of 64 byte frames received on this 10g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_US_STAT_ID_FRAMES_64, .offset = offsetof(bcmolt_epon_path_10g_us_stat_data, frames_64), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_us_stat_frames_65_127 = { .name = "frames_65_127", .descr = "The number of 65 to 127 byte frames received on this 10g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_US_STAT_ID_FRAMES_65_127, .offset = offsetof(bcmolt_epon_path_10g_us_stat_data, frames_65_127), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_us_stat_frames_128_255 = { .name = "frames_128_255", .descr = "The number of 128 to 255 byte frames received on this 10g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_US_STAT_ID_FRAMES_128_255, .offset = offsetof(bcmolt_epon_path_10g_us_stat_data, frames_128_255), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_us_stat_frames_256_511 = { .name = "frames_256_511", .descr = "The number of 256 to 511 byte frames received on this 10g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_US_STAT_ID_FRAMES_256_511, .offset = offsetof(bcmolt_epon_path_10g_us_stat_data, frames_256_511), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_us_stat_frames_512_1023 = { .name = "frames_512_1023", .descr = "The number of 512 to 1023 byte frames received on this 10g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_US_STAT_ID_FRAMES_512_1023, .offset = offsetof(bcmolt_epon_path_10g_us_stat_data, frames_512_1023), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_us_stat_frames_1024_1518 = { .name = "frames_1024_1518", .descr = "The number of 1024 to 1518 byte frames received on this 10g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_US_STAT_ID_FRAMES_1024_1518, .offset = offsetof(bcmolt_epon_path_10g_us_stat_data, frames_1024_1518), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_us_stat_frames_1519_2047 = { .name = "frames_1519_2047", .descr = "The number of 1519 to 2047 byte frames received on this 10g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_US_STAT_ID_FRAMES_1519_2047, .offset = offsetof(bcmolt_epon_path_10g_us_stat_data, frames_1519_2047), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_us_stat_frames_2048_4095 = { .name = "frames_2048_4095", .descr = "The number of 2048 to 4095 byte frames received on this 10g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_US_STAT_ID_FRAMES_2048_4095, .offset = offsetof(bcmolt_epon_path_10g_us_stat_data, frames_2048_4095), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_us_stat_frames_4096_9216 = { .name = "frames_4096_9216", .descr = "The number of 4096 to 9216 byte frames received on this 10g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_US_STAT_ID_FRAMES_4096_9216, .offset = offsetof(bcmolt_epon_path_10g_us_stat_data, frames_4096_9216), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_us_stat_frames_9217_16383 = { .name = "frames_9217_16383", .descr = "The number of 9217 to 16383 byte frames received on this 10g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_US_STAT_ID_FRAMES_9217_16383, .offset = offsetof(bcmolt_epon_path_10g_us_stat_data, frames_9217_16383), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_us_stat_broadcast_frames = { .name = "broadcast_frames", .descr = "The number of broadcast frames received on this 10g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_US_STAT_ID_BROADCAST_FRAMES, .offset = offsetof(bcmolt_epon_path_10g_us_stat_data, broadcast_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_us_stat_data_bytes = { .name = "data_bytes", .descr = "The number of data bytes received on this 10g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_US_STAT_ID_DATA_BYTES, .offset = offsetof(bcmolt_epon_path_10g_us_stat_data, data_bytes), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_us_stat_multicast_frames = { .name = "multicast_frames", .descr = "The number of multicast frames received on this 10g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_US_STAT_ID_MULTICAST_FRAMES, .offset = offsetof(bcmolt_epon_path_10g_us_stat_data, multicast_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_us_stat_unicast_frames = { .name = "unicast_frames", .descr = "The number of unicast frames received on this 10g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_US_STAT_ID_UNICAST_FRAMES, .offset = offsetof(bcmolt_epon_path_10g_us_stat_data, unicast_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_us_stat_mpcp_frames = { .name = "mpcp_frames", .descr = "The number of MPCP frames received on this 10g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_US_STAT_ID_MPCP_FRAMES, .offset = offsetof(bcmolt_epon_path_10g_us_stat_data, mpcp_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_us_stat_oam_bytes = { .name = "oam_bytes", .descr = "The number of OAM bytes received on this 10g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_US_STAT_ID_OAM_BYTES, .offset = offsetof(bcmolt_epon_path_10g_us_stat_data, oam_bytes), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_us_stat_oam_frames = { .name = "oam_frames", .descr = "The number of OAM frames received on this 10g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_US_STAT_ID_OAM_FRAMES, .offset = offsetof(bcmolt_epon_path_10g_us_stat_data, oam_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_us_stat_report_frames = { .name = "report_frames", .descr = "The number of report frames received on this 10g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_US_STAT_ID_REPORT_FRAMES, .offset = offsetof(bcmolt_epon_path_10g_us_stat_data, report_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_us_stat_abort_frames = { .name = "abort_frames", .descr = "The number of abort frames received on this 10g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_US_STAT_ID_ABORT_FRAMES, .offset = offsetof(bcmolt_epon_path_10g_us_stat_data, abort_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_us_stat_fcs_error = { .name = "fcs_error", .descr = "The number of bad FCS errors received on this 10g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_US_STAT_ID_FCS_ERROR, .offset = offsetof(bcmolt_epon_path_10g_us_stat_data, fcs_error), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_us_stat_crc_8_error = { .name = "crc_8_error", .descr = "The number of CRC8 errors received on this 10g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_US_STAT_ID_CRC_8_ERROR, .offset = offsetof(bcmolt_epon_path_10g_us_stat_data, crc_8_error), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_us_stat_out_of_slot = { .name = "out_of_slot", .descr = "The number of out of slot errors received on this 10g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_US_STAT_ID_OUT_OF_SLOT, .offset = offsetof(bcmolt_epon_path_10g_us_stat_data, out_of_slot), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_us_stat_oversize_error = { .name = "oversize_error", .descr = "The number of oversize errors received on this 10g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_US_STAT_ID_OVERSIZE_ERROR, .offset = offsetof(bcmolt_epon_path_10g_us_stat_data, oversize_error), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_us_stat_runt_error = { .name = "runt_error", .descr = "The number of runt errors received on this 10g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_US_STAT_ID_RUNT_ERROR, .offset = offsetof(bcmolt_epon_path_10g_us_stat_data, runt_error), .type = &type_descr_uint64_t };
static bcmcli_prop_descr * BCM_DESCR epon_path_10g_us_stat_prop_array[] = { &prop_descr_epon_path_10g_us_stat_bytes, &prop_descr_epon_path_10g_us_stat_frames, &prop_descr_epon_path_10g_us_stat_frames_64, &prop_descr_epon_path_10g_us_stat_frames_65_127, &prop_descr_epon_path_10g_us_stat_frames_128_255, &prop_descr_epon_path_10g_us_stat_frames_256_511, &prop_descr_epon_path_10g_us_stat_frames_512_1023, &prop_descr_epon_path_10g_us_stat_frames_1024_1518, &prop_descr_epon_path_10g_us_stat_frames_1519_2047, &prop_descr_epon_path_10g_us_stat_frames_2048_4095, &prop_descr_epon_path_10g_us_stat_frames_4096_9216, &prop_descr_epon_path_10g_us_stat_frames_9217_16383, &prop_descr_epon_path_10g_us_stat_broadcast_frames, &prop_descr_epon_path_10g_us_stat_data_bytes, &prop_descr_epon_path_10g_us_stat_multicast_frames, &prop_descr_epon_path_10g_us_stat_unicast_frames, &prop_descr_epon_path_10g_us_stat_mpcp_frames, &prop_descr_epon_path_10g_us_stat_oam_bytes, &prop_descr_epon_path_10g_us_stat_oam_frames, &prop_descr_epon_path_10g_us_stat_report_frames, &prop_descr_epon_path_10g_us_stat_abort_frames, &prop_descr_epon_path_10g_us_stat_fcs_error, &prop_descr_epon_path_10g_us_stat_crc_8_error, &prop_descr_epon_path_10g_us_stat_out_of_slot, &prop_descr_epon_path_10g_us_stat_oversize_error, &prop_descr_epon_path_10g_us_stat_runt_error };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_path_10g_us_stat_data_fields[] = { { .name = "bytes", .descr = "The number of bytes received on this 10g upstream path.", .offset = offsetof(bcmolt_epon_path_10g_us_stat_data, bytes), .type = &type_descr_uint64_t }, { .name = "frames", .descr = "The number of frames received on this 10g upstream path.", .offset = offsetof(bcmolt_epon_path_10g_us_stat_data, frames), .type = &type_descr_uint64_t }, { .name = "frames_64", .descr = "The number of 64 byte frames received on this 10g upstream path.", .offset = offsetof(bcmolt_epon_path_10g_us_stat_data, frames_64), .type = &type_descr_uint64_t }, { .name = "frames_65_127", .descr = "The number of 65 to 127 byte frames received on this 10g upstream path.", .offset = offsetof(bcmolt_epon_path_10g_us_stat_data, frames_65_127), .type = &type_descr_uint64_t }, { .name = "frames_128_255", .descr = "The number of 128 to 255 byte frames received on this 10g upstream path.", .offset = offsetof(bcmolt_epon_path_10g_us_stat_data, frames_128_255), .type = &type_descr_uint64_t }, { .name = "frames_256_511", .descr = "The number of 256 to 511 byte frames received on this 10g upstream path.", .offset = offsetof(bcmolt_epon_path_10g_us_stat_data, frames_256_511), .type = &type_descr_uint64_t }, { .name = "frames_512_1023", .descr = "The number of 512 to 1023 byte frames received on this 10g upstream path.", .offset = offsetof(bcmolt_epon_path_10g_us_stat_data, frames_512_1023), .type = &type_descr_uint64_t }, { .name = "frames_1024_1518", .descr = "The number of 1024 to 1518 byte frames received on this 10g upstream path.", .offset = offsetof(bcmolt_epon_path_10g_us_stat_data, frames_1024_1518), .type = &type_descr_uint64_t }, { .name = "frames_1519_2047", .descr = "The number of 1519 to 2047 byte frames received on this 10g upstream path.", .offset = offsetof(bcmolt_epon_path_10g_us_stat_data, frames_1519_2047), .type = &type_descr_uint64_t }, { .name = "frames_2048_4095", .descr = "The number of 2048 to 4095 byte frames received on this 10g upstream path.", .offset = offsetof(bcmolt_epon_path_10g_us_stat_data, frames_2048_4095), .type = &type_descr_uint64_t }, { .name = "frames_4096_9216", .descr = "The number of 4096 to 9216 byte frames received on this 10g upstream path.", .offset = offsetof(bcmolt_epon_path_10g_us_stat_data, frames_4096_9216), .type = &type_descr_uint64_t }, { .name = "frames_9217_16383", .descr = "The number of 9217 to 16383 byte frames received on this 10g upstream path.", .offset = offsetof(bcmolt_epon_path_10g_us_stat_data, frames_9217_16383), .type = &type_descr_uint64_t }, { .name = "broadcast_frames", .descr = "The number of broadcast frames received on this 10g upstream path.", .offset = offsetof(bcmolt_epon_path_10g_us_stat_data, broadcast_frames), .type = &type_descr_uint64_t }, { .name = "data_bytes", .descr = "The number of data bytes received on this 10g upstream path.", .offset = offsetof(bcmolt_epon_path_10g_us_stat_data, data_bytes), .type = &type_descr_uint64_t }, { .name = "multicast_frames", .descr = "The number of multicast frames received on this 10g upstream path.", .offset = offsetof(bcmolt_epon_path_10g_us_stat_data, multicast_frames), .type = &type_descr_uint64_t }, { .name = "unicast_frames", .descr = "The number of unicast frames received on this 10g upstream path.", .offset = offsetof(bcmolt_epon_path_10g_us_stat_data, unicast_frames), .type = &type_descr_uint64_t }, { .name = "mpcp_frames", .descr = "The number of MPCP frames received on this 10g upstream path.", .offset = offsetof(bcmolt_epon_path_10g_us_stat_data, mpcp_frames), .type = &type_descr_uint64_t }, { .name = "oam_bytes", .descr = "The number of OAM bytes received on this 10g upstream path.", .offset = offsetof(bcmolt_epon_path_10g_us_stat_data, oam_bytes), .type = &type_descr_uint64_t }, { .name = "oam_frames", .descr = "The number of OAM frames received on this 10g upstream path.", .offset = offsetof(bcmolt_epon_path_10g_us_stat_data, oam_frames), .type = &type_descr_uint64_t }, { .name = "report_frames", .descr = "The number of report frames received on this 10g upstream path.", .offset = offsetof(bcmolt_epon_path_10g_us_stat_data, report_frames), .type = &type_descr_uint64_t }, { .name = "abort_frames", .descr = "The number of abort frames received on this 10g upstream path.", .offset = offsetof(bcmolt_epon_path_10g_us_stat_data, abort_frames), .type = &type_descr_uint64_t }, { .name = "fcs_error", .descr = "The number of bad FCS errors received on this 10g upstream path.", .offset = offsetof(bcmolt_epon_path_10g_us_stat_data, fcs_error), .type = &type_descr_uint64_t }, { .name = "crc_8_error", .descr = "The number of CRC8 errors received on this 10g upstream path.", .offset = offsetof(bcmolt_epon_path_10g_us_stat_data, crc_8_error), .type = &type_descr_uint64_t }, { .name = "out_of_slot", .descr = "The number of out of slot errors received on this 10g upstream path.", .offset = offsetof(bcmolt_epon_path_10g_us_stat_data, out_of_slot), .type = &type_descr_uint64_t }, { .name = "oversize_error", .descr = "The number of oversize errors received on this 10g upstream path.", .offset = offsetof(bcmolt_epon_path_10g_us_stat_data, oversize_error), .type = &type_descr_uint64_t }, { .name = "runt_error", .descr = "The number of runt errors received on this 10g upstream path.", .offset = offsetof(bcmolt_epon_path_10g_us_stat_data, runt_error), .type = &type_descr_uint64_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_10g_us_stat_data = { .name = "bcmolt_epon_path_10g_us_stat_data", .descr = "stat", .size = sizeof(bcmolt_epon_path_10g_us_stat_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_path_10g_us_stat_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_path_10g_us_stat_data_fields } } };

/* Group: epon_path_10g_us - stat_cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_us_stat_cfg_cfg = { .name = "cfg", .descr = "Statistic alarm configuration.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_US_STAT_CFG_ID_CFG, .offset = offsetof(bcmolt_epon_path_10g_us_stat_cfg_data, cfg), .type = &type_descr_bcmolt_stat_alarm_config };
static bcmcli_prop_descr * BCM_DESCR epon_path_10g_us_stat_cfg_prop_array[] = { &prop_descr_epon_path_10g_us_stat_cfg_cfg };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_path_10g_us_stat_cfg_data_fields[] = { { .name = "cfg", .descr = "Statistic alarm configuration.", .offset = offsetof(bcmolt_epon_path_10g_us_stat_cfg_data, cfg), .type = &type_descr_bcmolt_stat_alarm_config } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_10g_us_stat_cfg_data = { .name = "bcmolt_epon_path_10g_us_stat_cfg_data", .descr = "Statistic Configuration", .size = sizeof(bcmolt_epon_path_10g_us_stat_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_path_10g_us_stat_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_path_10g_us_stat_cfg_data_fields } } };

/* Group: epon_path_10g_us - stat_alarm_raised */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_us_stat_alarm_raised_stat = { .name = "stat", .descr = "Statistic identifier.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_US_STAT_ALARM_RAISED_ID_STAT, .offset = offsetof(bcmolt_epon_path_10g_us_stat_alarm_raised_data, stat), .type = &type_descr_bcmolt_epon_path_10g_us_stat_id };
static bcmcli_prop_descr * BCM_DESCR epon_path_10g_us_stat_alarm_raised_prop_array[] = { &prop_descr_epon_path_10g_us_stat_alarm_raised_stat };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_path_10g_us_stat_alarm_raised_data_fields[] = { { .name = "stat", .descr = "Statistic identifier.", .offset = offsetof(bcmolt_epon_path_10g_us_stat_alarm_raised_data, stat), .type = &type_descr_bcmolt_epon_path_10g_us_stat_id } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_10g_us_stat_alarm_raised_data = { .name = "bcmolt_epon_path_10g_us_stat_alarm_raised_data", .descr = "Sent when a configured statistic alarm condition has been met.", .size = sizeof(bcmolt_epon_path_10g_us_stat_alarm_raised_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_path_10g_us_stat_alarm_raised_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_path_10g_us_stat_alarm_raised_data_fields } } };

/* Group: epon_path_10g_us - stat_alarm_cleared */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_us_stat_alarm_cleared_stat = { .name = "stat", .descr = "Statistic identifier.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_US_STAT_ALARM_CLEARED_ID_STAT, .offset = offsetof(bcmolt_epon_path_10g_us_stat_alarm_cleared_data, stat), .type = &type_descr_bcmolt_epon_path_10g_us_stat_id };
static bcmcli_prop_descr * BCM_DESCR epon_path_10g_us_stat_alarm_cleared_prop_array[] = { &prop_descr_epon_path_10g_us_stat_alarm_cleared_stat };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_path_10g_us_stat_alarm_cleared_data_fields[] = { { .name = "stat", .descr = "Statistic identifier.", .offset = offsetof(bcmolt_epon_path_10g_us_stat_alarm_cleared_data, stat), .type = &type_descr_bcmolt_epon_path_10g_us_stat_id } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_10g_us_stat_alarm_cleared_data = { .name = "bcmolt_epon_path_10g_us_stat_alarm_cleared_data", .descr = "Sent when a configured statistic alarm condition is no longer met.", .size = sizeof(bcmolt_epon_path_10g_us_stat_alarm_cleared_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_path_10g_us_stat_alarm_cleared_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_path_10g_us_stat_alarm_cleared_data_fields } } };

/* Group: epon_path_10g_us - auto_cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_us_auto_cfg_stat_alarm_cleared = { .name = "stat_alarm_cleared", .descr = "If true, indications of type \"stat_alarm_cleared\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_US_AUTO_CFG_ID_STAT_ALARM_CLEARED, .offset = offsetof(bcmolt_epon_path_10g_us_auto_cfg_data, stat_alarm_cleared), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_10g_us_auto_cfg_stat_alarm_raised = { .name = "stat_alarm_raised", .descr = "If true, indications of type \"stat_alarm_raised\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_10G_US_AUTO_CFG_ID_STAT_ALARM_RAISED, .offset = offsetof(bcmolt_epon_path_10g_us_auto_cfg_data, stat_alarm_raised), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr * BCM_DESCR epon_path_10g_us_auto_cfg_prop_array[] = { &prop_descr_epon_path_10g_us_auto_cfg_stat_alarm_cleared, &prop_descr_epon_path_10g_us_auto_cfg_stat_alarm_raised };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_path_10g_us_auto_cfg_data_fields[] = { { .name = "stat_alarm_cleared", .descr = "If true, indications of type \"stat_alarm_cleared\" will be generated.", .offset = offsetof(bcmolt_epon_path_10g_us_auto_cfg_data, stat_alarm_cleared), .type = &type_descr_bcmos_bool }, { .name = "stat_alarm_raised", .descr = "If true, indications of type \"stat_alarm_raised\" will be generated.", .offset = offsetof(bcmolt_epon_path_10g_us_auto_cfg_data, stat_alarm_raised), .type = &type_descr_bcmos_bool } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_10g_us_auto_cfg_data = { .name = "bcmolt_epon_path_10g_us_auto_cfg_data", .descr = "Indication Configuration", .size = sizeof(bcmolt_epon_path_10g_us_auto_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_path_10g_us_auto_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_path_10g_us_auto_cfg_data_fields } } };

/* ==== Object: epon_path_1g_ds ==== */

/* Group: epon_path_1g_ds - key */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_ds_key_epon_ni = { .name = "epon_ni", .descr = "EPON NI associated with this 1G downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_DS_KEY_ID_EPON_NI, .offset = offsetof(bcmolt_epon_path_1g_ds_key, epon_ni), .type = &type_descr_uint16_t };
static bcmcli_prop_descr * BCM_DESCR epon_path_1g_ds_key_prop_array[] = { &prop_descr_epon_path_1g_ds_key_epon_ni };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_path_1g_ds_key_fields[] = { { .name = "epon_ni", .descr = "EPON NI associated with this 1G downstream path.", .offset = offsetof(bcmolt_epon_path_1g_ds_key, epon_ni), .type = &type_descr_uint16_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_1g_ds_key = { .name = "bcmolt_epon_path_1g_ds_key", .descr = "key", .size = sizeof(bcmolt_epon_path_1g_ds_key), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_path_1g_ds_key_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_path_1g_ds_key_fields } } };

/* Group: epon_path_1g_ds - cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_ds_cfg_default_fec_state = { .name = "default_fec_state", .descr = "Default FEC enable state for the 1G downstream path on this EPON NI.  This attribute cannot be changed while the EPON_NI is enabled.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_DS_CFG_ID_DEFAULT_FEC_STATE, .offset = offsetof(bcmolt_epon_path_1g_ds_cfg_data, default_fec_state), .type = &type_descr_bcmolt_epon_fec_en_state };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_ds_cfg_raman_mode = { .name = "raman_mode", .descr = "Raman mitigation mode for the 1G downstream path on this EPON NI.  Raman mitigation cannot coexist with turbo mode.  This attribute cannot be changed while the EPON_NI is enabled.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_DS_CFG_ID_RAMAN_MODE, .offset = offsetof(bcmolt_epon_path_1g_ds_cfg_data, raman_mode), .type = &type_descr_bcmolt_raman_mitigation_mode };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_ds_cfg_turbo_2g_mode = { .name = "turbo_2g_mode", .descr = "Operate the 1G downstream path at the turbo 2G data rate on this EPON NI.  Raman mitigation cannot coexist with turbo mode.  This attribute cannot be changed while the EPON_NI is enabled.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_DS_CFG_ID_TURBO_2G_MODE, .offset = offsetof(bcmolt_epon_path_1g_ds_cfg_data, turbo_2g_mode), .type = &type_descr_bcmolt_epon_1g_turbo_mode };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_ds_cfg_prbs_generator = { .name = "prbs_generator", .descr = "DS PRBS generator configuration", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_DS_CFG_ID_PRBS_GENERATOR, .offset = offsetof(bcmolt_epon_path_1g_ds_cfg_data, prbs_generator), .type = &type_descr_bcmolt_prbs_generator_config };
static bcmcli_prop_descr * BCM_DESCR epon_path_1g_ds_cfg_prop_array[] = { &prop_descr_epon_path_1g_ds_cfg_default_fec_state, &prop_descr_epon_path_1g_ds_cfg_raman_mode, &prop_descr_epon_path_1g_ds_cfg_turbo_2g_mode, &prop_descr_epon_path_1g_ds_cfg_prbs_generator };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_path_1g_ds_cfg_data_fields[] = { { .name = "default_fec_state", .descr = "Default FEC enable state for the 1G downstream path on this EPON NI.  This attribute cannot be changed while the EPON_NI is enabled.", .offset = offsetof(bcmolt_epon_path_1g_ds_cfg_data, default_fec_state), .type = &type_descr_bcmolt_epon_fec_en_state }, { .name = "raman_mode", .descr = "Raman mitigation mode for the 1G downstream path on this EPON NI.  Raman mitigation cannot coexist with turbo mode.  This attribute cannot be changed while the EPON_NI is enabled.", .offset = offsetof(bcmolt_epon_path_1g_ds_cfg_data, raman_mode), .type = &type_descr_bcmolt_raman_mitigation_mode }, { .name = "turbo_2g_mode", .descr = "Operate the 1G downstream path at the turbo 2G data rate on this EPON NI.  Raman mitigation cannot coexist with turbo mode.  This attribute cannot be changed while the EPON_NI is enabled.", .offset = offsetof(bcmolt_epon_path_1g_ds_cfg_data, turbo_2g_mode), .type = &type_descr_bcmolt_epon_1g_turbo_mode }, { .name = "prbs_generator", .descr = "DS PRBS generator configuration", .offset = offsetof(bcmolt_epon_path_1g_ds_cfg_data, prbs_generator), .type = &type_descr_bcmolt_prbs_generator_config } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_1g_ds_cfg_data = { .name = "bcmolt_epon_path_1g_ds_cfg_data", .descr = "cfg", .size = sizeof(bcmolt_epon_path_1g_ds_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_path_1g_ds_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_path_1g_ds_cfg_data_fields } } };

/* Group: epon_path_1g_ds - stat */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_ds_stat_bytes = { .name = "bytes", .descr = "The number of bytes transmitted on this 1g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_DS_STAT_ID_BYTES, .offset = offsetof(bcmolt_epon_path_1g_ds_stat_data, bytes), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_ds_stat_frames = { .name = "frames", .descr = "The number of frames transmitted on this 1g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_DS_STAT_ID_FRAMES, .offset = offsetof(bcmolt_epon_path_1g_ds_stat_data, frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_ds_stat_frames_64 = { .name = "frames_64", .descr = "The number of 64 byte frames transmitted on this 1g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_DS_STAT_ID_FRAMES_64, .offset = offsetof(bcmolt_epon_path_1g_ds_stat_data, frames_64), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_ds_stat_frames_65_127 = { .name = "frames_65_127", .descr = "The number of 65 to 127 byte frames transmitted on this 1g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_DS_STAT_ID_FRAMES_65_127, .offset = offsetof(bcmolt_epon_path_1g_ds_stat_data, frames_65_127), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_ds_stat_frames_128_255 = { .name = "frames_128_255", .descr = "The number of 128 to 255 byte frames transmitted on this 1g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_DS_STAT_ID_FRAMES_128_255, .offset = offsetof(bcmolt_epon_path_1g_ds_stat_data, frames_128_255), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_ds_stat_frames_256_511 = { .name = "frames_256_511", .descr = "The number of 256 to 511 byte frames transmitted on this 1g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_DS_STAT_ID_FRAMES_256_511, .offset = offsetof(bcmolt_epon_path_1g_ds_stat_data, frames_256_511), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_ds_stat_frames_512_1023 = { .name = "frames_512_1023", .descr = "The number of 512 to 1023 byte frames transmitted on this 1g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_DS_STAT_ID_FRAMES_512_1023, .offset = offsetof(bcmolt_epon_path_1g_ds_stat_data, frames_512_1023), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_ds_stat_frames_1024_1518 = { .name = "frames_1024_1518", .descr = "The number of 1024 to 1518 byte frames transmitted on this 1g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_DS_STAT_ID_FRAMES_1024_1518, .offset = offsetof(bcmolt_epon_path_1g_ds_stat_data, frames_1024_1518), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_ds_stat_frames_1519_2047 = { .name = "frames_1519_2047", .descr = "The number of 1519 to 2047 byte frames transmitted on this 1g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_DS_STAT_ID_FRAMES_1519_2047, .offset = offsetof(bcmolt_epon_path_1g_ds_stat_data, frames_1519_2047), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_ds_stat_frames_2048_4095 = { .name = "frames_2048_4095", .descr = "The number of 2048 to 4095 byte frames transmitted on this 1g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_DS_STAT_ID_FRAMES_2048_4095, .offset = offsetof(bcmolt_epon_path_1g_ds_stat_data, frames_2048_4095), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_ds_stat_frames_4096_9216 = { .name = "frames_4096_9216", .descr = "The number of 4096 to 9216 byte frames transmitted on this 1g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_DS_STAT_ID_FRAMES_4096_9216, .offset = offsetof(bcmolt_epon_path_1g_ds_stat_data, frames_4096_9216), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_ds_stat_frames_9217_16383 = { .name = "frames_9217_16383", .descr = "The number of 9217 to 16383 byte frames transmitted on this 1g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_DS_STAT_ID_FRAMES_9217_16383, .offset = offsetof(bcmolt_epon_path_1g_ds_stat_data, frames_9217_16383), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_ds_stat_broadcast_frames = { .name = "broadcast_frames", .descr = "The number of broadcast frames transmitted on this 1g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_DS_STAT_ID_BROADCAST_FRAMES, .offset = offsetof(bcmolt_epon_path_1g_ds_stat_data, broadcast_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_ds_stat_data_bytes = { .name = "data_bytes", .descr = "The number of data bytes transmitted on this 1g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_DS_STAT_ID_DATA_BYTES, .offset = offsetof(bcmolt_epon_path_1g_ds_stat_data, data_bytes), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_ds_stat_multicast_frames = { .name = "multicast_frames", .descr = "The number of multicast frames transmitted on this 1g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_DS_STAT_ID_MULTICAST_FRAMES, .offset = offsetof(bcmolt_epon_path_1g_ds_stat_data, multicast_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_ds_stat_unicast_frames = { .name = "unicast_frames", .descr = "The number of unicast frames transmitted on this 1g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_DS_STAT_ID_UNICAST_FRAMES, .offset = offsetof(bcmolt_epon_path_1g_ds_stat_data, unicast_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_ds_stat_oam_bytes = { .name = "oam_bytes", .descr = "Number of OAM bytes transmitted on this 1g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_DS_STAT_ID_OAM_BYTES, .offset = offsetof(bcmolt_epon_path_1g_ds_stat_data, oam_bytes), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_ds_stat_oam_frames = { .name = "oam_frames", .descr = "Number of OAM frames transmitted on this 1g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_DS_STAT_ID_OAM_FRAMES, .offset = offsetof(bcmolt_epon_path_1g_ds_stat_data, oam_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_ds_stat_gate_frames = { .name = "gate_frames", .descr = "Number of gate frames transmitted on this 1g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_DS_STAT_ID_GATE_FRAMES, .offset = offsetof(bcmolt_epon_path_1g_ds_stat_data, gate_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_ds_stat_mpcp_frames = { .name = "mpcp_frames", .descr = "Number of MPCP frames transmitted on this 1g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_DS_STAT_ID_MPCP_FRAMES, .offset = offsetof(bcmolt_epon_path_1g_ds_stat_data, mpcp_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_ds_stat_abort_frames = { .name = "abort_frames", .descr = "Number of abort frames transmitted on this 1g downstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_DS_STAT_ID_ABORT_FRAMES, .offset = offsetof(bcmolt_epon_path_1g_ds_stat_data, abort_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr * BCM_DESCR epon_path_1g_ds_stat_prop_array[] = { &prop_descr_epon_path_1g_ds_stat_bytes, &prop_descr_epon_path_1g_ds_stat_frames, &prop_descr_epon_path_1g_ds_stat_frames_64, &prop_descr_epon_path_1g_ds_stat_frames_65_127, &prop_descr_epon_path_1g_ds_stat_frames_128_255, &prop_descr_epon_path_1g_ds_stat_frames_256_511, &prop_descr_epon_path_1g_ds_stat_frames_512_1023, &prop_descr_epon_path_1g_ds_stat_frames_1024_1518, &prop_descr_epon_path_1g_ds_stat_frames_1519_2047, &prop_descr_epon_path_1g_ds_stat_frames_2048_4095, &prop_descr_epon_path_1g_ds_stat_frames_4096_9216, &prop_descr_epon_path_1g_ds_stat_frames_9217_16383, &prop_descr_epon_path_1g_ds_stat_broadcast_frames, &prop_descr_epon_path_1g_ds_stat_data_bytes, &prop_descr_epon_path_1g_ds_stat_multicast_frames, &prop_descr_epon_path_1g_ds_stat_unicast_frames, &prop_descr_epon_path_1g_ds_stat_oam_bytes, &prop_descr_epon_path_1g_ds_stat_oam_frames, &prop_descr_epon_path_1g_ds_stat_gate_frames, &prop_descr_epon_path_1g_ds_stat_mpcp_frames, &prop_descr_epon_path_1g_ds_stat_abort_frames };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_path_1g_ds_stat_data_fields[] = { { .name = "bytes", .descr = "The number of bytes transmitted on this 1g downstream path.", .offset = offsetof(bcmolt_epon_path_1g_ds_stat_data, bytes), .type = &type_descr_uint64_t }, { .name = "frames", .descr = "The number of frames transmitted on this 1g downstream path.", .offset = offsetof(bcmolt_epon_path_1g_ds_stat_data, frames), .type = &type_descr_uint64_t }, { .name = "frames_64", .descr = "The number of 64 byte frames transmitted on this 1g downstream path.", .offset = offsetof(bcmolt_epon_path_1g_ds_stat_data, frames_64), .type = &type_descr_uint64_t }, { .name = "frames_65_127", .descr = "The number of 65 to 127 byte frames transmitted on this 1g downstream path.", .offset = offsetof(bcmolt_epon_path_1g_ds_stat_data, frames_65_127), .type = &type_descr_uint64_t }, { .name = "frames_128_255", .descr = "The number of 128 to 255 byte frames transmitted on this 1g downstream path.", .offset = offsetof(bcmolt_epon_path_1g_ds_stat_data, frames_128_255), .type = &type_descr_uint64_t }, { .name = "frames_256_511", .descr = "The number of 256 to 511 byte frames transmitted on this 1g downstream path.", .offset = offsetof(bcmolt_epon_path_1g_ds_stat_data, frames_256_511), .type = &type_descr_uint64_t }, { .name = "frames_512_1023", .descr = "The number of 512 to 1023 byte frames transmitted on this 1g downstream path.", .offset = offsetof(bcmolt_epon_path_1g_ds_stat_data, frames_512_1023), .type = &type_descr_uint64_t }, { .name = "frames_1024_1518", .descr = "The number of 1024 to 1518 byte frames transmitted on this 1g downstream path.", .offset = offsetof(bcmolt_epon_path_1g_ds_stat_data, frames_1024_1518), .type = &type_descr_uint64_t }, { .name = "frames_1519_2047", .descr = "The number of 1519 to 2047 byte frames transmitted on this 1g downstream path.", .offset = offsetof(bcmolt_epon_path_1g_ds_stat_data, frames_1519_2047), .type = &type_descr_uint64_t }, { .name = "frames_2048_4095", .descr = "The number of 2048 to 4095 byte frames transmitted on this 1g downstream path.", .offset = offsetof(bcmolt_epon_path_1g_ds_stat_data, frames_2048_4095), .type = &type_descr_uint64_t }, { .name = "frames_4096_9216", .descr = "The number of 4096 to 9216 byte frames transmitted on this 1g downstream path.", .offset = offsetof(bcmolt_epon_path_1g_ds_stat_data, frames_4096_9216), .type = &type_descr_uint64_t }, { .name = "frames_9217_16383", .descr = "The number of 9217 to 16383 byte frames transmitted on this 1g downstream path.", .offset = offsetof(bcmolt_epon_path_1g_ds_stat_data, frames_9217_16383), .type = &type_descr_uint64_t }, { .name = "broadcast_frames", .descr = "The number of broadcast frames transmitted on this 1g downstream path.", .offset = offsetof(bcmolt_epon_path_1g_ds_stat_data, broadcast_frames), .type = &type_descr_uint64_t }, { .name = "data_bytes", .descr = "The number of data bytes transmitted on this 1g downstream path.", .offset = offsetof(bcmolt_epon_path_1g_ds_stat_data, data_bytes), .type = &type_descr_uint64_t }, { .name = "multicast_frames", .descr = "The number of multicast frames transmitted on this 1g downstream path.", .offset = offsetof(bcmolt_epon_path_1g_ds_stat_data, multicast_frames), .type = &type_descr_uint64_t }, { .name = "unicast_frames", .descr = "The number of unicast frames transmitted on this 1g downstream path.", .offset = offsetof(bcmolt_epon_path_1g_ds_stat_data, unicast_frames), .type = &type_descr_uint64_t }, { .name = "oam_bytes", .descr = "Number of OAM bytes transmitted on this 1g downstream path.", .offset = offsetof(bcmolt_epon_path_1g_ds_stat_data, oam_bytes), .type = &type_descr_uint64_t }, { .name = "oam_frames", .descr = "Number of OAM frames transmitted on this 1g downstream path.", .offset = offsetof(bcmolt_epon_path_1g_ds_stat_data, oam_frames), .type = &type_descr_uint64_t }, { .name = "gate_frames", .descr = "Number of gate frames transmitted on this 1g downstream path.", .offset = offsetof(bcmolt_epon_path_1g_ds_stat_data, gate_frames), .type = &type_descr_uint64_t }, { .name = "mpcp_frames", .descr = "Number of MPCP frames transmitted on this 1g downstream path.", .offset = offsetof(bcmolt_epon_path_1g_ds_stat_data, mpcp_frames), .type = &type_descr_uint64_t }, { .name = "abort_frames", .descr = "Number of abort frames transmitted on this 1g downstream path.", .offset = offsetof(bcmolt_epon_path_1g_ds_stat_data, abort_frames), .type = &type_descr_uint64_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_1g_ds_stat_data = { .name = "bcmolt_epon_path_1g_ds_stat_data", .descr = "stat", .size = sizeof(bcmolt_epon_path_1g_ds_stat_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_path_1g_ds_stat_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_path_1g_ds_stat_data_fields } } };

/* Group: epon_path_1g_ds - stat_cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_ds_stat_cfg_cfg = { .name = "cfg", .descr = "Statistic alarm configuration.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_DS_STAT_CFG_ID_CFG, .offset = offsetof(bcmolt_epon_path_1g_ds_stat_cfg_data, cfg), .type = &type_descr_bcmolt_stat_alarm_config };
static bcmcli_prop_descr * BCM_DESCR epon_path_1g_ds_stat_cfg_prop_array[] = { &prop_descr_epon_path_1g_ds_stat_cfg_cfg };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_path_1g_ds_stat_cfg_data_fields[] = { { .name = "cfg", .descr = "Statistic alarm configuration.", .offset = offsetof(bcmolt_epon_path_1g_ds_stat_cfg_data, cfg), .type = &type_descr_bcmolt_stat_alarm_config } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_1g_ds_stat_cfg_data = { .name = "bcmolt_epon_path_1g_ds_stat_cfg_data", .descr = "Statistic Configuration", .size = sizeof(bcmolt_epon_path_1g_ds_stat_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_path_1g_ds_stat_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_path_1g_ds_stat_cfg_data_fields } } };

/* Group: epon_path_1g_ds - stat_alarm_raised */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_ds_stat_alarm_raised_stat = { .name = "stat", .descr = "Statistic identifier.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_DS_STAT_ALARM_RAISED_ID_STAT, .offset = offsetof(bcmolt_epon_path_1g_ds_stat_alarm_raised_data, stat), .type = &type_descr_bcmolt_epon_path_1g_ds_stat_id };
static bcmcli_prop_descr * BCM_DESCR epon_path_1g_ds_stat_alarm_raised_prop_array[] = { &prop_descr_epon_path_1g_ds_stat_alarm_raised_stat };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_path_1g_ds_stat_alarm_raised_data_fields[] = { { .name = "stat", .descr = "Statistic identifier.", .offset = offsetof(bcmolt_epon_path_1g_ds_stat_alarm_raised_data, stat), .type = &type_descr_bcmolt_epon_path_1g_ds_stat_id } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_1g_ds_stat_alarm_raised_data = { .name = "bcmolt_epon_path_1g_ds_stat_alarm_raised_data", .descr = "Sent when a configured statistic alarm condition has been met.", .size = sizeof(bcmolt_epon_path_1g_ds_stat_alarm_raised_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_path_1g_ds_stat_alarm_raised_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_path_1g_ds_stat_alarm_raised_data_fields } } };

/* Group: epon_path_1g_ds - stat_alarm_cleared */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_ds_stat_alarm_cleared_stat = { .name = "stat", .descr = "Statistic identifier.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_DS_STAT_ALARM_CLEARED_ID_STAT, .offset = offsetof(bcmolt_epon_path_1g_ds_stat_alarm_cleared_data, stat), .type = &type_descr_bcmolt_epon_path_1g_ds_stat_id };
static bcmcli_prop_descr * BCM_DESCR epon_path_1g_ds_stat_alarm_cleared_prop_array[] = { &prop_descr_epon_path_1g_ds_stat_alarm_cleared_stat };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_path_1g_ds_stat_alarm_cleared_data_fields[] = { { .name = "stat", .descr = "Statistic identifier.", .offset = offsetof(bcmolt_epon_path_1g_ds_stat_alarm_cleared_data, stat), .type = &type_descr_bcmolt_epon_path_1g_ds_stat_id } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_1g_ds_stat_alarm_cleared_data = { .name = "bcmolt_epon_path_1g_ds_stat_alarm_cleared_data", .descr = "Sent when a configured statistic alarm condition is no longer met.", .size = sizeof(bcmolt_epon_path_1g_ds_stat_alarm_cleared_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_path_1g_ds_stat_alarm_cleared_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_path_1g_ds_stat_alarm_cleared_data_fields } } };

/* Group: epon_path_1g_ds - auto_cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_ds_auto_cfg_stat_alarm_cleared = { .name = "stat_alarm_cleared", .descr = "If true, indications of type \"stat_alarm_cleared\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_DS_AUTO_CFG_ID_STAT_ALARM_CLEARED, .offset = offsetof(bcmolt_epon_path_1g_ds_auto_cfg_data, stat_alarm_cleared), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_ds_auto_cfg_stat_alarm_raised = { .name = "stat_alarm_raised", .descr = "If true, indications of type \"stat_alarm_raised\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_DS_AUTO_CFG_ID_STAT_ALARM_RAISED, .offset = offsetof(bcmolt_epon_path_1g_ds_auto_cfg_data, stat_alarm_raised), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr * BCM_DESCR epon_path_1g_ds_auto_cfg_prop_array[] = { &prop_descr_epon_path_1g_ds_auto_cfg_stat_alarm_cleared, &prop_descr_epon_path_1g_ds_auto_cfg_stat_alarm_raised };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_path_1g_ds_auto_cfg_data_fields[] = { { .name = "stat_alarm_cleared", .descr = "If true, indications of type \"stat_alarm_cleared\" will be generated.", .offset = offsetof(bcmolt_epon_path_1g_ds_auto_cfg_data, stat_alarm_cleared), .type = &type_descr_bcmos_bool }, { .name = "stat_alarm_raised", .descr = "If true, indications of type \"stat_alarm_raised\" will be generated.", .offset = offsetof(bcmolt_epon_path_1g_ds_auto_cfg_data, stat_alarm_raised), .type = &type_descr_bcmos_bool } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_1g_ds_auto_cfg_data = { .name = "bcmolt_epon_path_1g_ds_auto_cfg_data", .descr = "Indication Configuration", .size = sizeof(bcmolt_epon_path_1g_ds_auto_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_path_1g_ds_auto_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_path_1g_ds_auto_cfg_data_fields } } };

/* ==== Object: epon_path_1g_us ==== */

/* Group: epon_path_1g_us - key */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_us_key_epon_ni = { .name = "epon_ni", .descr = "EPON NI associated with this 1G upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_US_KEY_ID_EPON_NI, .offset = offsetof(bcmolt_epon_path_1g_us_key, epon_ni), .type = &type_descr_uint16_t };
static bcmcli_prop_descr * BCM_DESCR epon_path_1g_us_key_prop_array[] = { &prop_descr_epon_path_1g_us_key_epon_ni };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_path_1g_us_key_fields[] = { { .name = "epon_ni", .descr = "EPON NI associated with this 1G upstream path.", .offset = offsetof(bcmolt_epon_path_1g_us_key, epon_ni), .type = &type_descr_uint16_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_1g_us_key = { .name = "bcmolt_epon_path_1g_us_key", .descr = "key", .size = sizeof(bcmolt_epon_path_1g_us_key), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_path_1g_us_key_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_path_1g_us_key_fields } } };

/* Group: epon_path_1g_us - cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_us_cfg_default_fec_state = { .name = "default_fec_state", .descr = "Default FEC enable state for the 1G upstream path on this EPON NI.  This attribute cannot be changed while the EPON_NI is enabled.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_US_CFG_ID_DEFAULT_FEC_STATE, .offset = offsetof(bcmolt_epon_path_1g_us_cfg_data, default_fec_state), .type = &type_descr_bcmolt_epon_fec_en_state };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_us_cfg_sync_time_tq = { .name = "sync_time_tq", .descr = "Time quanta of sync at start of US burst.  This attribute cannot be changed while the EPON_NI is enabled.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_US_CFG_ID_SYNC_TIME_TQ, .offset = offsetof(bcmolt_epon_path_1g_us_cfg_data, sync_time_tq), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_us_cfg_prbs_checker = { .name = "prbs_checker", .descr = "US PRBS checker configuration", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_US_CFG_ID_PRBS_CHECKER, .offset = offsetof(bcmolt_epon_path_1g_us_cfg_data, prbs_checker), .type = &type_descr_bcmolt_prbs_checker_config };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_us_cfg_prbs_status = { .name = "prbs_status", .descr = "Result of US PRBS checker", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_EPON_PATH_1G_US_CFG_ID_PRBS_STATUS, .offset = offsetof(bcmolt_epon_path_1g_us_cfg_data, prbs_status), .type = &type_descr_bcmolt_prbs_status };
static bcmcli_prop_descr * BCM_DESCR epon_path_1g_us_cfg_prop_array[] = { &prop_descr_epon_path_1g_us_cfg_default_fec_state, &prop_descr_epon_path_1g_us_cfg_sync_time_tq, &prop_descr_epon_path_1g_us_cfg_prbs_checker, &prop_descr_epon_path_1g_us_cfg_prbs_status };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_path_1g_us_cfg_data_fields[] = { { .name = "default_fec_state", .descr = "Default FEC enable state for the 1G upstream path on this EPON NI.  This attribute cannot be changed while the EPON_NI is enabled.", .offset = offsetof(bcmolt_epon_path_1g_us_cfg_data, default_fec_state), .type = &type_descr_bcmolt_epon_fec_en_state }, { .name = "sync_time_tq", .descr = "Time quanta of sync at start of US burst.  This attribute cannot be changed while the EPON_NI is enabled.", .offset = offsetof(bcmolt_epon_path_1g_us_cfg_data, sync_time_tq), .type = &type_descr_uint32_t }, { .name = "prbs_checker", .descr = "US PRBS checker configuration", .offset = offsetof(bcmolt_epon_path_1g_us_cfg_data, prbs_checker), .type = &type_descr_bcmolt_prbs_checker_config }, { .name = "prbs_status", .descr = "Result of US PRBS checker", .offset = offsetof(bcmolt_epon_path_1g_us_cfg_data, prbs_status), .type = &type_descr_bcmolt_prbs_status } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_1g_us_cfg_data = { .name = "bcmolt_epon_path_1g_us_cfg_data", .descr = "cfg", .size = sizeof(bcmolt_epon_path_1g_us_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_path_1g_us_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_path_1g_us_cfg_data_fields } } };

/* Group: epon_path_1g_us - stat */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_us_stat_bytes = { .name = "bytes", .descr = "The number of bytes received on this 1g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_US_STAT_ID_BYTES, .offset = offsetof(bcmolt_epon_path_1g_us_stat_data, bytes), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_us_stat_frames = { .name = "frames", .descr = "The number of frames received on this 1g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_US_STAT_ID_FRAMES, .offset = offsetof(bcmolt_epon_path_1g_us_stat_data, frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_us_stat_frames_64 = { .name = "frames_64", .descr = "The number of 64 byte frames received on this 1g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_US_STAT_ID_FRAMES_64, .offset = offsetof(bcmolt_epon_path_1g_us_stat_data, frames_64), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_us_stat_frames_65_127 = { .name = "frames_65_127", .descr = "The number of 65 to 127 byte frames received on this 1g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_US_STAT_ID_FRAMES_65_127, .offset = offsetof(bcmolt_epon_path_1g_us_stat_data, frames_65_127), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_us_stat_frames_128_255 = { .name = "frames_128_255", .descr = "The number of 128 to 255 byte frames received on this 1g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_US_STAT_ID_FRAMES_128_255, .offset = offsetof(bcmolt_epon_path_1g_us_stat_data, frames_128_255), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_us_stat_frames_256_511 = { .name = "frames_256_511", .descr = "The number of 256 to 511 byte frames received on this 1g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_US_STAT_ID_FRAMES_256_511, .offset = offsetof(bcmolt_epon_path_1g_us_stat_data, frames_256_511), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_us_stat_frames_512_1023 = { .name = "frames_512_1023", .descr = "The number of 512 to 1023 byte frames received on this 1g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_US_STAT_ID_FRAMES_512_1023, .offset = offsetof(bcmolt_epon_path_1g_us_stat_data, frames_512_1023), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_us_stat_frames_1024_1518 = { .name = "frames_1024_1518", .descr = "The number of 1024 to 1518 byte frames received on this 1g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_US_STAT_ID_FRAMES_1024_1518, .offset = offsetof(bcmolt_epon_path_1g_us_stat_data, frames_1024_1518), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_us_stat_frames_1519_2047 = { .name = "frames_1519_2047", .descr = "The number of 1519 to 2047 byte frames received on this 1g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_US_STAT_ID_FRAMES_1519_2047, .offset = offsetof(bcmolt_epon_path_1g_us_stat_data, frames_1519_2047), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_us_stat_frames_2048_4095 = { .name = "frames_2048_4095", .descr = "The number of 2048 to 4095 byte frames received on this 1g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_US_STAT_ID_FRAMES_2048_4095, .offset = offsetof(bcmolt_epon_path_1g_us_stat_data, frames_2048_4095), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_us_stat_frames_4096_9216 = { .name = "frames_4096_9216", .descr = "The number of 4096 to 9216 byte frames received on this 1g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_US_STAT_ID_FRAMES_4096_9216, .offset = offsetof(bcmolt_epon_path_1g_us_stat_data, frames_4096_9216), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_us_stat_frames_9217_16383 = { .name = "frames_9217_16383", .descr = "The number of 9217 to 16383 byte frames received on this 1g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_US_STAT_ID_FRAMES_9217_16383, .offset = offsetof(bcmolt_epon_path_1g_us_stat_data, frames_9217_16383), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_us_stat_broadcast_frames = { .name = "broadcast_frames", .descr = "The number of broadcast frames received on this 1g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_US_STAT_ID_BROADCAST_FRAMES, .offset = offsetof(bcmolt_epon_path_1g_us_stat_data, broadcast_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_us_stat_data_bytes = { .name = "data_bytes", .descr = "The number of data bytes received on this 1g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_US_STAT_ID_DATA_BYTES, .offset = offsetof(bcmolt_epon_path_1g_us_stat_data, data_bytes), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_us_stat_multicast_frames = { .name = "multicast_frames", .descr = "The number of multicast frames received on this 1g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_US_STAT_ID_MULTICAST_FRAMES, .offset = offsetof(bcmolt_epon_path_1g_us_stat_data, multicast_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_us_stat_unicast_frames = { .name = "unicast_frames", .descr = "The number of unicast frames received on this 1g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_US_STAT_ID_UNICAST_FRAMES, .offset = offsetof(bcmolt_epon_path_1g_us_stat_data, unicast_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_us_stat_mpcp_frames = { .name = "mpcp_frames", .descr = "The number of MPCP frames received on this 1g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_US_STAT_ID_MPCP_FRAMES, .offset = offsetof(bcmolt_epon_path_1g_us_stat_data, mpcp_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_us_stat_oam_bytes = { .name = "oam_bytes", .descr = "The number of OAM bytes received on this 1g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_US_STAT_ID_OAM_BYTES, .offset = offsetof(bcmolt_epon_path_1g_us_stat_data, oam_bytes), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_us_stat_oam_frames = { .name = "oam_frames", .descr = "The number of OAM frames received on this 1g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_US_STAT_ID_OAM_FRAMES, .offset = offsetof(bcmolt_epon_path_1g_us_stat_data, oam_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_us_stat_report_frames = { .name = "report_frames", .descr = "The number of report frames received on this 1g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_US_STAT_ID_REPORT_FRAMES, .offset = offsetof(bcmolt_epon_path_1g_us_stat_data, report_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_us_stat_abort_frames = { .name = "abort_frames", .descr = "The number of abort frames received on this 1g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_US_STAT_ID_ABORT_FRAMES, .offset = offsetof(bcmolt_epon_path_1g_us_stat_data, abort_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_us_stat_fcs_error = { .name = "fcs_error", .descr = "The number of bad FCS errors received on this 1g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_US_STAT_ID_FCS_ERROR, .offset = offsetof(bcmolt_epon_path_1g_us_stat_data, fcs_error), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_us_stat_crc_8_error = { .name = "crc_8_error", .descr = "The number of CRC8 errors received on this 1g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_US_STAT_ID_CRC_8_ERROR, .offset = offsetof(bcmolt_epon_path_1g_us_stat_data, crc_8_error), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_us_stat_out_of_slot = { .name = "out_of_slot", .descr = "The number of out of slot errors received on this 1g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_US_STAT_ID_OUT_OF_SLOT, .offset = offsetof(bcmolt_epon_path_1g_us_stat_data, out_of_slot), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_us_stat_oversize_error = { .name = "oversize_error", .descr = "The number of oversize errors received on this 1g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_US_STAT_ID_OVERSIZE_ERROR, .offset = offsetof(bcmolt_epon_path_1g_us_stat_data, oversize_error), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_us_stat_runt_error = { .name = "runt_error", .descr = "The number of runt errors received on this 1g upstream path.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_US_STAT_ID_RUNT_ERROR, .offset = offsetof(bcmolt_epon_path_1g_us_stat_data, runt_error), .type = &type_descr_uint64_t };
static bcmcli_prop_descr * BCM_DESCR epon_path_1g_us_stat_prop_array[] = { &prop_descr_epon_path_1g_us_stat_bytes, &prop_descr_epon_path_1g_us_stat_frames, &prop_descr_epon_path_1g_us_stat_frames_64, &prop_descr_epon_path_1g_us_stat_frames_65_127, &prop_descr_epon_path_1g_us_stat_frames_128_255, &prop_descr_epon_path_1g_us_stat_frames_256_511, &prop_descr_epon_path_1g_us_stat_frames_512_1023, &prop_descr_epon_path_1g_us_stat_frames_1024_1518, &prop_descr_epon_path_1g_us_stat_frames_1519_2047, &prop_descr_epon_path_1g_us_stat_frames_2048_4095, &prop_descr_epon_path_1g_us_stat_frames_4096_9216, &prop_descr_epon_path_1g_us_stat_frames_9217_16383, &prop_descr_epon_path_1g_us_stat_broadcast_frames, &prop_descr_epon_path_1g_us_stat_data_bytes, &prop_descr_epon_path_1g_us_stat_multicast_frames, &prop_descr_epon_path_1g_us_stat_unicast_frames, &prop_descr_epon_path_1g_us_stat_mpcp_frames, &prop_descr_epon_path_1g_us_stat_oam_bytes, &prop_descr_epon_path_1g_us_stat_oam_frames, &prop_descr_epon_path_1g_us_stat_report_frames, &prop_descr_epon_path_1g_us_stat_abort_frames, &prop_descr_epon_path_1g_us_stat_fcs_error, &prop_descr_epon_path_1g_us_stat_crc_8_error, &prop_descr_epon_path_1g_us_stat_out_of_slot, &prop_descr_epon_path_1g_us_stat_oversize_error, &prop_descr_epon_path_1g_us_stat_runt_error };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_path_1g_us_stat_data_fields[] = { { .name = "bytes", .descr = "The number of bytes received on this 1g upstream path.", .offset = offsetof(bcmolt_epon_path_1g_us_stat_data, bytes), .type = &type_descr_uint64_t }, { .name = "frames", .descr = "The number of frames received on this 1g upstream path.", .offset = offsetof(bcmolt_epon_path_1g_us_stat_data, frames), .type = &type_descr_uint64_t }, { .name = "frames_64", .descr = "The number of 64 byte frames received on this 1g upstream path.", .offset = offsetof(bcmolt_epon_path_1g_us_stat_data, frames_64), .type = &type_descr_uint64_t }, { .name = "frames_65_127", .descr = "The number of 65 to 127 byte frames received on this 1g upstream path.", .offset = offsetof(bcmolt_epon_path_1g_us_stat_data, frames_65_127), .type = &type_descr_uint64_t }, { .name = "frames_128_255", .descr = "The number of 128 to 255 byte frames received on this 1g upstream path.", .offset = offsetof(bcmolt_epon_path_1g_us_stat_data, frames_128_255), .type = &type_descr_uint64_t }, { .name = "frames_256_511", .descr = "The number of 256 to 511 byte frames received on this 1g upstream path.", .offset = offsetof(bcmolt_epon_path_1g_us_stat_data, frames_256_511), .type = &type_descr_uint64_t }, { .name = "frames_512_1023", .descr = "The number of 512 to 1023 byte frames received on this 1g upstream path.", .offset = offsetof(bcmolt_epon_path_1g_us_stat_data, frames_512_1023), .type = &type_descr_uint64_t }, { .name = "frames_1024_1518", .descr = "The number of 1024 to 1518 byte frames received on this 1g upstream path.", .offset = offsetof(bcmolt_epon_path_1g_us_stat_data, frames_1024_1518), .type = &type_descr_uint64_t }, { .name = "frames_1519_2047", .descr = "The number of 1519 to 2047 byte frames received on this 1g upstream path.", .offset = offsetof(bcmolt_epon_path_1g_us_stat_data, frames_1519_2047), .type = &type_descr_uint64_t }, { .name = "frames_2048_4095", .descr = "The number of 2048 to 4095 byte frames received on this 1g upstream path.", .offset = offsetof(bcmolt_epon_path_1g_us_stat_data, frames_2048_4095), .type = &type_descr_uint64_t }, { .name = "frames_4096_9216", .descr = "The number of 4096 to 9216 byte frames received on this 1g upstream path.", .offset = offsetof(bcmolt_epon_path_1g_us_stat_data, frames_4096_9216), .type = &type_descr_uint64_t }, { .name = "frames_9217_16383", .descr = "The number of 9217 to 16383 byte frames received on this 1g upstream path.", .offset = offsetof(bcmolt_epon_path_1g_us_stat_data, frames_9217_16383), .type = &type_descr_uint64_t }, { .name = "broadcast_frames", .descr = "The number of broadcast frames received on this 1g upstream path.", .offset = offsetof(bcmolt_epon_path_1g_us_stat_data, broadcast_frames), .type = &type_descr_uint64_t }, { .name = "data_bytes", .descr = "The number of data bytes received on this 1g upstream path.", .offset = offsetof(bcmolt_epon_path_1g_us_stat_data, data_bytes), .type = &type_descr_uint64_t }, { .name = "multicast_frames", .descr = "The number of multicast frames received on this 1g upstream path.", .offset = offsetof(bcmolt_epon_path_1g_us_stat_data, multicast_frames), .type = &type_descr_uint64_t }, { .name = "unicast_frames", .descr = "The number of unicast frames received on this 1g upstream path.", .offset = offsetof(bcmolt_epon_path_1g_us_stat_data, unicast_frames), .type = &type_descr_uint64_t }, { .name = "mpcp_frames", .descr = "The number of MPCP frames received on this 1g upstream path.", .offset = offsetof(bcmolt_epon_path_1g_us_stat_data, mpcp_frames), .type = &type_descr_uint64_t }, { .name = "oam_bytes", .descr = "The number of OAM bytes received on this 1g upstream path.", .offset = offsetof(bcmolt_epon_path_1g_us_stat_data, oam_bytes), .type = &type_descr_uint64_t }, { .name = "oam_frames", .descr = "The number of OAM frames received on this 1g upstream path.", .offset = offsetof(bcmolt_epon_path_1g_us_stat_data, oam_frames), .type = &type_descr_uint64_t }, { .name = "report_frames", .descr = "The number of report frames received on this 1g upstream path.", .offset = offsetof(bcmolt_epon_path_1g_us_stat_data, report_frames), .type = &type_descr_uint64_t }, { .name = "abort_frames", .descr = "The number of abort frames received on this 1g upstream path.", .offset = offsetof(bcmolt_epon_path_1g_us_stat_data, abort_frames), .type = &type_descr_uint64_t }, { .name = "fcs_error", .descr = "The number of bad FCS errors received on this 1g upstream path.", .offset = offsetof(bcmolt_epon_path_1g_us_stat_data, fcs_error), .type = &type_descr_uint64_t }, { .name = "crc_8_error", .descr = "The number of CRC8 errors received on this 1g upstream path.", .offset = offsetof(bcmolt_epon_path_1g_us_stat_data, crc_8_error), .type = &type_descr_uint64_t }, { .name = "out_of_slot", .descr = "The number of out of slot errors received on this 1g upstream path.", .offset = offsetof(bcmolt_epon_path_1g_us_stat_data, out_of_slot), .type = &type_descr_uint64_t }, { .name = "oversize_error", .descr = "The number of oversize errors received on this 1g upstream path.", .offset = offsetof(bcmolt_epon_path_1g_us_stat_data, oversize_error), .type = &type_descr_uint64_t }, { .name = "runt_error", .descr = "The number of runt errors received on this 1g upstream path.", .offset = offsetof(bcmolt_epon_path_1g_us_stat_data, runt_error), .type = &type_descr_uint64_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_1g_us_stat_data = { .name = "bcmolt_epon_path_1g_us_stat_data", .descr = "stat", .size = sizeof(bcmolt_epon_path_1g_us_stat_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_path_1g_us_stat_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_path_1g_us_stat_data_fields } } };

/* Group: epon_path_1g_us - stat_cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_us_stat_cfg_cfg = { .name = "cfg", .descr = "Statistic alarm configuration.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_US_STAT_CFG_ID_CFG, .offset = offsetof(bcmolt_epon_path_1g_us_stat_cfg_data, cfg), .type = &type_descr_bcmolt_stat_alarm_config };
static bcmcli_prop_descr * BCM_DESCR epon_path_1g_us_stat_cfg_prop_array[] = { &prop_descr_epon_path_1g_us_stat_cfg_cfg };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_path_1g_us_stat_cfg_data_fields[] = { { .name = "cfg", .descr = "Statistic alarm configuration.", .offset = offsetof(bcmolt_epon_path_1g_us_stat_cfg_data, cfg), .type = &type_descr_bcmolt_stat_alarm_config } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_1g_us_stat_cfg_data = { .name = "bcmolt_epon_path_1g_us_stat_cfg_data", .descr = "Statistic Configuration", .size = sizeof(bcmolt_epon_path_1g_us_stat_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_path_1g_us_stat_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_path_1g_us_stat_cfg_data_fields } } };

/* Group: epon_path_1g_us - stat_alarm_raised */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_us_stat_alarm_raised_stat = { .name = "stat", .descr = "Statistic identifier.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_US_STAT_ALARM_RAISED_ID_STAT, .offset = offsetof(bcmolt_epon_path_1g_us_stat_alarm_raised_data, stat), .type = &type_descr_bcmolt_epon_path_1g_us_stat_id };
static bcmcli_prop_descr * BCM_DESCR epon_path_1g_us_stat_alarm_raised_prop_array[] = { &prop_descr_epon_path_1g_us_stat_alarm_raised_stat };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_path_1g_us_stat_alarm_raised_data_fields[] = { { .name = "stat", .descr = "Statistic identifier.", .offset = offsetof(bcmolt_epon_path_1g_us_stat_alarm_raised_data, stat), .type = &type_descr_bcmolt_epon_path_1g_us_stat_id } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_1g_us_stat_alarm_raised_data = { .name = "bcmolt_epon_path_1g_us_stat_alarm_raised_data", .descr = "Sent when a configured statistic alarm condition has been met.", .size = sizeof(bcmolt_epon_path_1g_us_stat_alarm_raised_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_path_1g_us_stat_alarm_raised_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_path_1g_us_stat_alarm_raised_data_fields } } };

/* Group: epon_path_1g_us - stat_alarm_cleared */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_us_stat_alarm_cleared_stat = { .name = "stat", .descr = "Statistic identifier.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_US_STAT_ALARM_CLEARED_ID_STAT, .offset = offsetof(bcmolt_epon_path_1g_us_stat_alarm_cleared_data, stat), .type = &type_descr_bcmolt_epon_path_1g_us_stat_id };
static bcmcli_prop_descr * BCM_DESCR epon_path_1g_us_stat_alarm_cleared_prop_array[] = { &prop_descr_epon_path_1g_us_stat_alarm_cleared_stat };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_path_1g_us_stat_alarm_cleared_data_fields[] = { { .name = "stat", .descr = "Statistic identifier.", .offset = offsetof(bcmolt_epon_path_1g_us_stat_alarm_cleared_data, stat), .type = &type_descr_bcmolt_epon_path_1g_us_stat_id } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_1g_us_stat_alarm_cleared_data = { .name = "bcmolt_epon_path_1g_us_stat_alarm_cleared_data", .descr = "Sent when a configured statistic alarm condition is no longer met.", .size = sizeof(bcmolt_epon_path_1g_us_stat_alarm_cleared_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_path_1g_us_stat_alarm_cleared_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_path_1g_us_stat_alarm_cleared_data_fields } } };

/* Group: epon_path_1g_us - auto_cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_us_auto_cfg_stat_alarm_cleared = { .name = "stat_alarm_cleared", .descr = "If true, indications of type \"stat_alarm_cleared\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_US_AUTO_CFG_ID_STAT_ALARM_CLEARED, .offset = offsetof(bcmolt_epon_path_1g_us_auto_cfg_data, stat_alarm_cleared), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_path_1g_us_auto_cfg_stat_alarm_raised = { .name = "stat_alarm_raised", .descr = "If true, indications of type \"stat_alarm_raised\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_PATH_1G_US_AUTO_CFG_ID_STAT_ALARM_RAISED, .offset = offsetof(bcmolt_epon_path_1g_us_auto_cfg_data, stat_alarm_raised), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr * BCM_DESCR epon_path_1g_us_auto_cfg_prop_array[] = { &prop_descr_epon_path_1g_us_auto_cfg_stat_alarm_cleared, &prop_descr_epon_path_1g_us_auto_cfg_stat_alarm_raised };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_path_1g_us_auto_cfg_data_fields[] = { { .name = "stat_alarm_cleared", .descr = "If true, indications of type \"stat_alarm_cleared\" will be generated.", .offset = offsetof(bcmolt_epon_path_1g_us_auto_cfg_data, stat_alarm_cleared), .type = &type_descr_bcmos_bool }, { .name = "stat_alarm_raised", .descr = "If true, indications of type \"stat_alarm_raised\" will be generated.", .offset = offsetof(bcmolt_epon_path_1g_us_auto_cfg_data, stat_alarm_raised), .type = &type_descr_bcmos_bool } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_path_1g_us_auto_cfg_data = { .name = "bcmolt_epon_path_1g_us_auto_cfg_data", .descr = "Indication Configuration", .size = sizeof(bcmolt_epon_path_1g_us_auto_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_path_1g_us_auto_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_path_1g_us_auto_cfg_data_fields } } };

/* ==== Object: epon_rp ==== */

/* Group: epon_rp - key */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_rp_key_epon_ni = { .name = "epon_ni", .descr = "EPON NI containing this RP.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_RP_KEY_ID_EPON_NI, .offset = offsetof(bcmolt_epon_rp_key, epon_ni), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_rp_key_link_rate = { .name = "link_rate", .descr = "Link rate associated with this RP.  Must be one of 10/10, 10/1, or 1/1.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_RP_KEY_ID_LINK_RATE, .offset = offsetof(bcmolt_epon_rp_key, link_rate), .type = &type_descr_bcmolt_epon_link_rate };
static bcmcli_prop_descr * BCM_DESCR epon_rp_key_prop_array[] = { &prop_descr_epon_rp_key_epon_ni, &prop_descr_epon_rp_key_link_rate };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_rp_key_fields[] = { { .name = "epon_ni", .descr = "EPON NI containing this RP.", .offset = offsetof(bcmolt_epon_rp_key, epon_ni), .type = &type_descr_uint16_t }, { .name = "link_rate", .descr = "Link rate associated with this RP.  Must be one of 10/10, 10/1, or 1/1.", .offset = offsetof(bcmolt_epon_rp_key, link_rate), .type = &type_descr_bcmolt_epon_link_rate } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_rp_key = { .name = "bcmolt_epon_rp_key", .descr = "key", .size = sizeof(bcmolt_epon_rp_key), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_rp_key_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_rp_key_fields } } };

/* Group: epon_rp - cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_rp_cfg_base_llid = { .name = "base_llid", .descr = "Base (lowest) logical link identifier for this RP.  This attribute cannot be changed while the EPON_NI is enabled, nor while any non-system links exist.  The sum of this value and max_links for this RP must be 0x7eff or smaller.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_RP_CFG_ID_BASE_LLID, .offset = offsetof(bcmolt_epon_rp_cfg_data, base_llid), .type = &type_descr_uint16_t_hex };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_rp_cfg_mpcp_disc_en = { .name = "mpcp_disc_en", .descr = "Governs whether discovery gates for this RP are issued ", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_RP_CFG_ID_MPCP_DISC_EN, .offset = offsetof(bcmolt_epon_rp_cfg_data, mpcp_disc_en), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_rp_cfg_mpcp_disc_gnt_len_tq = { .name = "mpcp_disc_gnt_len_tq", .descr = "Length of discovery grants in time quanta for this RP.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_RP_CFG_ID_MPCP_DISC_GNT_LEN_TQ, .offset = offsetof(bcmolt_epon_rp_cfg_data, mpcp_disc_gnt_len_tq), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_rp_cfg_mpcp_report_timeout = { .name = "mpcp_report_timeout", .descr = "Number of ms before links are deregistered due to no report received.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_RP_CFG_ID_MPCP_REPORT_TIMEOUT, .offset = offsetof(bcmolt_epon_rp_cfg_data, mpcp_report_timeout), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_rp_cfg_max_mpcp_reg_per_disc_window = { .name = "max_mpcp_reg_per_disc_window", .descr = "Maximum number of MPCP registrations per discovery window on this RP (0 indicates unlimited).", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_RP_CFG_ID_MAX_MPCP_REG_PER_DISC_WINDOW, .offset = offsetof(bcmolt_epon_rp_cfg_data, max_mpcp_reg_per_disc_window), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_rp_cfg_max_links = { .name = "max_links", .descr = "Maximum number of links", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_RP_CFG_ID_MAX_LINKS, .offset = offsetof(bcmolt_epon_rp_cfg_data, max_links), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_rp_cfg_default_upstream_bandwidth = { .name = "default_upstream_bandwidth", .descr = "Default upstream bandwidth for newly created links.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_RP_CFG_ID_DEFAULT_UPSTREAM_BANDWIDTH, .offset = offsetof(bcmolt_epon_rp_cfg_data, default_upstream_bandwidth), .type = &type_descr_bcmolt_upstream_bandwidth_distribution };
static bcmcli_prop_descr BCM_DESCR prop_descr_epon_rp_cfg_rate_of_refraction = { .name = "rate_of_refraction", .descr = "Rate of Refraction", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_EPON_RP_CFG_ID_RATE_OF_REFRACTION, .offset = offsetof(bcmolt_epon_rp_cfg_data, rate_of_refraction), .type = &type_descr_double };
static bcmcli_prop_descr * BCM_DESCR epon_rp_cfg_prop_array[] = { &prop_descr_epon_rp_cfg_base_llid, &prop_descr_epon_rp_cfg_mpcp_disc_en, &prop_descr_epon_rp_cfg_mpcp_disc_gnt_len_tq, &prop_descr_epon_rp_cfg_mpcp_report_timeout, &prop_descr_epon_rp_cfg_max_mpcp_reg_per_disc_window, &prop_descr_epon_rp_cfg_max_links, &prop_descr_epon_rp_cfg_default_upstream_bandwidth, &prop_descr_epon_rp_cfg_rate_of_refraction };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_epon_rp_cfg_data_fields[] = { { .name = "base_llid", .descr = "Base (lowest) logical link identifier for this RP.  This attribute cannot be changed while the EPON_NI is enabled, nor while any non-system links exist.  The sum of this value and max_links for this RP must be 0x7eff or smaller.", .offset = offsetof(bcmolt_epon_rp_cfg_data, base_llid), .type = &type_descr_uint16_t_hex }, { .name = "mpcp_disc_en", .descr = "Governs whether discovery gates for this RP are issued ", .offset = offsetof(bcmolt_epon_rp_cfg_data, mpcp_disc_en), .type = &type_descr_bcmos_bool }, { .name = "mpcp_disc_gnt_len_tq", .descr = "Length of discovery grants in time quanta for this RP.", .offset = offsetof(bcmolt_epon_rp_cfg_data, mpcp_disc_gnt_len_tq), .type = &type_descr_uint32_t }, { .name = "mpcp_report_timeout", .descr = "Number of ms before links are deregistered due to no report received.", .offset = offsetof(bcmolt_epon_rp_cfg_data, mpcp_report_timeout), .type = &type_descr_uint16_t }, { .name = "max_mpcp_reg_per_disc_window", .descr = "Maximum number of MPCP registrations per discovery window on this RP (0 indicates unlimited).", .offset = offsetof(bcmolt_epon_rp_cfg_data, max_mpcp_reg_per_disc_window), .type = &type_descr_uint16_t }, { .name = "max_links", .descr = "Maximum number of links", .offset = offsetof(bcmolt_epon_rp_cfg_data, max_links), .type = &type_descr_uint16_t }, { .name = "default_upstream_bandwidth", .descr = "Default upstream bandwidth for newly created links.", .offset = offsetof(bcmolt_epon_rp_cfg_data, default_upstream_bandwidth), .type = &type_descr_bcmolt_upstream_bandwidth_distribution }, { .name = "rate_of_refraction", .descr = "Rate of Refraction", .offset = offsetof(bcmolt_epon_rp_cfg_data, rate_of_refraction), .type = &type_descr_double } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_epon_rp_cfg_data = { .name = "bcmolt_epon_rp_cfg_data", .descr = "cfg", .size = sizeof(bcmolt_epon_rp_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_epon_rp_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_epon_rp_cfg_data_fields } } };

/* ==== Object: gpio ==== */

/* Group: gpio - key */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpio_key_reserved = { .name = "reserved", .descr = "Reserved (set to 0).", .access = 0, .property = BCMOLT_GPIO_KEY_ID_RESERVED, .offset = offsetof(bcmolt_gpio_key, reserved), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpio_key_gpio_id = { .name = "gpio_id", .descr = "GPIO ID", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPIO_KEY_ID_GPIO_ID, .offset = offsetof(bcmolt_gpio_key, gpio_id), .type = &type_descr_bcmolt_gpio_pin };
static bcmcli_prop_descr * BCM_DESCR gpio_key_prop_array[] = { &prop_descr_gpio_key_reserved, &prop_descr_gpio_key_gpio_id };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpio_key_fields[] = { { .name = "reserved", .descr = "Reserved (set to 0).", .offset = offsetof(bcmolt_gpio_key, reserved), .type = &type_descr_uint32_t }, { .name = "gpio_id", .descr = "GPIO ID", .offset = offsetof(bcmolt_gpio_key, gpio_id), .type = &type_descr_bcmolt_gpio_pin } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpio_key = { .name = "bcmolt_gpio_key", .descr = "key", .size = sizeof(bcmolt_gpio_key), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpio_key_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpio_key_fields } } };

/* Group: gpio - cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpio_cfg_direction = { .name = "direction", .descr = "GPIO PIN direction (input or output)", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPIO_CFG_ID_DIRECTION, .offset = offsetof(bcmolt_gpio_cfg_data, direction), .type = &type_descr_bcmolt_gpio_pin_dir };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpio_cfg_value = { .name = "value", .descr = "Value to write.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPIO_CFG_ID_VALUE, .offset = offsetof(bcmolt_gpio_cfg_data, value), .type = &type_descr_bcmolt_gpio_value };
static bcmcli_prop_descr * BCM_DESCR gpio_cfg_prop_array[] = { &prop_descr_gpio_cfg_direction, &prop_descr_gpio_cfg_value };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpio_cfg_data_fields[] = { { .name = "direction", .descr = "GPIO PIN direction (input or output)", .offset = offsetof(bcmolt_gpio_cfg_data, direction), .type = &type_descr_bcmolt_gpio_pin_dir }, { .name = "value", .descr = "Value to write.", .offset = offsetof(bcmolt_gpio_cfg_data, value), .type = &type_descr_bcmolt_gpio_value } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpio_cfg_data = { .name = "bcmolt_gpio_cfg_data", .descr = "cfg", .size = sizeof(bcmolt_gpio_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpio_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpio_cfg_data_fields } } };

/* ==== Object: gpon_alloc ==== */

/* Group: gpon_alloc - key */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_alloc_key_pon_ni = { .name = "pon_ni", .descr = "PON network interface", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ALLOC_KEY_ID_PON_NI, .offset = offsetof(bcmolt_gpon_alloc_key, pon_ni), .type = &type_descr_uint8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_alloc_key_alloc_id = { .name = "alloc_id", .descr = "Alloc ID", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ALLOC_KEY_ID_ALLOC_ID, .offset = offsetof(bcmolt_gpon_alloc_key, alloc_id), .type = &type_descr_uint16_t };
static bcmcli_prop_descr * BCM_DESCR gpon_alloc_key_prop_array[] = { &prop_descr_gpon_alloc_key_pon_ni, &prop_descr_gpon_alloc_key_alloc_id };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_alloc_key_fields[] = { { .name = "pon_ni", .descr = "PON network interface", .offset = offsetof(bcmolt_gpon_alloc_key, pon_ni), .type = &type_descr_uint8_t }, { .name = "alloc_id", .descr = "Alloc ID", .offset = offsetof(bcmolt_gpon_alloc_key, alloc_id), .type = &type_descr_uint16_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_alloc_key = { .name = "bcmolt_gpon_alloc_key", .descr = "key", .size = sizeof(bcmolt_gpon_alloc_key), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_alloc_key_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_alloc_key_fields } } };

/* Group: gpon_alloc - cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_alloc_cfg_state = { .name = "state", .descr = "Current Alloc ID state", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_GPON_ALLOC_CFG_ID_STATE, .offset = offsetof(bcmolt_gpon_alloc_cfg_data, state), .type = &type_descr_bcmolt_alloc_state };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_alloc_cfg_sla = { .name = "sla", .descr = "Alloc ID SLA", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ALLOC_CFG_ID_SLA, .offset = offsetof(bcmolt_gpon_alloc_cfg_data, sla), .type = &type_descr_bcmolt_pon_alloc_sla };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_alloc_cfg_onu_id = { .name = "onu_id", .descr = "ONU ID the alloc ID is assigned to", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ALLOC_CFG_ID_ONU_ID, .offset = offsetof(bcmolt_gpon_alloc_cfg_data, onu_id), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_alloc_cfg_collect_stats = { .name = "collect_stats", .descr = "Enable statistics collection for this alloc ID", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ALLOC_CFG_ID_COLLECT_STATS, .offset = offsetof(bcmolt_gpon_alloc_cfg_data, collect_stats), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr * BCM_DESCR gpon_alloc_cfg_prop_array[] = { &prop_descr_gpon_alloc_cfg_state, &prop_descr_gpon_alloc_cfg_sla, &prop_descr_gpon_alloc_cfg_onu_id, &prop_descr_gpon_alloc_cfg_collect_stats };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_alloc_cfg_data_fields[] = { { .name = "state", .descr = "Current Alloc ID state", .offset = offsetof(bcmolt_gpon_alloc_cfg_data, state), .type = &type_descr_bcmolt_alloc_state }, { .name = "sla", .descr = "Alloc ID SLA", .offset = offsetof(bcmolt_gpon_alloc_cfg_data, sla), .type = &type_descr_bcmolt_pon_alloc_sla }, { .name = "onu_id", .descr = "ONU ID the alloc ID is assigned to", .offset = offsetof(bcmolt_gpon_alloc_cfg_data, onu_id), .type = &type_descr_uint16_t }, { .name = "collect_stats", .descr = "Enable statistics collection for this alloc ID", .offset = offsetof(bcmolt_gpon_alloc_cfg_data, collect_stats), .type = &type_descr_bcmos_bool } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_alloc_cfg_data = { .name = "bcmolt_gpon_alloc_cfg_data", .descr = "cfg", .size = sizeof(bcmolt_gpon_alloc_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_alloc_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_alloc_cfg_data_fields } } };

/* Group: gpon_alloc - stat */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_alloc_stat_rx_bytes = { .name = "rx_bytes", .descr = "Received Bytes", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ALLOC_STAT_ID_RX_BYTES, .offset = offsetof(bcmolt_gpon_alloc_stat_data, rx_bytes), .type = &type_descr_uint64_t };
static bcmcli_prop_descr * BCM_DESCR gpon_alloc_stat_prop_array[] = { &prop_descr_gpon_alloc_stat_rx_bytes };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_alloc_stat_data_fields[] = { { .name = "rx_bytes", .descr = "Received Bytes", .offset = offsetof(bcmolt_gpon_alloc_stat_data, rx_bytes), .type = &type_descr_uint64_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_alloc_stat_data = { .name = "bcmolt_gpon_alloc_stat_data", .descr = "stat", .size = sizeof(bcmolt_gpon_alloc_stat_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_alloc_stat_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_alloc_stat_data_fields } } };

/* Group: gpon_alloc - configuration_completed */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_alloc_configuration_completed_status = { .name = "status", .descr = "Status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ALLOC_CONFIGURATION_COMPLETED_ID_STATUS, .offset = offsetof(bcmolt_gpon_alloc_configuration_completed_data, status), .type = &type_descr_bcmolt_result };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_alloc_configuration_completed_new_state = { .name = "new_state", .descr = "new state", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ALLOC_CONFIGURATION_COMPLETED_ID_NEW_STATE, .offset = offsetof(bcmolt_gpon_alloc_configuration_completed_data, new_state), .type = &type_descr_bcmolt_alloc_state };
static bcmcli_prop_descr * BCM_DESCR gpon_alloc_configuration_completed_prop_array[] = { &prop_descr_gpon_alloc_configuration_completed_status, &prop_descr_gpon_alloc_configuration_completed_new_state };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_alloc_configuration_completed_data_fields[] = { { .name = "status", .descr = "Status", .offset = offsetof(bcmolt_gpon_alloc_configuration_completed_data, status), .type = &type_descr_bcmolt_result }, { .name = "new_state", .descr = "new state", .offset = offsetof(bcmolt_gpon_alloc_configuration_completed_data, new_state), .type = &type_descr_bcmolt_alloc_state } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_alloc_configuration_completed_data = { .name = "bcmolt_gpon_alloc_configuration_completed_data", .descr = "Configuration Completed", .size = sizeof(bcmolt_gpon_alloc_configuration_completed_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_alloc_configuration_completed_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_alloc_configuration_completed_data_fields } } };

/* Group: gpon_alloc - set_state */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_alloc_set_state_state = { .name = "state", .descr = "State", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ALLOC_SET_STATE_ID_STATE, .offset = offsetof(bcmolt_gpon_alloc_set_state_data, state), .type = &type_descr_bcmolt_alloc_operation };
static bcmcli_prop_descr * BCM_DESCR gpon_alloc_set_state_prop_array[] = { &prop_descr_gpon_alloc_set_state_state };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_alloc_set_state_data_fields[] = { { .name = "state", .descr = "State", .offset = offsetof(bcmolt_gpon_alloc_set_state_data, state), .type = &type_descr_bcmolt_alloc_operation } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_alloc_set_state_data = { .name = "bcmolt_gpon_alloc_set_state_data", .descr = "Sets the alloc's activation state.  This is only used for protection switching on an active-standby PON.  In normal operation, this isn't necessary since allocs are activated/deactivated automatically along with the ONU.", .size = sizeof(bcmolt_gpon_alloc_set_state_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_alloc_set_state_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_alloc_set_state_data_fields } } };

/* Group: gpon_alloc - get_stats */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_alloc_get_stats_num_of_cycles = { .name = "num_of_cycles", .descr = "The number of cycles to run statistics collection", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ALLOC_GET_STATS_ID_NUM_OF_CYCLES, .offset = offsetof(bcmolt_gpon_alloc_get_stats_data, num_of_cycles), .type = &type_descr_uint32_t };
static bcmcli_prop_descr * BCM_DESCR gpon_alloc_get_stats_prop_array[] = { &prop_descr_gpon_alloc_get_stats_num_of_cycles };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_alloc_get_stats_data_fields[] = { { .name = "num_of_cycles", .descr = "The number of cycles to run statistics collection", .offset = offsetof(bcmolt_gpon_alloc_get_stats_data, num_of_cycles), .type = &type_descr_uint32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_alloc_get_stats_data = { .name = "bcmolt_gpon_alloc_get_stats_data", .descr = "Run statistics collection for a given period of time", .size = sizeof(bcmolt_gpon_alloc_get_stats_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_alloc_get_stats_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_alloc_get_stats_data_fields } } };

/* Group: gpon_alloc - get_alloc_stats_completed */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_alloc_get_alloc_stats_completed_status = { .name = "status", .descr = "status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ALLOC_GET_ALLOC_STATS_COMPLETED_ID_STATUS, .offset = offsetof(bcmolt_gpon_alloc_get_alloc_stats_completed_data, status), .type = &type_descr_bcmolt_result };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_alloc_get_alloc_stats_completed_average_nsr_used = { .name = "average_nsr_used", .descr = "Average NSR used bytes", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ALLOC_GET_ALLOC_STATS_COMPLETED_ID_AVERAGE_NSR_USED, .offset = offsetof(bcmolt_gpon_alloc_get_alloc_stats_completed_data, average_nsr_used), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_alloc_get_alloc_stats_completed_average_nsr_allocated = { .name = "average_nsr_allocated", .descr = "Average NSR allocated bytes", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ALLOC_GET_ALLOC_STATS_COMPLETED_ID_AVERAGE_NSR_ALLOCATED, .offset = offsetof(bcmolt_gpon_alloc_get_alloc_stats_completed_data, average_nsr_allocated), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_alloc_get_alloc_stats_completed_average_sr_report = { .name = "average_sr_report", .descr = "Average SR report", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ALLOC_GET_ALLOC_STATS_COMPLETED_ID_AVERAGE_SR_REPORT, .offset = offsetof(bcmolt_gpon_alloc_get_alloc_stats_completed_data, average_sr_report), .type = &type_descr_uint32_t };
static bcmcli_prop_descr * BCM_DESCR gpon_alloc_get_alloc_stats_completed_prop_array[] = { &prop_descr_gpon_alloc_get_alloc_stats_completed_status, &prop_descr_gpon_alloc_get_alloc_stats_completed_average_nsr_used, &prop_descr_gpon_alloc_get_alloc_stats_completed_average_nsr_allocated, &prop_descr_gpon_alloc_get_alloc_stats_completed_average_sr_report };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_alloc_get_alloc_stats_completed_data_fields[] = { { .name = "status", .descr = "status", .offset = offsetof(bcmolt_gpon_alloc_get_alloc_stats_completed_data, status), .type = &type_descr_bcmolt_result }, { .name = "average_nsr_used", .descr = "Average NSR used bytes", .offset = offsetof(bcmolt_gpon_alloc_get_alloc_stats_completed_data, average_nsr_used), .type = &type_descr_uint32_t }, { .name = "average_nsr_allocated", .descr = "Average NSR allocated bytes", .offset = offsetof(bcmolt_gpon_alloc_get_alloc_stats_completed_data, average_nsr_allocated), .type = &type_descr_uint32_t }, { .name = "average_sr_report", .descr = "Average SR report", .offset = offsetof(bcmolt_gpon_alloc_get_alloc_stats_completed_data, average_sr_report), .type = &type_descr_uint32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_alloc_get_alloc_stats_completed_data = { .name = "bcmolt_gpon_alloc_get_alloc_stats_completed_data", .descr = "Collected alloc ID statistics from get_stats operation", .size = sizeof(bcmolt_gpon_alloc_get_alloc_stats_completed_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_alloc_get_alloc_stats_completed_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_alloc_get_alloc_stats_completed_data_fields } } };

/* Group: gpon_alloc - stat_cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_alloc_stat_cfg_cfg = { .name = "cfg", .descr = "Statistic alarm configuration.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ALLOC_STAT_CFG_ID_CFG, .offset = offsetof(bcmolt_gpon_alloc_stat_cfg_data, cfg), .type = &type_descr_bcmolt_stat_alarm_config };
static bcmcli_prop_descr * BCM_DESCR gpon_alloc_stat_cfg_prop_array[] = { &prop_descr_gpon_alloc_stat_cfg_cfg };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_alloc_stat_cfg_data_fields[] = { { .name = "cfg", .descr = "Statistic alarm configuration.", .offset = offsetof(bcmolt_gpon_alloc_stat_cfg_data, cfg), .type = &type_descr_bcmolt_stat_alarm_config } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_alloc_stat_cfg_data = { .name = "bcmolt_gpon_alloc_stat_cfg_data", .descr = "Statistic Configuration", .size = sizeof(bcmolt_gpon_alloc_stat_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_alloc_stat_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_alloc_stat_cfg_data_fields } } };

/* Group: gpon_alloc - stat_alarm_raised */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_alloc_stat_alarm_raised_stat = { .name = "stat", .descr = "Statistic identifier.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ALLOC_STAT_ALARM_RAISED_ID_STAT, .offset = offsetof(bcmolt_gpon_alloc_stat_alarm_raised_data, stat), .type = &type_descr_bcmolt_gpon_alloc_stat_id };
static bcmcli_prop_descr * BCM_DESCR gpon_alloc_stat_alarm_raised_prop_array[] = { &prop_descr_gpon_alloc_stat_alarm_raised_stat };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_alloc_stat_alarm_raised_data_fields[] = { { .name = "stat", .descr = "Statistic identifier.", .offset = offsetof(bcmolt_gpon_alloc_stat_alarm_raised_data, stat), .type = &type_descr_bcmolt_gpon_alloc_stat_id } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_alloc_stat_alarm_raised_data = { .name = "bcmolt_gpon_alloc_stat_alarm_raised_data", .descr = "Sent when a configured statistic alarm condition has been met.", .size = sizeof(bcmolt_gpon_alloc_stat_alarm_raised_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_alloc_stat_alarm_raised_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_alloc_stat_alarm_raised_data_fields } } };

/* Group: gpon_alloc - stat_alarm_cleared */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_alloc_stat_alarm_cleared_stat = { .name = "stat", .descr = "Statistic identifier.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ALLOC_STAT_ALARM_CLEARED_ID_STAT, .offset = offsetof(bcmolt_gpon_alloc_stat_alarm_cleared_data, stat), .type = &type_descr_bcmolt_gpon_alloc_stat_id };
static bcmcli_prop_descr * BCM_DESCR gpon_alloc_stat_alarm_cleared_prop_array[] = { &prop_descr_gpon_alloc_stat_alarm_cleared_stat };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_alloc_stat_alarm_cleared_data_fields[] = { { .name = "stat", .descr = "Statistic identifier.", .offset = offsetof(bcmolt_gpon_alloc_stat_alarm_cleared_data, stat), .type = &type_descr_bcmolt_gpon_alloc_stat_id } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_alloc_stat_alarm_cleared_data = { .name = "bcmolt_gpon_alloc_stat_alarm_cleared_data", .descr = "Sent when a configured statistic alarm condition is no longer met.", .size = sizeof(bcmolt_gpon_alloc_stat_alarm_cleared_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_alloc_stat_alarm_cleared_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_alloc_stat_alarm_cleared_data_fields } } };

/* Group: gpon_alloc - auto_cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_alloc_auto_cfg_configuration_completed = { .name = "configuration_completed", .descr = "If true, indications of type \"configuration_completed\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ALLOC_AUTO_CFG_ID_CONFIGURATION_COMPLETED, .offset = offsetof(bcmolt_gpon_alloc_auto_cfg_data, configuration_completed), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_alloc_auto_cfg_get_alloc_stats_completed = { .name = "get_alloc_stats_completed", .descr = "If true, indications of type \"get_alloc_stats_completed\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ALLOC_AUTO_CFG_ID_GET_ALLOC_STATS_COMPLETED, .offset = offsetof(bcmolt_gpon_alloc_auto_cfg_data, get_alloc_stats_completed), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_alloc_auto_cfg_stat_alarm_cleared = { .name = "stat_alarm_cleared", .descr = "If true, indications of type \"stat_alarm_cleared\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ALLOC_AUTO_CFG_ID_STAT_ALARM_CLEARED, .offset = offsetof(bcmolt_gpon_alloc_auto_cfg_data, stat_alarm_cleared), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_alloc_auto_cfg_stat_alarm_raised = { .name = "stat_alarm_raised", .descr = "If true, indications of type \"stat_alarm_raised\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ALLOC_AUTO_CFG_ID_STAT_ALARM_RAISED, .offset = offsetof(bcmolt_gpon_alloc_auto_cfg_data, stat_alarm_raised), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr * BCM_DESCR gpon_alloc_auto_cfg_prop_array[] = { &prop_descr_gpon_alloc_auto_cfg_configuration_completed, &prop_descr_gpon_alloc_auto_cfg_get_alloc_stats_completed, &prop_descr_gpon_alloc_auto_cfg_stat_alarm_cleared, &prop_descr_gpon_alloc_auto_cfg_stat_alarm_raised };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_alloc_auto_cfg_data_fields[] = { { .name = "configuration_completed", .descr = "If true, indications of type \"configuration_completed\" will be generated.", .offset = offsetof(bcmolt_gpon_alloc_auto_cfg_data, configuration_completed), .type = &type_descr_bcmos_bool }, { .name = "get_alloc_stats_completed", .descr = "If true, indications of type \"get_alloc_stats_completed\" will be generated.", .offset = offsetof(bcmolt_gpon_alloc_auto_cfg_data, get_alloc_stats_completed), .type = &type_descr_bcmos_bool }, { .name = "stat_alarm_cleared", .descr = "If true, indications of type \"stat_alarm_cleared\" will be generated.", .offset = offsetof(bcmolt_gpon_alloc_auto_cfg_data, stat_alarm_cleared), .type = &type_descr_bcmos_bool }, { .name = "stat_alarm_raised", .descr = "If true, indications of type \"stat_alarm_raised\" will be generated.", .offset = offsetof(bcmolt_gpon_alloc_auto_cfg_data, stat_alarm_raised), .type = &type_descr_bcmos_bool } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_alloc_auto_cfg_data = { .name = "bcmolt_gpon_alloc_auto_cfg_data", .descr = "Indication Configuration", .size = sizeof(bcmolt_gpon_alloc_auto_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_alloc_auto_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_alloc_auto_cfg_data_fields } } };

/* ==== Object: gpon_gem_port ==== */

/* Group: gpon_gem_port - key */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_gem_port_key_pon_ni = { .name = "pon_ni", .descr = "PON network interface", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_GEM_PORT_KEY_ID_PON_NI, .offset = offsetof(bcmolt_gpon_gem_port_key, pon_ni), .type = &type_descr_uint8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_gem_port_key_gem_port_id = { .name = "gem_port_id", .descr = "GEM Port ID", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_GEM_PORT_KEY_ID_GEM_PORT_ID, .offset = offsetof(bcmolt_gpon_gem_port_key, gem_port_id), .type = &type_descr_uint16_t };
static bcmcli_prop_descr * BCM_DESCR gpon_gem_port_key_prop_array[] = { &prop_descr_gpon_gem_port_key_pon_ni, &prop_descr_gpon_gem_port_key_gem_port_id };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_gem_port_key_fields[] = { { .name = "pon_ni", .descr = "PON network interface", .offset = offsetof(bcmolt_gpon_gem_port_key, pon_ni), .type = &type_descr_uint8_t }, { .name = "gem_port_id", .descr = "GEM Port ID", .offset = offsetof(bcmolt_gpon_gem_port_key, gem_port_id), .type = &type_descr_uint16_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_gem_port_key = { .name = "bcmolt_gpon_gem_port_key", .descr = "key", .size = sizeof(bcmolt_gpon_gem_port_key), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_gem_port_key_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_gem_port_key_fields } } };

/* Group: gpon_gem_port - cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_gem_port_cfg_configuration = { .name = "configuration", .descr = "GEM port configuration parameters", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_GEM_PORT_CFG_ID_CONFIGURATION, .offset = offsetof(bcmolt_gpon_gem_port_cfg_data, configuration), .type = &type_descr_bcmolt_gem_port_configuration };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_gem_port_cfg_onu_id = { .name = "onu_id", .descr = "ONU ID this GEM port is assigned to", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_GEM_PORT_CFG_ID_ONU_ID, .offset = offsetof(bcmolt_gpon_gem_port_cfg_data, onu_id), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_gem_port_cfg_gem_port_state = { .name = "gem_port_state", .descr = "Current GEM port state", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_GPON_GEM_PORT_CFG_ID_GEM_PORT_STATE, .offset = offsetof(bcmolt_gpon_gem_port_cfg_data, gem_port_state), .type = &type_descr_bcmolt_gpon_gem_port_state };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_gem_port_cfg_downstream_encryption_mode = { .name = "downstream_encryption_mode", .descr = "Enable/Disable the downstream encryption mode of the GEM Port", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_GEM_PORT_CFG_ID_DOWNSTREAM_ENCRYPTION_MODE, .offset = offsetof(bcmolt_gpon_gem_port_cfg_data, downstream_encryption_mode), .type = &type_descr_bcmolt_control_state };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_gem_port_cfg_upstream_destination_queue = { .name = "upstream_destination_queue", .descr = "The destination queue of the packets arriving on this GEM Port on the upstream direction", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_GEM_PORT_CFG_ID_UPSTREAM_DESTINATION_QUEUE, .offset = offsetof(bcmolt_gpon_gem_port_cfg_data, upstream_destination_queue), .type = &type_descr_bcmolt_us_gem_port_destination };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_gem_port_cfg_control = { .name = "control", .descr = "Enable/Disable the GEM Port ID in the OLT", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_GEM_PORT_CFG_ID_CONTROL, .offset = offsetof(bcmolt_gpon_gem_port_cfg_data, control), .type = &type_descr_bcmolt_control_state };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_gem_port_cfg_debug_flow_config = { .name = "debug_flow_config", .descr = "Traffic flow debug options", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_GEM_PORT_CFG_ID_DEBUG_FLOW_CONFIG, .offset = offsetof(bcmolt_gpon_gem_port_cfg_data, debug_flow_config), .type = &type_descr_bcmolt_gpon_debug_flow_config };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_gem_port_cfg_mac_table_entry_limit = { .name = "mac_table_entry_limit", .descr = "The maximum number of MAC table entries allowed for this GEM port (0 = no limit).", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_GEM_PORT_CFG_ID_MAC_TABLE_ENTRY_LIMIT, .offset = offsetof(bcmolt_gpon_gem_port_cfg_data, mac_table_entry_limit), .type = &type_descr_uint16_t };
static bcmcli_prop_descr * BCM_DESCR gpon_gem_port_cfg_prop_array[] = { &prop_descr_gpon_gem_port_cfg_configuration, &prop_descr_gpon_gem_port_cfg_onu_id, &prop_descr_gpon_gem_port_cfg_gem_port_state, &prop_descr_gpon_gem_port_cfg_downstream_encryption_mode, &prop_descr_gpon_gem_port_cfg_upstream_destination_queue, &prop_descr_gpon_gem_port_cfg_control, &prop_descr_gpon_gem_port_cfg_debug_flow_config, &prop_descr_gpon_gem_port_cfg_mac_table_entry_limit };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_gem_port_cfg_data_fields[] = { { .name = "configuration", .descr = "GEM port configuration parameters", .offset = offsetof(bcmolt_gpon_gem_port_cfg_data, configuration), .type = &type_descr_bcmolt_gem_port_configuration }, { .name = "onu_id", .descr = "ONU ID this GEM port is assigned to", .offset = offsetof(bcmolt_gpon_gem_port_cfg_data, onu_id), .type = &type_descr_uint16_t }, { .name = "gem_port_state", .descr = "Current GEM port state", .offset = offsetof(bcmolt_gpon_gem_port_cfg_data, gem_port_state), .type = &type_descr_bcmolt_gpon_gem_port_state }, { .name = "downstream_encryption_mode", .descr = "Enable/Disable the downstream encryption mode of the GEM Port", .offset = offsetof(bcmolt_gpon_gem_port_cfg_data, downstream_encryption_mode), .type = &type_descr_bcmolt_control_state }, { .name = "upstream_destination_queue", .descr = "The destination queue of the packets arriving on this GEM Port on the upstream direction", .offset = offsetof(bcmolt_gpon_gem_port_cfg_data, upstream_destination_queue), .type = &type_descr_bcmolt_us_gem_port_destination }, { .name = "control", .descr = "Enable/Disable the GEM Port ID in the OLT", .offset = offsetof(bcmolt_gpon_gem_port_cfg_data, control), .type = &type_descr_bcmolt_control_state }, { .name = "debug_flow_config", .descr = "Traffic flow debug options", .offset = offsetof(bcmolt_gpon_gem_port_cfg_data, debug_flow_config), .type = &type_descr_bcmolt_gpon_debug_flow_config }, { .name = "mac_table_entry_limit", .descr = "The maximum number of MAC table entries allowed for this GEM port (0 = no limit).", .offset = offsetof(bcmolt_gpon_gem_port_cfg_data, mac_table_entry_limit), .type = &type_descr_uint16_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_gem_port_cfg_data = { .name = "bcmolt_gpon_gem_port_cfg_data", .descr = "cfg", .size = sizeof(bcmolt_gpon_gem_port_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_gem_port_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_gem_port_cfg_data_fields } } };

/* Group: gpon_gem_port - stat */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_gem_port_stat_rx_packets = { .name = "rx_packets", .descr = "Received GEM frames", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_GEM_PORT_STAT_ID_RX_PACKETS, .offset = offsetof(bcmolt_gpon_gem_port_stat_data, rx_packets), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_gem_port_stat_rx_bytes = { .name = "rx_bytes", .descr = "Received bytes", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_GEM_PORT_STAT_ID_RX_BYTES, .offset = offsetof(bcmolt_gpon_gem_port_stat_data, rx_bytes), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_gem_port_stat_tx_packets = { .name = "tx_packets", .descr = "Transmitted GEM frames", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_GEM_PORT_STAT_ID_TX_PACKETS, .offset = offsetof(bcmolt_gpon_gem_port_stat_data, tx_packets), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_gem_port_stat_tx_bytes = { .name = "tx_bytes", .descr = "Transmitted bytes", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_GEM_PORT_STAT_ID_TX_BYTES, .offset = offsetof(bcmolt_gpon_gem_port_stat_data, tx_bytes), .type = &type_descr_uint64_t };
static bcmcli_prop_descr * BCM_DESCR gpon_gem_port_stat_prop_array[] = { &prop_descr_gpon_gem_port_stat_rx_packets, &prop_descr_gpon_gem_port_stat_rx_bytes, &prop_descr_gpon_gem_port_stat_tx_packets, &prop_descr_gpon_gem_port_stat_tx_bytes };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_gem_port_stat_data_fields[] = { { .name = "rx_packets", .descr = "Received GEM frames", .offset = offsetof(bcmolt_gpon_gem_port_stat_data, rx_packets), .type = &type_descr_uint64_t }, { .name = "rx_bytes", .descr = "Received bytes", .offset = offsetof(bcmolt_gpon_gem_port_stat_data, rx_bytes), .type = &type_descr_uint64_t }, { .name = "tx_packets", .descr = "Transmitted GEM frames", .offset = offsetof(bcmolt_gpon_gem_port_stat_data, tx_packets), .type = &type_descr_uint64_t }, { .name = "tx_bytes", .descr = "Transmitted bytes", .offset = offsetof(bcmolt_gpon_gem_port_stat_data, tx_bytes), .type = &type_descr_uint64_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_gem_port_stat_data = { .name = "bcmolt_gpon_gem_port_stat_data", .descr = "stat", .size = sizeof(bcmolt_gpon_gem_port_stat_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_gem_port_stat_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_gem_port_stat_data_fields } } };

/* Group: gpon_gem_port - configuration_completed */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_gem_port_configuration_completed_status = { .name = "status", .descr = "status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_GEM_PORT_CONFIGURATION_COMPLETED_ID_STATUS, .offset = offsetof(bcmolt_gpon_gem_port_configuration_completed_data, status), .type = &type_descr_bcmolt_result };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_gem_port_configuration_completed_new_state = { .name = "new_state", .descr = "new state", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_GEM_PORT_CONFIGURATION_COMPLETED_ID_NEW_STATE, .offset = offsetof(bcmolt_gpon_gem_port_configuration_completed_data, new_state), .type = &type_descr_bcmolt_gpon_gem_port_state };
static bcmcli_prop_descr * BCM_DESCR gpon_gem_port_configuration_completed_prop_array[] = { &prop_descr_gpon_gem_port_configuration_completed_status, &prop_descr_gpon_gem_port_configuration_completed_new_state };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_gem_port_configuration_completed_data_fields[] = { { .name = "status", .descr = "status", .offset = offsetof(bcmolt_gpon_gem_port_configuration_completed_data, status), .type = &type_descr_bcmolt_result }, { .name = "new_state", .descr = "new state", .offset = offsetof(bcmolt_gpon_gem_port_configuration_completed_data, new_state), .type = &type_descr_bcmolt_gpon_gem_port_state } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_gem_port_configuration_completed_data = { .name = "bcmolt_gpon_gem_port_configuration_completed_data", .descr = "Configuration Completed", .size = sizeof(bcmolt_gpon_gem_port_configuration_completed_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_gem_port_configuration_completed_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_gem_port_configuration_completed_data_fields } } };

/* Group: gpon_gem_port - set_state */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_gem_port_set_state_state = { .name = "state", .descr = "State", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_GEM_PORT_SET_STATE_ID_STATE, .offset = offsetof(bcmolt_gpon_gem_port_set_state_data, state), .type = &type_descr_bcmolt_gem_port_operation };
static bcmcli_prop_descr * BCM_DESCR gpon_gem_port_set_state_prop_array[] = { &prop_descr_gpon_gem_port_set_state_state };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_gem_port_set_state_data_fields[] = { { .name = "state", .descr = "State", .offset = offsetof(bcmolt_gpon_gem_port_set_state_data, state), .type = &type_descr_bcmolt_gem_port_operation } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_gem_port_set_state_data = { .name = "bcmolt_gpon_gem_port_set_state_data", .descr = "Sets the GEM port's activation state.  This is only used for protection switching on an active-standby PON.  In normal operation, this isn't necessary since GEM ports are activated/deactivated automatically along with the ONU.", .size = sizeof(bcmolt_gpon_gem_port_set_state_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_gem_port_set_state_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_gem_port_set_state_data_fields } } };

/* Group: gpon_gem_port - stat_cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_gem_port_stat_cfg_cfg = { .name = "cfg", .descr = "Statistic alarm configuration.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_GEM_PORT_STAT_CFG_ID_CFG, .offset = offsetof(bcmolt_gpon_gem_port_stat_cfg_data, cfg), .type = &type_descr_bcmolt_stat_alarm_config };
static bcmcli_prop_descr * BCM_DESCR gpon_gem_port_stat_cfg_prop_array[] = { &prop_descr_gpon_gem_port_stat_cfg_cfg };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_gem_port_stat_cfg_data_fields[] = { { .name = "cfg", .descr = "Statistic alarm configuration.", .offset = offsetof(bcmolt_gpon_gem_port_stat_cfg_data, cfg), .type = &type_descr_bcmolt_stat_alarm_config } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_gem_port_stat_cfg_data = { .name = "bcmolt_gpon_gem_port_stat_cfg_data", .descr = "Statistic Configuration", .size = sizeof(bcmolt_gpon_gem_port_stat_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_gem_port_stat_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_gem_port_stat_cfg_data_fields } } };

/* Group: gpon_gem_port - stat_alarm_raised */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_gem_port_stat_alarm_raised_stat = { .name = "stat", .descr = "Statistic identifier.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_GEM_PORT_STAT_ALARM_RAISED_ID_STAT, .offset = offsetof(bcmolt_gpon_gem_port_stat_alarm_raised_data, stat), .type = &type_descr_bcmolt_gpon_gem_port_stat_id };
static bcmcli_prop_descr * BCM_DESCR gpon_gem_port_stat_alarm_raised_prop_array[] = { &prop_descr_gpon_gem_port_stat_alarm_raised_stat };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_gem_port_stat_alarm_raised_data_fields[] = { { .name = "stat", .descr = "Statistic identifier.", .offset = offsetof(bcmolt_gpon_gem_port_stat_alarm_raised_data, stat), .type = &type_descr_bcmolt_gpon_gem_port_stat_id } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_gem_port_stat_alarm_raised_data = { .name = "bcmolt_gpon_gem_port_stat_alarm_raised_data", .descr = "Sent when a configured statistic alarm condition has been met.", .size = sizeof(bcmolt_gpon_gem_port_stat_alarm_raised_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_gem_port_stat_alarm_raised_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_gem_port_stat_alarm_raised_data_fields } } };

/* Group: gpon_gem_port - stat_alarm_cleared */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_gem_port_stat_alarm_cleared_stat = { .name = "stat", .descr = "Statistic identifier.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_GEM_PORT_STAT_ALARM_CLEARED_ID_STAT, .offset = offsetof(bcmolt_gpon_gem_port_stat_alarm_cleared_data, stat), .type = &type_descr_bcmolt_gpon_gem_port_stat_id };
static bcmcli_prop_descr * BCM_DESCR gpon_gem_port_stat_alarm_cleared_prop_array[] = { &prop_descr_gpon_gem_port_stat_alarm_cleared_stat };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_gem_port_stat_alarm_cleared_data_fields[] = { { .name = "stat", .descr = "Statistic identifier.", .offset = offsetof(bcmolt_gpon_gem_port_stat_alarm_cleared_data, stat), .type = &type_descr_bcmolt_gpon_gem_port_stat_id } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_gem_port_stat_alarm_cleared_data = { .name = "bcmolt_gpon_gem_port_stat_alarm_cleared_data", .descr = "Sent when a configured statistic alarm condition is no longer met.", .size = sizeof(bcmolt_gpon_gem_port_stat_alarm_cleared_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_gem_port_stat_alarm_cleared_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_gem_port_stat_alarm_cleared_data_fields } } };

/* Group: gpon_gem_port - auto_cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_gem_port_auto_cfg_configuration_completed = { .name = "configuration_completed", .descr = "If true, indications of type \"configuration_completed\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_GEM_PORT_AUTO_CFG_ID_CONFIGURATION_COMPLETED, .offset = offsetof(bcmolt_gpon_gem_port_auto_cfg_data, configuration_completed), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_gem_port_auto_cfg_stat_alarm_cleared = { .name = "stat_alarm_cleared", .descr = "If true, indications of type \"stat_alarm_cleared\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_GEM_PORT_AUTO_CFG_ID_STAT_ALARM_CLEARED, .offset = offsetof(bcmolt_gpon_gem_port_auto_cfg_data, stat_alarm_cleared), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_gem_port_auto_cfg_stat_alarm_raised = { .name = "stat_alarm_raised", .descr = "If true, indications of type \"stat_alarm_raised\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_GEM_PORT_AUTO_CFG_ID_STAT_ALARM_RAISED, .offset = offsetof(bcmolt_gpon_gem_port_auto_cfg_data, stat_alarm_raised), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr * BCM_DESCR gpon_gem_port_auto_cfg_prop_array[] = { &prop_descr_gpon_gem_port_auto_cfg_configuration_completed, &prop_descr_gpon_gem_port_auto_cfg_stat_alarm_cleared, &prop_descr_gpon_gem_port_auto_cfg_stat_alarm_raised };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_gem_port_auto_cfg_data_fields[] = { { .name = "configuration_completed", .descr = "If true, indications of type \"configuration_completed\" will be generated.", .offset = offsetof(bcmolt_gpon_gem_port_auto_cfg_data, configuration_completed), .type = &type_descr_bcmos_bool }, { .name = "stat_alarm_cleared", .descr = "If true, indications of type \"stat_alarm_cleared\" will be generated.", .offset = offsetof(bcmolt_gpon_gem_port_auto_cfg_data, stat_alarm_cleared), .type = &type_descr_bcmos_bool }, { .name = "stat_alarm_raised", .descr = "If true, indications of type \"stat_alarm_raised\" will be generated.", .offset = offsetof(bcmolt_gpon_gem_port_auto_cfg_data, stat_alarm_raised), .type = &type_descr_bcmos_bool } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_gem_port_auto_cfg_data = { .name = "bcmolt_gpon_gem_port_auto_cfg_data", .descr = "Indication Configuration", .size = sizeof(bcmolt_gpon_gem_port_auto_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_gem_port_auto_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_gem_port_auto_cfg_data_fields } } };

/* ==== Object: gpon_iwf ==== */

/* Group: gpon_iwf - key */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_key_pon_ni = { .name = "pon_ni", .descr = "PON network interface", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_KEY_ID_PON_NI, .offset = offsetof(bcmolt_gpon_iwf_key, pon_ni), .type = &type_descr_uint8_t };
static bcmcli_prop_descr * BCM_DESCR gpon_iwf_key_prop_array[] = { &prop_descr_gpon_iwf_key_pon_ni };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_key_fields[] = { { .name = "pon_ni", .descr = "PON network interface", .offset = offsetof(bcmolt_gpon_iwf_key, pon_ni), .type = &type_descr_uint8_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_key = { .name = "bcmolt_gpon_iwf_key", .descr = "key", .size = sizeof(bcmolt_gpon_iwf_key), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_iwf_key_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_iwf_key_fields } } };

/* Group: gpon_iwf - cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_cfg_iwf_mode = { .name = "iwf_mode", .descr = "IWF mapping mode", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_CFG_ID_IWF_MODE, .offset = offsetof(bcmolt_gpon_iwf_cfg_data, iwf_mode), .type = &type_descr_bcmolt_iwf_mode };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_cfg_us_tpid_per_flow = { .name = "us_tpid_per_flow", .descr = "TPID value of the VLAN tag added to upstream packet when IWF mode is set to per flow", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_CFG_ID_US_TPID_PER_FLOW, .offset = offsetof(bcmolt_gpon_iwf_cfg_data, us_tpid_per_flow), .type = &type_descr_bcmolt_arr_u16_2_hex };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_cfg_us_otag_direct_tpid = { .name = "us_otag_direct_tpid", .descr = "TPID value of the VLAN tag added to upstream packet when IWF mode is set to direct mode", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_CFG_ID_US_OTAG_DIRECT_TPID, .offset = offsetof(bcmolt_gpon_iwf_cfg_data, us_otag_direct_tpid), .type = &type_descr_uint16_t_hex };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_cfg_us_otag_direct_pbit = { .name = "us_otag_direct_pbit", .descr = "P-bit value of the VLAN tag added to upstream packet when IWF mode is set to direct mode", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_CFG_ID_US_OTAG_DIRECT_PBIT, .offset = offsetof(bcmolt_gpon_iwf_cfg_data, us_otag_direct_pbit), .type = &type_descr_uint8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_cfg_ds_tpid = { .name = "ds_tpid", .descr = "Packets marked with one of the five configured DS TPID options will be forwarded, all the rest will be dropped", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_CFG_ID_DS_TPID, .offset = offsetof(bcmolt_gpon_iwf_cfg_data, ds_tpid), .type = &type_descr_bcmolt_arr_u16_5_hex };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_cfg_mac_table_configuration = { .name = "mac_table_configuration", .descr = "MAC table configuration", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_CFG_ID_MAC_TABLE_CONFIGURATION, .offset = offsetof(bcmolt_gpon_iwf_cfg_data, mac_table_configuration), .type = &type_descr_bcmolt_mac_table_configuration };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_cfg_debug_flow_configuration = { .name = "debug_flow_configuration", .descr = "MAC table configuration", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_CFG_ID_DEBUG_FLOW_CONFIGURATION, .offset = offsetof(bcmolt_gpon_iwf_cfg_data, debug_flow_configuration), .type = &type_descr_bcmolt_gpon_iwf_debug_flow_config };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_cfg_mac_table_count = { .name = "mac_table_count", .descr = "Number of MAC table entries configured in the MAC table", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_GPON_IWF_CFG_ID_MAC_TABLE_COUNT, .offset = offsetof(bcmolt_gpon_iwf_cfg_data, mac_table_count), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_cfg_forbidden_vlan_flow_gem_range_start = { .name = "forbidden_vlan_flow_gem_range_start", .descr = "Forbidden range for Vlans, Flows and Gems start value", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_CFG_ID_FORBIDDEN_VLAN_FLOW_GEM_RANGE_START, .offset = offsetof(bcmolt_gpon_iwf_cfg_data, forbidden_vlan_flow_gem_range_start), .type = &type_descr_uint16_t };
static bcmcli_prop_descr * BCM_DESCR gpon_iwf_cfg_prop_array[] = { &prop_descr_gpon_iwf_cfg_iwf_mode, &prop_descr_gpon_iwf_cfg_us_tpid_per_flow, &prop_descr_gpon_iwf_cfg_us_otag_direct_tpid, &prop_descr_gpon_iwf_cfg_us_otag_direct_pbit, &prop_descr_gpon_iwf_cfg_ds_tpid, &prop_descr_gpon_iwf_cfg_mac_table_configuration, &prop_descr_gpon_iwf_cfg_debug_flow_configuration, &prop_descr_gpon_iwf_cfg_mac_table_count, &prop_descr_gpon_iwf_cfg_forbidden_vlan_flow_gem_range_start };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_cfg_data_fields[] = { { .name = "iwf_mode", .descr = "IWF mapping mode", .offset = offsetof(bcmolt_gpon_iwf_cfg_data, iwf_mode), .type = &type_descr_bcmolt_iwf_mode }, { .name = "us_tpid_per_flow", .descr = "TPID value of the VLAN tag added to upstream packet when IWF mode is set to per flow", .offset = offsetof(bcmolt_gpon_iwf_cfg_data, us_tpid_per_flow), .type = &type_descr_bcmolt_arr_u16_2_hex }, { .name = "us_otag_direct_tpid", .descr = "TPID value of the VLAN tag added to upstream packet when IWF mode is set to direct mode", .offset = offsetof(bcmolt_gpon_iwf_cfg_data, us_otag_direct_tpid), .type = &type_descr_uint16_t_hex }, { .name = "us_otag_direct_pbit", .descr = "P-bit value of the VLAN tag added to upstream packet when IWF mode is set to direct mode", .offset = offsetof(bcmolt_gpon_iwf_cfg_data, us_otag_direct_pbit), .type = &type_descr_uint8_t }, { .name = "ds_tpid", .descr = "Packets marked with one of the five configured DS TPID options will be forwarded, all the rest will be dropped", .offset = offsetof(bcmolt_gpon_iwf_cfg_data, ds_tpid), .type = &type_descr_bcmolt_arr_u16_5_hex }, { .name = "mac_table_configuration", .descr = "MAC table configuration", .offset = offsetof(bcmolt_gpon_iwf_cfg_data, mac_table_configuration), .type = &type_descr_bcmolt_mac_table_configuration }, { .name = "debug_flow_configuration", .descr = "MAC table configuration", .offset = offsetof(bcmolt_gpon_iwf_cfg_data, debug_flow_configuration), .type = &type_descr_bcmolt_gpon_iwf_debug_flow_config }, { .name = "mac_table_count", .descr = "Number of MAC table entries configured in the MAC table", .offset = offsetof(bcmolt_gpon_iwf_cfg_data, mac_table_count), .type = &type_descr_uint16_t }, { .name = "forbidden_vlan_flow_gem_range_start", .descr = "Forbidden range for Vlans, Flows and Gems start value", .offset = offsetof(bcmolt_gpon_iwf_cfg_data, forbidden_vlan_flow_gem_range_start), .type = &type_descr_uint16_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_cfg_data = { .name = "bcmolt_gpon_iwf_cfg_data", .descr = "cfg", .size = sizeof(bcmolt_gpon_iwf_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_iwf_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_iwf_cfg_data_fields } } };

/* Group: gpon_iwf - stat */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_stat_ds_hit_event = { .name = "ds_hit_event", .descr = "DS hit event", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_STAT_ID_DS_HIT_EVENT, .offset = offsetof(bcmolt_gpon_iwf_stat_data, ds_hit_event), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_stat_ds_miss_event = { .name = "ds_miss_event", .descr = "DS miss event", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_STAT_ID_DS_MISS_EVENT, .offset = offsetof(bcmolt_gpon_iwf_stat_data, ds_miss_event), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_stat_ds_drop_due_to_miss_event = { .name = "ds_drop_due_to_miss_event", .descr = "DS drop due to miss event", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_STAT_ID_DS_DROP_DUE_TO_MISS_EVENT, .offset = offsetof(bcmolt_gpon_iwf_stat_data, ds_drop_due_to_miss_event), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_stat_ds_drop_due_to_hit_event = { .name = "ds_drop_due_to_hit_event", .descr = "DS drop due to hit event", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_STAT_ID_DS_DROP_DUE_TO_HIT_EVENT, .offset = offsetof(bcmolt_gpon_iwf_stat_data, ds_drop_due_to_hit_event), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_stat_ds_drop_to_disabled_gem = { .name = "ds_drop_to_disabled_gem", .descr = "DS drop to disabled GEM", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_STAT_ID_DS_DROP_TO_DISABLED_GEM, .offset = offsetof(bcmolt_gpon_iwf_stat_data, ds_drop_to_disabled_gem), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_stat_new_mac_discovered = { .name = "new_mac_discovered", .descr = "New MAC discovered", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_STAT_ID_NEW_MAC_DISCOVERED, .offset = offsetof(bcmolt_gpon_iwf_stat_data, new_mac_discovered), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_stat_move_event = { .name = "move_event", .descr = "Move event", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_STAT_ID_MOVE_EVENT, .offset = offsetof(bcmolt_gpon_iwf_stat_data, move_event), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_stat_new_mac_drop_due_to_fifo_full = { .name = "new_mac_drop_due_to_fifo_full", .descr = "New MAC drop due to fifo full", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_STAT_ID_NEW_MAC_DROP_DUE_TO_FIFO_FULL, .offset = offsetof(bcmolt_gpon_iwf_stat_data, new_mac_drop_due_to_fifo_full), .type = &type_descr_uint64_t };
static bcmcli_prop_descr * BCM_DESCR gpon_iwf_stat_prop_array[] = { &prop_descr_gpon_iwf_stat_ds_hit_event, &prop_descr_gpon_iwf_stat_ds_miss_event, &prop_descr_gpon_iwf_stat_ds_drop_due_to_miss_event, &prop_descr_gpon_iwf_stat_ds_drop_due_to_hit_event, &prop_descr_gpon_iwf_stat_ds_drop_to_disabled_gem, &prop_descr_gpon_iwf_stat_new_mac_discovered, &prop_descr_gpon_iwf_stat_move_event, &prop_descr_gpon_iwf_stat_new_mac_drop_due_to_fifo_full };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_stat_data_fields[] = { { .name = "ds_hit_event", .descr = "DS hit event", .offset = offsetof(bcmolt_gpon_iwf_stat_data, ds_hit_event), .type = &type_descr_uint64_t }, { .name = "ds_miss_event", .descr = "DS miss event", .offset = offsetof(bcmolt_gpon_iwf_stat_data, ds_miss_event), .type = &type_descr_uint64_t }, { .name = "ds_drop_due_to_miss_event", .descr = "DS drop due to miss event", .offset = offsetof(bcmolt_gpon_iwf_stat_data, ds_drop_due_to_miss_event), .type = &type_descr_uint64_t }, { .name = "ds_drop_due_to_hit_event", .descr = "DS drop due to hit event", .offset = offsetof(bcmolt_gpon_iwf_stat_data, ds_drop_due_to_hit_event), .type = &type_descr_uint64_t }, { .name = "ds_drop_to_disabled_gem", .descr = "DS drop to disabled GEM", .offset = offsetof(bcmolt_gpon_iwf_stat_data, ds_drop_to_disabled_gem), .type = &type_descr_uint64_t }, { .name = "new_mac_discovered", .descr = "New MAC discovered", .offset = offsetof(bcmolt_gpon_iwf_stat_data, new_mac_discovered), .type = &type_descr_uint64_t }, { .name = "move_event", .descr = "Move event", .offset = offsetof(bcmolt_gpon_iwf_stat_data, move_event), .type = &type_descr_uint64_t }, { .name = "new_mac_drop_due_to_fifo_full", .descr = "New MAC drop due to fifo full", .offset = offsetof(bcmolt_gpon_iwf_stat_data, new_mac_drop_due_to_fifo_full), .type = &type_descr_uint64_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_stat_data = { .name = "bcmolt_gpon_iwf_stat_data", .descr = "stat", .size = sizeof(bcmolt_gpon_iwf_stat_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_iwf_stat_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_iwf_stat_data_fields } } };

/* Group: gpon_iwf - flush_mac_table */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_flush_mac_table_control = { .name = "control", .descr = "control", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_FLUSH_MAC_TABLE_ID_CONTROL, .offset = offsetof(bcmolt_gpon_iwf_flush_mac_table_data, control), .type = &type_descr_bcmolt_flush_mac_table_option };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_flush_mac_table_vid = { .name = "vid", .descr = "VID", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_FLUSH_MAC_TABLE_ID_VID, .offset = offsetof(bcmolt_gpon_iwf_flush_mac_table_data, vid), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_flush_mac_table_flow_id = { .name = "flow_id", .descr = "FLOW ID", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_FLUSH_MAC_TABLE_ID_FLOW_ID, .offset = offsetof(bcmolt_gpon_iwf_flush_mac_table_data, flow_id), .type = &type_descr_uint16_t };
static bcmcli_prop_descr * BCM_DESCR gpon_iwf_flush_mac_table_prop_array[] = { &prop_descr_gpon_iwf_flush_mac_table_control, &prop_descr_gpon_iwf_flush_mac_table_vid, &prop_descr_gpon_iwf_flush_mac_table_flow_id };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_flush_mac_table_data_fields[] = { { .name = "control", .descr = "control", .offset = offsetof(bcmolt_gpon_iwf_flush_mac_table_data, control), .type = &type_descr_bcmolt_flush_mac_table_option }, { .name = "vid", .descr = "VID", .offset = offsetof(bcmolt_gpon_iwf_flush_mac_table_data, vid), .type = &type_descr_uint16_t }, { .name = "flow_id", .descr = "FLOW ID", .offset = offsetof(bcmolt_gpon_iwf_flush_mac_table_data, flow_id), .type = &type_descr_uint16_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_flush_mac_table_data = { .name = "bcmolt_gpon_iwf_flush_mac_table_data", .descr = "Flush MAC Table", .size = sizeof(bcmolt_gpon_iwf_flush_mac_table_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_iwf_flush_mac_table_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_iwf_flush_mac_table_data_fields } } };

/* Group: gpon_iwf - scan_mac_table */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_scan_mac_table_mac_address = { .name = "mac_address", .descr = "Entry MAC address.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_SCAN_MAC_TABLE_ID_MAC_ADDRESS, .offset = offsetof(bcmolt_gpon_iwf_scan_mac_table_data, mac_address), .type = &type_descr_bcmos_mac_address };
static bcmcli_prop_descr * BCM_DESCR gpon_iwf_scan_mac_table_prop_array[] = { &prop_descr_gpon_iwf_scan_mac_table_mac_address };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_scan_mac_table_data_fields[] = { { .name = "mac_address", .descr = "Entry MAC address.", .offset = offsetof(bcmolt_gpon_iwf_scan_mac_table_data, mac_address), .type = &type_descr_bcmos_mac_address } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_scan_mac_table_data = { .name = "bcmolt_gpon_iwf_scan_mac_table_data", .descr = "Scans MAC table for a given MAC address then returns the associated information", .size = sizeof(bcmolt_gpon_iwf_scan_mac_table_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_iwf_scan_mac_table_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_iwf_scan_mac_table_data_fields } } };

/* Group: gpon_iwf - flush_mac_table_completed */
static bcmcli_prop_descr * BCM_DESCR gpon_iwf_flush_mac_table_completed_prop_array[] = { };

/* Group: gpon_iwf - scan_mac_table_completed */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_scan_mac_table_completed_mac_address = { .name = "mac_address", .descr = "Entry MAC address.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_SCAN_MAC_TABLE_COMPLETED_ID_MAC_ADDRESS, .offset = offsetof(bcmolt_gpon_iwf_scan_mac_table_completed_data, mac_address), .type = &type_descr_bcmos_mac_address };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_scan_mac_table_completed_entries = { .name = "entries", .descr = "Scan results for this entry.  If this list is empty, the MAC address was not found in the table.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_SCAN_MAC_TABLE_COMPLETED_ID_ENTRIES, .offset = offsetof(bcmolt_gpon_iwf_scan_mac_table_completed_data, entries), .type = &type_descr_bcmolt_gpon_mac_table_scan_result_list_u16 };
static bcmcli_prop_descr * BCM_DESCR gpon_iwf_scan_mac_table_completed_prop_array[] = { &prop_descr_gpon_iwf_scan_mac_table_completed_mac_address, &prop_descr_gpon_iwf_scan_mac_table_completed_entries };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_scan_mac_table_completed_data_fields[] = { { .name = "mac_address", .descr = "Entry MAC address.", .offset = offsetof(bcmolt_gpon_iwf_scan_mac_table_completed_data, mac_address), .type = &type_descr_bcmos_mac_address }, { .name = "entries", .descr = "Scan results for this entry.  If this list is empty, the MAC address was not found in the table.", .offset = offsetof(bcmolt_gpon_iwf_scan_mac_table_completed_data, entries), .type = &type_descr_bcmolt_gpon_mac_table_scan_result_list_u16 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_scan_mac_table_completed_data = { .name = "bcmolt_gpon_iwf_scan_mac_table_completed_data", .descr = "A MAC table scan initiated using the \"scan_mac_table\" operation is complete.", .size = sizeof(bcmolt_gpon_iwf_scan_mac_table_completed_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_iwf_scan_mac_table_completed_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_iwf_scan_mac_table_completed_data_fields } } };

/* Group: gpon_iwf - stat_cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_stat_cfg_cfg = { .name = "cfg", .descr = "Statistic alarm configuration.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_STAT_CFG_ID_CFG, .offset = offsetof(bcmolt_gpon_iwf_stat_cfg_data, cfg), .type = &type_descr_bcmolt_stat_alarm_config };
static bcmcli_prop_descr * BCM_DESCR gpon_iwf_stat_cfg_prop_array[] = { &prop_descr_gpon_iwf_stat_cfg_cfg };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_stat_cfg_data_fields[] = { { .name = "cfg", .descr = "Statistic alarm configuration.", .offset = offsetof(bcmolt_gpon_iwf_stat_cfg_data, cfg), .type = &type_descr_bcmolt_stat_alarm_config } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_stat_cfg_data = { .name = "bcmolt_gpon_iwf_stat_cfg_data", .descr = "Statistic Configuration", .size = sizeof(bcmolt_gpon_iwf_stat_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_iwf_stat_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_iwf_stat_cfg_data_fields } } };

/* Group: gpon_iwf - stat_alarm_raised */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_stat_alarm_raised_stat = { .name = "stat", .descr = "Statistic identifier.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_STAT_ALARM_RAISED_ID_STAT, .offset = offsetof(bcmolt_gpon_iwf_stat_alarm_raised_data, stat), .type = &type_descr_bcmolt_gpon_iwf_stat_id };
static bcmcli_prop_descr * BCM_DESCR gpon_iwf_stat_alarm_raised_prop_array[] = { &prop_descr_gpon_iwf_stat_alarm_raised_stat };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_stat_alarm_raised_data_fields[] = { { .name = "stat", .descr = "Statistic identifier.", .offset = offsetof(bcmolt_gpon_iwf_stat_alarm_raised_data, stat), .type = &type_descr_bcmolt_gpon_iwf_stat_id } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_stat_alarm_raised_data = { .name = "bcmolt_gpon_iwf_stat_alarm_raised_data", .descr = "Sent when a configured statistic alarm condition has been met.", .size = sizeof(bcmolt_gpon_iwf_stat_alarm_raised_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_iwf_stat_alarm_raised_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_iwf_stat_alarm_raised_data_fields } } };

/* Group: gpon_iwf - stat_alarm_cleared */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_stat_alarm_cleared_stat = { .name = "stat", .descr = "Statistic identifier.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_STAT_ALARM_CLEARED_ID_STAT, .offset = offsetof(bcmolt_gpon_iwf_stat_alarm_cleared_data, stat), .type = &type_descr_bcmolt_gpon_iwf_stat_id };
static bcmcli_prop_descr * BCM_DESCR gpon_iwf_stat_alarm_cleared_prop_array[] = { &prop_descr_gpon_iwf_stat_alarm_cleared_stat };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_stat_alarm_cleared_data_fields[] = { { .name = "stat", .descr = "Statistic identifier.", .offset = offsetof(bcmolt_gpon_iwf_stat_alarm_cleared_data, stat), .type = &type_descr_bcmolt_gpon_iwf_stat_id } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_stat_alarm_cleared_data = { .name = "bcmolt_gpon_iwf_stat_alarm_cleared_data", .descr = "Sent when a configured statistic alarm condition is no longer met.", .size = sizeof(bcmolt_gpon_iwf_stat_alarm_cleared_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_iwf_stat_alarm_cleared_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_iwf_stat_alarm_cleared_data_fields } } };

/* Group: gpon_iwf - auto_cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_auto_cfg_flush_mac_table_completed = { .name = "flush_mac_table_completed", .descr = "If true, indications of type \"flush_mac_table_completed\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_AUTO_CFG_ID_FLUSH_MAC_TABLE_COMPLETED, .offset = offsetof(bcmolt_gpon_iwf_auto_cfg_data, flush_mac_table_completed), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_auto_cfg_scan_mac_table_completed = { .name = "scan_mac_table_completed", .descr = "If true, indications of type \"scan_mac_table_completed\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_AUTO_CFG_ID_SCAN_MAC_TABLE_COMPLETED, .offset = offsetof(bcmolt_gpon_iwf_auto_cfg_data, scan_mac_table_completed), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_auto_cfg_stat_alarm_cleared = { .name = "stat_alarm_cleared", .descr = "If true, indications of type \"stat_alarm_cleared\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_AUTO_CFG_ID_STAT_ALARM_CLEARED, .offset = offsetof(bcmolt_gpon_iwf_auto_cfg_data, stat_alarm_cleared), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_auto_cfg_stat_alarm_raised = { .name = "stat_alarm_raised", .descr = "If true, indications of type \"stat_alarm_raised\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_AUTO_CFG_ID_STAT_ALARM_RAISED, .offset = offsetof(bcmolt_gpon_iwf_auto_cfg_data, stat_alarm_raised), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr * BCM_DESCR gpon_iwf_auto_cfg_prop_array[] = { &prop_descr_gpon_iwf_auto_cfg_flush_mac_table_completed, &prop_descr_gpon_iwf_auto_cfg_scan_mac_table_completed, &prop_descr_gpon_iwf_auto_cfg_stat_alarm_cleared, &prop_descr_gpon_iwf_auto_cfg_stat_alarm_raised };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_auto_cfg_data_fields[] = { { .name = "flush_mac_table_completed", .descr = "If true, indications of type \"flush_mac_table_completed\" will be generated.", .offset = offsetof(bcmolt_gpon_iwf_auto_cfg_data, flush_mac_table_completed), .type = &type_descr_bcmos_bool }, { .name = "scan_mac_table_completed", .descr = "If true, indications of type \"scan_mac_table_completed\" will be generated.", .offset = offsetof(bcmolt_gpon_iwf_auto_cfg_data, scan_mac_table_completed), .type = &type_descr_bcmos_bool }, { .name = "stat_alarm_cleared", .descr = "If true, indications of type \"stat_alarm_cleared\" will be generated.", .offset = offsetof(bcmolt_gpon_iwf_auto_cfg_data, stat_alarm_cleared), .type = &type_descr_bcmos_bool }, { .name = "stat_alarm_raised", .descr = "If true, indications of type \"stat_alarm_raised\" will be generated.", .offset = offsetof(bcmolt_gpon_iwf_auto_cfg_data, stat_alarm_raised), .type = &type_descr_bcmos_bool } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_auto_cfg_data = { .name = "bcmolt_gpon_iwf_auto_cfg_data", .descr = "Indication Configuration", .size = sizeof(bcmolt_gpon_iwf_auto_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_iwf_auto_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_iwf_auto_cfg_data_fields } } };

/* ==== Object: gpon_iwf_ds_egress_flow ==== */

/* Group: gpon_iwf_ds_egress_flow - key */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_ds_egress_flow_key_pon_ni = { .name = "pon_ni", .descr = "PON network interface", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_DS_EGRESS_FLOW_KEY_ID_PON_NI, .offset = offsetof(bcmolt_gpon_iwf_ds_egress_flow_key, pon_ni), .type = &type_descr_uint8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_ds_egress_flow_key_flow_id = { .name = "flow_id", .descr = "Flow ID", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_DS_EGRESS_FLOW_KEY_ID_FLOW_ID, .offset = offsetof(bcmolt_gpon_iwf_ds_egress_flow_key, flow_id), .type = &type_descr_uint16_t };
static bcmcli_prop_descr * BCM_DESCR gpon_iwf_ds_egress_flow_key_prop_array[] = { &prop_descr_gpon_iwf_ds_egress_flow_key_pon_ni, &prop_descr_gpon_iwf_ds_egress_flow_key_flow_id };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_ds_egress_flow_key_fields[] = { { .name = "pon_ni", .descr = "PON network interface", .offset = offsetof(bcmolt_gpon_iwf_ds_egress_flow_key, pon_ni), .type = &type_descr_uint8_t }, { .name = "flow_id", .descr = "Flow ID", .offset = offsetof(bcmolt_gpon_iwf_ds_egress_flow_key, flow_id), .type = &type_descr_uint16_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_ds_egress_flow_key = { .name = "bcmolt_gpon_iwf_ds_egress_flow_key", .descr = "key", .size = sizeof(bcmolt_gpon_iwf_ds_egress_flow_key), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_iwf_ds_egress_flow_key_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_iwf_ds_egress_flow_key_fields } } };

/* Group: gpon_iwf_ds_egress_flow - cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_ds_egress_flow_cfg_gem_port = { .name = "gem_port", .descr = "GEM port ID", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_DS_EGRESS_FLOW_CFG_ID_GEM_PORT, .offset = offsetof(bcmolt_gpon_iwf_ds_egress_flow_cfg_data, gem_port), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_ds_egress_flow_cfg_pbit_control = { .name = "pbit_control", .descr = "If enabled, the Pbits value is taken from the mapping VLAN tag (Inner/Outer) VLAN Pbits location and added to the configured GEM port ID value to create the Final GEM ID", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_DS_EGRESS_FLOW_CFG_ID_PBIT_CONTROL, .offset = offsetof(bcmolt_gpon_iwf_ds_egress_flow_cfg_data, pbit_control), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr * BCM_DESCR gpon_iwf_ds_egress_flow_cfg_prop_array[] = { &prop_descr_gpon_iwf_ds_egress_flow_cfg_gem_port, &prop_descr_gpon_iwf_ds_egress_flow_cfg_pbit_control };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_ds_egress_flow_cfg_data_fields[] = { { .name = "gem_port", .descr = "GEM port ID", .offset = offsetof(bcmolt_gpon_iwf_ds_egress_flow_cfg_data, gem_port), .type = &type_descr_uint16_t }, { .name = "pbit_control", .descr = "If enabled, the Pbits value is taken from the mapping VLAN tag (Inner/Outer) VLAN Pbits location and added to the configured GEM port ID value to create the Final GEM ID", .offset = offsetof(bcmolt_gpon_iwf_ds_egress_flow_cfg_data, pbit_control), .type = &type_descr_bcmos_bool } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_ds_egress_flow_cfg_data = { .name = "bcmolt_gpon_iwf_ds_egress_flow_cfg_data", .descr = "cfg", .size = sizeof(bcmolt_gpon_iwf_ds_egress_flow_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_iwf_ds_egress_flow_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_iwf_ds_egress_flow_cfg_data_fields } } };

/* ==== Object: gpon_iwf_ds_ingress_flow ==== */

/* Group: gpon_iwf_ds_ingress_flow - key */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_ds_ingress_flow_key_pon_ni = { .name = "pon_ni", .descr = "PON network interface", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_DS_INGRESS_FLOW_KEY_ID_PON_NI, .offset = offsetof(bcmolt_gpon_iwf_ds_ingress_flow_key, pon_ni), .type = &type_descr_uint8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_ds_ingress_flow_key_vlan_id = { .name = "vlan_id", .descr = "vlan ID", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_DS_INGRESS_FLOW_KEY_ID_VLAN_ID, .offset = offsetof(bcmolt_gpon_iwf_ds_ingress_flow_key, vlan_id), .type = &type_descr_uint16_t };
static bcmcli_prop_descr * BCM_DESCR gpon_iwf_ds_ingress_flow_key_prop_array[] = { &prop_descr_gpon_iwf_ds_ingress_flow_key_pon_ni, &prop_descr_gpon_iwf_ds_ingress_flow_key_vlan_id };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_ds_ingress_flow_key_fields[] = { { .name = "pon_ni", .descr = "PON network interface", .offset = offsetof(bcmolt_gpon_iwf_ds_ingress_flow_key, pon_ni), .type = &type_descr_uint8_t }, { .name = "vlan_id", .descr = "vlan ID", .offset = offsetof(bcmolt_gpon_iwf_ds_ingress_flow_key, vlan_id), .type = &type_descr_uint16_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_ds_ingress_flow_key = { .name = "bcmolt_gpon_iwf_ds_ingress_flow_key", .descr = "key", .size = sizeof(bcmolt_gpon_iwf_ds_ingress_flow_key), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_iwf_ds_ingress_flow_key_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_iwf_ds_ingress_flow_key_fields } } };

/* Group: gpon_iwf_ds_ingress_flow - cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_ds_ingress_flow_cfg_mapping_method = { .name = "mapping_method", .descr = "The Mapping method defines how the flow ID will be determined", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_DS_INGRESS_FLOW_CFG_ID_MAPPING_METHOD, .offset = offsetof(bcmolt_gpon_iwf_ds_ingress_flow_cfg_data, mapping_method), .type = &type_descr_bcmolt_vlan_to_flow_mapping_method };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_ds_ingress_flow_cfg_mapping_tag = { .name = "mapping_tag", .descr = "Define if the outer or the inner VLAN tag of the packet will determine the flow ID", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_DS_INGRESS_FLOW_CFG_ID_MAPPING_TAG, .offset = offsetof(bcmolt_gpon_iwf_ds_ingress_flow_cfg_data, mapping_tag), .type = &type_descr_bcmolt_mapping_tag_method };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_ds_ingress_flow_cfg_vlan_action = { .name = "vlan_action", .descr = "Define the outer VLAN tag manipulation on the packet: transparent or remove", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_DS_INGRESS_FLOW_CFG_ID_VLAN_ACTION, .offset = offsetof(bcmolt_gpon_iwf_ds_ingress_flow_cfg_data, vlan_action), .type = &type_descr_bcmolt_ds_vlan_action };
static bcmcli_prop_descr * BCM_DESCR gpon_iwf_ds_ingress_flow_cfg_prop_array[] = { &prop_descr_gpon_iwf_ds_ingress_flow_cfg_mapping_method, &prop_descr_gpon_iwf_ds_ingress_flow_cfg_mapping_tag, &prop_descr_gpon_iwf_ds_ingress_flow_cfg_vlan_action };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_ds_ingress_flow_cfg_data_fields[] = { { .name = "mapping_method", .descr = "The Mapping method defines how the flow ID will be determined", .offset = offsetof(bcmolt_gpon_iwf_ds_ingress_flow_cfg_data, mapping_method), .type = &type_descr_bcmolt_vlan_to_flow_mapping_method }, { .name = "mapping_tag", .descr = "Define if the outer or the inner VLAN tag of the packet will determine the flow ID", .offset = offsetof(bcmolt_gpon_iwf_ds_ingress_flow_cfg_data, mapping_tag), .type = &type_descr_bcmolt_mapping_tag_method }, { .name = "vlan_action", .descr = "Define the outer VLAN tag manipulation on the packet: transparent or remove", .offset = offsetof(bcmolt_gpon_iwf_ds_ingress_flow_cfg_data, vlan_action), .type = &type_descr_bcmolt_ds_vlan_action } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_ds_ingress_flow_cfg_data = { .name = "bcmolt_gpon_iwf_ds_ingress_flow_cfg_data", .descr = "cfg", .size = sizeof(bcmolt_gpon_iwf_ds_ingress_flow_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_iwf_ds_ingress_flow_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_iwf_ds_ingress_flow_cfg_data_fields } } };

/* ==== Object: gpon_iwf_mac_table ==== */

/* Group: gpon_iwf_mac_table - key */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_mac_table_key_pon_ni = { .name = "pon_ni", .descr = "PON network interface", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_MAC_TABLE_KEY_ID_PON_NI, .offset = offsetof(bcmolt_gpon_iwf_mac_table_key, pon_ni), .type = &type_descr_uint8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_mac_table_key_mac_address = { .name = "mac_address", .descr = "MAC address", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_MAC_TABLE_KEY_ID_MAC_ADDRESS, .offset = offsetof(bcmolt_gpon_iwf_mac_table_key, mac_address), .type = &type_descr_bcmos_mac_address };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_mac_table_key_vlan = { .name = "vlan", .descr = "VLAN", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_MAC_TABLE_KEY_ID_VLAN, .offset = offsetof(bcmolt_gpon_iwf_mac_table_key, vlan), .type = &type_descr_uint16_t };
static bcmcli_prop_descr * BCM_DESCR gpon_iwf_mac_table_key_prop_array[] = { &prop_descr_gpon_iwf_mac_table_key_pon_ni, &prop_descr_gpon_iwf_mac_table_key_mac_address, &prop_descr_gpon_iwf_mac_table_key_vlan };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_mac_table_key_fields[] = { { .name = "pon_ni", .descr = "PON network interface", .offset = offsetof(bcmolt_gpon_iwf_mac_table_key, pon_ni), .type = &type_descr_uint8_t }, { .name = "mac_address", .descr = "MAC address", .offset = offsetof(bcmolt_gpon_iwf_mac_table_key, mac_address), .type = &type_descr_bcmos_mac_address }, { .name = "vlan", .descr = "VLAN", .offset = offsetof(bcmolt_gpon_iwf_mac_table_key, vlan), .type = &type_descr_uint16_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_mac_table_key = { .name = "bcmolt_gpon_iwf_mac_table_key", .descr = "key", .size = sizeof(bcmolt_gpon_iwf_mac_table_key), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_iwf_mac_table_key_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_iwf_mac_table_key_fields } } };

/* Group: gpon_iwf_mac_table - cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_mac_table_cfg_flow_id = { .name = "flow_id", .descr = "The flow ID assigned to traffic that matches this MAC table entry.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_MAC_TABLE_CFG_ID_FLOW_ID, .offset = offsetof(bcmolt_gpon_iwf_mac_table_cfg_data, flow_id), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_mac_table_cfg_stat = { .name = "stat", .descr = "Whether or not the MAC entry is static.  Static entries don't age.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_MAC_TABLE_CFG_ID_STAT, .offset = offsetof(bcmolt_gpon_iwf_mac_table_cfg_data, stat), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_mac_table_cfg_gem_port_id = { .name = "gem_port_id", .descr = "The GEM port ID of the traffic that created this table entry.  This only applies to automatically-learned entries.  Manually-added entries will have the value BCMOLT_PON_GEM_PORT_ID_INVALID.", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_GPON_IWF_MAC_TABLE_CFG_ID_GEM_PORT_ID, .offset = offsetof(bcmolt_gpon_iwf_mac_table_cfg_data, gem_port_id), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_mac_table_cfg_onu_id = { .name = "onu_id", .descr = "The ONU ID for the traffic that created this table entry.  This only valid if gem_port_id is valid.  Otherwise this will be set to BCMOLT_GPON_ONU_ID_INVALID.", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_GPON_IWF_MAC_TABLE_CFG_ID_ONU_ID, .offset = offsetof(bcmolt_gpon_iwf_mac_table_cfg_data, onu_id), .type = &type_descr_uint16_t };
static bcmcli_prop_descr * BCM_DESCR gpon_iwf_mac_table_cfg_prop_array[] = { &prop_descr_gpon_iwf_mac_table_cfg_flow_id, &prop_descr_gpon_iwf_mac_table_cfg_stat, &prop_descr_gpon_iwf_mac_table_cfg_gem_port_id, &prop_descr_gpon_iwf_mac_table_cfg_onu_id };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_mac_table_cfg_data_fields[] = { { .name = "flow_id", .descr = "The flow ID assigned to traffic that matches this MAC table entry.", .offset = offsetof(bcmolt_gpon_iwf_mac_table_cfg_data, flow_id), .type = &type_descr_uint16_t }, { .name = "stat", .descr = "Whether or not the MAC entry is static.  Static entries don't age.", .offset = offsetof(bcmolt_gpon_iwf_mac_table_cfg_data, stat), .type = &type_descr_bcmos_bool }, { .name = "gem_port_id", .descr = "The GEM port ID of the traffic that created this table entry.  This only applies to automatically-learned entries.  Manually-added entries will have the value BCMOLT_PON_GEM_PORT_ID_INVALID.", .offset = offsetof(bcmolt_gpon_iwf_mac_table_cfg_data, gem_port_id), .type = &type_descr_uint16_t }, { .name = "onu_id", .descr = "The ONU ID for the traffic that created this table entry.  This only valid if gem_port_id is valid.  Otherwise this will be set to BCMOLT_GPON_ONU_ID_INVALID.", .offset = offsetof(bcmolt_gpon_iwf_mac_table_cfg_data, onu_id), .type = &type_descr_uint16_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_mac_table_cfg_data = { .name = "bcmolt_gpon_iwf_mac_table_cfg_data", .descr = "cfg", .size = sizeof(bcmolt_gpon_iwf_mac_table_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_iwf_mac_table_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_iwf_mac_table_cfg_data_fields } } };

/* Group: gpon_iwf_mac_table - new_mac */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_mac_table_new_mac_flow_id = { .name = "flow_id", .descr = "The flow ID associated with the new entry.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_MAC_TABLE_NEW_MAC_ID_FLOW_ID, .offset = offsetof(bcmolt_gpon_iwf_mac_table_new_mac_data, flow_id), .type = &type_descr_uint16_t };
static bcmcli_prop_descr * BCM_DESCR gpon_iwf_mac_table_new_mac_prop_array[] = { &prop_descr_gpon_iwf_mac_table_new_mac_flow_id };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_mac_table_new_mac_data_fields[] = { { .name = "flow_id", .descr = "The flow ID associated with the new entry.", .offset = offsetof(bcmolt_gpon_iwf_mac_table_new_mac_data, flow_id), .type = &type_descr_uint16_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_mac_table_new_mac_data = { .name = "bcmolt_gpon_iwf_mac_table_new_mac_data", .descr = "Sent when a new MAC address / VID combination is seen in the upstream traffic stream.", .size = sizeof(bcmolt_gpon_iwf_mac_table_new_mac_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_iwf_mac_table_new_mac_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_iwf_mac_table_new_mac_data_fields } } };

/* Group: gpon_iwf_mac_table - mac_aged */
static bcmcli_prop_descr * BCM_DESCR gpon_iwf_mac_table_mac_aged_prop_array[] = { };

/* Group: gpon_iwf_mac_table - mac_move */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_mac_table_mac_move_old_flow_id = { .name = "old_flow_id", .descr = "The flow ID in the current MAC table entry.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_MAC_TABLE_MAC_MOVE_ID_OLD_FLOW_ID, .offset = offsetof(bcmolt_gpon_iwf_mac_table_mac_move_data, old_flow_id), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_mac_table_mac_move_new_flow_id = { .name = "new_flow_id", .descr = "The flow ID seen in the traffic stream.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_MAC_TABLE_MAC_MOVE_ID_NEW_FLOW_ID, .offset = offsetof(bcmolt_gpon_iwf_mac_table_mac_move_data, new_flow_id), .type = &type_descr_uint16_t };
static bcmcli_prop_descr * BCM_DESCR gpon_iwf_mac_table_mac_move_prop_array[] = { &prop_descr_gpon_iwf_mac_table_mac_move_old_flow_id, &prop_descr_gpon_iwf_mac_table_mac_move_new_flow_id };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_mac_table_mac_move_data_fields[] = { { .name = "old_flow_id", .descr = "The flow ID in the current MAC table entry.", .offset = offsetof(bcmolt_gpon_iwf_mac_table_mac_move_data, old_flow_id), .type = &type_descr_uint16_t }, { .name = "new_flow_id", .descr = "The flow ID seen in the traffic stream.", .offset = offsetof(bcmolt_gpon_iwf_mac_table_mac_move_data, new_flow_id), .type = &type_descr_uint16_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_mac_table_mac_move_data = { .name = "bcmolt_gpon_iwf_mac_table_mac_move_data", .descr = "Sent when the MAC table is in move mode and a packet is seen that matches on MAC address / VID but doesn't match on flow ID.", .size = sizeof(bcmolt_gpon_iwf_mac_table_mac_move_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_iwf_mac_table_mac_move_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_iwf_mac_table_mac_move_data_fields } } };

/* Group: gpon_iwf_mac_table - mac_dropped */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_mac_table_mac_dropped_flow_id = { .name = "flow_id", .descr = "The flow ID of the entry that was dropped.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_MAC_TABLE_MAC_DROPPED_ID_FLOW_ID, .offset = offsetof(bcmolt_gpon_iwf_mac_table_mac_dropped_data, flow_id), .type = &type_descr_uint16_t };
static bcmcli_prop_descr * BCM_DESCR gpon_iwf_mac_table_mac_dropped_prop_array[] = { &prop_descr_gpon_iwf_mac_table_mac_dropped_flow_id };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_mac_table_mac_dropped_data_fields[] = { { .name = "flow_id", .descr = "The flow ID of the entry that was dropped.", .offset = offsetof(bcmolt_gpon_iwf_mac_table_mac_dropped_data, flow_id), .type = &type_descr_uint16_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_mac_table_mac_dropped_data = { .name = "bcmolt_gpon_iwf_mac_table_mac_dropped_data", .descr = "Sent when an entry cannot be learned since the MAC table is full.", .size = sizeof(bcmolt_gpon_iwf_mac_table_mac_dropped_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_iwf_mac_table_mac_dropped_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_iwf_mac_table_mac_dropped_data_fields } } };

/* Group: gpon_iwf_mac_table - auto_cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_mac_table_auto_cfg_mac_aged = { .name = "mac_aged", .descr = "If true, indications of type \"mac_aged\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_MAC_TABLE_AUTO_CFG_ID_MAC_AGED, .offset = offsetof(bcmolt_gpon_iwf_mac_table_auto_cfg_data, mac_aged), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_mac_table_auto_cfg_mac_dropped = { .name = "mac_dropped", .descr = "If true, indications of type \"mac_dropped\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_MAC_TABLE_AUTO_CFG_ID_MAC_DROPPED, .offset = offsetof(bcmolt_gpon_iwf_mac_table_auto_cfg_data, mac_dropped), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_mac_table_auto_cfg_mac_move = { .name = "mac_move", .descr = "If true, indications of type \"mac_move\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_MAC_TABLE_AUTO_CFG_ID_MAC_MOVE, .offset = offsetof(bcmolt_gpon_iwf_mac_table_auto_cfg_data, mac_move), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_mac_table_auto_cfg_new_mac = { .name = "new_mac", .descr = "If true, indications of type \"new_mac\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_MAC_TABLE_AUTO_CFG_ID_NEW_MAC, .offset = offsetof(bcmolt_gpon_iwf_mac_table_auto_cfg_data, new_mac), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr * BCM_DESCR gpon_iwf_mac_table_auto_cfg_prop_array[] = { &prop_descr_gpon_iwf_mac_table_auto_cfg_mac_aged, &prop_descr_gpon_iwf_mac_table_auto_cfg_mac_dropped, &prop_descr_gpon_iwf_mac_table_auto_cfg_mac_move, &prop_descr_gpon_iwf_mac_table_auto_cfg_new_mac };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_mac_table_auto_cfg_data_fields[] = { { .name = "mac_aged", .descr = "If true, indications of type \"mac_aged\" will be generated.", .offset = offsetof(bcmolt_gpon_iwf_mac_table_auto_cfg_data, mac_aged), .type = &type_descr_bcmos_bool }, { .name = "mac_dropped", .descr = "If true, indications of type \"mac_dropped\" will be generated.", .offset = offsetof(bcmolt_gpon_iwf_mac_table_auto_cfg_data, mac_dropped), .type = &type_descr_bcmos_bool }, { .name = "mac_move", .descr = "If true, indications of type \"mac_move\" will be generated.", .offset = offsetof(bcmolt_gpon_iwf_mac_table_auto_cfg_data, mac_move), .type = &type_descr_bcmos_bool }, { .name = "new_mac", .descr = "If true, indications of type \"new_mac\" will be generated.", .offset = offsetof(bcmolt_gpon_iwf_mac_table_auto_cfg_data, new_mac), .type = &type_descr_bcmos_bool } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_mac_table_auto_cfg_data = { .name = "bcmolt_gpon_iwf_mac_table_auto_cfg_data", .descr = "Indication Configuration", .size = sizeof(bcmolt_gpon_iwf_mac_table_auto_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_iwf_mac_table_auto_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_iwf_mac_table_auto_cfg_data_fields } } };

/* ==== Object: gpon_iwf_us_flow ==== */

/* Group: gpon_iwf_us_flow - key */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_us_flow_key_pon_ni = { .name = "pon_ni", .descr = "PON network interface", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_US_FLOW_KEY_ID_PON_NI, .offset = offsetof(bcmolt_gpon_iwf_us_flow_key, pon_ni), .type = &type_descr_uint8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_us_flow_key_gem_port_id = { .name = "gem_port_id", .descr = "GEM Port  ID", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_US_FLOW_KEY_ID_GEM_PORT_ID, .offset = offsetof(bcmolt_gpon_iwf_us_flow_key, gem_port_id), .type = &type_descr_uint16_t };
static bcmcli_prop_descr * BCM_DESCR gpon_iwf_us_flow_key_prop_array[] = { &prop_descr_gpon_iwf_us_flow_key_pon_ni, &prop_descr_gpon_iwf_us_flow_key_gem_port_id };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_us_flow_key_fields[] = { { .name = "pon_ni", .descr = "PON network interface", .offset = offsetof(bcmolt_gpon_iwf_us_flow_key, pon_ni), .type = &type_descr_uint8_t }, { .name = "gem_port_id", .descr = "GEM Port  ID", .offset = offsetof(bcmolt_gpon_iwf_us_flow_key, gem_port_id), .type = &type_descr_uint16_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_us_flow_key = { .name = "bcmolt_gpon_iwf_us_flow_key", .descr = "key", .size = sizeof(bcmolt_gpon_iwf_us_flow_key), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_iwf_us_flow_key_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_iwf_us_flow_key_fields } } };

/* Group: gpon_iwf_us_flow - cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_us_flow_cfg_flow_id = { .name = "flow_id", .descr = "Flow ID", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_US_FLOW_CFG_ID_FLOW_ID, .offset = offsetof(bcmolt_gpon_iwf_us_flow_cfg_data, flow_id), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_us_flow_cfg_mac_learning = { .name = "mac_learning", .descr = "MAC learning", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_US_FLOW_CFG_ID_MAC_LEARNING, .offset = offsetof(bcmolt_gpon_iwf_us_flow_cfg_data, mac_learning), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_us_flow_cfg_vlan_action = { .name = "vlan_action", .descr = "VLAN action", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_US_FLOW_CFG_ID_VLAN_ACTION, .offset = offsetof(bcmolt_gpon_iwf_us_flow_cfg_data, vlan_action), .type = &type_descr_bcmolt_us_vlan_action };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_us_flow_cfg_vlan_tag = { .name = "vlan_tag", .descr = "Vlan tag", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_US_FLOW_CFG_ID_VLAN_TAG, .offset = offsetof(bcmolt_gpon_iwf_us_flow_cfg_data, vlan_tag), .type = &type_descr_bcmolt_vlan_tag };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_iwf_us_flow_cfg_tpid_index = { .name = "tpid_index", .descr = "TPID index", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_IWF_US_FLOW_CFG_ID_TPID_INDEX, .offset = offsetof(bcmolt_gpon_iwf_us_flow_cfg_data, tpid_index), .type = &type_descr_uint8_t };
static bcmcli_prop_descr * BCM_DESCR gpon_iwf_us_flow_cfg_prop_array[] = { &prop_descr_gpon_iwf_us_flow_cfg_flow_id, &prop_descr_gpon_iwf_us_flow_cfg_mac_learning, &prop_descr_gpon_iwf_us_flow_cfg_vlan_action, &prop_descr_gpon_iwf_us_flow_cfg_vlan_tag, &prop_descr_gpon_iwf_us_flow_cfg_tpid_index };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_us_flow_cfg_data_fields[] = { { .name = "flow_id", .descr = "Flow ID", .offset = offsetof(bcmolt_gpon_iwf_us_flow_cfg_data, flow_id), .type = &type_descr_uint16_t }, { .name = "mac_learning", .descr = "MAC learning", .offset = offsetof(bcmolt_gpon_iwf_us_flow_cfg_data, mac_learning), .type = &type_descr_bcmos_bool }, { .name = "vlan_action", .descr = "VLAN action", .offset = offsetof(bcmolt_gpon_iwf_us_flow_cfg_data, vlan_action), .type = &type_descr_bcmolt_us_vlan_action }, { .name = "vlan_tag", .descr = "Vlan tag", .offset = offsetof(bcmolt_gpon_iwf_us_flow_cfg_data, vlan_tag), .type = &type_descr_bcmolt_vlan_tag }, { .name = "tpid_index", .descr = "TPID index", .offset = offsetof(bcmolt_gpon_iwf_us_flow_cfg_data, tpid_index), .type = &type_descr_uint8_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_iwf_us_flow_cfg_data = { .name = "bcmolt_gpon_iwf_us_flow_cfg_data", .descr = "cfg", .size = sizeof(bcmolt_gpon_iwf_us_flow_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_iwf_us_flow_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_iwf_us_flow_cfg_data_fields } } };

/* ==== Object: gpon_ni ==== */

/* Group: gpon_ni - key */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_key_pon_ni = { .name = "pon_ni", .descr = "PON network interface", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_KEY_ID_PON_NI, .offset = offsetof(bcmolt_gpon_ni_key, pon_ni), .type = &type_descr_uint8_t };
static bcmcli_prop_descr * BCM_DESCR gpon_ni_key_prop_array[] = { &prop_descr_gpon_ni_key_pon_ni };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_ni_key_fields[] = { { .name = "pon_ni", .descr = "PON network interface", .offset = offsetof(bcmolt_gpon_ni_key, pon_ni), .type = &type_descr_uint8_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_key = { .name = "bcmolt_gpon_ni_key", .descr = "key", .size = sizeof(bcmolt_gpon_ni_key), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_ni_key_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_ni_key_fields } } };

/* Group: gpon_ni - cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_cfg_pon_status = { .name = "pon_status", .descr = "PON status parameters", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_GPON_NI_CFG_ID_PON_STATUS, .offset = offsetof(bcmolt_gpon_ni_cfg_data, pon_status), .type = &type_descr_bcmolt_pon_status };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_cfg_available_bandwidth = { .name = "available_bandwidth", .descr = "PON available bandwidth parameters", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_GPON_NI_CFG_ID_AVAILABLE_BANDWIDTH, .offset = offsetof(bcmolt_gpon_ni_cfg_data, available_bandwidth), .type = &type_descr_bcmolt_pon_available_bandwidth };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_cfg_number_of_active_onus = { .name = "number_of_active_onus", .descr = "Number of active ONUs on the PON", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_GPON_NI_CFG_ID_NUMBER_OF_ACTIVE_ONUS, .offset = offsetof(bcmolt_gpon_ni_cfg_data, number_of_active_onus), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_cfg_number_of_active_standby_onus = { .name = "number_of_active_standby_onus", .descr = "number of active standby onus", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_GPON_NI_CFG_ID_NUMBER_OF_ACTIVE_STANDBY_ONUS, .offset = offsetof(bcmolt_gpon_ni_cfg_data, number_of_active_standby_onus), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_cfg_prbs_status = { .name = "prbs_status", .descr = "Result of US PRBS checker", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_GPON_NI_CFG_ID_PRBS_STATUS, .offset = offsetof(bcmolt_gpon_ni_cfg_data, prbs_status), .type = &type_descr_bcmolt_prbs_status };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_cfg_pon_distance = { .name = "pon_distance", .descr = "PON distance", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_CFG_ID_PON_DISTANCE, .offset = offsetof(bcmolt_gpon_ni_cfg_data, pon_distance), .type = &type_descr_bcmolt_pon_distance };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_cfg_ranging_window_size = { .name = "ranging_window_size", .descr = "Ranging window size", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_GPON_NI_CFG_ID_RANGING_WINDOW_SIZE, .offset = offsetof(bcmolt_gpon_ni_cfg_data, ranging_window_size), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_cfg_preassigned_equalization_delay = { .name = "preassigned_equalization_delay", .descr = "ONU pre-assigned equalization delay", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_CFG_ID_PREASSIGNED_EQUALIZATION_DELAY, .offset = offsetof(bcmolt_gpon_ni_cfg_data, preassigned_equalization_delay), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_cfg_eqd_cycles_number = { .name = "eqd_cycles_number", .descr = "How many ranging windows are opened during a single ONU activation process", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_CFG_ID_EQD_CYCLES_NUMBER, .offset = offsetof(bcmolt_gpon_ni_cfg_data, eqd_cycles_number), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_cfg_power_level = { .name = "power_level", .descr = "ONU power level configuration", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_CFG_ID_POWER_LEVEL, .offset = offsetof(bcmolt_gpon_ni_cfg_data, power_level), .type = &type_descr_bcmolt_pon_power_level };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_cfg_ds_fec_mode = { .name = "ds_fec_mode", .descr = "DS FEC mode", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_CFG_ID_DS_FEC_MODE, .offset = offsetof(bcmolt_gpon_ni_cfg_data, ds_fec_mode), .type = &type_descr_bcmolt_control_state };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_cfg_drift_control = { .name = "drift_control", .descr = "Drift control process configuration", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_CFG_ID_DRIFT_CONTROL, .offset = offsetof(bcmolt_gpon_ni_cfg_data, drift_control), .type = &type_descr_bcmolt_pon_drift_control };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_cfg_ds_ber_reporting_interval = { .name = "ds_ber_reporting_interval", .descr = "DS BER reporting interval", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_CFG_ID_DS_BER_REPORTING_INTERVAL, .offset = offsetof(bcmolt_gpon_ni_cfg_data, ds_ber_reporting_interval), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_cfg_los_alarm_threshold = { .name = "los_alarm_threshold", .descr = "LOS alarm threshold", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_CFG_ID_LOS_ALARM_THRESHOLD, .offset = offsetof(bcmolt_gpon_ni_cfg_data, los_alarm_threshold), .type = &type_descr_uint8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_cfg_los_initial_value = { .name = "los_initial_value", .descr = "LOS initial value following PON activation", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_CFG_ID_LOS_INITIAL_VALUE, .offset = offsetof(bcmolt_gpon_ni_cfg_data, los_initial_value), .type = &type_descr_bcmolt_status };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_cfg_onu_alarms_thresholds = { .name = "onu_alarms_thresholds", .descr = "ONU alarms thresholds configuration", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_CFG_ID_ONU_ALARMS_THRESHOLDS, .offset = offsetof(bcmolt_gpon_ni_cfg_data, onu_alarms_thresholds), .type = &type_descr_bcmolt_gpon_onu_alarms_thresholds };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_cfg_ber_monitor = { .name = "ber_monitor", .descr = "BER monitor process configuration", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_CFG_ID_BER_MONITOR, .offset = offsetof(bcmolt_gpon_ni_cfg_data, ber_monitor), .type = &type_descr_bcmolt_ber_monitor_params };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_cfg_ploam_ack_timeout = { .name = "ploam_ack_timeout", .descr = "Timeout for receiving ACK ploam", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_CFG_ID_PLOAM_ACK_TIMEOUT, .offset = offsetof(bcmolt_gpon_ni_cfg_data, ploam_ack_timeout), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_cfg_onu_activation = { .name = "onu_activation", .descr = "ONU activation control parameters", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_CFG_ID_ONU_ACTIVATION, .offset = offsetof(bcmolt_gpon_ni_cfg_data, onu_activation), .type = &type_descr_bcmolt_gpon_onu_activation };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_cfg_sn_acquisition = { .name = "sn_acquisition", .descr = "Serial Number process configuration", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_CFG_ID_SN_ACQUISITION, .offset = offsetof(bcmolt_gpon_ni_cfg_data, sn_acquisition), .type = &type_descr_bcmolt_gpon_sn_acquisition };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_cfg_key_exchange = { .name = "key_exchange", .descr = "Key Exchange process configuration", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_CFG_ID_KEY_EXCHANGE, .offset = offsetof(bcmolt_gpon_ni_cfg_data, key_exchange), .type = &type_descr_bcmolt_gpon_key_exchange };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_cfg_protection_switching = { .name = "protection_switching", .descr = "Protection switching control", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_CFG_ID_PROTECTION_SWITCHING, .offset = offsetof(bcmolt_gpon_ni_cfg_data, protection_switching), .type = &type_descr_bcmolt_pon_protection_switching };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_cfg_cbr_rt_allocation_profile = { .name = "cbr_rt_allocation_profile", .descr = "CBR Real Time allocation profile", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_CFG_ID_CBR_RT_ALLOCATION_PROFILE, .offset = offsetof(bcmolt_gpon_ni_cfg_data, cbr_rt_allocation_profile), .type = &type_descr_bcmolt_cbr_rt_allocation_profile };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_cfg_cbr_nrt_allocation_profile = { .name = "cbr_nrt_allocation_profile", .descr = "CBR non Real Time allocation profile", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_CFG_ID_CBR_NRT_ALLOCATION_PROFILE, .offset = offsetof(bcmolt_gpon_ni_cfg_data, cbr_nrt_allocation_profile), .type = &type_descr_bcmolt_arr_u16_2 };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_cfg_dba = { .name = "dba", .descr = "DBA configuration", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_CFG_ID_DBA, .offset = offsetof(bcmolt_gpon_ni_cfg_data, dba), .type = &type_descr_bcmolt_pon_dba };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_cfg_power_management = { .name = "power_management", .descr = "ONU power management control", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_CFG_ID_POWER_MANAGEMENT, .offset = offsetof(bcmolt_gpon_ni_cfg_data, power_management), .type = &type_descr_bcmolt_onu_power_management_configuration };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_cfg_rogue_onu_detection_process = { .name = "rogue_onu_detection_process", .descr = "Rogue ONU detection process configuration", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_CFG_ID_ROGUE_ONU_DETECTION_PROCESS, .offset = offsetof(bcmolt_gpon_ni_cfg_data, rogue_onu_detection_process), .type = &type_descr_bcmolt_rogue_onu_detection_process };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_cfg_periodic_standby_pon_monitoring = { .name = "periodic_standby_pon_monitoring", .descr = "Periodic Standby PON monitoring", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_CFG_ID_PERIODIC_STANDBY_PON_MONITORING, .offset = offsetof(bcmolt_gpon_ni_cfg_data, periodic_standby_pon_monitoring), .type = &type_descr_bcmolt_periodic_standby_pon_monitoring };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_cfg_prbs_checker = { .name = "prbs_checker", .descr = "US PRBS checker configuration", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_CFG_ID_PRBS_CHECKER, .offset = offsetof(bcmolt_gpon_ni_cfg_data, prbs_checker), .type = &type_descr_bcmolt_prbs_checker_config };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_cfg_prbs_generator = { .name = "prbs_generator", .descr = "DS PRBS generator configuration", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_CFG_ID_PRBS_GENERATOR, .offset = offsetof(bcmolt_gpon_ni_cfg_data, prbs_generator), .type = &type_descr_bcmolt_prbs_generator_config };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_cfg_min_data_alloc_id = { .name = "min_data_alloc_id", .descr = "Min data Alloc ID value", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_CFG_ID_MIN_DATA_ALLOC_ID, .offset = offsetof(bcmolt_gpon_ni_cfg_data, min_data_alloc_id), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_cfg_automatic_onu_deactivation = { .name = "automatic_onu_deactivation", .descr = "Option to disable the automatic deactivation of ONUs due to alarms", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_CFG_ID_AUTOMATIC_ONU_DEACTIVATION, .offset = offsetof(bcmolt_gpon_ni_cfg_data, automatic_onu_deactivation), .type = &type_descr_bcmolt_automatic_onu_deactivation };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_cfg_us_bandwidth_limit = { .name = "us_bandwidth_limit", .descr = "Total PON upstream bandwidth limit in bytes per second.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_CFG_ID_US_BANDWIDTH_LIMIT, .offset = offsetof(bcmolt_gpon_ni_cfg_data, us_bandwidth_limit), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_cfg_all_onus = { .name = "all_onus", .descr = "All ONUs currently provisioned on this PON.", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_GPON_NI_CFG_ID_ALL_ONUS, .offset = offsetof(bcmolt_gpon_ni_cfg_data, all_onus), .type = &type_descr_bcmolt_gpon_onu_with_state_list_u16_max_128 };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_cfg_all_mcast_gem_ports = { .name = "all_mcast_gem_ports", .descr = "All multicast GEM ports currently provisioned on this PON.", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_GPON_NI_CFG_ID_ALL_MCAST_GEM_PORTS, .offset = offsetof(bcmolt_gpon_ni_cfg_data, all_mcast_gem_ports), .type = &type_descr_bcmolt_gpon_gem_port_with_state_list_u16_max_128 };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_cfg_debug = { .name = "debug", .descr = "PON NI debug parameters", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_CFG_ID_DEBUG, .offset = offsetof(bcmolt_gpon_ni_cfg_data, debug), .type = &type_descr_bcmolt_gpon_ni_debug };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_cfg_onu_upgrade_params = { .name = "onu_upgrade_params", .descr = "ONU upgrade params", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_CFG_ID_ONU_UPGRADE_PARAMS, .offset = offsetof(bcmolt_gpon_ni_cfg_data, onu_upgrade_params), .type = &type_descr_bcmolt_gpon_onu_upgrade_params };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_cfg_ps_c_wait_before_deactivation_timeout = { .name = "ps_c_wait_before_deactivation_timeout", .descr = "PS type C timeout in milliseconds", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_CFG_ID_PS_C_WAIT_BEFORE_DEACTIVATION_TIMEOUT, .offset = offsetof(bcmolt_gpon_ni_cfg_data, ps_c_wait_before_deactivation_timeout), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_cfg_bip32_indication_control = { .name = "bip32_indication_control", .descr = "Option to disable the bip32 indication when the value is zero", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_CFG_ID_BIP32_INDICATION_CONTROL, .offset = offsetof(bcmolt_gpon_ni_cfg_data, bip32_indication_control), .type = &type_descr_bcmolt_control_state };
static bcmcli_prop_descr * BCM_DESCR gpon_ni_cfg_prop_array[] = { &prop_descr_gpon_ni_cfg_pon_status, &prop_descr_gpon_ni_cfg_available_bandwidth, &prop_descr_gpon_ni_cfg_number_of_active_onus, &prop_descr_gpon_ni_cfg_number_of_active_standby_onus, &prop_descr_gpon_ni_cfg_prbs_status, &prop_descr_gpon_ni_cfg_pon_distance, &prop_descr_gpon_ni_cfg_ranging_window_size, &prop_descr_gpon_ni_cfg_preassigned_equalization_delay, &prop_descr_gpon_ni_cfg_eqd_cycles_number, &prop_descr_gpon_ni_cfg_power_level, &prop_descr_gpon_ni_cfg_ds_fec_mode, &prop_descr_gpon_ni_cfg_drift_control, &prop_descr_gpon_ni_cfg_ds_ber_reporting_interval, &prop_descr_gpon_ni_cfg_los_alarm_threshold, &prop_descr_gpon_ni_cfg_los_initial_value, &prop_descr_gpon_ni_cfg_onu_alarms_thresholds, &prop_descr_gpon_ni_cfg_ber_monitor, &prop_descr_gpon_ni_cfg_ploam_ack_timeout, &prop_descr_gpon_ni_cfg_onu_activation, &prop_descr_gpon_ni_cfg_sn_acquisition, &prop_descr_gpon_ni_cfg_key_exchange, &prop_descr_gpon_ni_cfg_protection_switching, &prop_descr_gpon_ni_cfg_cbr_rt_allocation_profile, &prop_descr_gpon_ni_cfg_cbr_nrt_allocation_profile, &prop_descr_gpon_ni_cfg_dba, &prop_descr_gpon_ni_cfg_power_management, &prop_descr_gpon_ni_cfg_rogue_onu_detection_process, &prop_descr_gpon_ni_cfg_periodic_standby_pon_monitoring, &prop_descr_gpon_ni_cfg_prbs_checker, &prop_descr_gpon_ni_cfg_prbs_generator, &prop_descr_gpon_ni_cfg_min_data_alloc_id, &prop_descr_gpon_ni_cfg_automatic_onu_deactivation, &prop_descr_gpon_ni_cfg_us_bandwidth_limit, &prop_descr_gpon_ni_cfg_all_onus, &prop_descr_gpon_ni_cfg_all_mcast_gem_ports, &prop_descr_gpon_ni_cfg_debug, &prop_descr_gpon_ni_cfg_onu_upgrade_params, &prop_descr_gpon_ni_cfg_ps_c_wait_before_deactivation_timeout, &prop_descr_gpon_ni_cfg_bip32_indication_control };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_ni_cfg_data_fields[] = { { .name = "pon_status", .descr = "PON status parameters", .offset = offsetof(bcmolt_gpon_ni_cfg_data, pon_status), .type = &type_descr_bcmolt_pon_status }, { .name = "available_bandwidth", .descr = "PON available bandwidth parameters", .offset = offsetof(bcmolt_gpon_ni_cfg_data, available_bandwidth), .type = &type_descr_bcmolt_pon_available_bandwidth }, { .name = "number_of_active_onus", .descr = "Number of active ONUs on the PON", .offset = offsetof(bcmolt_gpon_ni_cfg_data, number_of_active_onus), .type = &type_descr_uint16_t }, { .name = "number_of_active_standby_onus", .descr = "number of active standby onus", .offset = offsetof(bcmolt_gpon_ni_cfg_data, number_of_active_standby_onus), .type = &type_descr_uint16_t }, { .name = "prbs_status", .descr = "Result of US PRBS checker", .offset = offsetof(bcmolt_gpon_ni_cfg_data, prbs_status), .type = &type_descr_bcmolt_prbs_status }, { .name = "pon_distance", .descr = "PON distance", .offset = offsetof(bcmolt_gpon_ni_cfg_data, pon_distance), .type = &type_descr_bcmolt_pon_distance }, { .name = "ranging_window_size", .descr = "Ranging window size", .offset = offsetof(bcmolt_gpon_ni_cfg_data, ranging_window_size), .type = &type_descr_uint32_t }, { .name = "preassigned_equalization_delay", .descr = "ONU pre-assigned equalization delay", .offset = offsetof(bcmolt_gpon_ni_cfg_data, preassigned_equalization_delay), .type = &type_descr_uint32_t }, { .name = "eqd_cycles_number", .descr = "How many ranging windows are opened during a single ONU activation process", .offset = offsetof(bcmolt_gpon_ni_cfg_data, eqd_cycles_number), .type = &type_descr_uint32_t }, { .name = "power_level", .descr = "ONU power level configuration", .offset = offsetof(bcmolt_gpon_ni_cfg_data, power_level), .type = &type_descr_bcmolt_pon_power_level }, { .name = "ds_fec_mode", .descr = "DS FEC mode", .offset = offsetof(bcmolt_gpon_ni_cfg_data, ds_fec_mode), .type = &type_descr_bcmolt_control_state }, { .name = "drift_control", .descr = "Drift control process configuration", .offset = offsetof(bcmolt_gpon_ni_cfg_data, drift_control), .type = &type_descr_bcmolt_pon_drift_control }, { .name = "ds_ber_reporting_interval", .descr = "DS BER reporting interval", .offset = offsetof(bcmolt_gpon_ni_cfg_data, ds_ber_reporting_interval), .type = &type_descr_uint32_t }, { .name = "los_alarm_threshold", .descr = "LOS alarm threshold", .offset = offsetof(bcmolt_gpon_ni_cfg_data, los_alarm_threshold), .type = &type_descr_uint8_t }, { .name = "los_initial_value", .descr = "LOS initial value following PON activation", .offset = offsetof(bcmolt_gpon_ni_cfg_data, los_initial_value), .type = &type_descr_bcmolt_status }, { .name = "onu_alarms_thresholds", .descr = "ONU alarms thresholds configuration", .offset = offsetof(bcmolt_gpon_ni_cfg_data, onu_alarms_thresholds), .type = &type_descr_bcmolt_gpon_onu_alarms_thresholds }, { .name = "ber_monitor", .descr = "BER monitor process configuration", .offset = offsetof(bcmolt_gpon_ni_cfg_data, ber_monitor), .type = &type_descr_bcmolt_ber_monitor_params }, { .name = "ploam_ack_timeout", .descr = "Timeout for receiving ACK ploam", .offset = offsetof(bcmolt_gpon_ni_cfg_data, ploam_ack_timeout), .type = &type_descr_uint16_t }, { .name = "onu_activation", .descr = "ONU activation control parameters", .offset = offsetof(bcmolt_gpon_ni_cfg_data, onu_activation), .type = &type_descr_bcmolt_gpon_onu_activation }, { .name = "sn_acquisition", .descr = "Serial Number process configuration", .offset = offsetof(bcmolt_gpon_ni_cfg_data, sn_acquisition), .type = &type_descr_bcmolt_gpon_sn_acquisition }, { .name = "key_exchange", .descr = "Key Exchange process configuration", .offset = offsetof(bcmolt_gpon_ni_cfg_data, key_exchange), .type = &type_descr_bcmolt_gpon_key_exchange }, { .name = "protection_switching", .descr = "Protection switching control", .offset = offsetof(bcmolt_gpon_ni_cfg_data, protection_switching), .type = &type_descr_bcmolt_pon_protection_switching }, { .name = "cbr_rt_allocation_profile", .descr = "CBR Real Time allocation profile", .offset = offsetof(bcmolt_gpon_ni_cfg_data, cbr_rt_allocation_profile), .type = &type_descr_bcmolt_cbr_rt_allocation_profile }, { .name = "cbr_nrt_allocation_profile", .descr = "CBR non Real Time allocation profile", .offset = offsetof(bcmolt_gpon_ni_cfg_data, cbr_nrt_allocation_profile), .type = &type_descr_bcmolt_arr_u16_2 }, { .name = "dba", .descr = "DBA configuration", .offset = offsetof(bcmolt_gpon_ni_cfg_data, dba), .type = &type_descr_bcmolt_pon_dba }, { .name = "power_management", .descr = "ONU power management control", .offset = offsetof(bcmolt_gpon_ni_cfg_data, power_management), .type = &type_descr_bcmolt_onu_power_management_configuration }, { .name = "rogue_onu_detection_process", .descr = "Rogue ONU detection process configuration", .offset = offsetof(bcmolt_gpon_ni_cfg_data, rogue_onu_detection_process), .type = &type_descr_bcmolt_rogue_onu_detection_process }, { .name = "periodic_standby_pon_monitoring", .descr = "Periodic Standby PON monitoring", .offset = offsetof(bcmolt_gpon_ni_cfg_data, periodic_standby_pon_monitoring), .type = &type_descr_bcmolt_periodic_standby_pon_monitoring }, { .name = "prbs_checker", .descr = "US PRBS checker configuration", .offset = offsetof(bcmolt_gpon_ni_cfg_data, prbs_checker), .type = &type_descr_bcmolt_prbs_checker_config }, { .name = "prbs_generator", .descr = "DS PRBS generator configuration", .offset = offsetof(bcmolt_gpon_ni_cfg_data, prbs_generator), .type = &type_descr_bcmolt_prbs_generator_config }, { .name = "min_data_alloc_id", .descr = "Min data Alloc ID value", .offset = offsetof(bcmolt_gpon_ni_cfg_data, min_data_alloc_id), .type = &type_descr_uint16_t }, { .name = "automatic_onu_deactivation", .descr = "Option to disable the automatic deactivation of ONUs due to alarms", .offset = offsetof(bcmolt_gpon_ni_cfg_data, automatic_onu_deactivation), .type = &type_descr_bcmolt_automatic_onu_deactivation }, { .name = "us_bandwidth_limit", .descr = "Total PON upstream bandwidth limit in bytes per second.", .offset = offsetof(bcmolt_gpon_ni_cfg_data, us_bandwidth_limit), .type = &type_descr_uint32_t }, { .name = "all_onus", .descr = "All ONUs currently provisioned on this PON.", .offset = offsetof(bcmolt_gpon_ni_cfg_data, all_onus), .type = &type_descr_bcmolt_gpon_onu_with_state_list_u16_max_128 }, { .name = "all_mcast_gem_ports", .descr = "All multicast GEM ports currently provisioned on this PON.", .offset = offsetof(bcmolt_gpon_ni_cfg_data, all_mcast_gem_ports), .type = &type_descr_bcmolt_gpon_gem_port_with_state_list_u16_max_128 }, { .name = "debug", .descr = "PON NI debug parameters", .offset = offsetof(bcmolt_gpon_ni_cfg_data, debug), .type = &type_descr_bcmolt_gpon_ni_debug }, { .name = "onu_upgrade_params", .descr = "ONU upgrade params", .offset = offsetof(bcmolt_gpon_ni_cfg_data, onu_upgrade_params), .type = &type_descr_bcmolt_gpon_onu_upgrade_params }, { .name = "ps_c_wait_before_deactivation_timeout", .descr = "PS type C timeout in milliseconds", .offset = offsetof(bcmolt_gpon_ni_cfg_data, ps_c_wait_before_deactivation_timeout), .type = &type_descr_uint16_t }, { .name = "bip32_indication_control", .descr = "Option to disable the bip32 indication when the value is zero", .offset = offsetof(bcmolt_gpon_ni_cfg_data, bip32_indication_control), .type = &type_descr_bcmolt_control_state } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_cfg_data = { .name = "bcmolt_gpon_ni_cfg_data", .descr = "cfg", .size = sizeof(bcmolt_gpon_ni_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_ni_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_ni_cfg_data_fields } } };

/* Group: gpon_ni - stat */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_stat_fec_codewords = { .name = "fec_codewords", .descr = "Received FEC codewords", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_STAT_ID_FEC_CODEWORDS, .offset = offsetof(bcmolt_gpon_ni_stat_data, fec_codewords), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_stat_fec_codewords_uncorrected = { .name = "fec_codewords_uncorrected", .descr = "Received uncorrected FEC codewords", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_STAT_ID_FEC_CODEWORDS_UNCORRECTED, .offset = offsetof(bcmolt_gpon_ni_stat_data, fec_codewords_uncorrected), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_stat_bip8_bytes = { .name = "bip8_bytes", .descr = "Received bytes protected by bip8", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_STAT_ID_BIP8_BYTES, .offset = offsetof(bcmolt_gpon_ni_stat_data, bip8_bytes), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_stat_bip8_errors = { .name = "bip8_errors", .descr = "Received bip8 errors", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_STAT_ID_BIP8_ERRORS, .offset = offsetof(bcmolt_gpon_ni_stat_data, bip8_errors), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_stat_rx_gem_packets = { .name = "rx_gem_packets", .descr = "Received GEM frames", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_STAT_ID_RX_GEM_PACKETS, .offset = offsetof(bcmolt_gpon_ni_stat_data, rx_gem_packets), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_stat_rx_gem_dropped = { .name = "rx_gem_dropped", .descr = "Received dropped GEM ID packets", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_STAT_ID_RX_GEM_DROPPED, .offset = offsetof(bcmolt_gpon_ni_stat_data, rx_gem_dropped), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_stat_rx_gem_idle = { .name = "rx_gem_idle", .descr = "Received idle GEM frames", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_STAT_ID_RX_GEM_IDLE, .offset = offsetof(bcmolt_gpon_ni_stat_data, rx_gem_idle), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_stat_rx_gem_corrected = { .name = "rx_gem_corrected", .descr = "Received corrected GEM frames", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_STAT_ID_RX_GEM_CORRECTED, .offset = offsetof(bcmolt_gpon_ni_stat_data, rx_gem_corrected), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_stat_rx_gem_illegal = { .name = "rx_gem_illegal", .descr = "Received illegal GEM frames", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_STAT_ID_RX_GEM_ILLEGAL, .offset = offsetof(bcmolt_gpon_ni_stat_data, rx_gem_illegal), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_stat_rx_allocations_valid = { .name = "rx_allocations_valid", .descr = "Received valid allocations", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_STAT_ID_RX_ALLOCATIONS_VALID, .offset = offsetof(bcmolt_gpon_ni_stat_data, rx_allocations_valid), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_stat_rx_allocations_invalid = { .name = "rx_allocations_invalid", .descr = "Received invalid allocations", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_STAT_ID_RX_ALLOCATIONS_INVALID, .offset = offsetof(bcmolt_gpon_ni_stat_data, rx_allocations_invalid), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_stat_rx_allocations_disabled = { .name = "rx_allocations_disabled", .descr = "Received disabled allocations", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_STAT_ID_RX_ALLOCATIONS_DISABLED, .offset = offsetof(bcmolt_gpon_ni_stat_data, rx_allocations_disabled), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_stat_rx_ploams = { .name = "rx_ploams", .descr = "Received Ploams", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_STAT_ID_RX_PLOAMS, .offset = offsetof(bcmolt_gpon_ni_stat_data, rx_ploams), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_stat_rx_ploams_non_idle = { .name = "rx_ploams_non_idle", .descr = "Received non idle Ploams", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_STAT_ID_RX_PLOAMS_NON_IDLE, .offset = offsetof(bcmolt_gpon_ni_stat_data, rx_ploams_non_idle), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_stat_rx_ploams_error = { .name = "rx_ploams_error", .descr = "Received error Ploams", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_STAT_ID_RX_PLOAMS_ERROR, .offset = offsetof(bcmolt_gpon_ni_stat_data, rx_ploams_error), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_stat_rx_ploams_dropped = { .name = "rx_ploams_dropped", .descr = "Received dropped Ploams", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_STAT_ID_RX_PLOAMS_DROPPED, .offset = offsetof(bcmolt_gpon_ni_stat_data, rx_ploams_dropped), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_stat_rx_cpu = { .name = "rx_cpu", .descr = "Received CPU packets", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_STAT_ID_RX_CPU, .offset = offsetof(bcmolt_gpon_ni_stat_data, rx_cpu), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_stat_rx_omci = { .name = "rx_omci", .descr = "Received OMCI packets", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_STAT_ID_RX_OMCI, .offset = offsetof(bcmolt_gpon_ni_stat_data, rx_omci), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_stat_rx_omci_packets_crc_error = { .name = "rx_omci_packets_crc_error", .descr = "Received OMCI packets with CRC errors", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_STAT_ID_RX_OMCI_PACKETS_CRC_ERROR, .offset = offsetof(bcmolt_gpon_ni_stat_data, rx_omci_packets_crc_error), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_stat_rx_dropped_too_short = { .name = "rx_dropped_too_short", .descr = "Received packets dropped due to length too short", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_STAT_ID_RX_DROPPED_TOO_SHORT, .offset = offsetof(bcmolt_gpon_ni_stat_data, rx_dropped_too_short), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_stat_rx_dropped_too_long = { .name = "rx_dropped_too_long", .descr = "Received packet dropped due to length too long", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_STAT_ID_RX_DROPPED_TOO_LONG, .offset = offsetof(bcmolt_gpon_ni_stat_data, rx_dropped_too_long), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_stat_rx_crc_errors = { .name = "rx_crc_errors", .descr = "Received packet dropped due to crc error", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_STAT_ID_RX_CRC_ERRORS, .offset = offsetof(bcmolt_gpon_ni_stat_data, rx_crc_errors), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_stat_rx_key_errors = { .name = "rx_key_errors", .descr = "Received packet dropped due to key error", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_STAT_ID_RX_KEY_ERRORS, .offset = offsetof(bcmolt_gpon_ni_stat_data, rx_key_errors), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_stat_rx_fragments_errors = { .name = "rx_fragments_errors", .descr = "Received packet dropped due to fragmentation error", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_STAT_ID_RX_FRAGMENTS_ERRORS, .offset = offsetof(bcmolt_gpon_ni_stat_data, rx_fragments_errors), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_stat_rx_packets_dropped = { .name = "rx_packets_dropped", .descr = "Global dropped packets", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_STAT_ID_RX_PACKETS_DROPPED, .offset = offsetof(bcmolt_gpon_ni_stat_data, rx_packets_dropped), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_stat_tx_gem = { .name = "tx_gem", .descr = "Transmitted GEM frames", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_STAT_ID_TX_GEM, .offset = offsetof(bcmolt_gpon_ni_stat_data, tx_gem), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_stat_tx_ploams = { .name = "tx_ploams", .descr = "Transmitted Ploams", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_STAT_ID_TX_PLOAMS, .offset = offsetof(bcmolt_gpon_ni_stat_data, tx_ploams), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_stat_tx_gem_fragments = { .name = "tx_gem_fragments", .descr = "Transmitted GEM fragments", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_STAT_ID_TX_GEM_FRAGMENTS, .offset = offsetof(bcmolt_gpon_ni_stat_data, tx_gem_fragments), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_stat_tx_cpu = { .name = "tx_cpu", .descr = "Transmitted CPU packets", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_STAT_ID_TX_CPU, .offset = offsetof(bcmolt_gpon_ni_stat_data, tx_cpu), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_stat_tx_omci = { .name = "tx_omci", .descr = "Transmitted OMCI packets", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_STAT_ID_TX_OMCI, .offset = offsetof(bcmolt_gpon_ni_stat_data, tx_omci), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_stat_tx_cpu_omci_packets_dropped = { .name = "tx_cpu_omci_packets_dropped", .descr = "Transmit packets dropped due to illegal length", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_STAT_ID_TX_CPU_OMCI_PACKETS_DROPPED, .offset = offsetof(bcmolt_gpon_ni_stat_data, tx_cpu_omci_packets_dropped), .type = &type_descr_uint8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_stat_tx_dropped_illegal_length = { .name = "tx_dropped_illegal_length", .descr = "Transmitted packet dropped due to illegal length", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_STAT_ID_TX_DROPPED_ILLEGAL_LENGTH, .offset = offsetof(bcmolt_gpon_ni_stat_data, tx_dropped_illegal_length), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_stat_tx_dropped_tpid_miss = { .name = "tx_dropped_tpid_miss", .descr = "Dropped because of TPID miss", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_STAT_ID_TX_DROPPED_TPID_MISS, .offset = offsetof(bcmolt_gpon_ni_stat_data, tx_dropped_tpid_miss), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_stat_tx_dropped_vid_miss = { .name = "tx_dropped_vid_miss", .descr = "Dropped because of VID miss", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_STAT_ID_TX_DROPPED_VID_MISS, .offset = offsetof(bcmolt_gpon_ni_stat_data, tx_dropped_vid_miss), .type = &type_descr_uint64_t };
static bcmcli_prop_descr * BCM_DESCR gpon_ni_stat_prop_array[] = { &prop_descr_gpon_ni_stat_fec_codewords, &prop_descr_gpon_ni_stat_fec_codewords_uncorrected, &prop_descr_gpon_ni_stat_bip8_bytes, &prop_descr_gpon_ni_stat_bip8_errors, &prop_descr_gpon_ni_stat_rx_gem_packets, &prop_descr_gpon_ni_stat_rx_gem_dropped, &prop_descr_gpon_ni_stat_rx_gem_idle, &prop_descr_gpon_ni_stat_rx_gem_corrected, &prop_descr_gpon_ni_stat_rx_gem_illegal, &prop_descr_gpon_ni_stat_rx_allocations_valid, &prop_descr_gpon_ni_stat_rx_allocations_invalid, &prop_descr_gpon_ni_stat_rx_allocations_disabled, &prop_descr_gpon_ni_stat_rx_ploams, &prop_descr_gpon_ni_stat_rx_ploams_non_idle, &prop_descr_gpon_ni_stat_rx_ploams_error, &prop_descr_gpon_ni_stat_rx_ploams_dropped, &prop_descr_gpon_ni_stat_rx_cpu, &prop_descr_gpon_ni_stat_rx_omci, &prop_descr_gpon_ni_stat_rx_omci_packets_crc_error, &prop_descr_gpon_ni_stat_rx_dropped_too_short, &prop_descr_gpon_ni_stat_rx_dropped_too_long, &prop_descr_gpon_ni_stat_rx_crc_errors, &prop_descr_gpon_ni_stat_rx_key_errors, &prop_descr_gpon_ni_stat_rx_fragments_errors, &prop_descr_gpon_ni_stat_rx_packets_dropped, &prop_descr_gpon_ni_stat_tx_gem, &prop_descr_gpon_ni_stat_tx_ploams, &prop_descr_gpon_ni_stat_tx_gem_fragments, &prop_descr_gpon_ni_stat_tx_cpu, &prop_descr_gpon_ni_stat_tx_omci, &prop_descr_gpon_ni_stat_tx_cpu_omci_packets_dropped, &prop_descr_gpon_ni_stat_tx_dropped_illegal_length, &prop_descr_gpon_ni_stat_tx_dropped_tpid_miss, &prop_descr_gpon_ni_stat_tx_dropped_vid_miss };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_ni_stat_data_fields[] = { { .name = "fec_codewords", .descr = "Received FEC codewords", .offset = offsetof(bcmolt_gpon_ni_stat_data, fec_codewords), .type = &type_descr_uint64_t }, { .name = "fec_codewords_uncorrected", .descr = "Received uncorrected FEC codewords", .offset = offsetof(bcmolt_gpon_ni_stat_data, fec_codewords_uncorrected), .type = &type_descr_uint64_t }, { .name = "bip8_bytes", .descr = "Received bytes protected by bip8", .offset = offsetof(bcmolt_gpon_ni_stat_data, bip8_bytes), .type = &type_descr_uint64_t }, { .name = "bip8_errors", .descr = "Received bip8 errors", .offset = offsetof(bcmolt_gpon_ni_stat_data, bip8_errors), .type = &type_descr_uint64_t }, { .name = "rx_gem_packets", .descr = "Received GEM frames", .offset = offsetof(bcmolt_gpon_ni_stat_data, rx_gem_packets), .type = &type_descr_uint64_t }, { .name = "rx_gem_dropped", .descr = "Received dropped GEM ID packets", .offset = offsetof(bcmolt_gpon_ni_stat_data, rx_gem_dropped), .type = &type_descr_uint64_t }, { .name = "rx_gem_idle", .descr = "Received idle GEM frames", .offset = offsetof(bcmolt_gpon_ni_stat_data, rx_gem_idle), .type = &type_descr_uint64_t }, { .name = "rx_gem_corrected", .descr = "Received corrected GEM frames", .offset = offsetof(bcmolt_gpon_ni_stat_data, rx_gem_corrected), .type = &type_descr_uint64_t }, { .name = "rx_gem_illegal", .descr = "Received illegal GEM frames", .offset = offsetof(bcmolt_gpon_ni_stat_data, rx_gem_illegal), .type = &type_descr_uint64_t }, { .name = "rx_allocations_valid", .descr = "Received valid allocations", .offset = offsetof(bcmolt_gpon_ni_stat_data, rx_allocations_valid), .type = &type_descr_uint64_t }, { .name = "rx_allocations_invalid", .descr = "Received invalid allocations", .offset = offsetof(bcmolt_gpon_ni_stat_data, rx_allocations_invalid), .type = &type_descr_uint64_t }, { .name = "rx_allocations_disabled", .descr = "Received disabled allocations", .offset = offsetof(bcmolt_gpon_ni_stat_data, rx_allocations_disabled), .type = &type_descr_uint64_t }, { .name = "rx_ploams", .descr = "Received Ploams", .offset = offsetof(bcmolt_gpon_ni_stat_data, rx_ploams), .type = &type_descr_uint64_t }, { .name = "rx_ploams_non_idle", .descr = "Received non idle Ploams", .offset = offsetof(bcmolt_gpon_ni_stat_data, rx_ploams_non_idle), .type = &type_descr_uint64_t }, { .name = "rx_ploams_error", .descr = "Received error Ploams", .offset = offsetof(bcmolt_gpon_ni_stat_data, rx_ploams_error), .type = &type_descr_uint64_t }, { .name = "rx_ploams_dropped", .descr = "Received dropped Ploams", .offset = offsetof(bcmolt_gpon_ni_stat_data, rx_ploams_dropped), .type = &type_descr_uint64_t }, { .name = "rx_cpu", .descr = "Received CPU packets", .offset = offsetof(bcmolt_gpon_ni_stat_data, rx_cpu), .type = &type_descr_uint64_t }, { .name = "rx_omci", .descr = "Received OMCI packets", .offset = offsetof(bcmolt_gpon_ni_stat_data, rx_omci), .type = &type_descr_uint64_t }, { .name = "rx_omci_packets_crc_error", .descr = "Received OMCI packets with CRC errors", .offset = offsetof(bcmolt_gpon_ni_stat_data, rx_omci_packets_crc_error), .type = &type_descr_uint64_t }, { .name = "rx_dropped_too_short", .descr = "Received packets dropped due to length too short", .offset = offsetof(bcmolt_gpon_ni_stat_data, rx_dropped_too_short), .type = &type_descr_uint64_t }, { .name = "rx_dropped_too_long", .descr = "Received packet dropped due to length too long", .offset = offsetof(bcmolt_gpon_ni_stat_data, rx_dropped_too_long), .type = &type_descr_uint64_t }, { .name = "rx_crc_errors", .descr = "Received packet dropped due to crc error", .offset = offsetof(bcmolt_gpon_ni_stat_data, rx_crc_errors), .type = &type_descr_uint64_t }, { .name = "rx_key_errors", .descr = "Received packet dropped due to key error", .offset = offsetof(bcmolt_gpon_ni_stat_data, rx_key_errors), .type = &type_descr_uint64_t }, { .name = "rx_fragments_errors", .descr = "Received packet dropped due to fragmentation error", .offset = offsetof(bcmolt_gpon_ni_stat_data, rx_fragments_errors), .type = &type_descr_uint64_t }, { .name = "rx_packets_dropped", .descr = "Global dropped packets", .offset = offsetof(bcmolt_gpon_ni_stat_data, rx_packets_dropped), .type = &type_descr_uint64_t }, { .name = "tx_gem", .descr = "Transmitted GEM frames", .offset = offsetof(bcmolt_gpon_ni_stat_data, tx_gem), .type = &type_descr_uint64_t }, { .name = "tx_ploams", .descr = "Transmitted Ploams", .offset = offsetof(bcmolt_gpon_ni_stat_data, tx_ploams), .type = &type_descr_uint64_t }, { .name = "tx_gem_fragments", .descr = "Transmitted GEM fragments", .offset = offsetof(bcmolt_gpon_ni_stat_data, tx_gem_fragments), .type = &type_descr_uint64_t }, { .name = "tx_cpu", .descr = "Transmitted CPU packets", .offset = offsetof(bcmolt_gpon_ni_stat_data, tx_cpu), .type = &type_descr_uint64_t }, { .name = "tx_omci", .descr = "Transmitted OMCI packets", .offset = offsetof(bcmolt_gpon_ni_stat_data, tx_omci), .type = &type_descr_uint64_t }, { .name = "tx_cpu_omci_packets_dropped", .descr = "Transmit packets dropped due to illegal length", .offset = offsetof(bcmolt_gpon_ni_stat_data, tx_cpu_omci_packets_dropped), .type = &type_descr_uint8_t }, { .name = "tx_dropped_illegal_length", .descr = "Transmitted packet dropped due to illegal length", .offset = offsetof(bcmolt_gpon_ni_stat_data, tx_dropped_illegal_length), .type = &type_descr_uint64_t }, { .name = "tx_dropped_tpid_miss", .descr = "Dropped because of TPID miss", .offset = offsetof(bcmolt_gpon_ni_stat_data, tx_dropped_tpid_miss), .type = &type_descr_uint64_t }, { .name = "tx_dropped_vid_miss", .descr = "Dropped because of VID miss", .offset = offsetof(bcmolt_gpon_ni_stat_data, tx_dropped_vid_miss), .type = &type_descr_uint64_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_stat_data = { .name = "bcmolt_gpon_ni_stat_data", .descr = "stat", .size = sizeof(bcmolt_gpon_ni_stat_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_ni_stat_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_ni_stat_data_fields } } };

/* Group: gpon_ni - set_pon_state */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_set_pon_state_pon_state = { .name = "pon_state", .descr = "PON state", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_SET_PON_STATE_ID_PON_STATE, .offset = offsetof(bcmolt_gpon_ni_set_pon_state_data, pon_state), .type = &type_descr_bcmolt_pon_operation };
static bcmcli_prop_descr * BCM_DESCR gpon_ni_set_pon_state_prop_array[] = { &prop_descr_gpon_ni_set_pon_state_pon_state };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_ni_set_pon_state_data_fields[] = { { .name = "pon_state", .descr = "PON state", .offset = offsetof(bcmolt_gpon_ni_set_pon_state_data, pon_state), .type = &type_descr_bcmolt_pon_operation } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_set_pon_state_data = { .name = "bcmolt_gpon_ni_set_pon_state_data", .descr = "Set PON State", .size = sizeof(bcmolt_gpon_ni_set_pon_state_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_ni_set_pon_state_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_ni_set_pon_state_data_fields } } };

/* Group: gpon_ni - reset */
static bcmcli_prop_descr * BCM_DESCR gpon_ni_reset_prop_array[] = { };

/* Group: gpon_ni - disable_serial_number */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_disable_serial_number_control = { .name = "control", .descr = "control", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_DISABLE_SERIAL_NUMBER_ID_CONTROL, .offset = offsetof(bcmolt_gpon_ni_disable_serial_number_data, control), .type = &type_descr_bcmolt_disable_serial_number_control };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_disable_serial_number_serial_number = { .name = "serial_number", .descr = "serial number", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_DISABLE_SERIAL_NUMBER_ID_SERIAL_NUMBER, .offset = offsetof(bcmolt_gpon_ni_disable_serial_number_data, serial_number), .type = &type_descr_bcmolt_serial_number };
static bcmcli_prop_descr * BCM_DESCR gpon_ni_disable_serial_number_prop_array[] = { &prop_descr_gpon_ni_disable_serial_number_control, &prop_descr_gpon_ni_disable_serial_number_serial_number };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_ni_disable_serial_number_data_fields[] = { { .name = "control", .descr = "control", .offset = offsetof(bcmolt_gpon_ni_disable_serial_number_data, control), .type = &type_descr_bcmolt_disable_serial_number_control }, { .name = "serial_number", .descr = "serial number", .offset = offsetof(bcmolt_gpon_ni_disable_serial_number_data, serial_number), .type = &type_descr_bcmolt_serial_number } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_disable_serial_number_data = { .name = "bcmolt_gpon_ni_disable_serial_number_data", .descr = "Disable Serial Number", .size = sizeof(bcmolt_gpon_ni_disable_serial_number_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_ni_disable_serial_number_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_ni_disable_serial_number_data_fields } } };

/* Group: gpon_ni - single_request_standby_pon_monitoring */
static bcmcli_prop_descr * BCM_DESCR gpon_ni_single_request_standby_pon_monitoring_prop_array[] = { };

/* Group: gpon_ni - set_onu_state */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_set_onu_state_onu_state = { .name = "onu_state", .descr = "New operation state of all ONUs.  The default operation may be configured by the GPON NI configuration object : gpon_ni.cfg.sn_acquisition.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_SET_ONU_STATE_ID_ONU_STATE, .offset = offsetof(bcmolt_gpon_ni_set_onu_state_data, onu_state), .type = &type_descr_bcmolt_onu_operation };
static bcmcli_prop_descr * BCM_DESCR gpon_ni_set_onu_state_prop_array[] = { &prop_descr_gpon_ni_set_onu_state_onu_state };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_ni_set_onu_state_data_fields[] = { { .name = "onu_state", .descr = "New operation state of all ONUs.  The default operation may be configured by the GPON NI configuration object : gpon_ni.cfg.sn_acquisition.", .offset = offsetof(bcmolt_gpon_ni_set_onu_state_data, onu_state), .type = &type_descr_bcmolt_onu_operation } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_set_onu_state_data = { .name = "bcmolt_gpon_ni_set_onu_state_data", .descr = "Set the operation state of all ONUs.", .size = sizeof(bcmolt_gpon_ni_set_onu_state_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_ni_set_onu_state_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_ni_set_onu_state_data_fields } } };

/* Group: gpon_ni - state_change_completed */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_state_change_completed_result = { .name = "result", .descr = "Result", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_STATE_CHANGE_COMPLETED_ID_RESULT, .offset = offsetof(bcmolt_gpon_ni_state_change_completed_data, result), .type = &type_descr_bcmolt_result };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_state_change_completed_previous_state = { .name = "previous_state", .descr = "Previous state", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_STATE_CHANGE_COMPLETED_ID_PREVIOUS_STATE, .offset = offsetof(bcmolt_gpon_ni_state_change_completed_data, previous_state), .type = &type_descr_bcmolt_pon_state };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_state_change_completed_new_state = { .name = "new_state", .descr = "New state", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_STATE_CHANGE_COMPLETED_ID_NEW_STATE, .offset = offsetof(bcmolt_gpon_ni_state_change_completed_data, new_state), .type = &type_descr_bcmolt_pon_state };
static bcmcli_prop_descr * BCM_DESCR gpon_ni_state_change_completed_prop_array[] = { &prop_descr_gpon_ni_state_change_completed_result, &prop_descr_gpon_ni_state_change_completed_previous_state, &prop_descr_gpon_ni_state_change_completed_new_state };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_ni_state_change_completed_data_fields[] = { { .name = "result", .descr = "Result", .offset = offsetof(bcmolt_gpon_ni_state_change_completed_data, result), .type = &type_descr_bcmolt_result }, { .name = "previous_state", .descr = "Previous state", .offset = offsetof(bcmolt_gpon_ni_state_change_completed_data, previous_state), .type = &type_descr_bcmolt_pon_state }, { .name = "new_state", .descr = "New state", .offset = offsetof(bcmolt_gpon_ni_state_change_completed_data, new_state), .type = &type_descr_bcmolt_pon_state } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_state_change_completed_data = { .name = "bcmolt_gpon_ni_state_change_completed_data", .descr = "State Change Completed", .size = sizeof(bcmolt_gpon_ni_state_change_completed_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_ni_state_change_completed_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_ni_state_change_completed_data_fields } } };

/* Group: gpon_ni - los */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_los_status = { .name = "status", .descr = "status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_LOS_ID_STATUS, .offset = offsetof(bcmolt_gpon_ni_los_data, status), .type = &type_descr_bcmolt_status };
static bcmcli_prop_descr * BCM_DESCR gpon_ni_los_prop_array[] = { &prop_descr_gpon_ni_los_status };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_ni_los_data_fields[] = { { .name = "status", .descr = "status", .offset = offsetof(bcmolt_gpon_ni_los_data, status), .type = &type_descr_bcmolt_status } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_los_data = { .name = "bcmolt_gpon_ni_los_data", .descr = "LOS", .size = sizeof(bcmolt_gpon_ni_los_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_ni_los_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_ni_los_data_fields } } };

/* Group: gpon_ni - serial_number_acquisition_cycle_start */
static bcmcli_prop_descr * BCM_DESCR gpon_ni_serial_number_acquisition_cycle_start_prop_array[] = { };

/* Group: gpon_ni - protection_switching_traffic_resume */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_protection_switching_traffic_resume_result = { .name = "result", .descr = "Result", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_PROTECTION_SWITCHING_TRAFFIC_RESUME_ID_RESULT, .offset = offsetof(bcmolt_gpon_ni_protection_switching_traffic_resume_data, result), .type = &type_descr_bcmolt_traffic_resume_result };
static bcmcli_prop_descr * BCM_DESCR gpon_ni_protection_switching_traffic_resume_prop_array[] = { &prop_descr_gpon_ni_protection_switching_traffic_resume_result };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_ni_protection_switching_traffic_resume_data_fields[] = { { .name = "result", .descr = "Result", .offset = offsetof(bcmolt_gpon_ni_protection_switching_traffic_resume_data, result), .type = &type_descr_bcmolt_traffic_resume_result } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_protection_switching_traffic_resume_data = { .name = "bcmolt_gpon_ni_protection_switching_traffic_resume_data", .descr = "Protection Switching Traffic Resume", .size = sizeof(bcmolt_gpon_ni_protection_switching_traffic_resume_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_ni_protection_switching_traffic_resume_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_ni_protection_switching_traffic_resume_data_fields } } };

/* Group: gpon_ni - protection_switching_onus_ranged */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_protection_switching_onus_ranged_onus = { .name = "onus", .descr = "ONUs", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_PROTECTION_SWITCHING_ONUS_RANGED_ID_ONUS, .offset = offsetof(bcmolt_gpon_ni_protection_switching_onus_ranged_data, onus), .type = &type_descr_bcmolt_gpon_onu_eqd_list_u32 };
static bcmcli_prop_descr * BCM_DESCR gpon_ni_protection_switching_onus_ranged_prop_array[] = { &prop_descr_gpon_ni_protection_switching_onus_ranged_onus };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_ni_protection_switching_onus_ranged_data_fields[] = { { .name = "onus", .descr = "ONUs", .offset = offsetof(bcmolt_gpon_ni_protection_switching_onus_ranged_data, onus), .type = &type_descr_bcmolt_gpon_onu_eqd_list_u32 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_protection_switching_onus_ranged_data = { .name = "bcmolt_gpon_ni_protection_switching_onus_ranged_data", .descr = "After a switchover is complete and all ONU ranging times have stabilized, this indication is sent to inform the host of all new ONU EQDs.", .size = sizeof(bcmolt_gpon_ni_protection_switching_onus_ranged_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_ni_protection_switching_onus_ranged_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_ni_protection_switching_onus_ranged_data_fields } } };

/* Group: gpon_ni - protection_switching_switchover_completed */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_protection_switching_switchover_completed_result = { .name = "result", .descr = "Result", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_PROTECTION_SWITCHING_SWITCHOVER_COMPLETED_ID_RESULT, .offset = offsetof(bcmolt_gpon_ni_protection_switching_switchover_completed_data, result), .type = &type_descr_bcmolt_result };
static bcmcli_prop_descr * BCM_DESCR gpon_ni_protection_switching_switchover_completed_prop_array[] = { &prop_descr_gpon_ni_protection_switching_switchover_completed_result };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_ni_protection_switching_switchover_completed_data_fields[] = { { .name = "result", .descr = "Result", .offset = offsetof(bcmolt_gpon_ni_protection_switching_switchover_completed_data, result), .type = &type_descr_bcmolt_result } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_protection_switching_switchover_completed_data = { .name = "bcmolt_gpon_ni_protection_switching_switchover_completed_data", .descr = "Protection Switching Switchover Completed", .size = sizeof(bcmolt_gpon_ni_protection_switching_switchover_completed_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_ni_protection_switching_switchover_completed_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_ni_protection_switching_switchover_completed_data_fields } } };

/* Group: gpon_ni - standby_pon_monitoring_cycle_completed */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_standby_pon_monitoring_cycle_completed_number_of_detected_delimiter = { .name = "number_of_detected_delimiter", .descr = "number of detected delimiter", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_STANDBY_PON_MONITORING_CYCLE_COMPLETED_ID_NUMBER_OF_DETECTED_DELIMITER, .offset = offsetof(bcmolt_gpon_ni_standby_pon_monitoring_cycle_completed_data, number_of_detected_delimiter), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_standby_pon_monitoring_cycle_completed_energy_detect_signal = { .name = "energy_detect_signal", .descr = "energy detect signal", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_STANDBY_PON_MONITORING_CYCLE_COMPLETED_ID_ENERGY_DETECT_SIGNAL, .offset = offsetof(bcmolt_gpon_ni_standby_pon_monitoring_cycle_completed_data, energy_detect_signal), .type = &type_descr_bcmolt_status };
static bcmcli_prop_descr * BCM_DESCR gpon_ni_standby_pon_monitoring_cycle_completed_prop_array[] = { &prop_descr_gpon_ni_standby_pon_monitoring_cycle_completed_number_of_detected_delimiter, &prop_descr_gpon_ni_standby_pon_monitoring_cycle_completed_energy_detect_signal };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_ni_standby_pon_monitoring_cycle_completed_data_fields[] = { { .name = "number_of_detected_delimiter", .descr = "number of detected delimiter", .offset = offsetof(bcmolt_gpon_ni_standby_pon_monitoring_cycle_completed_data, number_of_detected_delimiter), .type = &type_descr_uint32_t }, { .name = "energy_detect_signal", .descr = "energy detect signal", .offset = offsetof(bcmolt_gpon_ni_standby_pon_monitoring_cycle_completed_data, energy_detect_signal), .type = &type_descr_bcmolt_status } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_standby_pon_monitoring_cycle_completed_data = { .name = "bcmolt_gpon_ni_standby_pon_monitoring_cycle_completed_data", .descr = "Standby PON Monitoring Cycle Completed", .size = sizeof(bcmolt_gpon_ni_standby_pon_monitoring_cycle_completed_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_ni_standby_pon_monitoring_cycle_completed_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_ni_standby_pon_monitoring_cycle_completed_data_fields } } };

/* Group: gpon_ni - onu_discovered */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_onu_discovered_serial_number = { .name = "serial_number", .descr = "serial number", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_ONU_DISCOVERED_ID_SERIAL_NUMBER, .offset = offsetof(bcmolt_gpon_ni_onu_discovered_data, serial_number), .type = &type_descr_bcmolt_serial_number };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_onu_discovered_ranging_time = { .name = "ranging_time", .descr = "ranging time", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_ONU_DISCOVERED_ID_RANGING_TIME, .offset = offsetof(bcmolt_gpon_ni_onu_discovered_data, ranging_time), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_onu_discovered_onu_id = { .name = "onu_id", .descr = "onu_id", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_ONU_DISCOVERED_ID_ONU_ID, .offset = offsetof(bcmolt_gpon_ni_onu_discovered_data, onu_id), .type = &type_descr_uint16_t };
static bcmcli_prop_descr * BCM_DESCR gpon_ni_onu_discovered_prop_array[] = { &prop_descr_gpon_ni_onu_discovered_serial_number, &prop_descr_gpon_ni_onu_discovered_ranging_time, &prop_descr_gpon_ni_onu_discovered_onu_id };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_ni_onu_discovered_data_fields[] = { { .name = "serial_number", .descr = "serial number", .offset = offsetof(bcmolt_gpon_ni_onu_discovered_data, serial_number), .type = &type_descr_bcmolt_serial_number }, { .name = "ranging_time", .descr = "ranging time", .offset = offsetof(bcmolt_gpon_ni_onu_discovered_data, ranging_time), .type = &type_descr_uint32_t }, { .name = "onu_id", .descr = "onu_id", .offset = offsetof(bcmolt_gpon_ni_onu_discovered_data, onu_id), .type = &type_descr_uint16_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_onu_discovered_data = { .name = "bcmolt_gpon_ni_onu_discovered_data", .descr = "ONU Discovered", .size = sizeof(bcmolt_gpon_ni_onu_discovered_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_ni_onu_discovered_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_ni_onu_discovered_data_fields } } };

/* Group: gpon_ni - cpu_packets_failure */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_cpu_packets_failure_error = { .name = "error", .descr = "The error that was encountered.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_CPU_PACKETS_FAILURE_ID_ERROR, .offset = offsetof(bcmolt_gpon_ni_cpu_packets_failure_data, error), .type = &type_descr_bcmolt_packet_injection_error };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_cpu_packets_failure_gem_port_id = { .name = "gem_port_id", .descr = "The GEM port that caused the error.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_CPU_PACKETS_FAILURE_ID_GEM_PORT_ID, .offset = offsetof(bcmolt_gpon_ni_cpu_packets_failure_data, gem_port_id), .type = &type_descr_uint16_t };
static bcmcli_prop_descr * BCM_DESCR gpon_ni_cpu_packets_failure_prop_array[] = { &prop_descr_gpon_ni_cpu_packets_failure_error, &prop_descr_gpon_ni_cpu_packets_failure_gem_port_id };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_ni_cpu_packets_failure_data_fields[] = { { .name = "error", .descr = "The error that was encountered.", .offset = offsetof(bcmolt_gpon_ni_cpu_packets_failure_data, error), .type = &type_descr_bcmolt_packet_injection_error }, { .name = "gem_port_id", .descr = "The GEM port that caused the error.", .offset = offsetof(bcmolt_gpon_ni_cpu_packets_failure_data, gem_port_id), .type = &type_descr_uint16_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_cpu_packets_failure_data = { .name = "bcmolt_gpon_ni_cpu_packets_failure_data", .descr = "A failure was encountered during the \"cpu_packets\" proxy operation.", .size = sizeof(bcmolt_gpon_ni_cpu_packets_failure_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_ni_cpu_packets_failure_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_ni_cpu_packets_failure_data_fields } } };

/* Group: gpon_ni - cpu_packets */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_cpu_packets_packet_type = { .name = "packet_type", .descr = "packet type", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_CPU_PACKETS_ID_PACKET_TYPE, .offset = offsetof(bcmolt_gpon_ni_cpu_packets_data, packet_type), .type = &type_descr_bcmolt_packet_type };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_cpu_packets_calc_crc = { .name = "calc_crc", .descr = "calc crc", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_CPU_PACKETS_ID_CALC_CRC, .offset = offsetof(bcmolt_gpon_ni_cpu_packets_data, calc_crc), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_cpu_packets_gem_port_list = { .name = "gem_port_list", .descr = "gem port list", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_CPU_PACKETS_ID_GEM_PORT_LIST, .offset = offsetof(bcmolt_gpon_ni_cpu_packets_data, gem_port_list), .type = &type_descr_bcmolt_gpon_gem_id_list_u8_max_16 };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_cpu_packets_buffer = { .name = "buffer", .descr = "buffer", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_CPU_PACKETS_ID_BUFFER, .offset = offsetof(bcmolt_gpon_ni_cpu_packets_data, buffer), .type = &type_descr_bcmolt_u8_list_u32_max_2048 };
static bcmcli_prop_descr * BCM_DESCR gpon_ni_cpu_packets_prop_array[] = { &prop_descr_gpon_ni_cpu_packets_packet_type, &prop_descr_gpon_ni_cpu_packets_calc_crc, &prop_descr_gpon_ni_cpu_packets_gem_port_list, &prop_descr_gpon_ni_cpu_packets_buffer };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_ni_cpu_packets_data_fields[] = { { .name = "packet_type", .descr = "packet type", .offset = offsetof(bcmolt_gpon_ni_cpu_packets_data, packet_type), .type = &type_descr_bcmolt_packet_type }, { .name = "calc_crc", .descr = "calc crc", .offset = offsetof(bcmolt_gpon_ni_cpu_packets_data, calc_crc), .type = &type_descr_bcmos_bool }, { .name = "gem_port_list", .descr = "gem port list", .offset = offsetof(bcmolt_gpon_ni_cpu_packets_data, gem_port_list), .type = &type_descr_bcmolt_gpon_gem_id_list_u8_max_16 }, { .name = "buffer", .descr = "buffer", .offset = offsetof(bcmolt_gpon_ni_cpu_packets_data, buffer), .type = &type_descr_bcmolt_u8_list_u32_max_2048 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_cpu_packets_data = { .name = "bcmolt_gpon_ni_cpu_packets_data", .descr = "GPON CPU Packets", .size = sizeof(bcmolt_gpon_ni_cpu_packets_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_ni_cpu_packets_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_ni_cpu_packets_data_fields } } };

/* Group: gpon_ni - broadcast_ploam_packet */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_broadcast_ploam_packet_ploam = { .name = "ploam", .descr = "ploam", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_BROADCAST_PLOAM_PACKET_ID_PLOAM, .offset = offsetof(bcmolt_gpon_ni_broadcast_ploam_packet_data, ploam), .type = &type_descr_bcmolt_arr_u8_12 };
static bcmcli_prop_descr * BCM_DESCR gpon_ni_broadcast_ploam_packet_prop_array[] = { &prop_descr_gpon_ni_broadcast_ploam_packet_ploam };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_ni_broadcast_ploam_packet_data_fields[] = { { .name = "ploam", .descr = "ploam", .offset = offsetof(bcmolt_gpon_ni_broadcast_ploam_packet_data, ploam), .type = &type_descr_bcmolt_arr_u8_12 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_broadcast_ploam_packet_data = { .name = "bcmolt_gpon_ni_broadcast_ploam_packet_data", .descr = "Broadcast PLOAM Packet", .size = sizeof(bcmolt_gpon_ni_broadcast_ploam_packet_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_ni_broadcast_ploam_packet_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_ni_broadcast_ploam_packet_data_fields } } };

/* Group: gpon_ni - rogue_detection_window */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_rogue_detection_window_window_type = { .name = "window_type", .descr = "Type of silent measurement to execute", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_ROGUE_DETECTION_WINDOW_ID_WINDOW_TYPE, .offset = offsetof(bcmolt_gpon_ni_rogue_detection_window_data, window_type), .type = &type_descr_bcmolt_rogue_detection_window };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_rogue_detection_window_alloc_id = { .name = "alloc_id", .descr = "ALLOC ID to scan", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_ROGUE_DETECTION_WINDOW_ID_ALLOC_ID, .offset = offsetof(bcmolt_gpon_ni_rogue_detection_window_data, alloc_id), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_rogue_detection_window_onu_id = { .name = "onu_id", .descr = "ONU ID to scan", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_ROGUE_DETECTION_WINDOW_ID_ONU_ID, .offset = offsetof(bcmolt_gpon_ni_rogue_detection_window_data, onu_id), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_rogue_detection_window_second_ranging_window = { .name = "second_ranging_window", .descr = "Not currently supported", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_ROGUE_DETECTION_WINDOW_ID_SECOND_RANGING_WINDOW, .offset = offsetof(bcmolt_gpon_ni_rogue_detection_window_data, second_ranging_window), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr * BCM_DESCR gpon_ni_rogue_detection_window_prop_array[] = { &prop_descr_gpon_ni_rogue_detection_window_window_type, &prop_descr_gpon_ni_rogue_detection_window_alloc_id, &prop_descr_gpon_ni_rogue_detection_window_onu_id, &prop_descr_gpon_ni_rogue_detection_window_second_ranging_window };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_ni_rogue_detection_window_data_fields[] = { { .name = "window_type", .descr = "Type of silent measurement to execute", .offset = offsetof(bcmolt_gpon_ni_rogue_detection_window_data, window_type), .type = &type_descr_bcmolt_rogue_detection_window }, { .name = "alloc_id", .descr = "ALLOC ID to scan", .offset = offsetof(bcmolt_gpon_ni_rogue_detection_window_data, alloc_id), .type = &type_descr_uint16_t }, { .name = "onu_id", .descr = "ONU ID to scan", .offset = offsetof(bcmolt_gpon_ni_rogue_detection_window_data, onu_id), .type = &type_descr_uint16_t }, { .name = "second_ranging_window", .descr = "Not currently supported", .offset = offsetof(bcmolt_gpon_ni_rogue_detection_window_data, second_ranging_window), .type = &type_descr_bcmos_bool } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_rogue_detection_window_data = { .name = "bcmolt_gpon_ni_rogue_detection_window_data", .descr = "Rogue Detection Window", .size = sizeof(bcmolt_gpon_ni_rogue_detection_window_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_ni_rogue_detection_window_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_ni_rogue_detection_window_data_fields } } };

/* Group: gpon_ni - rogue_detection_completed */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_rogue_detection_completed_window_type = { .name = "window_type", .descr = "Silent Window or Cut off Window", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_ROGUE_DETECTION_COMPLETED_ID_WINDOW_TYPE, .offset = offsetof(bcmolt_gpon_ni_rogue_detection_completed_data, window_type), .type = &type_descr_bcmolt_rogue_detection_window };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_rogue_detection_completed_measurement_status = { .name = "measurement_status", .descr = "Status of the rogue ONU detection result.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_ROGUE_DETECTION_COMPLETED_ID_MEASUREMENT_STATUS, .offset = offsetof(bcmolt_gpon_ni_rogue_detection_completed_data, measurement_status), .type = &type_descr_bcmolt_rogue_measurement_result };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_rogue_detection_completed_alloc_id = { .name = "alloc_id", .descr = "Alloc-ID", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_ROGUE_DETECTION_COMPLETED_ID_ALLOC_ID, .offset = offsetof(bcmolt_gpon_ni_rogue_detection_completed_data, alloc_id), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_rogue_detection_completed_onu_id = { .name = "onu_id", .descr = "ONU-ID", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_ROGUE_DETECTION_COMPLETED_ID_ONU_ID, .offset = offsetof(bcmolt_gpon_ni_rogue_detection_completed_data, onu_id), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_rogue_detection_completed_is_delineation = { .name = "is_delineation", .descr = "Burst Delineation detected during the rogue ONU detection.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_ROGUE_DETECTION_COMPLETED_ID_IS_DELINEATION, .offset = offsetof(bcmolt_gpon_ni_rogue_detection_completed_data, is_delineation), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_rogue_detection_completed_is_ed = { .name = "is_ed", .descr = "Is ED", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_ROGUE_DETECTION_COMPLETED_ID_IS_ED, .offset = offsetof(bcmolt_gpon_ni_rogue_detection_completed_data, is_ed), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_rogue_detection_completed_rx_data = { .name = "rx_data", .descr = "Captured PLOAMu message if the burst delinieation was detected.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_ROGUE_DETECTION_COMPLETED_ID_RX_DATA, .offset = offsetof(bcmolt_gpon_ni_rogue_detection_completed_data, rx_data), .type = &type_descr_bcmolt_u8_list_u32 };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_rogue_detection_completed_ploam_received_onu_id = { .name = "ploam_received_onu_id", .descr = "ONU ID received in the ploam", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_ROGUE_DETECTION_COMPLETED_ID_PLOAM_RECEIVED_ONU_ID, .offset = offsetof(bcmolt_gpon_ni_rogue_detection_completed_data, ploam_received_onu_id), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_rogue_detection_completed_ploam_received_crc_error = { .name = "ploam_received_crc_error", .descr = "Crc error in the received ploam", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_ROGUE_DETECTION_COMPLETED_ID_PLOAM_RECEIVED_CRC_ERROR, .offset = offsetof(bcmolt_gpon_ni_rogue_detection_completed_data, ploam_received_crc_error), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr * BCM_DESCR gpon_ni_rogue_detection_completed_prop_array[] = { &prop_descr_gpon_ni_rogue_detection_completed_window_type, &prop_descr_gpon_ni_rogue_detection_completed_measurement_status, &prop_descr_gpon_ni_rogue_detection_completed_alloc_id, &prop_descr_gpon_ni_rogue_detection_completed_onu_id, &prop_descr_gpon_ni_rogue_detection_completed_is_delineation, &prop_descr_gpon_ni_rogue_detection_completed_is_ed, &prop_descr_gpon_ni_rogue_detection_completed_rx_data, &prop_descr_gpon_ni_rogue_detection_completed_ploam_received_onu_id, &prop_descr_gpon_ni_rogue_detection_completed_ploam_received_crc_error };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_ni_rogue_detection_completed_data_fields[] = { { .name = "window_type", .descr = "Silent Window or Cut off Window", .offset = offsetof(bcmolt_gpon_ni_rogue_detection_completed_data, window_type), .type = &type_descr_bcmolt_rogue_detection_window }, { .name = "measurement_status", .descr = "Status of the rogue ONU detection result.", .offset = offsetof(bcmolt_gpon_ni_rogue_detection_completed_data, measurement_status), .type = &type_descr_bcmolt_rogue_measurement_result }, { .name = "alloc_id", .descr = "Alloc-ID", .offset = offsetof(bcmolt_gpon_ni_rogue_detection_completed_data, alloc_id), .type = &type_descr_uint16_t }, { .name = "onu_id", .descr = "ONU-ID", .offset = offsetof(bcmolt_gpon_ni_rogue_detection_completed_data, onu_id), .type = &type_descr_uint16_t }, { .name = "is_delineation", .descr = "Burst Delineation detected during the rogue ONU detection.", .offset = offsetof(bcmolt_gpon_ni_rogue_detection_completed_data, is_delineation), .type = &type_descr_bcmos_bool }, { .name = "is_ed", .descr = "Is ED", .offset = offsetof(bcmolt_gpon_ni_rogue_detection_completed_data, is_ed), .type = &type_descr_bcmos_bool }, { .name = "rx_data", .descr = "Captured PLOAMu message if the burst delinieation was detected.", .offset = offsetof(bcmolt_gpon_ni_rogue_detection_completed_data, rx_data), .type = &type_descr_bcmolt_u8_list_u32 }, { .name = "ploam_received_onu_id", .descr = "ONU ID received in the ploam", .offset = offsetof(bcmolt_gpon_ni_rogue_detection_completed_data, ploam_received_onu_id), .type = &type_descr_uint16_t }, { .name = "ploam_received_crc_error", .descr = "Crc error in the received ploam", .offset = offsetof(bcmolt_gpon_ni_rogue_detection_completed_data, ploam_received_crc_error), .type = &type_descr_bcmos_bool } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_rogue_detection_completed_data = { .name = "bcmolt_gpon_ni_rogue_detection_completed_data", .descr = "Rogue detection completed", .size = sizeof(bcmolt_gpon_ni_rogue_detection_completed_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_ni_rogue_detection_completed_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_ni_rogue_detection_completed_data_fields } } };

/* Group: gpon_ni - deactivate_all_onus_completed */
static bcmcli_prop_descr * BCM_DESCR gpon_ni_deactivate_all_onus_completed_prop_array[] = { };

/* Group: gpon_ni - disable_all_onus_completed */
static bcmcli_prop_descr * BCM_DESCR gpon_ni_disable_all_onus_completed_prop_array[] = { };

/* Group: gpon_ni - activate_all_onus_completed */
static bcmcli_prop_descr * BCM_DESCR gpon_ni_activate_all_onus_completed_prop_array[] = { };

/* Group: gpon_ni - enable_all_onus_completed */
static bcmcli_prop_descr * BCM_DESCR gpon_ni_enable_all_onus_completed_prop_array[] = { };

/* Group: gpon_ni - tod_request */
static bcmcli_prop_descr * BCM_DESCR gpon_ni_tod_request_prop_array[] = { };

/* Group: gpon_ni - tod_request_completed */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_tod_request_completed_tod_string = { .name = "tod_string", .descr = "tod_string", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_TOD_REQUEST_COMPLETED_ID_TOD_STRING, .offset = offsetof(bcmolt_gpon_ni_tod_request_completed_data, tod_string), .type = &type_descr_bcmolt_str_64 };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_tod_request_completed_sfc = { .name = "sfc", .descr = "sfc", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_TOD_REQUEST_COMPLETED_ID_SFC, .offset = offsetof(bcmolt_gpon_ni_tod_request_completed_data, sfc), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_tod_request_completed_rtc_offset_sec = { .name = "rtc_offset_sec", .descr = "rtc_offset_sec", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_TOD_REQUEST_COMPLETED_ID_RTC_OFFSET_SEC, .offset = offsetof(bcmolt_gpon_ni_tod_request_completed_data, rtc_offset_sec), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_tod_request_completed_rtc_offset_nsec = { .name = "rtc_offset_nsec", .descr = "rtc_offset_nsec", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_TOD_REQUEST_COMPLETED_ID_RTC_OFFSET_NSEC, .offset = offsetof(bcmolt_gpon_ni_tod_request_completed_data, rtc_offset_nsec), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_tod_request_completed_status = { .name = "status", .descr = "status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_TOD_REQUEST_COMPLETED_ID_STATUS, .offset = offsetof(bcmolt_gpon_ni_tod_request_completed_data, status), .type = &type_descr_bcmolt_result };
static bcmcli_prop_descr * BCM_DESCR gpon_ni_tod_request_completed_prop_array[] = { &prop_descr_gpon_ni_tod_request_completed_tod_string, &prop_descr_gpon_ni_tod_request_completed_sfc, &prop_descr_gpon_ni_tod_request_completed_rtc_offset_sec, &prop_descr_gpon_ni_tod_request_completed_rtc_offset_nsec, &prop_descr_gpon_ni_tod_request_completed_status };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_ni_tod_request_completed_data_fields[] = { { .name = "tod_string", .descr = "tod_string", .offset = offsetof(bcmolt_gpon_ni_tod_request_completed_data, tod_string), .type = &type_descr_bcmolt_str_64 }, { .name = "sfc", .descr = "sfc", .offset = offsetof(bcmolt_gpon_ni_tod_request_completed_data, sfc), .type = &type_descr_uint32_t }, { .name = "rtc_offset_sec", .descr = "rtc_offset_sec", .offset = offsetof(bcmolt_gpon_ni_tod_request_completed_data, rtc_offset_sec), .type = &type_descr_uint64_t }, { .name = "rtc_offset_nsec", .descr = "rtc_offset_nsec", .offset = offsetof(bcmolt_gpon_ni_tod_request_completed_data, rtc_offset_nsec), .type = &type_descr_uint32_t }, { .name = "status", .descr = "status", .offset = offsetof(bcmolt_gpon_ni_tod_request_completed_data, status), .type = &type_descr_bcmolt_result } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_tod_request_completed_data = { .name = "bcmolt_gpon_ni_tod_request_completed_data", .descr = "TOD request completed", .size = sizeof(bcmolt_gpon_ni_tod_request_completed_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_ni_tod_request_completed_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_ni_tod_request_completed_data_fields } } };

/* Group: gpon_ni - protection_switching_type_c_set_multiple_onu_state */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_protection_switching_type_c_set_multiple_onu_state_onu_state = { .name = "onu_state", .descr = "onu state", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_PROTECTION_SWITCHING_TYPE_C_SET_MULTIPLE_ONU_STATE_ID_ONU_STATE, .offset = offsetof(bcmolt_gpon_ni_protection_switching_type_c_set_multiple_onu_state_data, onu_state), .type = &type_descr_bcmolt_switch_over_type_c_onu_state };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_protection_switching_type_c_set_multiple_onu_state_onu_list = { .name = "onu_list", .descr = "onu list", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_PROTECTION_SWITCHING_TYPE_C_SET_MULTIPLE_ONU_STATE_ID_ONU_LIST, .offset = offsetof(bcmolt_gpon_ni_protection_switching_type_c_set_multiple_onu_state_data, onu_list), .type = &type_descr_bcmolt_gpon_onu_id_list_u32_max_256 };
static bcmcli_prop_descr * BCM_DESCR gpon_ni_protection_switching_type_c_set_multiple_onu_state_prop_array[] = { &prop_descr_gpon_ni_protection_switching_type_c_set_multiple_onu_state_onu_state, &prop_descr_gpon_ni_protection_switching_type_c_set_multiple_onu_state_onu_list };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_ni_protection_switching_type_c_set_multiple_onu_state_data_fields[] = { { .name = "onu_state", .descr = "onu state", .offset = offsetof(bcmolt_gpon_ni_protection_switching_type_c_set_multiple_onu_state_data, onu_state), .type = &type_descr_bcmolt_switch_over_type_c_onu_state }, { .name = "onu_list", .descr = "onu list", .offset = offsetof(bcmolt_gpon_ni_protection_switching_type_c_set_multiple_onu_state_data, onu_list), .type = &type_descr_bcmolt_gpon_onu_id_list_u32_max_256 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_protection_switching_type_c_set_multiple_onu_state_data = { .name = "bcmolt_gpon_ni_protection_switching_type_c_set_multiple_onu_state_data", .descr = "protection switching type c set multiple onu state", .size = sizeof(bcmolt_gpon_ni_protection_switching_type_c_set_multiple_onu_state_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_ni_protection_switching_type_c_set_multiple_onu_state_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_ni_protection_switching_type_c_set_multiple_onu_state_data_fields } } };

/* Group: gpon_ni - start_onu_upgrade */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_start_onu_upgrade_list_of_onu_ids = { .name = "list_of_onu_ids", .descr = "List of ONU IDs to upgrade the firmware.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_START_ONU_UPGRADE_ID_LIST_OF_ONU_IDS, .offset = offsetof(bcmolt_gpon_ni_start_onu_upgrade_data, list_of_onu_ids), .type = &type_descr_bcmolt_pon_onu_id_list_u32 };
static bcmcli_prop_descr * BCM_DESCR gpon_ni_start_onu_upgrade_prop_array[] = { &prop_descr_gpon_ni_start_onu_upgrade_list_of_onu_ids };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_ni_start_onu_upgrade_data_fields[] = { { .name = "list_of_onu_ids", .descr = "List of ONU IDs to upgrade the firmware.", .offset = offsetof(bcmolt_gpon_ni_start_onu_upgrade_data, list_of_onu_ids), .type = &type_descr_bcmolt_pon_onu_id_list_u32 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_start_onu_upgrade_data = { .name = "bcmolt_gpon_ni_start_onu_upgrade_data", .descr = "OLT to ONU firmware transfer", .size = sizeof(bcmolt_gpon_ni_start_onu_upgrade_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_ni_start_onu_upgrade_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_ni_start_onu_upgrade_data_fields } } };

/* Group: gpon_ni - onu_upgrade_complete */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_onu_upgrade_complete_status = { .name = "status", .descr = "Success or failure.  Against entire upgrade process.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_ONU_UPGRADE_COMPLETE_ID_STATUS, .offset = offsetof(bcmolt_gpon_ni_onu_upgrade_complete_data, status), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_onu_upgrade_complete_list_of_failed_entities = { .name = "list_of_failed_entities", .descr = "List of ONU-IDs the upgrade failed for.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_ONU_UPGRADE_COMPLETE_ID_LIST_OF_FAILED_ENTITIES, .offset = offsetof(bcmolt_gpon_ni_onu_upgrade_complete_data, list_of_failed_entities), .type = &type_descr_bcmolt_gpon_onu_upgrade_status_list_u32 };
static bcmcli_prop_descr * BCM_DESCR gpon_ni_onu_upgrade_complete_prop_array[] = { &prop_descr_gpon_ni_onu_upgrade_complete_status, &prop_descr_gpon_ni_onu_upgrade_complete_list_of_failed_entities };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_ni_onu_upgrade_complete_data_fields[] = { { .name = "status", .descr = "Success or failure.  Against entire upgrade process.", .offset = offsetof(bcmolt_gpon_ni_onu_upgrade_complete_data, status), .type = &type_descr_bcmos_bool }, { .name = "list_of_failed_entities", .descr = "List of ONU-IDs the upgrade failed for.", .offset = offsetof(bcmolt_gpon_ni_onu_upgrade_complete_data, list_of_failed_entities), .type = &type_descr_bcmolt_gpon_onu_upgrade_status_list_u32 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_onu_upgrade_complete_data = { .name = "bcmolt_gpon_ni_onu_upgrade_complete_data", .descr = "ONU Upgrade Complete", .size = sizeof(bcmolt_gpon_ni_onu_upgrade_complete_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_ni_onu_upgrade_complete_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_ni_onu_upgrade_complete_data_fields } } };

/* Group: gpon_ni - rogue_onu_special_map_cycle_start */
static bcmcli_prop_descr * BCM_DESCR gpon_ni_rogue_onu_special_map_cycle_start_prop_array[] = { };

/* Group: gpon_ni - stat_cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_stat_cfg_cfg = { .name = "cfg", .descr = "Statistic alarm configuration.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_STAT_CFG_ID_CFG, .offset = offsetof(bcmolt_gpon_ni_stat_cfg_data, cfg), .type = &type_descr_bcmolt_stat_alarm_config };
static bcmcli_prop_descr * BCM_DESCR gpon_ni_stat_cfg_prop_array[] = { &prop_descr_gpon_ni_stat_cfg_cfg };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_ni_stat_cfg_data_fields[] = { { .name = "cfg", .descr = "Statistic alarm configuration.", .offset = offsetof(bcmolt_gpon_ni_stat_cfg_data, cfg), .type = &type_descr_bcmolt_stat_alarm_config } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_stat_cfg_data = { .name = "bcmolt_gpon_ni_stat_cfg_data", .descr = "Statistic Configuration", .size = sizeof(bcmolt_gpon_ni_stat_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_ni_stat_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_ni_stat_cfg_data_fields } } };

/* Group: gpon_ni - stat_alarm_raised */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_stat_alarm_raised_stat = { .name = "stat", .descr = "Statistic identifier.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_STAT_ALARM_RAISED_ID_STAT, .offset = offsetof(bcmolt_gpon_ni_stat_alarm_raised_data, stat), .type = &type_descr_bcmolt_gpon_ni_stat_id };
static bcmcli_prop_descr * BCM_DESCR gpon_ni_stat_alarm_raised_prop_array[] = { &prop_descr_gpon_ni_stat_alarm_raised_stat };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_ni_stat_alarm_raised_data_fields[] = { { .name = "stat", .descr = "Statistic identifier.", .offset = offsetof(bcmolt_gpon_ni_stat_alarm_raised_data, stat), .type = &type_descr_bcmolt_gpon_ni_stat_id } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_stat_alarm_raised_data = { .name = "bcmolt_gpon_ni_stat_alarm_raised_data", .descr = "Sent when a configured statistic alarm condition has been met.", .size = sizeof(bcmolt_gpon_ni_stat_alarm_raised_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_ni_stat_alarm_raised_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_ni_stat_alarm_raised_data_fields } } };

/* Group: gpon_ni - stat_alarm_cleared */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_stat_alarm_cleared_stat = { .name = "stat", .descr = "Statistic identifier.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_STAT_ALARM_CLEARED_ID_STAT, .offset = offsetof(bcmolt_gpon_ni_stat_alarm_cleared_data, stat), .type = &type_descr_bcmolt_gpon_ni_stat_id };
static bcmcli_prop_descr * BCM_DESCR gpon_ni_stat_alarm_cleared_prop_array[] = { &prop_descr_gpon_ni_stat_alarm_cleared_stat };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_ni_stat_alarm_cleared_data_fields[] = { { .name = "stat", .descr = "Statistic identifier.", .offset = offsetof(bcmolt_gpon_ni_stat_alarm_cleared_data, stat), .type = &type_descr_bcmolt_gpon_ni_stat_id } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_stat_alarm_cleared_data = { .name = "bcmolt_gpon_ni_stat_alarm_cleared_data", .descr = "Sent when a configured statistic alarm condition is no longer met.", .size = sizeof(bcmolt_gpon_ni_stat_alarm_cleared_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_ni_stat_alarm_cleared_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_ni_stat_alarm_cleared_data_fields } } };

/* Group: gpon_ni - auto_cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_auto_cfg_activate_all_onus_completed = { .name = "activate_all_onus_completed", .descr = "If true, indications of type \"activate_all_onus_completed\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_AUTO_CFG_ID_ACTIVATE_ALL_ONUS_COMPLETED, .offset = offsetof(bcmolt_gpon_ni_auto_cfg_data, activate_all_onus_completed), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_auto_cfg_cpu_packets_failure = { .name = "cpu_packets_failure", .descr = "If true, indications of type \"cpu_packets_failure\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_AUTO_CFG_ID_CPU_PACKETS_FAILURE, .offset = offsetof(bcmolt_gpon_ni_auto_cfg_data, cpu_packets_failure), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_auto_cfg_deactivate_all_onus_completed = { .name = "deactivate_all_onus_completed", .descr = "If true, indications of type \"deactivate_all_onus_completed\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_AUTO_CFG_ID_DEACTIVATE_ALL_ONUS_COMPLETED, .offset = offsetof(bcmolt_gpon_ni_auto_cfg_data, deactivate_all_onus_completed), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_auto_cfg_disable_all_onus_completed = { .name = "disable_all_onus_completed", .descr = "If true, indications of type \"disable_all_onus_completed\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_AUTO_CFG_ID_DISABLE_ALL_ONUS_COMPLETED, .offset = offsetof(bcmolt_gpon_ni_auto_cfg_data, disable_all_onus_completed), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_auto_cfg_enable_all_onus_completed = { .name = "enable_all_onus_completed", .descr = "If true, indications of type \"enable_all_onus_completed\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_AUTO_CFG_ID_ENABLE_ALL_ONUS_COMPLETED, .offset = offsetof(bcmolt_gpon_ni_auto_cfg_data, enable_all_onus_completed), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_auto_cfg_los = { .name = "los", .descr = "If true, indications of type \"los\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_AUTO_CFG_ID_LOS, .offset = offsetof(bcmolt_gpon_ni_auto_cfg_data, los), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_auto_cfg_onu_discovered = { .name = "onu_discovered", .descr = "If true, indications of type \"onu_discovered\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_AUTO_CFG_ID_ONU_DISCOVERED, .offset = offsetof(bcmolt_gpon_ni_auto_cfg_data, onu_discovered), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_auto_cfg_onu_upgrade_complete = { .name = "onu_upgrade_complete", .descr = "If true, indications of type \"onu_upgrade_complete\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_AUTO_CFG_ID_ONU_UPGRADE_COMPLETE, .offset = offsetof(bcmolt_gpon_ni_auto_cfg_data, onu_upgrade_complete), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_auto_cfg_protection_switching_onus_ranged = { .name = "protection_switching_onus_ranged", .descr = "If true, indications of type \"protection_switching_onus_ranged\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_AUTO_CFG_ID_PROTECTION_SWITCHING_ONUS_RANGED, .offset = offsetof(bcmolt_gpon_ni_auto_cfg_data, protection_switching_onus_ranged), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_auto_cfg_protection_switching_switchover_completed = { .name = "protection_switching_switchover_completed", .descr = "If true, indications of type \"protection_switching_switchover_completed\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_AUTO_CFG_ID_PROTECTION_SWITCHING_SWITCHOVER_COMPLETED, .offset = offsetof(bcmolt_gpon_ni_auto_cfg_data, protection_switching_switchover_completed), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_auto_cfg_protection_switching_traffic_resume = { .name = "protection_switching_traffic_resume", .descr = "If true, indications of type \"protection_switching_traffic_resume\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_AUTO_CFG_ID_PROTECTION_SWITCHING_TRAFFIC_RESUME, .offset = offsetof(bcmolt_gpon_ni_auto_cfg_data, protection_switching_traffic_resume), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_auto_cfg_rogue_detection_completed = { .name = "rogue_detection_completed", .descr = "If true, indications of type \"rogue_detection_completed\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_AUTO_CFG_ID_ROGUE_DETECTION_COMPLETED, .offset = offsetof(bcmolt_gpon_ni_auto_cfg_data, rogue_detection_completed), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_auto_cfg_rogue_onu_special_map_cycle_start = { .name = "rogue_onu_special_map_cycle_start", .descr = "If true, indications of type \"rogue_onu_special_map_cycle_start\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_AUTO_CFG_ID_ROGUE_ONU_SPECIAL_MAP_CYCLE_START, .offset = offsetof(bcmolt_gpon_ni_auto_cfg_data, rogue_onu_special_map_cycle_start), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_auto_cfg_serial_number_acquisition_cycle_start = { .name = "serial_number_acquisition_cycle_start", .descr = "If true, indications of type \"serial_number_acquisition_cycle_start\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_AUTO_CFG_ID_SERIAL_NUMBER_ACQUISITION_CYCLE_START, .offset = offsetof(bcmolt_gpon_ni_auto_cfg_data, serial_number_acquisition_cycle_start), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_auto_cfg_standby_pon_monitoring_cycle_completed = { .name = "standby_pon_monitoring_cycle_completed", .descr = "If true, indications of type \"standby_pon_monitoring_cycle_completed\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_AUTO_CFG_ID_STANDBY_PON_MONITORING_CYCLE_COMPLETED, .offset = offsetof(bcmolt_gpon_ni_auto_cfg_data, standby_pon_monitoring_cycle_completed), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_auto_cfg_stat_alarm_cleared = { .name = "stat_alarm_cleared", .descr = "If true, indications of type \"stat_alarm_cleared\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_AUTO_CFG_ID_STAT_ALARM_CLEARED, .offset = offsetof(bcmolt_gpon_ni_auto_cfg_data, stat_alarm_cleared), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_auto_cfg_stat_alarm_raised = { .name = "stat_alarm_raised", .descr = "If true, indications of type \"stat_alarm_raised\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_AUTO_CFG_ID_STAT_ALARM_RAISED, .offset = offsetof(bcmolt_gpon_ni_auto_cfg_data, stat_alarm_raised), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_auto_cfg_state_change_completed = { .name = "state_change_completed", .descr = "If true, indications of type \"state_change_completed\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_AUTO_CFG_ID_STATE_CHANGE_COMPLETED, .offset = offsetof(bcmolt_gpon_ni_auto_cfg_data, state_change_completed), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_ni_auto_cfg_tod_request_completed = { .name = "tod_request_completed", .descr = "If true, indications of type \"tod_request_completed\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_NI_AUTO_CFG_ID_TOD_REQUEST_COMPLETED, .offset = offsetof(bcmolt_gpon_ni_auto_cfg_data, tod_request_completed), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr * BCM_DESCR gpon_ni_auto_cfg_prop_array[] = { &prop_descr_gpon_ni_auto_cfg_activate_all_onus_completed, &prop_descr_gpon_ni_auto_cfg_cpu_packets_failure, &prop_descr_gpon_ni_auto_cfg_deactivate_all_onus_completed, &prop_descr_gpon_ni_auto_cfg_disable_all_onus_completed, &prop_descr_gpon_ni_auto_cfg_enable_all_onus_completed, &prop_descr_gpon_ni_auto_cfg_los, &prop_descr_gpon_ni_auto_cfg_onu_discovered, &prop_descr_gpon_ni_auto_cfg_onu_upgrade_complete, &prop_descr_gpon_ni_auto_cfg_protection_switching_onus_ranged, &prop_descr_gpon_ni_auto_cfg_protection_switching_switchover_completed, &prop_descr_gpon_ni_auto_cfg_protection_switching_traffic_resume, &prop_descr_gpon_ni_auto_cfg_rogue_detection_completed, &prop_descr_gpon_ni_auto_cfg_rogue_onu_special_map_cycle_start, &prop_descr_gpon_ni_auto_cfg_serial_number_acquisition_cycle_start, &prop_descr_gpon_ni_auto_cfg_standby_pon_monitoring_cycle_completed, &prop_descr_gpon_ni_auto_cfg_stat_alarm_cleared, &prop_descr_gpon_ni_auto_cfg_stat_alarm_raised, &prop_descr_gpon_ni_auto_cfg_state_change_completed, &prop_descr_gpon_ni_auto_cfg_tod_request_completed };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_ni_auto_cfg_data_fields[] = { { .name = "activate_all_onus_completed", .descr = "If true, indications of type \"activate_all_onus_completed\" will be generated.", .offset = offsetof(bcmolt_gpon_ni_auto_cfg_data, activate_all_onus_completed), .type = &type_descr_bcmos_bool }, { .name = "cpu_packets_failure", .descr = "If true, indications of type \"cpu_packets_failure\" will be generated.", .offset = offsetof(bcmolt_gpon_ni_auto_cfg_data, cpu_packets_failure), .type = &type_descr_bcmos_bool }, { .name = "deactivate_all_onus_completed", .descr = "If true, indications of type \"deactivate_all_onus_completed\" will be generated.", .offset = offsetof(bcmolt_gpon_ni_auto_cfg_data, deactivate_all_onus_completed), .type = &type_descr_bcmos_bool }, { .name = "disable_all_onus_completed", .descr = "If true, indications of type \"disable_all_onus_completed\" will be generated.", .offset = offsetof(bcmolt_gpon_ni_auto_cfg_data, disable_all_onus_completed), .type = &type_descr_bcmos_bool }, { .name = "enable_all_onus_completed", .descr = "If true, indications of type \"enable_all_onus_completed\" will be generated.", .offset = offsetof(bcmolt_gpon_ni_auto_cfg_data, enable_all_onus_completed), .type = &type_descr_bcmos_bool }, { .name = "los", .descr = "If true, indications of type \"los\" will be generated.", .offset = offsetof(bcmolt_gpon_ni_auto_cfg_data, los), .type = &type_descr_bcmos_bool }, { .name = "onu_discovered", .descr = "If true, indications of type \"onu_discovered\" will be generated.", .offset = offsetof(bcmolt_gpon_ni_auto_cfg_data, onu_discovered), .type = &type_descr_bcmos_bool }, { .name = "onu_upgrade_complete", .descr = "If true, indications of type \"onu_upgrade_complete\" will be generated.", .offset = offsetof(bcmolt_gpon_ni_auto_cfg_data, onu_upgrade_complete), .type = &type_descr_bcmos_bool }, { .name = "protection_switching_onus_ranged", .descr = "If true, indications of type \"protection_switching_onus_ranged\" will be generated.", .offset = offsetof(bcmolt_gpon_ni_auto_cfg_data, protection_switching_onus_ranged), .type = &type_descr_bcmos_bool }, { .name = "protection_switching_switchover_completed", .descr = "If true, indications of type \"protection_switching_switchover_completed\" will be generated.", .offset = offsetof(bcmolt_gpon_ni_auto_cfg_data, protection_switching_switchover_completed), .type = &type_descr_bcmos_bool }, { .name = "protection_switching_traffic_resume", .descr = "If true, indications of type \"protection_switching_traffic_resume\" will be generated.", .offset = offsetof(bcmolt_gpon_ni_auto_cfg_data, protection_switching_traffic_resume), .type = &type_descr_bcmos_bool }, { .name = "rogue_detection_completed", .descr = "If true, indications of type \"rogue_detection_completed\" will be generated.", .offset = offsetof(bcmolt_gpon_ni_auto_cfg_data, rogue_detection_completed), .type = &type_descr_bcmos_bool }, { .name = "rogue_onu_special_map_cycle_start", .descr = "If true, indications of type \"rogue_onu_special_map_cycle_start\" will be generated.", .offset = offsetof(bcmolt_gpon_ni_auto_cfg_data, rogue_onu_special_map_cycle_start), .type = &type_descr_bcmos_bool }, { .name = "serial_number_acquisition_cycle_start", .descr = "If true, indications of type \"serial_number_acquisition_cycle_start\" will be generated.", .offset = offsetof(bcmolt_gpon_ni_auto_cfg_data, serial_number_acquisition_cycle_start), .type = &type_descr_bcmos_bool }, { .name = "standby_pon_monitoring_cycle_completed", .descr = "If true, indications of type \"standby_pon_monitoring_cycle_completed\" will be generated.", .offset = offsetof(bcmolt_gpon_ni_auto_cfg_data, standby_pon_monitoring_cycle_completed), .type = &type_descr_bcmos_bool }, { .name = "stat_alarm_cleared", .descr = "If true, indications of type \"stat_alarm_cleared\" will be generated.", .offset = offsetof(bcmolt_gpon_ni_auto_cfg_data, stat_alarm_cleared), .type = &type_descr_bcmos_bool }, { .name = "stat_alarm_raised", .descr = "If true, indications of type \"stat_alarm_raised\" will be generated.", .offset = offsetof(bcmolt_gpon_ni_auto_cfg_data, stat_alarm_raised), .type = &type_descr_bcmos_bool }, { .name = "state_change_completed", .descr = "If true, indications of type \"state_change_completed\" will be generated.", .offset = offsetof(bcmolt_gpon_ni_auto_cfg_data, state_change_completed), .type = &type_descr_bcmos_bool }, { .name = "tod_request_completed", .descr = "If true, indications of type \"tod_request_completed\" will be generated.", .offset = offsetof(bcmolt_gpon_ni_auto_cfg_data, tod_request_completed), .type = &type_descr_bcmos_bool } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_ni_auto_cfg_data = { .name = "bcmolt_gpon_ni_auto_cfg_data", .descr = "Indication Configuration", .size = sizeof(bcmolt_gpon_ni_auto_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_ni_auto_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_ni_auto_cfg_data_fields } } };

/* ==== Object: gpon_onu ==== */

/* Group: gpon_onu - key */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_key_pon_ni = { .name = "pon_ni", .descr = "PON network interface", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_KEY_ID_PON_NI, .offset = offsetof(bcmolt_gpon_onu_key, pon_ni), .type = &type_descr_uint8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_key_onu_id = { .name = "onu_id", .descr = "ONU ID", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_KEY_ID_ONU_ID, .offset = offsetof(bcmolt_gpon_onu_key, onu_id), .type = &type_descr_uint16_t };
static bcmcli_prop_descr * BCM_DESCR gpon_onu_key_prop_array[] = { &prop_descr_gpon_onu_key_pon_ni, &prop_descr_gpon_onu_key_onu_id };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_onu_key_fields[] = { { .name = "pon_ni", .descr = "PON network interface", .offset = offsetof(bcmolt_gpon_onu_key, pon_ni), .type = &type_descr_uint8_t }, { .name = "onu_id", .descr = "ONU ID", .offset = offsetof(bcmolt_gpon_onu_key, onu_id), .type = &type_descr_uint16_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_key = { .name = "bcmolt_gpon_onu_key", .descr = "key", .size = sizeof(bcmolt_gpon_onu_key), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_onu_key_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_onu_key_fields } } };

/* Group: gpon_onu - cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_cfg_onu_state = { .name = "onu_state", .descr = "Current ONU state", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_GPON_ONU_CFG_ID_ONU_STATE, .offset = offsetof(bcmolt_gpon_onu_cfg_data, onu_state), .type = &type_descr_bcmolt_onu_state };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_cfg_serial_number = { .name = "serial_number", .descr = "ONU serial number", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_CFG_ID_SERIAL_NUMBER, .offset = offsetof(bcmolt_gpon_onu_cfg_data, serial_number), .type = &type_descr_bcmolt_serial_number };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_cfg_password = { .name = "password", .descr = "ONU password", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_CFG_ID_PASSWORD, .offset = offsetof(bcmolt_gpon_onu_cfg_data, password), .type = &type_descr_bcmolt_arr_u8_10 };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_cfg_auto_password_learning = { .name = "auto_password_learning", .descr = "Enable\\Disable automatic password learning", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_CFG_ID_AUTO_PASSWORD_LEARNING, .offset = offsetof(bcmolt_gpon_onu_cfg_data, auto_password_learning), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_cfg_us_fec = { .name = "us_fec", .descr = "Enable\\Disable US FEC for ONU", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_CFG_ID_US_FEC, .offset = offsetof(bcmolt_gpon_onu_cfg_data, us_fec), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_cfg_omci_port_id = { .name = "omci_port_id", .descr = "OMCI port ID ", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_CFG_ID_OMCI_PORT_ID, .offset = offsetof(bcmolt_gpon_onu_cfg_data, omci_port_id), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_cfg_ds_ber_reporting_interval = { .name = "ds_ber_reporting_interval", .descr = "DS BER reporting interval", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_CFG_ID_DS_BER_REPORTING_INTERVAL, .offset = offsetof(bcmolt_gpon_onu_cfg_data, ds_ber_reporting_interval), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_cfg_aes_encryption_key = { .name = "aes_encryption_key", .descr = "AES encryption key. ", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_CFG_ID_AES_ENCRYPTION_KEY, .offset = offsetof(bcmolt_gpon_onu_cfg_data, aes_encryption_key), .type = &type_descr_bcmolt_aes_key };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_cfg_alarm_state = { .name = "alarm_state", .descr = "State of all ONU alarms.  This is normally read-only and can only be written when the PON is in active-standby mode to keep the ONU in sync.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_CFG_ID_ALARM_STATE, .offset = offsetof(bcmolt_gpon_onu_cfg_data, alarm_state), .type = &type_descr_bcmolt_gpon_onu_alarm_state };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_cfg_ranging_time = { .name = "ranging_time", .descr = "ONU ranging time.  This is normally read-only and can only be written when the PON is in active-standby mode to keep the ONU in sync.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_CFG_ID_RANGING_TIME, .offset = offsetof(bcmolt_gpon_onu_cfg_data, ranging_time), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_cfg_disabled_after_discovery = { .name = "disabled_after_discovery", .descr = "This ONU was disabled after SN discovery", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_GPON_ONU_CFG_ID_DISABLED_AFTER_DISCOVERY, .offset = offsetof(bcmolt_gpon_onu_cfg_data, disabled_after_discovery), .type = &type_descr_bcmolt_status };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_cfg_deactivation_reason = { .name = "deactivation_reason", .descr = "Reason for the last ONU deactivation", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_GPON_ONU_CFG_ID_DEACTIVATION_REASON, .offset = offsetof(bcmolt_gpon_onu_cfg_data, deactivation_reason), .type = &type_descr_bcmolt_deactivation_reason };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_cfg_all_gem_ports = { .name = "all_gem_ports", .descr = "All unicast GEM ports currently provisioned on this ONU.", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_GPON_ONU_CFG_ID_ALL_GEM_PORTS, .offset = offsetof(bcmolt_gpon_onu_cfg_data, all_gem_ports), .type = &type_descr_bcmolt_gpon_gem_port_with_state_list_u16_max_256 };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_cfg_all_allocs = { .name = "all_allocs", .descr = "All alloc IDs currently provisioned on this ONU.", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_GPON_ONU_CFG_ID_ALL_ALLOCS, .offset = offsetof(bcmolt_gpon_onu_cfg_data, all_allocs), .type = &type_descr_bcmolt_gpon_alloc_with_state_list_u16_max_32 };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_cfg_onu_ps_type_c = { .name = "onu_ps_type_c", .descr = "onu protection switching type c", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_CFG_ID_ONU_PS_TYPE_C, .offset = offsetof(bcmolt_gpon_onu_cfg_data, onu_ps_type_c), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_cfg_extended_guard_time = { .name = "extended_guard_time", .descr = "Additional guard time (in bytes) for this ONU.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_CFG_ID_EXTENDED_GUARD_TIME, .offset = offsetof(bcmolt_gpon_onu_cfg_data, extended_guard_time), .type = &type_descr_bcmolt_extended_guard_time };
static bcmcli_prop_descr * BCM_DESCR gpon_onu_cfg_prop_array[] = { &prop_descr_gpon_onu_cfg_onu_state, &prop_descr_gpon_onu_cfg_serial_number, &prop_descr_gpon_onu_cfg_password, &prop_descr_gpon_onu_cfg_auto_password_learning, &prop_descr_gpon_onu_cfg_us_fec, &prop_descr_gpon_onu_cfg_omci_port_id, &prop_descr_gpon_onu_cfg_ds_ber_reporting_interval, &prop_descr_gpon_onu_cfg_aes_encryption_key, &prop_descr_gpon_onu_cfg_alarm_state, &prop_descr_gpon_onu_cfg_ranging_time, &prop_descr_gpon_onu_cfg_disabled_after_discovery, &prop_descr_gpon_onu_cfg_deactivation_reason, &prop_descr_gpon_onu_cfg_all_gem_ports, &prop_descr_gpon_onu_cfg_all_allocs, &prop_descr_gpon_onu_cfg_onu_ps_type_c, &prop_descr_gpon_onu_cfg_extended_guard_time };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_onu_cfg_data_fields[] = { { .name = "onu_state", .descr = "Current ONU state", .offset = offsetof(bcmolt_gpon_onu_cfg_data, onu_state), .type = &type_descr_bcmolt_onu_state }, { .name = "serial_number", .descr = "ONU serial number", .offset = offsetof(bcmolt_gpon_onu_cfg_data, serial_number), .type = &type_descr_bcmolt_serial_number }, { .name = "password", .descr = "ONU password", .offset = offsetof(bcmolt_gpon_onu_cfg_data, password), .type = &type_descr_bcmolt_arr_u8_10 }, { .name = "auto_password_learning", .descr = "Enable\\Disable automatic password learning", .offset = offsetof(bcmolt_gpon_onu_cfg_data, auto_password_learning), .type = &type_descr_bcmos_bool }, { .name = "us_fec", .descr = "Enable\\Disable US FEC for ONU", .offset = offsetof(bcmolt_gpon_onu_cfg_data, us_fec), .type = &type_descr_bcmos_bool }, { .name = "omci_port_id", .descr = "OMCI port ID ", .offset = offsetof(bcmolt_gpon_onu_cfg_data, omci_port_id), .type = &type_descr_uint16_t }, { .name = "ds_ber_reporting_interval", .descr = "DS BER reporting interval", .offset = offsetof(bcmolt_gpon_onu_cfg_data, ds_ber_reporting_interval), .type = &type_descr_uint32_t }, { .name = "aes_encryption_key", .descr = "AES encryption key. ", .offset = offsetof(bcmolt_gpon_onu_cfg_data, aes_encryption_key), .type = &type_descr_bcmolt_aes_key }, { .name = "alarm_state", .descr = "State of all ONU alarms.  This is normally read-only and can only be written when the PON is in active-standby mode to keep the ONU in sync.", .offset = offsetof(bcmolt_gpon_onu_cfg_data, alarm_state), .type = &type_descr_bcmolt_gpon_onu_alarm_state }, { .name = "ranging_time", .descr = "ONU ranging time.  This is normally read-only and can only be written when the PON is in active-standby mode to keep the ONU in sync.", .offset = offsetof(bcmolt_gpon_onu_cfg_data, ranging_time), .type = &type_descr_uint32_t }, { .name = "disabled_after_discovery", .descr = "This ONU was disabled after SN discovery", .offset = offsetof(bcmolt_gpon_onu_cfg_data, disabled_after_discovery), .type = &type_descr_bcmolt_status }, { .name = "deactivation_reason", .descr = "Reason for the last ONU deactivation", .offset = offsetof(bcmolt_gpon_onu_cfg_data, deactivation_reason), .type = &type_descr_bcmolt_deactivation_reason }, { .name = "all_gem_ports", .descr = "All unicast GEM ports currently provisioned on this ONU.", .offset = offsetof(bcmolt_gpon_onu_cfg_data, all_gem_ports), .type = &type_descr_bcmolt_gpon_gem_port_with_state_list_u16_max_256 }, { .name = "all_allocs", .descr = "All alloc IDs currently provisioned on this ONU.", .offset = offsetof(bcmolt_gpon_onu_cfg_data, all_allocs), .type = &type_descr_bcmolt_gpon_alloc_with_state_list_u16_max_32 }, { .name = "onu_ps_type_c", .descr = "onu protection switching type c", .offset = offsetof(bcmolt_gpon_onu_cfg_data, onu_ps_type_c), .type = &type_descr_bcmos_bool }, { .name = "extended_guard_time", .descr = "Additional guard time (in bytes) for this ONU.", .offset = offsetof(bcmolt_gpon_onu_cfg_data, extended_guard_time), .type = &type_descr_bcmolt_extended_guard_time } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_cfg_data = { .name = "bcmolt_gpon_onu_cfg_data", .descr = "cfg", .size = sizeof(bcmolt_gpon_onu_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_onu_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_onu_cfg_data_fields } } };

/* Group: gpon_onu - stat */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_stat_fec_codewords = { .name = "fec_codewords", .descr = "Total received FEC codewords", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_STAT_ID_FEC_CODEWORDS, .offset = offsetof(bcmolt_gpon_onu_stat_data, fec_codewords), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_stat_fec_bytes_corrected = { .name = "fec_bytes_corrected", .descr = "FEC codewords corrected bytes", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_STAT_ID_FEC_BYTES_CORRECTED, .offset = offsetof(bcmolt_gpon_onu_stat_data, fec_bytes_corrected), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_stat_fec_codewords_corrected = { .name = "fec_codewords_corrected", .descr = "FEC corrected codewords error ", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_STAT_ID_FEC_CODEWORDS_CORRECTED, .offset = offsetof(bcmolt_gpon_onu_stat_data, fec_codewords_corrected), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_stat_fec_codewords_uncorrected = { .name = "fec_codewords_uncorrected", .descr = "FEC not corrected codewords error", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_STAT_ID_FEC_CODEWORDS_UNCORRECTED, .offset = offsetof(bcmolt_gpon_onu_stat_data, fec_codewords_uncorrected), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_stat_bip8_bytes = { .name = "bip8_bytes", .descr = "Received bytes for BIP8", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_STAT_ID_BIP8_BYTES, .offset = offsetof(bcmolt_gpon_onu_stat_data, bip8_bytes), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_stat_bip8_errors = { .name = "bip8_errors", .descr = "Bit error according to BIP8", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_STAT_ID_BIP8_ERRORS, .offset = offsetof(bcmolt_gpon_onu_stat_data, bip8_errors), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_stat_rx_ploams_crc_error = { .name = "rx_ploams_crc_error", .descr = "Received PLOAMs with CRC error", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_STAT_ID_RX_PLOAMS_CRC_ERROR, .offset = offsetof(bcmolt_gpon_onu_stat_data, rx_ploams_crc_error), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_stat_rx_ploams_non_idle = { .name = "rx_ploams_non_idle", .descr = "Received non idle PLOAMs", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_STAT_ID_RX_PLOAMS_NON_IDLE, .offset = offsetof(bcmolt_gpon_onu_stat_data, rx_ploams_non_idle), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_stat_positive_drift = { .name = "positive_drift", .descr = "Positive drift", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_STAT_ID_POSITIVE_DRIFT, .offset = offsetof(bcmolt_gpon_onu_stat_data, positive_drift), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_stat_negative_drift = { .name = "negative_drift", .descr = "Negative drift", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_STAT_ID_NEGATIVE_DRIFT, .offset = offsetof(bcmolt_gpon_onu_stat_data, negative_drift), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_stat_rx_omci = { .name = "rx_omci", .descr = "Received OMCI packets", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_STAT_ID_RX_OMCI, .offset = offsetof(bcmolt_gpon_onu_stat_data, rx_omci), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_stat_rx_omci_packets_crc_error = { .name = "rx_omci_packets_crc_error", .descr = "Received OMCI packets with CRC errors", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_STAT_ID_RX_OMCI_PACKETS_CRC_ERROR, .offset = offsetof(bcmolt_gpon_onu_stat_data, rx_omci_packets_crc_error), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_stat_ber_reported = { .name = "ber_reported", .descr = "BER reported", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_STAT_ID_BER_REPORTED, .offset = offsetof(bcmolt_gpon_onu_stat_data, ber_reported), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_stat_unreceived_burst = { .name = "unreceived_burst", .descr = "Unreceived burst", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_STAT_ID_UNRECEIVED_BURST, .offset = offsetof(bcmolt_gpon_onu_stat_data, unreceived_burst), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_stat_lcdg_errors = { .name = "lcdg_errors", .descr = "LCDG errors", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_STAT_ID_LCDG_ERRORS, .offset = offsetof(bcmolt_gpon_onu_stat_data, lcdg_errors), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_stat_rdi_errors = { .name = "rdi_errors", .descr = "RDI errors", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_STAT_ID_RDI_ERRORS, .offset = offsetof(bcmolt_gpon_onu_stat_data, rdi_errors), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_stat_rx_bytes = { .name = "rx_bytes", .descr = "rx bytes", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_STAT_ID_RX_BYTES, .offset = offsetof(bcmolt_gpon_onu_stat_data, rx_bytes), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_stat_rx_packets = { .name = "rx_packets", .descr = "rx packets", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_STAT_ID_RX_PACKETS, .offset = offsetof(bcmolt_gpon_onu_stat_data, rx_packets), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_stat_tx_bytes = { .name = "tx_bytes", .descr = "tx bytes", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_STAT_ID_TX_BYTES, .offset = offsetof(bcmolt_gpon_onu_stat_data, tx_bytes), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_stat_tx_packets = { .name = "tx_packets", .descr = "tx packets", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_STAT_ID_TX_PACKETS, .offset = offsetof(bcmolt_gpon_onu_stat_data, tx_packets), .type = &type_descr_uint64_t };
static bcmcli_prop_descr * BCM_DESCR gpon_onu_stat_prop_array[] = { &prop_descr_gpon_onu_stat_fec_codewords, &prop_descr_gpon_onu_stat_fec_bytes_corrected, &prop_descr_gpon_onu_stat_fec_codewords_corrected, &prop_descr_gpon_onu_stat_fec_codewords_uncorrected, &prop_descr_gpon_onu_stat_bip8_bytes, &prop_descr_gpon_onu_stat_bip8_errors, &prop_descr_gpon_onu_stat_rx_ploams_crc_error, &prop_descr_gpon_onu_stat_rx_ploams_non_idle, &prop_descr_gpon_onu_stat_positive_drift, &prop_descr_gpon_onu_stat_negative_drift, &prop_descr_gpon_onu_stat_rx_omci, &prop_descr_gpon_onu_stat_rx_omci_packets_crc_error, &prop_descr_gpon_onu_stat_ber_reported, &prop_descr_gpon_onu_stat_unreceived_burst, &prop_descr_gpon_onu_stat_lcdg_errors, &prop_descr_gpon_onu_stat_rdi_errors, &prop_descr_gpon_onu_stat_rx_bytes, &prop_descr_gpon_onu_stat_rx_packets, &prop_descr_gpon_onu_stat_tx_bytes, &prop_descr_gpon_onu_stat_tx_packets };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_onu_stat_data_fields[] = { { .name = "fec_codewords", .descr = "Total received FEC codewords", .offset = offsetof(bcmolt_gpon_onu_stat_data, fec_codewords), .type = &type_descr_uint64_t }, { .name = "fec_bytes_corrected", .descr = "FEC codewords corrected bytes", .offset = offsetof(bcmolt_gpon_onu_stat_data, fec_bytes_corrected), .type = &type_descr_uint64_t }, { .name = "fec_codewords_corrected", .descr = "FEC corrected codewords error ", .offset = offsetof(bcmolt_gpon_onu_stat_data, fec_codewords_corrected), .type = &type_descr_uint64_t }, { .name = "fec_codewords_uncorrected", .descr = "FEC not corrected codewords error", .offset = offsetof(bcmolt_gpon_onu_stat_data, fec_codewords_uncorrected), .type = &type_descr_uint64_t }, { .name = "bip8_bytes", .descr = "Received bytes for BIP8", .offset = offsetof(bcmolt_gpon_onu_stat_data, bip8_bytes), .type = &type_descr_uint64_t }, { .name = "bip8_errors", .descr = "Bit error according to BIP8", .offset = offsetof(bcmolt_gpon_onu_stat_data, bip8_errors), .type = &type_descr_uint64_t }, { .name = "rx_ploams_crc_error", .descr = "Received PLOAMs with CRC error", .offset = offsetof(bcmolt_gpon_onu_stat_data, rx_ploams_crc_error), .type = &type_descr_uint64_t }, { .name = "rx_ploams_non_idle", .descr = "Received non idle PLOAMs", .offset = offsetof(bcmolt_gpon_onu_stat_data, rx_ploams_non_idle), .type = &type_descr_uint64_t }, { .name = "positive_drift", .descr = "Positive drift", .offset = offsetof(bcmolt_gpon_onu_stat_data, positive_drift), .type = &type_descr_uint64_t }, { .name = "negative_drift", .descr = "Negative drift", .offset = offsetof(bcmolt_gpon_onu_stat_data, negative_drift), .type = &type_descr_uint64_t }, { .name = "rx_omci", .descr = "Received OMCI packets", .offset = offsetof(bcmolt_gpon_onu_stat_data, rx_omci), .type = &type_descr_uint64_t }, { .name = "rx_omci_packets_crc_error", .descr = "Received OMCI packets with CRC errors", .offset = offsetof(bcmolt_gpon_onu_stat_data, rx_omci_packets_crc_error), .type = &type_descr_uint64_t }, { .name = "ber_reported", .descr = "BER reported", .offset = offsetof(bcmolt_gpon_onu_stat_data, ber_reported), .type = &type_descr_uint64_t }, { .name = "unreceived_burst", .descr = "Unreceived burst", .offset = offsetof(bcmolt_gpon_onu_stat_data, unreceived_burst), .type = &type_descr_uint64_t }, { .name = "lcdg_errors", .descr = "LCDG errors", .offset = offsetof(bcmolt_gpon_onu_stat_data, lcdg_errors), .type = &type_descr_uint64_t }, { .name = "rdi_errors", .descr = "RDI errors", .offset = offsetof(bcmolt_gpon_onu_stat_data, rdi_errors), .type = &type_descr_uint64_t }, { .name = "rx_bytes", .descr = "rx bytes", .offset = offsetof(bcmolt_gpon_onu_stat_data, rx_bytes), .type = &type_descr_uint64_t }, { .name = "rx_packets", .descr = "rx packets", .offset = offsetof(bcmolt_gpon_onu_stat_data, rx_packets), .type = &type_descr_uint64_t }, { .name = "tx_bytes", .descr = "tx bytes", .offset = offsetof(bcmolt_gpon_onu_stat_data, tx_bytes), .type = &type_descr_uint64_t }, { .name = "tx_packets", .descr = "tx packets", .offset = offsetof(bcmolt_gpon_onu_stat_data, tx_packets), .type = &type_descr_uint64_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_stat_data = { .name = "bcmolt_gpon_onu_stat_data", .descr = "stat", .size = sizeof(bcmolt_gpon_onu_stat_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_onu_stat_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_onu_stat_data_fields } } };

/* Group: gpon_onu - set_onu_state */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_set_onu_state_onu_state = { .name = "onu_state", .descr = "ONU state", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_SET_ONU_STATE_ID_ONU_STATE, .offset = offsetof(bcmolt_gpon_onu_set_onu_state_data, onu_state), .type = &type_descr_bcmolt_onu_operation };
static bcmcli_prop_descr * BCM_DESCR gpon_onu_set_onu_state_prop_array[] = { &prop_descr_gpon_onu_set_onu_state_onu_state };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_onu_set_onu_state_data_fields[] = { { .name = "onu_state", .descr = "ONU state", .offset = offsetof(bcmolt_gpon_onu_set_onu_state_data, onu_state), .type = &type_descr_bcmolt_onu_operation } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_set_onu_state_data = { .name = "bcmolt_gpon_onu_set_onu_state_data", .descr = "Set ONU State", .size = sizeof(bcmolt_gpon_onu_set_onu_state_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_onu_set_onu_state_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_onu_set_onu_state_data_fields } } };

/* Group: gpon_onu - rssi_measurement */
static bcmcli_prop_descr * BCM_DESCR gpon_onu_rssi_measurement_prop_array[] = { };

/* Group: gpon_onu - change_power_level */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_change_power_level_power_level_action = { .name = "power_level_action", .descr = "power level action", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_CHANGE_POWER_LEVEL_ID_POWER_LEVEL_ACTION, .offset = offsetof(bcmolt_gpon_onu_change_power_level_data, power_level_action), .type = &type_descr_bcmolt_onu_power_level };
static bcmcli_prop_descr * BCM_DESCR gpon_onu_change_power_level_prop_array[] = { &prop_descr_gpon_onu_change_power_level_power_level_action };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_onu_change_power_level_data_fields[] = { { .name = "power_level_action", .descr = "power level action", .offset = offsetof(bcmolt_gpon_onu_change_power_level_data, power_level_action), .type = &type_descr_bcmolt_onu_power_level } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_change_power_level_data = { .name = "bcmolt_gpon_onu_change_power_level_data", .descr = "Change Power Level", .size = sizeof(bcmolt_gpon_onu_change_power_level_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_onu_change_power_level_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_onu_change_power_level_data_fields } } };

/* Group: gpon_onu - onu_alarm */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_onu_alarm_onu_alarm = { .name = "onu_alarm", .descr = "onu alarm", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_ONU_ALARM_ID_ONU_ALARM, .offset = offsetof(bcmolt_gpon_onu_onu_alarm_data, onu_alarm), .type = &type_descr_bcmolt_gpon_onu_alarms };
static bcmcli_prop_descr * BCM_DESCR gpon_onu_onu_alarm_prop_array[] = { &prop_descr_gpon_onu_onu_alarm_onu_alarm };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_onu_onu_alarm_data_fields[] = { { .name = "onu_alarm", .descr = "onu alarm", .offset = offsetof(bcmolt_gpon_onu_onu_alarm_data, onu_alarm), .type = &type_descr_bcmolt_gpon_onu_alarms } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_onu_alarm_data = { .name = "bcmolt_gpon_onu_onu_alarm_data", .descr = "ONU Alarm", .size = sizeof(bcmolt_gpon_onu_onu_alarm_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_onu_onu_alarm_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_onu_onu_alarm_data_fields } } };

/* Group: gpon_onu - dowi */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_dowi_alarm_status = { .name = "alarm_status", .descr = "Alarm status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_DOWI_ID_ALARM_STATUS, .offset = offsetof(bcmolt_gpon_onu_dowi_data, alarm_status), .type = &type_descr_bcmolt_status };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_dowi_drift_value = { .name = "drift_value", .descr = "Calculated amount of drift (positive + negative as a signed value).", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_DOWI_ID_DRIFT_VALUE, .offset = offsetof(bcmolt_gpon_onu_dowi_data, drift_value), .type = &type_descr_int32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_dowi_new_eqd = { .name = "new_eqd", .descr = "New EQD after drift is corrected (only valid if status is 'on').", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_DOWI_ID_NEW_EQD, .offset = offsetof(bcmolt_gpon_onu_dowi_data, new_eqd), .type = &type_descr_uint32_t };
static bcmcli_prop_descr * BCM_DESCR gpon_onu_dowi_prop_array[] = { &prop_descr_gpon_onu_dowi_alarm_status, &prop_descr_gpon_onu_dowi_drift_value, &prop_descr_gpon_onu_dowi_new_eqd };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_onu_dowi_data_fields[] = { { .name = "alarm_status", .descr = "Alarm status", .offset = offsetof(bcmolt_gpon_onu_dowi_data, alarm_status), .type = &type_descr_bcmolt_status }, { .name = "drift_value", .descr = "Calculated amount of drift (positive + negative as a signed value).", .offset = offsetof(bcmolt_gpon_onu_dowi_data, drift_value), .type = &type_descr_int32_t }, { .name = "new_eqd", .descr = "New EQD after drift is corrected (only valid if status is 'on').", .offset = offsetof(bcmolt_gpon_onu_dowi_data, new_eqd), .type = &type_descr_uint32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_dowi_data = { .name = "bcmolt_gpon_onu_dowi_data", .descr = "Drift of Window of ONUi", .size = sizeof(bcmolt_gpon_onu_dowi_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_onu_dowi_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_onu_dowi_data_fields } } };

/* Group: gpon_onu - sfi */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_sfi_alarm_status = { .name = "alarm_status", .descr = "alarm status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_SFI_ID_ALARM_STATUS, .offset = offsetof(bcmolt_gpon_onu_sfi_data, alarm_status), .type = &type_descr_bcmolt_status };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_sfi_ber = { .name = "ber", .descr = "Inverse bit error rate (e.g. if this number is 1000, the BER is 1/1000).", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_SFI_ID_BER, .offset = offsetof(bcmolt_gpon_onu_sfi_data, ber), .type = &type_descr_uint32_t };
static bcmcli_prop_descr * BCM_DESCR gpon_onu_sfi_prop_array[] = { &prop_descr_gpon_onu_sfi_alarm_status, &prop_descr_gpon_onu_sfi_ber };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_onu_sfi_data_fields[] = { { .name = "alarm_status", .descr = "alarm status", .offset = offsetof(bcmolt_gpon_onu_sfi_data, alarm_status), .type = &type_descr_bcmolt_status }, { .name = "ber", .descr = "Inverse bit error rate (e.g. if this number is 1000, the BER is 1/1000).", .offset = offsetof(bcmolt_gpon_onu_sfi_data, ber), .type = &type_descr_uint32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_sfi_data = { .name = "bcmolt_gpon_onu_sfi_data", .descr = "Signal Fail of ONUi", .size = sizeof(bcmolt_gpon_onu_sfi_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_onu_sfi_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_onu_sfi_data_fields } } };

/* Group: gpon_onu - sdi */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_sdi_alarm_status = { .name = "alarm_status", .descr = "alarm status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_SDI_ID_ALARM_STATUS, .offset = offsetof(bcmolt_gpon_onu_sdi_data, alarm_status), .type = &type_descr_bcmolt_status };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_sdi_ber = { .name = "ber", .descr = "Inverse bit error rate (e.g. if this number is 1000, the BER is 1/1000).", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_SDI_ID_BER, .offset = offsetof(bcmolt_gpon_onu_sdi_data, ber), .type = &type_descr_uint32_t };
static bcmcli_prop_descr * BCM_DESCR gpon_onu_sdi_prop_array[] = { &prop_descr_gpon_onu_sdi_alarm_status, &prop_descr_gpon_onu_sdi_ber };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_onu_sdi_data_fields[] = { { .name = "alarm_status", .descr = "alarm status", .offset = offsetof(bcmolt_gpon_onu_sdi_data, alarm_status), .type = &type_descr_bcmolt_status }, { .name = "ber", .descr = "Inverse bit error rate (e.g. if this number is 1000, the BER is 1/1000).", .offset = offsetof(bcmolt_gpon_onu_sdi_data, ber), .type = &type_descr_uint32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_sdi_data = { .name = "bcmolt_gpon_onu_sdi_data", .descr = "Signal Degraded of ONUi", .size = sizeof(bcmolt_gpon_onu_sdi_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_onu_sdi_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_onu_sdi_data_fields } } };

/* Group: gpon_onu - dfi */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_dfi_alarm_status = { .name = "alarm_status", .descr = "alarm status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_DFI_ID_ALARM_STATUS, .offset = offsetof(bcmolt_gpon_onu_dfi_data, alarm_status), .type = &type_descr_bcmolt_status };
static bcmcli_prop_descr * BCM_DESCR gpon_onu_dfi_prop_array[] = { &prop_descr_gpon_onu_dfi_alarm_status };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_onu_dfi_data_fields[] = { { .name = "alarm_status", .descr = "alarm status", .offset = offsetof(bcmolt_gpon_onu_dfi_data, alarm_status), .type = &type_descr_bcmolt_status } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_dfi_data = { .name = "bcmolt_gpon_onu_dfi_data", .descr = "Receive Dying-Gasp of ONUi", .size = sizeof(bcmolt_gpon_onu_dfi_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_onu_dfi_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_onu_dfi_data_fields } } };

/* Group: gpon_onu - sufi */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_sufi_alarm_status = { .name = "alarm_status", .descr = "alarm status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_SUFI_ID_ALARM_STATUS, .offset = offsetof(bcmolt_gpon_onu_sufi_data, alarm_status), .type = &type_descr_bcmolt_status };
static bcmcli_prop_descr * BCM_DESCR gpon_onu_sufi_prop_array[] = { &prop_descr_gpon_onu_sufi_alarm_status };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_onu_sufi_data_fields[] = { { .name = "alarm_status", .descr = "alarm status", .offset = offsetof(bcmolt_gpon_onu_sufi_data, alarm_status), .type = &type_descr_bcmolt_status } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_sufi_data = { .name = "bcmolt_gpon_onu_sufi_data", .descr = "SUFi", .size = sizeof(bcmolt_gpon_onu_sufi_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_onu_sufi_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_onu_sufi_data_fields } } };

/* Group: gpon_onu - loai */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_loai_alarm_status = { .name = "alarm_status", .descr = "alarm status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_LOAI_ID_ALARM_STATUS, .offset = offsetof(bcmolt_gpon_onu_loai_data, alarm_status), .type = &type_descr_bcmolt_status };
static bcmcli_prop_descr * BCM_DESCR gpon_onu_loai_prop_array[] = { &prop_descr_gpon_onu_loai_alarm_status };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_onu_loai_data_fields[] = { { .name = "alarm_status", .descr = "alarm status", .offset = offsetof(bcmolt_gpon_onu_loai_data, alarm_status), .type = &type_descr_bcmolt_status } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_loai_data = { .name = "bcmolt_gpon_onu_loai_data", .descr = "LOAi", .size = sizeof(bcmolt_gpon_onu_loai_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_onu_loai_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_onu_loai_data_fields } } };

/* Group: gpon_onu - dgi */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_dgi_alarm_status = { .name = "alarm_status", .descr = "alarm status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_DGI_ID_ALARM_STATUS, .offset = offsetof(bcmolt_gpon_onu_dgi_data, alarm_status), .type = &type_descr_bcmolt_status };
static bcmcli_prop_descr * BCM_DESCR gpon_onu_dgi_prop_array[] = { &prop_descr_gpon_onu_dgi_alarm_status };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_onu_dgi_data_fields[] = { { .name = "alarm_status", .descr = "alarm status", .offset = offsetof(bcmolt_gpon_onu_dgi_data, alarm_status), .type = &type_descr_bcmolt_status } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_dgi_data = { .name = "bcmolt_gpon_onu_dgi_data", .descr = "Receive Dying-Gasp of ONUi", .size = sizeof(bcmolt_gpon_onu_dgi_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_onu_dgi_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_onu_dgi_data_fields } } };

/* Group: gpon_onu - pee */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_pee_alarm_status = { .name = "alarm_status", .descr = "alarm status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_PEE_ID_ALARM_STATUS, .offset = offsetof(bcmolt_gpon_onu_pee_data, alarm_status), .type = &type_descr_bcmolt_status };
static bcmcli_prop_descr * BCM_DESCR gpon_onu_pee_prop_array[] = { &prop_descr_gpon_onu_pee_alarm_status };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_onu_pee_data_fields[] = { { .name = "alarm_status", .descr = "alarm status", .offset = offsetof(bcmolt_gpon_onu_pee_data, alarm_status), .type = &type_descr_bcmolt_status } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_pee_data = { .name = "bcmolt_gpon_onu_pee_data", .descr = "PEE", .size = sizeof(bcmolt_gpon_onu_pee_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_onu_pee_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_onu_pee_data_fields } } };

/* Group: gpon_onu - pst */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_pst_link_number = { .name = "link_number", .descr = "link number", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_PST_ID_LINK_NUMBER, .offset = offsetof(bcmolt_gpon_onu_pst_data, link_number), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_pst_k1 = { .name = "k1", .descr = "K1", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_PST_ID_K1, .offset = offsetof(bcmolt_gpon_onu_pst_data, k1), .type = &type_descr_uint8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_pst_k2 = { .name = "k2", .descr = "K2", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_PST_ID_K2, .offset = offsetof(bcmolt_gpon_onu_pst_data, k2), .type = &type_descr_uint8_t };
static bcmcli_prop_descr * BCM_DESCR gpon_onu_pst_prop_array[] = { &prop_descr_gpon_onu_pst_link_number, &prop_descr_gpon_onu_pst_k1, &prop_descr_gpon_onu_pst_k2 };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_onu_pst_data_fields[] = { { .name = "link_number", .descr = "link number", .offset = offsetof(bcmolt_gpon_onu_pst_data, link_number), .type = &type_descr_uint32_t }, { .name = "k1", .descr = "K1", .offset = offsetof(bcmolt_gpon_onu_pst_data, k1), .type = &type_descr_uint8_t }, { .name = "k2", .descr = "K2", .offset = offsetof(bcmolt_gpon_onu_pst_data, k2), .type = &type_descr_uint8_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_pst_data = { .name = "bcmolt_gpon_onu_pst_data", .descr = "PST", .size = sizeof(bcmolt_gpon_onu_pst_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_onu_pst_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_onu_pst_data_fields } } };

/* Group: gpon_onu - tiwi */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_tiwi_alarm_status = { .name = "alarm_status", .descr = "Alarm status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_TIWI_ID_ALARM_STATUS, .offset = offsetof(bcmolt_gpon_onu_tiwi_data, alarm_status), .type = &type_descr_bcmolt_status };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_tiwi_drift_value = { .name = "drift_value", .descr = "Calculated amount of drift (positive + negative as a signed value).", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_TIWI_ID_DRIFT_VALUE, .offset = offsetof(bcmolt_gpon_onu_tiwi_data, drift_value), .type = &type_descr_int32_t };
static bcmcli_prop_descr * BCM_DESCR gpon_onu_tiwi_prop_array[] = { &prop_descr_gpon_onu_tiwi_alarm_status, &prop_descr_gpon_onu_tiwi_drift_value };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_onu_tiwi_data_fields[] = { { .name = "alarm_status", .descr = "Alarm status", .offset = offsetof(bcmolt_gpon_onu_tiwi_data, alarm_status), .type = &type_descr_bcmolt_status }, { .name = "drift_value", .descr = "Calculated amount of drift (positive + negative as a signed value).", .offset = offsetof(bcmolt_gpon_onu_tiwi_data, drift_value), .type = &type_descr_int32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_tiwi_data = { .name = "bcmolt_gpon_onu_tiwi_data", .descr = "Transmission Interference Warning", .size = sizeof(bcmolt_gpon_onu_tiwi_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_onu_tiwi_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_onu_tiwi_data_fields } } };

/* Group: gpon_onu - loki */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_loki_alarm_status = { .name = "alarm_status", .descr = "alarm status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_LOKI_ID_ALARM_STATUS, .offset = offsetof(bcmolt_gpon_onu_loki_data, alarm_status), .type = &type_descr_bcmolt_status };
static bcmcli_prop_descr * BCM_DESCR gpon_onu_loki_prop_array[] = { &prop_descr_gpon_onu_loki_alarm_status };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_onu_loki_data_fields[] = { { .name = "alarm_status", .descr = "alarm status", .offset = offsetof(bcmolt_gpon_onu_loki_data, alarm_status), .type = &type_descr_bcmolt_status } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_loki_data = { .name = "bcmolt_gpon_onu_loki_data", .descr = "LOki", .size = sizeof(bcmolt_gpon_onu_loki_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_onu_loki_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_onu_loki_data_fields } } };

/* Group: gpon_onu - memi */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_memi_ploam_buffer = { .name = "ploam_buffer", .descr = "PLOAM buffer", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_MEMI_ID_PLOAM_BUFFER, .offset = offsetof(bcmolt_gpon_onu_memi_data, ploam_buffer), .type = &type_descr_bcmolt_arr_u8_13 };
static bcmcli_prop_descr * BCM_DESCR gpon_onu_memi_prop_array[] = { &prop_descr_gpon_onu_memi_ploam_buffer };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_onu_memi_data_fields[] = { { .name = "ploam_buffer", .descr = "PLOAM buffer", .offset = offsetof(bcmolt_gpon_onu_memi_data, ploam_buffer), .type = &type_descr_bcmolt_arr_u8_13 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_memi_data = { .name = "bcmolt_gpon_onu_memi_data", .descr = "MEMi", .size = sizeof(bcmolt_gpon_onu_memi_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_onu_memi_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_onu_memi_data_fields } } };

/* Group: gpon_onu - omci_port_id_configuration_completed */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_omci_port_id_configuration_completed_gem_port = { .name = "gem_port", .descr = "GEM Port ID", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_OMCI_PORT_ID_CONFIGURATION_COMPLETED_ID_GEM_PORT, .offset = offsetof(bcmolt_gpon_onu_omci_port_id_configuration_completed_data, gem_port), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_omci_port_id_configuration_completed_status = { .name = "status", .descr = "status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_OMCI_PORT_ID_CONFIGURATION_COMPLETED_ID_STATUS, .offset = offsetof(bcmolt_gpon_onu_omci_port_id_configuration_completed_data, status), .type = &type_descr_bcmolt_result };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_omci_port_id_configuration_completed_operation = { .name = "operation", .descr = "Operation", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_OMCI_PORT_ID_CONFIGURATION_COMPLETED_ID_OPERATION, .offset = offsetof(bcmolt_gpon_onu_omci_port_id_configuration_completed_data, operation), .type = &type_descr_bcmolt_omci_port_id_operation };
static bcmcli_prop_descr * BCM_DESCR gpon_onu_omci_port_id_configuration_completed_prop_array[] = { &prop_descr_gpon_onu_omci_port_id_configuration_completed_gem_port, &prop_descr_gpon_onu_omci_port_id_configuration_completed_status, &prop_descr_gpon_onu_omci_port_id_configuration_completed_operation };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_onu_omci_port_id_configuration_completed_data_fields[] = { { .name = "gem_port", .descr = "GEM Port ID", .offset = offsetof(bcmolt_gpon_onu_omci_port_id_configuration_completed_data, gem_port), .type = &type_descr_uint16_t }, { .name = "status", .descr = "status", .offset = offsetof(bcmolt_gpon_onu_omci_port_id_configuration_completed_data, status), .type = &type_descr_bcmolt_result }, { .name = "operation", .descr = "Operation", .offset = offsetof(bcmolt_gpon_onu_omci_port_id_configuration_completed_data, operation), .type = &type_descr_bcmolt_omci_port_id_operation } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_omci_port_id_configuration_completed_data = { .name = "bcmolt_gpon_onu_omci_port_id_configuration_completed_data", .descr = "OMCI PORT ID Configuration Completed", .size = sizeof(bcmolt_gpon_onu_omci_port_id_configuration_completed_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_onu_omci_port_id_configuration_completed_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_onu_omci_port_id_configuration_completed_data_fields } } };

/* Group: gpon_onu - ber_interval_configuration_completed */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_ber_interval_configuration_completed_ber_interval = { .name = "ber_interval", .descr = "BER interval in ms", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_BER_INTERVAL_CONFIGURATION_COMPLETED_ID_BER_INTERVAL, .offset = offsetof(bcmolt_gpon_onu_ber_interval_configuration_completed_data, ber_interval), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_ber_interval_configuration_completed_result = { .name = "result", .descr = "Result", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_BER_INTERVAL_CONFIGURATION_COMPLETED_ID_RESULT, .offset = offsetof(bcmolt_gpon_onu_ber_interval_configuration_completed_data, result), .type = &type_descr_bcmolt_result };
static bcmcli_prop_descr * BCM_DESCR gpon_onu_ber_interval_configuration_completed_prop_array[] = { &prop_descr_gpon_onu_ber_interval_configuration_completed_ber_interval, &prop_descr_gpon_onu_ber_interval_configuration_completed_result };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_onu_ber_interval_configuration_completed_data_fields[] = { { .name = "ber_interval", .descr = "BER interval in ms", .offset = offsetof(bcmolt_gpon_onu_ber_interval_configuration_completed_data, ber_interval), .type = &type_descr_uint32_t }, { .name = "result", .descr = "Result", .offset = offsetof(bcmolt_gpon_onu_ber_interval_configuration_completed_data, result), .type = &type_descr_bcmolt_result } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_ber_interval_configuration_completed_data = { .name = "bcmolt_gpon_onu_ber_interval_configuration_completed_data", .descr = "BER Interval Configuration Completed", .size = sizeof(bcmolt_gpon_onu_ber_interval_configuration_completed_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_onu_ber_interval_configuration_completed_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_onu_ber_interval_configuration_completed_data_fields } } };

/* Group: gpon_onu - err */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_err_bip8_errors = { .name = "bip8_errors", .descr = "BIP8 errors", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_ERR_ID_BIP8_ERRORS, .offset = offsetof(bcmolt_gpon_onu_err_data, bip8_errors), .type = &type_descr_uint8_t };
static bcmcli_prop_descr * BCM_DESCR gpon_onu_err_prop_array[] = { &prop_descr_gpon_onu_err_bip8_errors };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_onu_err_data_fields[] = { { .name = "bip8_errors", .descr = "BIP8 errors", .offset = offsetof(bcmolt_gpon_onu_err_data, bip8_errors), .type = &type_descr_uint8_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_err_data = { .name = "bcmolt_gpon_onu_err_data", .descr = "ERR", .size = sizeof(bcmolt_gpon_onu_err_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_onu_err_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_onu_err_data_fields } } };

/* Group: gpon_onu - rei */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_rei_bip8_errors = { .name = "bip8_errors", .descr = "BIP8 errors", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_REI_ID_BIP8_ERRORS, .offset = offsetof(bcmolt_gpon_onu_rei_data, bip8_errors), .type = &type_descr_uint32_t };
static bcmcli_prop_descr * BCM_DESCR gpon_onu_rei_prop_array[] = { &prop_descr_gpon_onu_rei_bip8_errors };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_onu_rei_data_fields[] = { { .name = "bip8_errors", .descr = "BIP8 errors", .offset = offsetof(bcmolt_gpon_onu_rei_data, bip8_errors), .type = &type_descr_uint32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_rei_data = { .name = "bcmolt_gpon_onu_rei_data", .descr = "REI", .size = sizeof(bcmolt_gpon_onu_rei_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_onu_rei_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_onu_rei_data_fields } } };

/* Group: gpon_onu - ranging_completed */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_ranging_completed_status = { .name = "status", .descr = "status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_RANGING_COMPLETED_ID_STATUS, .offset = offsetof(bcmolt_gpon_onu_ranging_completed_data, status), .type = &type_descr_bcmolt_result };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_ranging_completed_fail_reason = { .name = "fail_reason", .descr = "fail reason", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_RANGING_COMPLETED_ID_FAIL_REASON, .offset = offsetof(bcmolt_gpon_onu_ranging_completed_data, fail_reason), .type = &type_descr_bcmolt_ranging_fail_reason };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_ranging_completed_number_of_ploams = { .name = "number_of_ploams", .descr = "number of PLOAMs", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_RANGING_COMPLETED_ID_NUMBER_OF_PLOAMS, .offset = offsetof(bcmolt_gpon_onu_ranging_completed_data, number_of_ploams), .type = &type_descr_uint8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_ranging_completed_eqd = { .name = "eqd", .descr = "EQD", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_RANGING_COMPLETED_ID_EQD, .offset = offsetof(bcmolt_gpon_onu_ranging_completed_data, eqd), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_ranging_completed_power_level = { .name = "power_level", .descr = "Power Level", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_RANGING_COMPLETED_ID_POWER_LEVEL, .offset = offsetof(bcmolt_gpon_onu_ranging_completed_data, power_level), .type = &type_descr_uint8_t };
static bcmcli_prop_descr * BCM_DESCR gpon_onu_ranging_completed_prop_array[] = { &prop_descr_gpon_onu_ranging_completed_status, &prop_descr_gpon_onu_ranging_completed_fail_reason, &prop_descr_gpon_onu_ranging_completed_number_of_ploams, &prop_descr_gpon_onu_ranging_completed_eqd, &prop_descr_gpon_onu_ranging_completed_power_level };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_onu_ranging_completed_data_fields[] = { { .name = "status", .descr = "status", .offset = offsetof(bcmolt_gpon_onu_ranging_completed_data, status), .type = &type_descr_bcmolt_result }, { .name = "fail_reason", .descr = "fail reason", .offset = offsetof(bcmolt_gpon_onu_ranging_completed_data, fail_reason), .type = &type_descr_bcmolt_ranging_fail_reason }, { .name = "number_of_ploams", .descr = "number of PLOAMs", .offset = offsetof(bcmolt_gpon_onu_ranging_completed_data, number_of_ploams), .type = &type_descr_uint8_t }, { .name = "eqd", .descr = "EQD", .offset = offsetof(bcmolt_gpon_onu_ranging_completed_data, eqd), .type = &type_descr_uint32_t }, { .name = "power_level", .descr = "Power Level", .offset = offsetof(bcmolt_gpon_onu_ranging_completed_data, power_level), .type = &type_descr_uint8_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_ranging_completed_data = { .name = "bcmolt_gpon_onu_ranging_completed_data", .descr = "Ranging Completed", .size = sizeof(bcmolt_gpon_onu_ranging_completed_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_onu_ranging_completed_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_onu_ranging_completed_data_fields } } };

/* Group: gpon_onu - password_authentication_completed */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_password_authentication_completed_status = { .name = "status", .descr = "status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_PASSWORD_AUTHENTICATION_COMPLETED_ID_STATUS, .offset = offsetof(bcmolt_gpon_onu_password_authentication_completed_data, status), .type = &type_descr_bcmolt_result };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_password_authentication_completed_fail_reason = { .name = "fail_reason", .descr = "fail reason", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_PASSWORD_AUTHENTICATION_COMPLETED_ID_FAIL_REASON, .offset = offsetof(bcmolt_gpon_onu_password_authentication_completed_data, fail_reason), .type = &type_descr_bcmolt_password_authentication_fail_reason };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_password_authentication_completed_password = { .name = "password", .descr = "password", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_PASSWORD_AUTHENTICATION_COMPLETED_ID_PASSWORD, .offset = offsetof(bcmolt_gpon_onu_password_authentication_completed_data, password), .type = &type_descr_bcmolt_arr_u8_10 };
static bcmcli_prop_descr * BCM_DESCR gpon_onu_password_authentication_completed_prop_array[] = { &prop_descr_gpon_onu_password_authentication_completed_status, &prop_descr_gpon_onu_password_authentication_completed_fail_reason, &prop_descr_gpon_onu_password_authentication_completed_password };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_onu_password_authentication_completed_data_fields[] = { { .name = "status", .descr = "status", .offset = offsetof(bcmolt_gpon_onu_password_authentication_completed_data, status), .type = &type_descr_bcmolt_result }, { .name = "fail_reason", .descr = "fail reason", .offset = offsetof(bcmolt_gpon_onu_password_authentication_completed_data, fail_reason), .type = &type_descr_bcmolt_password_authentication_fail_reason }, { .name = "password", .descr = "password", .offset = offsetof(bcmolt_gpon_onu_password_authentication_completed_data, password), .type = &type_descr_bcmolt_arr_u8_10 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_password_authentication_completed_data = { .name = "bcmolt_gpon_onu_password_authentication_completed_data", .descr = "Password Authentication Completed", .size = sizeof(bcmolt_gpon_onu_password_authentication_completed_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_onu_password_authentication_completed_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_onu_password_authentication_completed_data_fields } } };

/* Group: gpon_onu - onu_activation_completed */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_onu_activation_completed_status = { .name = "status", .descr = "status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_ONU_ACTIVATION_COMPLETED_ID_STATUS, .offset = offsetof(bcmolt_gpon_onu_onu_activation_completed_data, status), .type = &type_descr_bcmolt_result };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_onu_activation_completed_fail_reason = { .name = "fail_reason", .descr = "fail reason", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_ONU_ACTIVATION_COMPLETED_ID_FAIL_REASON, .offset = offsetof(bcmolt_gpon_onu_onu_activation_completed_data, fail_reason), .type = &type_descr_bcmolt_activation_fail_reason };
static bcmcli_prop_descr * BCM_DESCR gpon_onu_onu_activation_completed_prop_array[] = { &prop_descr_gpon_onu_onu_activation_completed_status, &prop_descr_gpon_onu_onu_activation_completed_fail_reason };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_onu_onu_activation_completed_data_fields[] = { { .name = "status", .descr = "status", .offset = offsetof(bcmolt_gpon_onu_onu_activation_completed_data, status), .type = &type_descr_bcmolt_result }, { .name = "fail_reason", .descr = "fail reason", .offset = offsetof(bcmolt_gpon_onu_onu_activation_completed_data, fail_reason), .type = &type_descr_bcmolt_activation_fail_reason } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_onu_activation_completed_data = { .name = "bcmolt_gpon_onu_onu_activation_completed_data", .descr = "ONU Activation Completed", .size = sizeof(bcmolt_gpon_onu_onu_activation_completed_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_onu_onu_activation_completed_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_onu_onu_activation_completed_data_fields } } };

/* Group: gpon_onu - onu_deactivation_completed */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_onu_deactivation_completed_status = { .name = "status", .descr = "status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_ONU_DEACTIVATION_COMPLETED_ID_STATUS, .offset = offsetof(bcmolt_gpon_onu_onu_deactivation_completed_data, status), .type = &type_descr_bcmolt_result };
static bcmcli_prop_descr * BCM_DESCR gpon_onu_onu_deactivation_completed_prop_array[] = { &prop_descr_gpon_onu_onu_deactivation_completed_status };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_onu_onu_deactivation_completed_data_fields[] = { { .name = "status", .descr = "status", .offset = offsetof(bcmolt_gpon_onu_onu_deactivation_completed_data, status), .type = &type_descr_bcmolt_result } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_onu_deactivation_completed_data = { .name = "bcmolt_gpon_onu_onu_deactivation_completed_data", .descr = "ONU Deactivation Completed", .size = sizeof(bcmolt_gpon_onu_onu_deactivation_completed_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_onu_onu_deactivation_completed_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_onu_onu_deactivation_completed_data_fields } } };

/* Group: gpon_onu - onu_enable_completed */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_onu_enable_completed_serial_number = { .name = "serial_number", .descr = "serial number", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_ONU_ENABLE_COMPLETED_ID_SERIAL_NUMBER, .offset = offsetof(bcmolt_gpon_onu_onu_enable_completed_data, serial_number), .type = &type_descr_bcmolt_serial_number };
static bcmcli_prop_descr * BCM_DESCR gpon_onu_onu_enable_completed_prop_array[] = { &prop_descr_gpon_onu_onu_enable_completed_serial_number };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_onu_onu_enable_completed_data_fields[] = { { .name = "serial_number", .descr = "serial number", .offset = offsetof(bcmolt_gpon_onu_onu_enable_completed_data, serial_number), .type = &type_descr_bcmolt_serial_number } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_onu_enable_completed_data = { .name = "bcmolt_gpon_onu_onu_enable_completed_data", .descr = "ONU Enable Completed", .size = sizeof(bcmolt_gpon_onu_onu_enable_completed_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_onu_onu_enable_completed_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_onu_onu_enable_completed_data_fields } } };

/* Group: gpon_onu - onu_disable_completed */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_onu_disable_completed_serial_number = { .name = "serial_number", .descr = "serial number", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_ONU_DISABLE_COMPLETED_ID_SERIAL_NUMBER, .offset = offsetof(bcmolt_gpon_onu_onu_disable_completed_data, serial_number), .type = &type_descr_bcmolt_serial_number };
static bcmcli_prop_descr * BCM_DESCR gpon_onu_onu_disable_completed_prop_array[] = { &prop_descr_gpon_onu_onu_disable_completed_serial_number };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_onu_onu_disable_completed_data_fields[] = { { .name = "serial_number", .descr = "serial number", .offset = offsetof(bcmolt_gpon_onu_onu_disable_completed_data, serial_number), .type = &type_descr_bcmolt_serial_number } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_onu_disable_completed_data = { .name = "bcmolt_gpon_onu_onu_disable_completed_data", .descr = "ONU Disable Completed", .size = sizeof(bcmolt_gpon_onu_onu_disable_completed_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_onu_onu_disable_completed_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_onu_onu_disable_completed_data_fields } } };

/* Group: gpon_onu - invalid_dbru_report */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_invalid_dbru_report_alloc_id = { .name = "alloc_id", .descr = "Alloc-ID", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_INVALID_DBRU_REPORT_ID_ALLOC_ID, .offset = offsetof(bcmolt_gpon_onu_invalid_dbru_report_data, alloc_id), .type = &type_descr_uint16_t };
static bcmcli_prop_descr * BCM_DESCR gpon_onu_invalid_dbru_report_prop_array[] = { &prop_descr_gpon_onu_invalid_dbru_report_alloc_id };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_onu_invalid_dbru_report_data_fields[] = { { .name = "alloc_id", .descr = "Alloc-ID", .offset = offsetof(bcmolt_gpon_onu_invalid_dbru_report_data, alloc_id), .type = &type_descr_uint16_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_invalid_dbru_report_data = { .name = "bcmolt_gpon_onu_invalid_dbru_report_data", .descr = "Invalid DBRu Report", .size = sizeof(bcmolt_gpon_onu_invalid_dbru_report_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_onu_invalid_dbru_report_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_onu_invalid_dbru_report_data_fields } } };

/* Group: gpon_onu - key_exchange_completed */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_key_exchange_completed_new_key = { .name = "new_key", .descr = "new key", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_KEY_EXCHANGE_COMPLETED_ID_NEW_KEY, .offset = offsetof(bcmolt_gpon_onu_key_exchange_completed_data, new_key), .type = &type_descr_bcmolt_aes_key };
static bcmcli_prop_descr * BCM_DESCR gpon_onu_key_exchange_completed_prop_array[] = { &prop_descr_gpon_onu_key_exchange_completed_new_key };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_onu_key_exchange_completed_data_fields[] = { { .name = "new_key", .descr = "new key", .offset = offsetof(bcmolt_gpon_onu_key_exchange_completed_data, new_key), .type = &type_descr_bcmolt_aes_key } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_key_exchange_completed_data = { .name = "bcmolt_gpon_onu_key_exchange_completed_data", .descr = "Key Exchange Completed", .size = sizeof(bcmolt_gpon_onu_key_exchange_completed_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_onu_key_exchange_completed_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_onu_key_exchange_completed_data_fields } } };

/* Group: gpon_onu - key_exchange_key_request_timeout */
static bcmcli_prop_descr * BCM_DESCR gpon_onu_key_exchange_key_request_timeout_prop_array[] = { };

/* Group: gpon_onu - key_exchange_cycle_skipped */
static bcmcli_prop_descr * BCM_DESCR gpon_onu_key_exchange_cycle_skipped_prop_array[] = { };

/* Group: gpon_onu - key_exchange_key_mismatch */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_key_exchange_key_mismatch_expected_key = { .name = "expected_key", .descr = "expected key", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_KEY_EXCHANGE_KEY_MISMATCH_ID_EXPECTED_KEY, .offset = offsetof(bcmolt_gpon_onu_key_exchange_key_mismatch_data, expected_key), .type = &type_descr_bcmolt_aes_key };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_key_exchange_key_mismatch_received_key = { .name = "received_key", .descr = "received key", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_KEY_EXCHANGE_KEY_MISMATCH_ID_RECEIVED_KEY, .offset = offsetof(bcmolt_gpon_onu_key_exchange_key_mismatch_data, received_key), .type = &type_descr_bcmolt_aes_key };
static bcmcli_prop_descr * BCM_DESCR gpon_onu_key_exchange_key_mismatch_prop_array[] = { &prop_descr_gpon_onu_key_exchange_key_mismatch_expected_key, &prop_descr_gpon_onu_key_exchange_key_mismatch_received_key };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_onu_key_exchange_key_mismatch_data_fields[] = { { .name = "expected_key", .descr = "expected key", .offset = offsetof(bcmolt_gpon_onu_key_exchange_key_mismatch_data, expected_key), .type = &type_descr_bcmolt_aes_key }, { .name = "received_key", .descr = "received key", .offset = offsetof(bcmolt_gpon_onu_key_exchange_key_mismatch_data, received_key), .type = &type_descr_bcmolt_aes_key } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_key_exchange_key_mismatch_data = { .name = "bcmolt_gpon_onu_key_exchange_key_mismatch_data", .descr = "Key Exchange Key Mismatch", .size = sizeof(bcmolt_gpon_onu_key_exchange_key_mismatch_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_onu_key_exchange_key_mismatch_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_onu_key_exchange_key_mismatch_data_fields } } };

/* Group: gpon_onu - key_exchange_unconsecutive_index */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_key_exchange_unconsecutive_index_expected_index = { .name = "expected_index", .descr = "expected index", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_KEY_EXCHANGE_UNCONSECUTIVE_INDEX_ID_EXPECTED_INDEX, .offset = offsetof(bcmolt_gpon_onu_key_exchange_unconsecutive_index_data, expected_index), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_key_exchange_unconsecutive_index_actual_index = { .name = "actual_index", .descr = "actual index", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_KEY_EXCHANGE_UNCONSECUTIVE_INDEX_ID_ACTUAL_INDEX, .offset = offsetof(bcmolt_gpon_onu_key_exchange_unconsecutive_index_data, actual_index), .type = &type_descr_uint32_t };
static bcmcli_prop_descr * BCM_DESCR gpon_onu_key_exchange_unconsecutive_index_prop_array[] = { &prop_descr_gpon_onu_key_exchange_unconsecutive_index_expected_index, &prop_descr_gpon_onu_key_exchange_unconsecutive_index_actual_index };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_onu_key_exchange_unconsecutive_index_data_fields[] = { { .name = "expected_index", .descr = "expected index", .offset = offsetof(bcmolt_gpon_onu_key_exchange_unconsecutive_index_data, expected_index), .type = &type_descr_uint32_t }, { .name = "actual_index", .descr = "actual index", .offset = offsetof(bcmolt_gpon_onu_key_exchange_unconsecutive_index_data, actual_index), .type = &type_descr_uint32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_key_exchange_unconsecutive_index_data = { .name = "bcmolt_gpon_onu_key_exchange_unconsecutive_index_data", .descr = "Key Exchange Unconsecutive Index", .size = sizeof(bcmolt_gpon_onu_key_exchange_unconsecutive_index_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_onu_key_exchange_unconsecutive_index_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_onu_key_exchange_unconsecutive_index_data_fields } } };

/* Group: gpon_onu - rssi_measurement_completed */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_rssi_measurement_completed_status = { .name = "status", .descr = "status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_RSSI_MEASUREMENT_COMPLETED_ID_STATUS, .offset = offsetof(bcmolt_gpon_onu_rssi_measurement_completed_data, status), .type = &type_descr_bcmolt_result };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_rssi_measurement_completed_fail_reason = { .name = "fail_reason", .descr = "fail reason", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_RSSI_MEASUREMENT_COMPLETED_ID_FAIL_REASON, .offset = offsetof(bcmolt_gpon_onu_rssi_measurement_completed_data, fail_reason), .type = &type_descr_bcmolt_rssi_measurement_fail_reason };
static bcmcli_prop_descr * BCM_DESCR gpon_onu_rssi_measurement_completed_prop_array[] = { &prop_descr_gpon_onu_rssi_measurement_completed_status, &prop_descr_gpon_onu_rssi_measurement_completed_fail_reason };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_onu_rssi_measurement_completed_data_fields[] = { { .name = "status", .descr = "status", .offset = offsetof(bcmolt_gpon_onu_rssi_measurement_completed_data, status), .type = &type_descr_bcmolt_result }, { .name = "fail_reason", .descr = "fail reason", .offset = offsetof(bcmolt_gpon_onu_rssi_measurement_completed_data, fail_reason), .type = &type_descr_bcmolt_rssi_measurement_fail_reason } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_rssi_measurement_completed_data = { .name = "bcmolt_gpon_onu_rssi_measurement_completed_data", .descr = "RSSI Measurement Completed", .size = sizeof(bcmolt_gpon_onu_rssi_measurement_completed_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_onu_rssi_measurement_completed_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_onu_rssi_measurement_completed_data_fields } } };

/* Group: gpon_onu - key_exchange_decrypt_required */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_key_exchange_decrypt_required_new_key = { .name = "new_key", .descr = "new key", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_KEY_EXCHANGE_DECRYPT_REQUIRED_ID_NEW_KEY, .offset = offsetof(bcmolt_gpon_onu_key_exchange_decrypt_required_data, new_key), .type = &type_descr_bcmolt_aes_key };
static bcmcli_prop_descr * BCM_DESCR gpon_onu_key_exchange_decrypt_required_prop_array[] = { &prop_descr_gpon_onu_key_exchange_decrypt_required_new_key };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_onu_key_exchange_decrypt_required_data_fields[] = { { .name = "new_key", .descr = "new key", .offset = offsetof(bcmolt_gpon_onu_key_exchange_decrypt_required_data, new_key), .type = &type_descr_bcmolt_aes_key } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_key_exchange_decrypt_required_data = { .name = "bcmolt_gpon_onu_key_exchange_decrypt_required_data", .descr = "Key Exchange Decrypt Required", .size = sizeof(bcmolt_gpon_onu_key_exchange_decrypt_required_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_onu_key_exchange_decrypt_required_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_onu_key_exchange_decrypt_required_data_fields } } };

/* Group: gpon_onu - optical_reflection */
static bcmcli_prop_descr * BCM_DESCR gpon_onu_optical_reflection_prop_array[] = { };

/* Group: gpon_onu - cpu_packets */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_cpu_packets_packet_type = { .name = "packet_type", .descr = "packet type", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_CPU_PACKETS_ID_PACKET_TYPE, .offset = offsetof(bcmolt_gpon_onu_cpu_packets_data, packet_type), .type = &type_descr_bcmolt_packet_type };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_cpu_packets_calc_crc = { .name = "calc_crc", .descr = "calc crc", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_CPU_PACKETS_ID_CALC_CRC, .offset = offsetof(bcmolt_gpon_onu_cpu_packets_data, calc_crc), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_cpu_packets_number_of_packets = { .name = "number_of_packets", .descr = "number of packets", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_CPU_PACKETS_ID_NUMBER_OF_PACKETS, .offset = offsetof(bcmolt_gpon_onu_cpu_packets_data, number_of_packets), .type = &type_descr_uint8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_cpu_packets_packet_size = { .name = "packet_size", .descr = "Single packet size", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_CPU_PACKETS_ID_PACKET_SIZE, .offset = offsetof(bcmolt_gpon_onu_cpu_packets_data, packet_size), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_cpu_packets_buffer = { .name = "buffer", .descr = "buffer", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_CPU_PACKETS_ID_BUFFER, .offset = offsetof(bcmolt_gpon_onu_cpu_packets_data, buffer), .type = &type_descr_bcmolt_u8_list_u32_max_2048 };
static bcmcli_prop_descr * BCM_DESCR gpon_onu_cpu_packets_prop_array[] = { &prop_descr_gpon_onu_cpu_packets_packet_type, &prop_descr_gpon_onu_cpu_packets_calc_crc, &prop_descr_gpon_onu_cpu_packets_number_of_packets, &prop_descr_gpon_onu_cpu_packets_packet_size, &prop_descr_gpon_onu_cpu_packets_buffer };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_onu_cpu_packets_data_fields[] = { { .name = "packet_type", .descr = "packet type", .offset = offsetof(bcmolt_gpon_onu_cpu_packets_data, packet_type), .type = &type_descr_bcmolt_packet_type }, { .name = "calc_crc", .descr = "calc crc", .offset = offsetof(bcmolt_gpon_onu_cpu_packets_data, calc_crc), .type = &type_descr_bcmos_bool }, { .name = "number_of_packets", .descr = "number of packets", .offset = offsetof(bcmolt_gpon_onu_cpu_packets_data, number_of_packets), .type = &type_descr_uint8_t }, { .name = "packet_size", .descr = "Single packet size", .offset = offsetof(bcmolt_gpon_onu_cpu_packets_data, packet_size), .type = &type_descr_uint16_t }, { .name = "buffer", .descr = "buffer", .offset = offsetof(bcmolt_gpon_onu_cpu_packets_data, buffer), .type = &type_descr_bcmolt_u8_list_u32_max_2048 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_cpu_packets_data = { .name = "bcmolt_gpon_onu_cpu_packets_data", .descr = "GPON CPU Packets", .size = sizeof(bcmolt_gpon_onu_cpu_packets_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_onu_cpu_packets_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_onu_cpu_packets_data_fields } } };

/* Group: gpon_onu - ploam_packet */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_ploam_packet_ploam = { .name = "ploam", .descr = "ploam", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_PLOAM_PACKET_ID_PLOAM, .offset = offsetof(bcmolt_gpon_onu_ploam_packet_data, ploam), .type = &type_descr_bcmolt_arr_u8_12 };
static bcmcli_prop_descr * BCM_DESCR gpon_onu_ploam_packet_prop_array[] = { &prop_descr_gpon_onu_ploam_packet_ploam };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_onu_ploam_packet_data_fields[] = { { .name = "ploam", .descr = "ploam", .offset = offsetof(bcmolt_gpon_onu_ploam_packet_data, ploam), .type = &type_descr_bcmolt_arr_u8_12 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_ploam_packet_data = { .name = "bcmolt_gpon_onu_ploam_packet_data", .descr = "PLOAM Packet", .size = sizeof(bcmolt_gpon_onu_ploam_packet_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_onu_ploam_packet_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_onu_ploam_packet_data_fields } } };

/* Group: gpon_onu - cpu_packet */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_cpu_packet_port_id = { .name = "port_id", .descr = "port_id", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_CPU_PACKET_ID_PORT_ID, .offset = offsetof(bcmolt_gpon_onu_cpu_packet_data, port_id), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_cpu_packet_crc_ok = { .name = "crc_ok", .descr = "crc_ok", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_CPU_PACKET_ID_CRC_OK, .offset = offsetof(bcmolt_gpon_onu_cpu_packet_data, crc_ok), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_cpu_packet_packet_size = { .name = "packet_size", .descr = "packet_size", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_CPU_PACKET_ID_PACKET_SIZE, .offset = offsetof(bcmolt_gpon_onu_cpu_packet_data, packet_size), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_cpu_packet_buffer = { .name = "buffer", .descr = "buffer", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_CPU_PACKET_ID_BUFFER, .offset = offsetof(bcmolt_gpon_onu_cpu_packet_data, buffer), .type = &type_descr_bcmolt_u8_list_u32 };
static bcmcli_prop_descr * BCM_DESCR gpon_onu_cpu_packet_prop_array[] = { &prop_descr_gpon_onu_cpu_packet_port_id, &prop_descr_gpon_onu_cpu_packet_crc_ok, &prop_descr_gpon_onu_cpu_packet_packet_size, &prop_descr_gpon_onu_cpu_packet_buffer };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_onu_cpu_packet_data_fields[] = { { .name = "port_id", .descr = "port_id", .offset = offsetof(bcmolt_gpon_onu_cpu_packet_data, port_id), .type = &type_descr_uint16_t }, { .name = "crc_ok", .descr = "crc_ok", .offset = offsetof(bcmolt_gpon_onu_cpu_packet_data, crc_ok), .type = &type_descr_bcmos_bool }, { .name = "packet_size", .descr = "packet_size", .offset = offsetof(bcmolt_gpon_onu_cpu_packet_data, packet_size), .type = &type_descr_uint32_t }, { .name = "buffer", .descr = "buffer", .offset = offsetof(bcmolt_gpon_onu_cpu_packet_data, buffer), .type = &type_descr_bcmolt_u8_list_u32 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_cpu_packet_data = { .name = "bcmolt_gpon_onu_cpu_packet_data", .descr = "Indicates CPU packet was received on the US from this ONU id", .size = sizeof(bcmolt_gpon_onu_cpu_packet_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_onu_cpu_packet_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_onu_cpu_packet_data_fields } } };

/* Group: gpon_onu - omci_packet */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_omci_packet_port_id = { .name = "port_id", .descr = "port_id", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_OMCI_PACKET_ID_PORT_ID, .offset = offsetof(bcmolt_gpon_onu_omci_packet_data, port_id), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_omci_packet_crc_ok = { .name = "crc_ok", .descr = "crc_ok", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_OMCI_PACKET_ID_CRC_OK, .offset = offsetof(bcmolt_gpon_onu_omci_packet_data, crc_ok), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_omci_packet_packet_size = { .name = "packet_size", .descr = "packet_size", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_OMCI_PACKET_ID_PACKET_SIZE, .offset = offsetof(bcmolt_gpon_onu_omci_packet_data, packet_size), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_omci_packet_buffer = { .name = "buffer", .descr = "buffer", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_OMCI_PACKET_ID_BUFFER, .offset = offsetof(bcmolt_gpon_onu_omci_packet_data, buffer), .type = &type_descr_bcmolt_u8_list_u32 };
static bcmcli_prop_descr * BCM_DESCR gpon_onu_omci_packet_prop_array[] = { &prop_descr_gpon_onu_omci_packet_port_id, &prop_descr_gpon_onu_omci_packet_crc_ok, &prop_descr_gpon_onu_omci_packet_packet_size, &prop_descr_gpon_onu_omci_packet_buffer };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_onu_omci_packet_data_fields[] = { { .name = "port_id", .descr = "port_id", .offset = offsetof(bcmolt_gpon_onu_omci_packet_data, port_id), .type = &type_descr_uint16_t }, { .name = "crc_ok", .descr = "crc_ok", .offset = offsetof(bcmolt_gpon_onu_omci_packet_data, crc_ok), .type = &type_descr_bcmos_bool }, { .name = "packet_size", .descr = "packet_size", .offset = offsetof(bcmolt_gpon_onu_omci_packet_data, packet_size), .type = &type_descr_uint32_t }, { .name = "buffer", .descr = "buffer", .offset = offsetof(bcmolt_gpon_onu_omci_packet_data, buffer), .type = &type_descr_bcmolt_u8_list_u32 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_omci_packet_data = { .name = "bcmolt_gpon_onu_omci_packet_data", .descr = "Indicates OMCI packet was received on the US from this ONU id", .size = sizeof(bcmolt_gpon_onu_omci_packet_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_onu_omci_packet_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_onu_omci_packet_data_fields } } };

/* Group: gpon_onu - onu_activation_standby_completed */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_onu_activation_standby_completed_result = { .name = "result", .descr = "result", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_ONU_ACTIVATION_STANDBY_COMPLETED_ID_RESULT, .offset = offsetof(bcmolt_gpon_onu_onu_activation_standby_completed_data, result), .type = &type_descr_bcmolt_result };
static bcmcli_prop_descr * BCM_DESCR gpon_onu_onu_activation_standby_completed_prop_array[] = { &prop_descr_gpon_onu_onu_activation_standby_completed_result };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_onu_onu_activation_standby_completed_data_fields[] = { { .name = "result", .descr = "result", .offset = offsetof(bcmolt_gpon_onu_onu_activation_standby_completed_data, result), .type = &type_descr_bcmolt_result } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_onu_activation_standby_completed_data = { .name = "bcmolt_gpon_onu_onu_activation_standby_completed_data", .descr = "onu activation standby completed", .size = sizeof(bcmolt_gpon_onu_onu_activation_standby_completed_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_onu_onu_activation_standby_completed_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_onu_onu_activation_standby_completed_data_fields } } };

/* Group: gpon_onu - power_management_state_change */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_power_management_state_change_old_state = { .name = "old_state", .descr = "The state the ONU was previously in.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_POWER_MANAGEMENT_STATE_CHANGE_ID_OLD_STATE, .offset = offsetof(bcmolt_gpon_onu_power_management_state_change_data, old_state), .type = &type_descr_bcmolt_onu_state };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_power_management_state_change_new_state = { .name = "new_state", .descr = "The state the ONU is currently in.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_POWER_MANAGEMENT_STATE_CHANGE_ID_NEW_STATE, .offset = offsetof(bcmolt_gpon_onu_power_management_state_change_data, new_state), .type = &type_descr_bcmolt_onu_state };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_power_management_state_change_reason = { .name = "reason", .descr = "The reason for the state change.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_POWER_MANAGEMENT_STATE_CHANGE_ID_REASON, .offset = offsetof(bcmolt_gpon_onu_power_management_state_change_data, reason), .type = &type_descr_bcmolt_power_management_transition_reason };
static bcmcli_prop_descr * BCM_DESCR gpon_onu_power_management_state_change_prop_array[] = { &prop_descr_gpon_onu_power_management_state_change_old_state, &prop_descr_gpon_onu_power_management_state_change_new_state, &prop_descr_gpon_onu_power_management_state_change_reason };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_onu_power_management_state_change_data_fields[] = { { .name = "old_state", .descr = "The state the ONU was previously in.", .offset = offsetof(bcmolt_gpon_onu_power_management_state_change_data, old_state), .type = &type_descr_bcmolt_onu_state }, { .name = "new_state", .descr = "The state the ONU is currently in.", .offset = offsetof(bcmolt_gpon_onu_power_management_state_change_data, new_state), .type = &type_descr_bcmolt_onu_state }, { .name = "reason", .descr = "The reason for the state change.", .offset = offsetof(bcmolt_gpon_onu_power_management_state_change_data, reason), .type = &type_descr_bcmolt_power_management_transition_reason } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_power_management_state_change_data = { .name = "bcmolt_gpon_onu_power_management_state_change_data", .descr = "Notification that an ONUs power management state has changed.", .size = sizeof(bcmolt_gpon_onu_power_management_state_change_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_onu_power_management_state_change_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_onu_power_management_state_change_data_fields } } };

/* Group: gpon_onu - possible_drift */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_possible_drift_alarm_status = { .name = "alarm_status", .descr = "Alarm Status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_POSSIBLE_DRIFT_ID_ALARM_STATUS, .offset = offsetof(bcmolt_gpon_onu_possible_drift_data, alarm_status), .type = &type_descr_bcmolt_status };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_possible_drift_estimated_drift = { .name = "estimated_drift", .descr = "If status is on, the estimated drift value, otherwise zero (0).", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_POSSIBLE_DRIFT_ID_ESTIMATED_DRIFT, .offset = offsetof(bcmolt_gpon_onu_possible_drift_data, estimated_drift), .type = &type_descr_int32_t };
static bcmcli_prop_descr * BCM_DESCR gpon_onu_possible_drift_prop_array[] = { &prop_descr_gpon_onu_possible_drift_alarm_status, &prop_descr_gpon_onu_possible_drift_estimated_drift };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_onu_possible_drift_data_fields[] = { { .name = "alarm_status", .descr = "Alarm Status", .offset = offsetof(bcmolt_gpon_onu_possible_drift_data, alarm_status), .type = &type_descr_bcmolt_status }, { .name = "estimated_drift", .descr = "If status is on, the estimated drift value, otherwise zero (0).", .offset = offsetof(bcmolt_gpon_onu_possible_drift_data, estimated_drift), .type = &type_descr_int32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_possible_drift_data = { .name = "bcmolt_gpon_onu_possible_drift_data", .descr = "An ONU in a low power state may be experiencing drift beyond the configured threshold. The estimate may be inaccurate depending on ONU behavior. Actual drift may be less than estimated.", .size = sizeof(bcmolt_gpon_onu_possible_drift_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_onu_possible_drift_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_onu_possible_drift_data_fields } } };

/* Group: gpon_onu - stat_cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_stat_cfg_cfg = { .name = "cfg", .descr = "Statistic alarm configuration.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_STAT_CFG_ID_CFG, .offset = offsetof(bcmolt_gpon_onu_stat_cfg_data, cfg), .type = &type_descr_bcmolt_stat_alarm_config };
static bcmcli_prop_descr * BCM_DESCR gpon_onu_stat_cfg_prop_array[] = { &prop_descr_gpon_onu_stat_cfg_cfg };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_onu_stat_cfg_data_fields[] = { { .name = "cfg", .descr = "Statistic alarm configuration.", .offset = offsetof(bcmolt_gpon_onu_stat_cfg_data, cfg), .type = &type_descr_bcmolt_stat_alarm_config } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_stat_cfg_data = { .name = "bcmolt_gpon_onu_stat_cfg_data", .descr = "Statistic Configuration", .size = sizeof(bcmolt_gpon_onu_stat_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_onu_stat_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_onu_stat_cfg_data_fields } } };

/* Group: gpon_onu - stat_alarm_raised */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_stat_alarm_raised_stat = { .name = "stat", .descr = "Statistic identifier.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_STAT_ALARM_RAISED_ID_STAT, .offset = offsetof(bcmolt_gpon_onu_stat_alarm_raised_data, stat), .type = &type_descr_bcmolt_gpon_onu_stat_id };
static bcmcli_prop_descr * BCM_DESCR gpon_onu_stat_alarm_raised_prop_array[] = { &prop_descr_gpon_onu_stat_alarm_raised_stat };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_onu_stat_alarm_raised_data_fields[] = { { .name = "stat", .descr = "Statistic identifier.", .offset = offsetof(bcmolt_gpon_onu_stat_alarm_raised_data, stat), .type = &type_descr_bcmolt_gpon_onu_stat_id } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_stat_alarm_raised_data = { .name = "bcmolt_gpon_onu_stat_alarm_raised_data", .descr = "Sent when a configured statistic alarm condition has been met.", .size = sizeof(bcmolt_gpon_onu_stat_alarm_raised_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_onu_stat_alarm_raised_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_onu_stat_alarm_raised_data_fields } } };

/* Group: gpon_onu - stat_alarm_cleared */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_stat_alarm_cleared_stat = { .name = "stat", .descr = "Statistic identifier.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_STAT_ALARM_CLEARED_ID_STAT, .offset = offsetof(bcmolt_gpon_onu_stat_alarm_cleared_data, stat), .type = &type_descr_bcmolt_gpon_onu_stat_id };
static bcmcli_prop_descr * BCM_DESCR gpon_onu_stat_alarm_cleared_prop_array[] = { &prop_descr_gpon_onu_stat_alarm_cleared_stat };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_onu_stat_alarm_cleared_data_fields[] = { { .name = "stat", .descr = "Statistic identifier.", .offset = offsetof(bcmolt_gpon_onu_stat_alarm_cleared_data, stat), .type = &type_descr_bcmolt_gpon_onu_stat_id } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_stat_alarm_cleared_data = { .name = "bcmolt_gpon_onu_stat_alarm_cleared_data", .descr = "Sent when a configured statistic alarm condition is no longer met.", .size = sizeof(bcmolt_gpon_onu_stat_alarm_cleared_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_onu_stat_alarm_cleared_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_onu_stat_alarm_cleared_data_fields } } };

/* Group: gpon_onu - auto_cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_auto_cfg_ber_interval_configuration_completed = { .name = "ber_interval_configuration_completed", .descr = "If true, indications of type \"ber_interval_configuration_completed\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_AUTO_CFG_ID_BER_INTERVAL_CONFIGURATION_COMPLETED, .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, ber_interval_configuration_completed), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_auto_cfg_dfi = { .name = "dfi", .descr = "If true, indications of type \"dfi\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_AUTO_CFG_ID_DFI, .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, dfi), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_auto_cfg_dgi = { .name = "dgi", .descr = "If true, indications of type \"dgi\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_AUTO_CFG_ID_DGI, .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, dgi), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_auto_cfg_dowi = { .name = "dowi", .descr = "If true, indications of type \"dowi\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_AUTO_CFG_ID_DOWI, .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, dowi), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_auto_cfg_err = { .name = "err", .descr = "If true, indications of type \"err\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_AUTO_CFG_ID_ERR, .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, err), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_auto_cfg_invalid_dbru_report = { .name = "invalid_dbru_report", .descr = "If true, indications of type \"invalid_dbru_report\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_AUTO_CFG_ID_INVALID_DBRU_REPORT, .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, invalid_dbru_report), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_auto_cfg_key_exchange_completed = { .name = "key_exchange_completed", .descr = "If true, indications of type \"key_exchange_completed\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_AUTO_CFG_ID_KEY_EXCHANGE_COMPLETED, .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, key_exchange_completed), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_auto_cfg_key_exchange_cycle_skipped = { .name = "key_exchange_cycle_skipped", .descr = "If true, indications of type \"key_exchange_cycle_skipped\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_AUTO_CFG_ID_KEY_EXCHANGE_CYCLE_SKIPPED, .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, key_exchange_cycle_skipped), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_auto_cfg_key_exchange_decrypt_required = { .name = "key_exchange_decrypt_required", .descr = "If true, indications of type \"key_exchange_decrypt_required\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_AUTO_CFG_ID_KEY_EXCHANGE_DECRYPT_REQUIRED, .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, key_exchange_decrypt_required), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_auto_cfg_key_exchange_key_mismatch = { .name = "key_exchange_key_mismatch", .descr = "If true, indications of type \"key_exchange_key_mismatch\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_AUTO_CFG_ID_KEY_EXCHANGE_KEY_MISMATCH, .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, key_exchange_key_mismatch), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_auto_cfg_key_exchange_key_request_timeout = { .name = "key_exchange_key_request_timeout", .descr = "If true, indications of type \"key_exchange_key_request_timeout\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_AUTO_CFG_ID_KEY_EXCHANGE_KEY_REQUEST_TIMEOUT, .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, key_exchange_key_request_timeout), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_auto_cfg_key_exchange_unconsecutive_index = { .name = "key_exchange_unconsecutive_index", .descr = "If true, indications of type \"key_exchange_unconsecutive_index\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_AUTO_CFG_ID_KEY_EXCHANGE_UNCONSECUTIVE_INDEX, .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, key_exchange_unconsecutive_index), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_auto_cfg_loai = { .name = "loai", .descr = "If true, indications of type \"loai\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_AUTO_CFG_ID_LOAI, .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, loai), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_auto_cfg_loki = { .name = "loki", .descr = "If true, indications of type \"loki\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_AUTO_CFG_ID_LOKI, .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, loki), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_auto_cfg_memi = { .name = "memi", .descr = "If true, indications of type \"memi\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_AUTO_CFG_ID_MEMI, .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, memi), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_auto_cfg_omci_port_id_configuration_completed = { .name = "omci_port_id_configuration_completed", .descr = "If true, indications of type \"omci_port_id_configuration_completed\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_AUTO_CFG_ID_OMCI_PORT_ID_CONFIGURATION_COMPLETED, .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, omci_port_id_configuration_completed), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_auto_cfg_onu_activation_completed = { .name = "onu_activation_completed", .descr = "If true, indications of type \"onu_activation_completed\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_AUTO_CFG_ID_ONU_ACTIVATION_COMPLETED, .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, onu_activation_completed), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_auto_cfg_onu_activation_standby_completed = { .name = "onu_activation_standby_completed", .descr = "If true, indications of type \"onu_activation_standby_completed\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_AUTO_CFG_ID_ONU_ACTIVATION_STANDBY_COMPLETED, .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, onu_activation_standby_completed), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_auto_cfg_onu_alarm = { .name = "onu_alarm", .descr = "If true, indications of type \"onu_alarm\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_AUTO_CFG_ID_ONU_ALARM, .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, onu_alarm), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_auto_cfg_onu_deactivation_completed = { .name = "onu_deactivation_completed", .descr = "If true, indications of type \"onu_deactivation_completed\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_AUTO_CFG_ID_ONU_DEACTIVATION_COMPLETED, .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, onu_deactivation_completed), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_auto_cfg_onu_disable_completed = { .name = "onu_disable_completed", .descr = "If true, indications of type \"onu_disable_completed\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_AUTO_CFG_ID_ONU_DISABLE_COMPLETED, .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, onu_disable_completed), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_auto_cfg_onu_enable_completed = { .name = "onu_enable_completed", .descr = "If true, indications of type \"onu_enable_completed\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_AUTO_CFG_ID_ONU_ENABLE_COMPLETED, .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, onu_enable_completed), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_auto_cfg_optical_reflection = { .name = "optical_reflection", .descr = "If true, indications of type \"optical_reflection\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_AUTO_CFG_ID_OPTICAL_REFLECTION, .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, optical_reflection), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_auto_cfg_password_authentication_completed = { .name = "password_authentication_completed", .descr = "If true, indications of type \"password_authentication_completed\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_AUTO_CFG_ID_PASSWORD_AUTHENTICATION_COMPLETED, .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, password_authentication_completed), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_auto_cfg_pee = { .name = "pee", .descr = "If true, indications of type \"pee\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_AUTO_CFG_ID_PEE, .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, pee), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_auto_cfg_possible_drift = { .name = "possible_drift", .descr = "If true, indications of type \"possible_drift\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_AUTO_CFG_ID_POSSIBLE_DRIFT, .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, possible_drift), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_auto_cfg_power_management_state_change = { .name = "power_management_state_change", .descr = "If true, indications of type \"power_management_state_change\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_AUTO_CFG_ID_POWER_MANAGEMENT_STATE_CHANGE, .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, power_management_state_change), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_auto_cfg_pst = { .name = "pst", .descr = "If true, indications of type \"pst\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_AUTO_CFG_ID_PST, .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, pst), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_auto_cfg_ranging_completed = { .name = "ranging_completed", .descr = "If true, indications of type \"ranging_completed\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_AUTO_CFG_ID_RANGING_COMPLETED, .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, ranging_completed), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_auto_cfg_rei = { .name = "rei", .descr = "If true, indications of type \"rei\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_AUTO_CFG_ID_REI, .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, rei), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_auto_cfg_rssi_measurement_completed = { .name = "rssi_measurement_completed", .descr = "If true, indications of type \"rssi_measurement_completed\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_AUTO_CFG_ID_RSSI_MEASUREMENT_COMPLETED, .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, rssi_measurement_completed), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_auto_cfg_sdi = { .name = "sdi", .descr = "If true, indications of type \"sdi\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_AUTO_CFG_ID_SDI, .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, sdi), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_auto_cfg_sfi = { .name = "sfi", .descr = "If true, indications of type \"sfi\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_AUTO_CFG_ID_SFI, .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, sfi), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_auto_cfg_stat_alarm_cleared = { .name = "stat_alarm_cleared", .descr = "If true, indications of type \"stat_alarm_cleared\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_AUTO_CFG_ID_STAT_ALARM_CLEARED, .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, stat_alarm_cleared), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_auto_cfg_stat_alarm_raised = { .name = "stat_alarm_raised", .descr = "If true, indications of type \"stat_alarm_raised\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_AUTO_CFG_ID_STAT_ALARM_RAISED, .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, stat_alarm_raised), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_auto_cfg_sufi = { .name = "sufi", .descr = "If true, indications of type \"sufi\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_AUTO_CFG_ID_SUFI, .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, sufi), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_onu_auto_cfg_tiwi = { .name = "tiwi", .descr = "If true, indications of type \"tiwi\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_ONU_AUTO_CFG_ID_TIWI, .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, tiwi), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr * BCM_DESCR gpon_onu_auto_cfg_prop_array[] = { &prop_descr_gpon_onu_auto_cfg_ber_interval_configuration_completed, &prop_descr_gpon_onu_auto_cfg_dfi, &prop_descr_gpon_onu_auto_cfg_dgi, &prop_descr_gpon_onu_auto_cfg_dowi, &prop_descr_gpon_onu_auto_cfg_err, &prop_descr_gpon_onu_auto_cfg_invalid_dbru_report, &prop_descr_gpon_onu_auto_cfg_key_exchange_completed, &prop_descr_gpon_onu_auto_cfg_key_exchange_cycle_skipped, &prop_descr_gpon_onu_auto_cfg_key_exchange_decrypt_required, &prop_descr_gpon_onu_auto_cfg_key_exchange_key_mismatch, &prop_descr_gpon_onu_auto_cfg_key_exchange_key_request_timeout, &prop_descr_gpon_onu_auto_cfg_key_exchange_unconsecutive_index, &prop_descr_gpon_onu_auto_cfg_loai, &prop_descr_gpon_onu_auto_cfg_loki, &prop_descr_gpon_onu_auto_cfg_memi, &prop_descr_gpon_onu_auto_cfg_omci_port_id_configuration_completed, &prop_descr_gpon_onu_auto_cfg_onu_activation_completed, &prop_descr_gpon_onu_auto_cfg_onu_activation_standby_completed, &prop_descr_gpon_onu_auto_cfg_onu_alarm, &prop_descr_gpon_onu_auto_cfg_onu_deactivation_completed, &prop_descr_gpon_onu_auto_cfg_onu_disable_completed, &prop_descr_gpon_onu_auto_cfg_onu_enable_completed, &prop_descr_gpon_onu_auto_cfg_optical_reflection, &prop_descr_gpon_onu_auto_cfg_password_authentication_completed, &prop_descr_gpon_onu_auto_cfg_pee, &prop_descr_gpon_onu_auto_cfg_possible_drift, &prop_descr_gpon_onu_auto_cfg_power_management_state_change, &prop_descr_gpon_onu_auto_cfg_pst, &prop_descr_gpon_onu_auto_cfg_ranging_completed, &prop_descr_gpon_onu_auto_cfg_rei, &prop_descr_gpon_onu_auto_cfg_rssi_measurement_completed, &prop_descr_gpon_onu_auto_cfg_sdi, &prop_descr_gpon_onu_auto_cfg_sfi, &prop_descr_gpon_onu_auto_cfg_stat_alarm_cleared, &prop_descr_gpon_onu_auto_cfg_stat_alarm_raised, &prop_descr_gpon_onu_auto_cfg_sufi, &prop_descr_gpon_onu_auto_cfg_tiwi };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_onu_auto_cfg_data_fields[] = { { .name = "ber_interval_configuration_completed", .descr = "If true, indications of type \"ber_interval_configuration_completed\" will be generated.", .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, ber_interval_configuration_completed), .type = &type_descr_bcmos_bool }, { .name = "dfi", .descr = "If true, indications of type \"dfi\" will be generated.", .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, dfi), .type = &type_descr_bcmos_bool }, { .name = "dgi", .descr = "If true, indications of type \"dgi\" will be generated.", .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, dgi), .type = &type_descr_bcmos_bool }, { .name = "dowi", .descr = "If true, indications of type \"dowi\" will be generated.", .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, dowi), .type = &type_descr_bcmos_bool }, { .name = "err", .descr = "If true, indications of type \"err\" will be generated.", .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, err), .type = &type_descr_bcmos_bool }, { .name = "invalid_dbru_report", .descr = "If true, indications of type \"invalid_dbru_report\" will be generated.", .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, invalid_dbru_report), .type = &type_descr_bcmos_bool }, { .name = "key_exchange_completed", .descr = "If true, indications of type \"key_exchange_completed\" will be generated.", .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, key_exchange_completed), .type = &type_descr_bcmos_bool }, { .name = "key_exchange_cycle_skipped", .descr = "If true, indications of type \"key_exchange_cycle_skipped\" will be generated.", .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, key_exchange_cycle_skipped), .type = &type_descr_bcmos_bool }, { .name = "key_exchange_decrypt_required", .descr = "If true, indications of type \"key_exchange_decrypt_required\" will be generated.", .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, key_exchange_decrypt_required), .type = &type_descr_bcmos_bool }, { .name = "key_exchange_key_mismatch", .descr = "If true, indications of type \"key_exchange_key_mismatch\" will be generated.", .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, key_exchange_key_mismatch), .type = &type_descr_bcmos_bool }, { .name = "key_exchange_key_request_timeout", .descr = "If true, indications of type \"key_exchange_key_request_timeout\" will be generated.", .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, key_exchange_key_request_timeout), .type = &type_descr_bcmos_bool }, { .name = "key_exchange_unconsecutive_index", .descr = "If true, indications of type \"key_exchange_unconsecutive_index\" will be generated.", .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, key_exchange_unconsecutive_index), .type = &type_descr_bcmos_bool }, { .name = "loai", .descr = "If true, indications of type \"loai\" will be generated.", .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, loai), .type = &type_descr_bcmos_bool }, { .name = "loki", .descr = "If true, indications of type \"loki\" will be generated.", .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, loki), .type = &type_descr_bcmos_bool }, { .name = "memi", .descr = "If true, indications of type \"memi\" will be generated.", .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, memi), .type = &type_descr_bcmos_bool }, { .name = "omci_port_id_configuration_completed", .descr = "If true, indications of type \"omci_port_id_configuration_completed\" will be generated.", .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, omci_port_id_configuration_completed), .type = &type_descr_bcmos_bool }, { .name = "onu_activation_completed", .descr = "If true, indications of type \"onu_activation_completed\" will be generated.", .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, onu_activation_completed), .type = &type_descr_bcmos_bool }, { .name = "onu_activation_standby_completed", .descr = "If true, indications of type \"onu_activation_standby_completed\" will be generated.", .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, onu_activation_standby_completed), .type = &type_descr_bcmos_bool }, { .name = "onu_alarm", .descr = "If true, indications of type \"onu_alarm\" will be generated.", .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, onu_alarm), .type = &type_descr_bcmos_bool }, { .name = "onu_deactivation_completed", .descr = "If true, indications of type \"onu_deactivation_completed\" will be generated.", .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, onu_deactivation_completed), .type = &type_descr_bcmos_bool }, { .name = "onu_disable_completed", .descr = "If true, indications of type \"onu_disable_completed\" will be generated.", .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, onu_disable_completed), .type = &type_descr_bcmos_bool }, { .name = "onu_enable_completed", .descr = "If true, indications of type \"onu_enable_completed\" will be generated.", .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, onu_enable_completed), .type = &type_descr_bcmos_bool }, { .name = "optical_reflection", .descr = "If true, indications of type \"optical_reflection\" will be generated.", .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, optical_reflection), .type = &type_descr_bcmos_bool }, { .name = "password_authentication_completed", .descr = "If true, indications of type \"password_authentication_completed\" will be generated.", .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, password_authentication_completed), .type = &type_descr_bcmos_bool }, { .name = "pee", .descr = "If true, indications of type \"pee\" will be generated.", .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, pee), .type = &type_descr_bcmos_bool }, { .name = "possible_drift", .descr = "If true, indications of type \"possible_drift\" will be generated.", .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, possible_drift), .type = &type_descr_bcmos_bool }, { .name = "power_management_state_change", .descr = "If true, indications of type \"power_management_state_change\" will be generated.", .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, power_management_state_change), .type = &type_descr_bcmos_bool }, { .name = "pst", .descr = "If true, indications of type \"pst\" will be generated.", .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, pst), .type = &type_descr_bcmos_bool }, { .name = "ranging_completed", .descr = "If true, indications of type \"ranging_completed\" will be generated.", .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, ranging_completed), .type = &type_descr_bcmos_bool }, { .name = "rei", .descr = "If true, indications of type \"rei\" will be generated.", .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, rei), .type = &type_descr_bcmos_bool }, { .name = "rssi_measurement_completed", .descr = "If true, indications of type \"rssi_measurement_completed\" will be generated.", .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, rssi_measurement_completed), .type = &type_descr_bcmos_bool }, { .name = "sdi", .descr = "If true, indications of type \"sdi\" will be generated.", .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, sdi), .type = &type_descr_bcmos_bool }, { .name = "sfi", .descr = "If true, indications of type \"sfi\" will be generated.", .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, sfi), .type = &type_descr_bcmos_bool }, { .name = "stat_alarm_cleared", .descr = "If true, indications of type \"stat_alarm_cleared\" will be generated.", .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, stat_alarm_cleared), .type = &type_descr_bcmos_bool }, { .name = "stat_alarm_raised", .descr = "If true, indications of type \"stat_alarm_raised\" will be generated.", .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, stat_alarm_raised), .type = &type_descr_bcmos_bool }, { .name = "sufi", .descr = "If true, indications of type \"sufi\" will be generated.", .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, sufi), .type = &type_descr_bcmos_bool }, { .name = "tiwi", .descr = "If true, indications of type \"tiwi\" will be generated.", .offset = offsetof(bcmolt_gpon_onu_auto_cfg_data, tiwi), .type = &type_descr_bcmos_bool } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_onu_auto_cfg_data = { .name = "bcmolt_gpon_onu_auto_cfg_data", .descr = "Indication Configuration", .size = sizeof(bcmolt_gpon_onu_auto_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_onu_auto_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_onu_auto_cfg_data_fields } } };

/* ==== Object: gpon_trx ==== */

/* Group: gpon_trx - key */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_trx_key_pon_ni = { .name = "pon_ni", .descr = "PON network interface", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_TRX_KEY_ID_PON_NI, .offset = offsetof(bcmolt_gpon_trx_key, pon_ni), .type = &type_descr_uint8_t };
static bcmcli_prop_descr * BCM_DESCR gpon_trx_key_prop_array[] = { &prop_descr_gpon_trx_key_pon_ni };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_trx_key_fields[] = { { .name = "pon_ni", .descr = "PON network interface", .offset = offsetof(bcmolt_gpon_trx_key, pon_ni), .type = &type_descr_uint8_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_trx_key = { .name = "bcmolt_gpon_trx_key", .descr = "key", .size = sizeof(bcmolt_gpon_trx_key), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_trx_key_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_trx_key_fields } } };

/* Group: gpon_trx - cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_trx_cfg_transceiver_type = { .name = "transceiver_type", .descr = "transceiver type", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_TRX_CFG_ID_TRANSCEIVER_TYPE, .offset = offsetof(bcmolt_gpon_trx_cfg_data, transceiver_type), .type = &type_descr_bcmolt_trx_type };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_trx_cfg_la_configuration = { .name = "la_configuration", .descr = "LA configuration", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_TRX_CFG_ID_LA_CONFIGURATION, .offset = offsetof(bcmolt_gpon_trx_cfg_data, la_configuration), .type = &type_descr_bcmolt_la_resync_pattern_configuration };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_trx_cfg_bcdr = { .name = "bcdr", .descr = "BCDR", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_TRX_CFG_ID_BCDR, .offset = offsetof(bcmolt_gpon_trx_cfg_data, bcdr), .type = &type_descr_bcmolt_bcdr_resync_pattern_configuration };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_trx_cfg_la_ranging_after_no_ed_resync = { .name = "la_ranging_after_no_ed_resync", .descr = "LA ranging after no ed resync ", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_TRX_CFG_ID_LA_RANGING_AFTER_NO_ED_RESYNC, .offset = offsetof(bcmolt_gpon_trx_cfg_data, la_ranging_after_no_ed_resync), .type = &type_descr_bcmolt_resync_control };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_trx_cfg_bcdr_ranging_after_no_ed_resync = { .name = "bcdr_ranging_after_no_ed_resync", .descr = "used in ranging mode after no ed found", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_TRX_CFG_ID_BCDR_RANGING_AFTER_NO_ED_RESYNC, .offset = offsetof(bcmolt_gpon_trx_cfg_data, bcdr_ranging_after_no_ed_resync), .type = &type_descr_bcmolt_resync_control };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_trx_cfg_la_ranging_after_ed_resync = { .name = "la_ranging_after_ed_resync", .descr = "LA ranging after ed resync ", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_TRX_CFG_ID_LA_RANGING_AFTER_ED_RESYNC, .offset = offsetof(bcmolt_gpon_trx_cfg_data, la_ranging_after_ed_resync), .type = &type_descr_bcmolt_resync_control };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_trx_cfg_bcdr_ranging_after_ed_resync = { .name = "bcdr_ranging_after_ed_resync", .descr = "BCDR ranging after ed resync", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_TRX_CFG_ID_BCDR_RANGING_AFTER_ED_RESYNC, .offset = offsetof(bcmolt_gpon_trx_cfg_data, bcdr_ranging_after_ed_resync), .type = &type_descr_bcmolt_resync_control };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_trx_cfg_la_resync_polarity = { .name = "la_resync_polarity", .descr = "la resync polarity", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_TRX_CFG_ID_LA_RESYNC_POLARITY, .offset = offsetof(bcmolt_gpon_trx_cfg_data, la_resync_polarity), .type = &type_descr_bcmolt_polarity };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_trx_cfg_bcdr_resync_polarity = { .name = "bcdr_resync_polarity", .descr = "BCDR resync polarity", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_TRX_CFG_ID_BCDR_RESYNC_POLARITY, .offset = offsetof(bcmolt_gpon_trx_cfg_data, bcdr_resync_polarity), .type = &type_descr_bcmolt_polarity };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_trx_cfg_bcdr_ranging_resync_conditions = { .name = "bcdr_ranging_resync_conditions", .descr = "bcdr ranging resync conditions", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_TRX_CFG_ID_BCDR_RANGING_RESYNC_CONDITIONS, .offset = offsetof(bcmolt_gpon_trx_cfg_data, bcdr_ranging_resync_conditions), .type = &type_descr_bcmolt_ranging_resync_conditions };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_trx_cfg_la_ranging_resync_conditions = { .name = "la_ranging_resync_conditions", .descr = "la ranging resync conditions", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_TRX_CFG_ID_LA_RANGING_RESYNC_CONDITIONS, .offset = offsetof(bcmolt_gpon_trx_cfg_data, la_ranging_resync_conditions), .type = &type_descr_bcmolt_ranging_resync_conditions };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_trx_cfg_rx_configuration = { .name = "rx_configuration", .descr = "RX configuration", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_TRX_CFG_ID_RX_CONFIGURATION, .offset = offsetof(bcmolt_gpon_trx_cfg_data, rx_configuration), .type = &type_descr_bcmolt_trx_rx_configuration };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_trx_cfg_ranging_control_stages_configuration = { .name = "ranging_control_stages_configuration", .descr = "ranging control stages configuration", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_TRX_CFG_ID_RANGING_CONTROL_STAGES_CONFIGURATION, .offset = offsetof(bcmolt_gpon_trx_cfg_data, ranging_control_stages_configuration), .type = &type_descr_bcmolt_ranging_control_configuration };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_trx_cfg_energy_detect = { .name = "energy_detect", .descr = "Energy Detect", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_TRX_CFG_ID_ENERGY_DETECT, .offset = offsetof(bcmolt_gpon_trx_cfg_data, energy_detect), .type = &type_descr_bcmolt_trx_energy_detect };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_trx_cfg_end_of_burst_data_pattern = { .name = "end_of_burst_data_pattern", .descr = "end of burst data pattern ", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_TRX_CFG_ID_END_OF_BURST_DATA_PATTERN, .offset = offsetof(bcmolt_gpon_trx_cfg_data, end_of_burst_data_pattern), .type = &type_descr_bcmolt_resync_control };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_trx_cfg_end_of_burst_ranging_pattern = { .name = "end_of_burst_ranging_pattern", .descr = "end of burst ranging pattern", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_TRX_CFG_ID_END_OF_BURST_RANGING_PATTERN, .offset = offsetof(bcmolt_gpon_trx_cfg_data, end_of_burst_ranging_pattern), .type = &type_descr_bcmolt_resync_control };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_trx_cfg_preamble = { .name = "preamble", .descr = "Preamble", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_TRX_CFG_ID_PREAMBLE, .offset = offsetof(bcmolt_gpon_trx_cfg_data, preamble), .type = &type_descr_bcmolt_trx_preamble };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_trx_cfg_delimiter = { .name = "delimiter", .descr = "Delimiter", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_TRX_CFG_ID_DELIMITER, .offset = offsetof(bcmolt_gpon_trx_cfg_data, delimiter), .type = &type_descr_bcmolt_trx_delimiter };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_trx_cfg_guard_bits = { .name = "guard_bits", .descr = "Guard bits", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_TRX_CFG_ID_GUARD_BITS, .offset = offsetof(bcmolt_gpon_trx_cfg_data, guard_bits), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_trx_cfg_serdes_configuration = { .name = "serdes_configuration", .descr = "serdes configuration", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_TRX_CFG_ID_SERDES_CONFIGURATION, .offset = offsetof(bcmolt_gpon_trx_cfg_data, serdes_configuration), .type = &type_descr_bcmolt_serdes_configuration };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_trx_cfg_plo_ranging = { .name = "plo_ranging", .descr = "PLO for ranging", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_GPON_TRX_CFG_ID_PLO_RANGING, .offset = offsetof(bcmolt_gpon_trx_cfg_data, plo_ranging), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_trx_cfg_plo_data = { .name = "plo_data", .descr = "PLO for data", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_GPON_TRX_CFG_ID_PLO_DATA, .offset = offsetof(bcmolt_gpon_trx_cfg_data, plo_data), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_trx_cfg_rssi_normal_config = { .name = "rssi_normal_config", .descr = "rssi normal config", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_TRX_CFG_ID_RSSI_NORMAL_CONFIG, .offset = offsetof(bcmolt_gpon_trx_cfg_data, rssi_normal_config), .type = &type_descr_bcmolt_gpon_rssi_general_configuration };
static bcmcli_prop_descr BCM_DESCR prop_descr_gpon_trx_cfg_ranging_rssi_resync_control = { .name = "ranging_rssi_resync_control", .descr = "ranging rssi resync control", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_GPON_TRX_CFG_ID_RANGING_RSSI_RESYNC_CONTROL, .offset = offsetof(bcmolt_gpon_trx_cfg_data, ranging_rssi_resync_control), .type = &type_descr_bcmolt_ranging_rssi_control };
static bcmcli_prop_descr * BCM_DESCR gpon_trx_cfg_prop_array[] = { &prop_descr_gpon_trx_cfg_transceiver_type, &prop_descr_gpon_trx_cfg_la_configuration, &prop_descr_gpon_trx_cfg_bcdr, &prop_descr_gpon_trx_cfg_la_ranging_after_no_ed_resync, &prop_descr_gpon_trx_cfg_bcdr_ranging_after_no_ed_resync, &prop_descr_gpon_trx_cfg_la_ranging_after_ed_resync, &prop_descr_gpon_trx_cfg_bcdr_ranging_after_ed_resync, &prop_descr_gpon_trx_cfg_la_resync_polarity, &prop_descr_gpon_trx_cfg_bcdr_resync_polarity, &prop_descr_gpon_trx_cfg_bcdr_ranging_resync_conditions, &prop_descr_gpon_trx_cfg_la_ranging_resync_conditions, &prop_descr_gpon_trx_cfg_rx_configuration, &prop_descr_gpon_trx_cfg_ranging_control_stages_configuration, &prop_descr_gpon_trx_cfg_energy_detect, &prop_descr_gpon_trx_cfg_end_of_burst_data_pattern, &prop_descr_gpon_trx_cfg_end_of_burst_ranging_pattern, &prop_descr_gpon_trx_cfg_preamble, &prop_descr_gpon_trx_cfg_delimiter, &prop_descr_gpon_trx_cfg_guard_bits, &prop_descr_gpon_trx_cfg_serdes_configuration, &prop_descr_gpon_trx_cfg_plo_ranging, &prop_descr_gpon_trx_cfg_plo_data, &prop_descr_gpon_trx_cfg_rssi_normal_config, &prop_descr_gpon_trx_cfg_ranging_rssi_resync_control };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_gpon_trx_cfg_data_fields[] = { { .name = "transceiver_type", .descr = "transceiver type", .offset = offsetof(bcmolt_gpon_trx_cfg_data, transceiver_type), .type = &type_descr_bcmolt_trx_type }, { .name = "la_configuration", .descr = "LA configuration", .offset = offsetof(bcmolt_gpon_trx_cfg_data, la_configuration), .type = &type_descr_bcmolt_la_resync_pattern_configuration }, { .name = "bcdr", .descr = "BCDR", .offset = offsetof(bcmolt_gpon_trx_cfg_data, bcdr), .type = &type_descr_bcmolt_bcdr_resync_pattern_configuration }, { .name = "la_ranging_after_no_ed_resync", .descr = "LA ranging after no ed resync ", .offset = offsetof(bcmolt_gpon_trx_cfg_data, la_ranging_after_no_ed_resync), .type = &type_descr_bcmolt_resync_control }, { .name = "bcdr_ranging_after_no_ed_resync", .descr = "used in ranging mode after no ed found", .offset = offsetof(bcmolt_gpon_trx_cfg_data, bcdr_ranging_after_no_ed_resync), .type = &type_descr_bcmolt_resync_control }, { .name = "la_ranging_after_ed_resync", .descr = "LA ranging after ed resync ", .offset = offsetof(bcmolt_gpon_trx_cfg_data, la_ranging_after_ed_resync), .type = &type_descr_bcmolt_resync_control }, { .name = "bcdr_ranging_after_ed_resync", .descr = "BCDR ranging after ed resync", .offset = offsetof(bcmolt_gpon_trx_cfg_data, bcdr_ranging_after_ed_resync), .type = &type_descr_bcmolt_resync_control }, { .name = "la_resync_polarity", .descr = "la resync polarity", .offset = offsetof(bcmolt_gpon_trx_cfg_data, la_resync_polarity), .type = &type_descr_bcmolt_polarity }, { .name = "bcdr_resync_polarity", .descr = "BCDR resync polarity", .offset = offsetof(bcmolt_gpon_trx_cfg_data, bcdr_resync_polarity), .type = &type_descr_bcmolt_polarity }, { .name = "bcdr_ranging_resync_conditions", .descr = "bcdr ranging resync conditions", .offset = offsetof(bcmolt_gpon_trx_cfg_data, bcdr_ranging_resync_conditions), .type = &type_descr_bcmolt_ranging_resync_conditions }, { .name = "la_ranging_resync_conditions", .descr = "la ranging resync conditions", .offset = offsetof(bcmolt_gpon_trx_cfg_data, la_ranging_resync_conditions), .type = &type_descr_bcmolt_ranging_resync_conditions }, { .name = "rx_configuration", .descr = "RX configuration", .offset = offsetof(bcmolt_gpon_trx_cfg_data, rx_configuration), .type = &type_descr_bcmolt_trx_rx_configuration }, { .name = "ranging_control_stages_configuration", .descr = "ranging control stages configuration", .offset = offsetof(bcmolt_gpon_trx_cfg_data, ranging_control_stages_configuration), .type = &type_descr_bcmolt_ranging_control_configuration }, { .name = "energy_detect", .descr = "Energy Detect", .offset = offsetof(bcmolt_gpon_trx_cfg_data, energy_detect), .type = &type_descr_bcmolt_trx_energy_detect }, { .name = "end_of_burst_data_pattern", .descr = "end of burst data pattern ", .offset = offsetof(bcmolt_gpon_trx_cfg_data, end_of_burst_data_pattern), .type = &type_descr_bcmolt_resync_control }, { .name = "end_of_burst_ranging_pattern", .descr = "end of burst ranging pattern", .offset = offsetof(bcmolt_gpon_trx_cfg_data, end_of_burst_ranging_pattern), .type = &type_descr_bcmolt_resync_control }, { .name = "preamble", .descr = "Preamble", .offset = offsetof(bcmolt_gpon_trx_cfg_data, preamble), .type = &type_descr_bcmolt_trx_preamble }, { .name = "delimiter", .descr = "Delimiter", .offset = offsetof(bcmolt_gpon_trx_cfg_data, delimiter), .type = &type_descr_bcmolt_trx_delimiter }, { .name = "guard_bits", .descr = "Guard bits", .offset = offsetof(bcmolt_gpon_trx_cfg_data, guard_bits), .type = &type_descr_uint32_t }, { .name = "serdes_configuration", .descr = "serdes configuration", .offset = offsetof(bcmolt_gpon_trx_cfg_data, serdes_configuration), .type = &type_descr_bcmolt_serdes_configuration }, { .name = "plo_ranging", .descr = "PLO for ranging", .offset = offsetof(bcmolt_gpon_trx_cfg_data, plo_ranging), .type = &type_descr_uint32_t }, { .name = "plo_data", .descr = "PLO for data", .offset = offsetof(bcmolt_gpon_trx_cfg_data, plo_data), .type = &type_descr_uint32_t }, { .name = "rssi_normal_config", .descr = "rssi normal config", .offset = offsetof(bcmolt_gpon_trx_cfg_data, rssi_normal_config), .type = &type_descr_bcmolt_gpon_rssi_general_configuration }, { .name = "ranging_rssi_resync_control", .descr = "ranging rssi resync control", .offset = offsetof(bcmolt_gpon_trx_cfg_data, ranging_rssi_resync_control), .type = &type_descr_bcmolt_ranging_rssi_control } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_gpon_trx_cfg_data = { .name = "bcmolt_gpon_trx_cfg_data", .descr = "cfg", .size = sizeof(bcmolt_gpon_trx_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_gpon_trx_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_gpon_trx_cfg_data_fields } } };

/* ==== Object: log_entry ==== */

/* Group: log_entry - key */
static bcmcli_prop_descr BCM_DESCR prop_descr_log_entry_key_log_id = { .name = "log_id", .descr = "log id", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_LOG_ENTRY_KEY_ID_LOG_ID, .offset = offsetof(bcmolt_log_entry_key, log_id), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_log_entry_key_reserved = { .name = "reserved", .descr = "reserved", .access = 0, .property = BCMOLT_LOG_ENTRY_KEY_ID_RESERVED, .offset = offsetof(bcmolt_log_entry_key, reserved), .type = &type_descr_uint8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_log_entry_key_name = { .name = "name", .descr = "name", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_LOG_ENTRY_KEY_ID_NAME, .offset = offsetof(bcmolt_log_entry_key, name), .type = &type_descr_bcmolt_str_100 };
static bcmcli_prop_descr * BCM_DESCR log_entry_key_prop_array[] = { &prop_descr_log_entry_key_log_id, &prop_descr_log_entry_key_reserved, &prop_descr_log_entry_key_name };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_log_entry_key_fields[] = { { .name = "log_id", .descr = "log id", .offset = offsetof(bcmolt_log_entry_key, log_id), .type = &type_descr_uint32_t }, { .name = "reserved", .descr = "reserved", .offset = offsetof(bcmolt_log_entry_key, reserved), .type = &type_descr_uint8_t }, { .name = "name", .descr = "name", .offset = offsetof(bcmolt_log_entry_key, name), .type = &type_descr_bcmolt_str_100 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_log_entry_key = { .name = "bcmolt_log_entry_key", .descr = "key", .size = sizeof(bcmolt_log_entry_key), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_log_entry_key_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_log_entry_key_fields } } };

/* Group: log_entry - cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_log_entry_cfg_default_log_level = { .name = "default_log_level", .descr = "default log level", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_LOG_ENTRY_CFG_ID_DEFAULT_LOG_LEVEL, .offset = offsetof(bcmolt_log_entry_cfg_data, default_log_level), .type = &type_descr_bcmolt_log_level };
static bcmcli_prop_descr BCM_DESCR prop_descr_log_entry_cfg_default_log_type = { .name = "default_log_type", .descr = "default log type", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_LOG_ENTRY_CFG_ID_DEFAULT_LOG_TYPE, .offset = offsetof(bcmolt_log_entry_cfg_data, default_log_type), .type = &type_descr_bcmolt_log_type };
static bcmcli_prop_descr BCM_DESCR prop_descr_log_entry_cfg_log_level_print = { .name = "log_level_print", .descr = "log level print", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_LOG_ENTRY_CFG_ID_LOG_LEVEL_PRINT, .offset = offsetof(bcmolt_log_entry_cfg_data, log_level_print), .type = &type_descr_bcmolt_log_level };
static bcmcli_prop_descr BCM_DESCR prop_descr_log_entry_cfg_log_level_save = { .name = "log_level_save", .descr = "log level save", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_LOG_ENTRY_CFG_ID_LOG_LEVEL_SAVE, .offset = offsetof(bcmolt_log_entry_cfg_data, log_level_save), .type = &type_descr_bcmolt_log_level };
static bcmcli_prop_descr BCM_DESCR prop_descr_log_entry_cfg_log_type = { .name = "log_type", .descr = "log type", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_LOG_ENTRY_CFG_ID_LOG_TYPE, .offset = offsetof(bcmolt_log_entry_cfg_data, log_type), .type = &type_descr_bcmolt_log_type };
static bcmcli_prop_descr BCM_DESCR prop_descr_log_entry_cfg_log_style = { .name = "log_style", .descr = "log_style", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_LOG_ENTRY_CFG_ID_LOG_STYLE, .offset = offsetof(bcmolt_log_entry_cfg_data, log_style), .type = &type_descr_bcmolt_log_style };
static bcmcli_prop_descr BCM_DESCR prop_descr_log_entry_cfg_log_name = { .name = "log_name", .descr = "log name", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_LOG_ENTRY_CFG_ID_LOG_NAME, .offset = offsetof(bcmolt_log_entry_cfg_data, log_name), .type = &type_descr_bcmolt_str_100 };
static bcmcli_prop_descr * BCM_DESCR log_entry_cfg_prop_array[] = { &prop_descr_log_entry_cfg_default_log_level, &prop_descr_log_entry_cfg_default_log_type, &prop_descr_log_entry_cfg_log_level_print, &prop_descr_log_entry_cfg_log_level_save, &prop_descr_log_entry_cfg_log_type, &prop_descr_log_entry_cfg_log_style, &prop_descr_log_entry_cfg_log_name };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_log_entry_cfg_data_fields[] = { { .name = "default_log_level", .descr = "default log level", .offset = offsetof(bcmolt_log_entry_cfg_data, default_log_level), .type = &type_descr_bcmolt_log_level }, { .name = "default_log_type", .descr = "default log type", .offset = offsetof(bcmolt_log_entry_cfg_data, default_log_type), .type = &type_descr_bcmolt_log_type }, { .name = "log_level_print", .descr = "log level print", .offset = offsetof(bcmolt_log_entry_cfg_data, log_level_print), .type = &type_descr_bcmolt_log_level }, { .name = "log_level_save", .descr = "log level save", .offset = offsetof(bcmolt_log_entry_cfg_data, log_level_save), .type = &type_descr_bcmolt_log_level }, { .name = "log_type", .descr = "log type", .offset = offsetof(bcmolt_log_entry_cfg_data, log_type), .type = &type_descr_bcmolt_log_type }, { .name = "log_style", .descr = "log_style", .offset = offsetof(bcmolt_log_entry_cfg_data, log_style), .type = &type_descr_bcmolt_log_style }, { .name = "log_name", .descr = "log name", .offset = offsetof(bcmolt_log_entry_cfg_data, log_name), .type = &type_descr_bcmolt_str_100 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_log_entry_cfg_data = { .name = "bcmolt_log_entry_cfg_data", .descr = "cfg", .size = sizeof(bcmolt_log_entry_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_log_entry_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_log_entry_cfg_data_fields } } };

/* Group: log_entry - stat */
static bcmcli_prop_descr BCM_DESCR prop_descr_log_entry_stat_msg_count = { .name = "msg_count", .descr = "msg count", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_LOG_ENTRY_STAT_ID_MSG_COUNT, .offset = offsetof(bcmolt_log_entry_stat_data, msg_count), .type = &type_descr_bcmolt_arr_u32_6 };
static bcmcli_prop_descr BCM_DESCR prop_descr_log_entry_stat_lost_msg_count = { .name = "lost_msg_count", .descr = "lost msg count", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_LOG_ENTRY_STAT_ID_LOST_MSG_COUNT, .offset = offsetof(bcmolt_log_entry_stat_data, lost_msg_count), .type = &type_descr_uint32_t };
static bcmcli_prop_descr * BCM_DESCR log_entry_stat_prop_array[] = { &prop_descr_log_entry_stat_msg_count, &prop_descr_log_entry_stat_lost_msg_count };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_log_entry_stat_data_fields[] = { { .name = "msg_count", .descr = "msg count", .offset = offsetof(bcmolt_log_entry_stat_data, msg_count), .type = &type_descr_bcmolt_arr_u32_6 }, { .name = "lost_msg_count", .descr = "lost msg count", .offset = offsetof(bcmolt_log_entry_stat_data, lost_msg_count), .type = &type_descr_uint32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_log_entry_stat_data = { .name = "bcmolt_log_entry_stat_data", .descr = "stat", .size = sizeof(bcmolt_log_entry_stat_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_log_entry_stat_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_log_entry_stat_data_fields } } };

/* Group: log_entry - stat_cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_log_entry_stat_cfg_cfg = { .name = "cfg", .descr = "Statistic alarm configuration.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_LOG_ENTRY_STAT_CFG_ID_CFG, .offset = offsetof(bcmolt_log_entry_stat_cfg_data, cfg), .type = &type_descr_bcmolt_stat_alarm_config };
static bcmcli_prop_descr * BCM_DESCR log_entry_stat_cfg_prop_array[] = { &prop_descr_log_entry_stat_cfg_cfg };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_log_entry_stat_cfg_data_fields[] = { { .name = "cfg", .descr = "Statistic alarm configuration.", .offset = offsetof(bcmolt_log_entry_stat_cfg_data, cfg), .type = &type_descr_bcmolt_stat_alarm_config } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_log_entry_stat_cfg_data = { .name = "bcmolt_log_entry_stat_cfg_data", .descr = "Statistic Configuration", .size = sizeof(bcmolt_log_entry_stat_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_log_entry_stat_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_log_entry_stat_cfg_data_fields } } };

/* Group: log_entry - stat_alarm_raised */
static bcmcli_prop_descr BCM_DESCR prop_descr_log_entry_stat_alarm_raised_stat = { .name = "stat", .descr = "Statistic identifier.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_LOG_ENTRY_STAT_ALARM_RAISED_ID_STAT, .offset = offsetof(bcmolt_log_entry_stat_alarm_raised_data, stat), .type = &type_descr_bcmolt_log_entry_stat_id };
static bcmcli_prop_descr * BCM_DESCR log_entry_stat_alarm_raised_prop_array[] = { &prop_descr_log_entry_stat_alarm_raised_stat };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_log_entry_stat_alarm_raised_data_fields[] = { { .name = "stat", .descr = "Statistic identifier.", .offset = offsetof(bcmolt_log_entry_stat_alarm_raised_data, stat), .type = &type_descr_bcmolt_log_entry_stat_id } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_log_entry_stat_alarm_raised_data = { .name = "bcmolt_log_entry_stat_alarm_raised_data", .descr = "Sent when a configured statistic alarm condition has been met.", .size = sizeof(bcmolt_log_entry_stat_alarm_raised_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_log_entry_stat_alarm_raised_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_log_entry_stat_alarm_raised_data_fields } } };

/* Group: log_entry - stat_alarm_cleared */
static bcmcli_prop_descr BCM_DESCR prop_descr_log_entry_stat_alarm_cleared_stat = { .name = "stat", .descr = "Statistic identifier.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_LOG_ENTRY_STAT_ALARM_CLEARED_ID_STAT, .offset = offsetof(bcmolt_log_entry_stat_alarm_cleared_data, stat), .type = &type_descr_bcmolt_log_entry_stat_id };
static bcmcli_prop_descr * BCM_DESCR log_entry_stat_alarm_cleared_prop_array[] = { &prop_descr_log_entry_stat_alarm_cleared_stat };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_log_entry_stat_alarm_cleared_data_fields[] = { { .name = "stat", .descr = "Statistic identifier.", .offset = offsetof(bcmolt_log_entry_stat_alarm_cleared_data, stat), .type = &type_descr_bcmolt_log_entry_stat_id } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_log_entry_stat_alarm_cleared_data = { .name = "bcmolt_log_entry_stat_alarm_cleared_data", .descr = "Sent when a configured statistic alarm condition is no longer met.", .size = sizeof(bcmolt_log_entry_stat_alarm_cleared_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_log_entry_stat_alarm_cleared_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_log_entry_stat_alarm_cleared_data_fields } } };

/* Group: log_entry - auto_cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_log_entry_auto_cfg_stat_alarm_cleared = { .name = "stat_alarm_cleared", .descr = "If true, indications of type \"stat_alarm_cleared\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_LOG_ENTRY_AUTO_CFG_ID_STAT_ALARM_CLEARED, .offset = offsetof(bcmolt_log_entry_auto_cfg_data, stat_alarm_cleared), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_log_entry_auto_cfg_stat_alarm_raised = { .name = "stat_alarm_raised", .descr = "If true, indications of type \"stat_alarm_raised\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_LOG_ENTRY_AUTO_CFG_ID_STAT_ALARM_RAISED, .offset = offsetof(bcmolt_log_entry_auto_cfg_data, stat_alarm_raised), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr * BCM_DESCR log_entry_auto_cfg_prop_array[] = { &prop_descr_log_entry_auto_cfg_stat_alarm_cleared, &prop_descr_log_entry_auto_cfg_stat_alarm_raised };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_log_entry_auto_cfg_data_fields[] = { { .name = "stat_alarm_cleared", .descr = "If true, indications of type \"stat_alarm_cleared\" will be generated.", .offset = offsetof(bcmolt_log_entry_auto_cfg_data, stat_alarm_cleared), .type = &type_descr_bcmos_bool }, { .name = "stat_alarm_raised", .descr = "If true, indications of type \"stat_alarm_raised\" will be generated.", .offset = offsetof(bcmolt_log_entry_auto_cfg_data, stat_alarm_raised), .type = &type_descr_bcmos_bool } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_log_entry_auto_cfg_data = { .name = "bcmolt_log_entry_auto_cfg_data", .descr = "Indication Configuration", .size = sizeof(bcmolt_log_entry_auto_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_log_entry_auto_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_log_entry_auto_cfg_data_fields } } };

/* ==== Object: logger ==== */

/* Group: logger - key */
static bcmcli_prop_descr BCM_DESCR prop_descr_logger_key_reserved = { .name = "reserved", .descr = "reserved", .access = 0, .property = BCMOLT_LOGGER_KEY_ID_RESERVED, .offset = offsetof(bcmolt_logger_key, reserved), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_logger_key_file_id = { .name = "file_id", .descr = "should be 0", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_LOGGER_KEY_ID_FILE_ID, .offset = offsetof(bcmolt_logger_key, file_id), .type = &type_descr_bcmolt_log_file_id };
static bcmcli_prop_descr * BCM_DESCR logger_key_prop_array[] = { &prop_descr_logger_key_reserved, &prop_descr_logger_key_file_id };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_logger_key_fields[] = { { .name = "reserved", .descr = "reserved", .offset = offsetof(bcmolt_logger_key, reserved), .type = &type_descr_uint32_t }, { .name = "file_id", .descr = "should be 0", .offset = offsetof(bcmolt_logger_key, file_id), .type = &type_descr_bcmolt_log_file_id } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_logger_key = { .name = "bcmolt_logger_key", .descr = "key", .size = sizeof(bcmolt_logger_key), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_logger_key_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_logger_key_fields } } };

/* Group: logger - cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_logger_cfg_buffer = { .name = "buffer", .descr = "Contains \"next\" log records read by \"bcmolt_cfg_get() API", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_LOGGER_CFG_ID_BUFFER, .offset = offsetof(bcmolt_logger_cfg_data, buffer), .type = &type_descr_bcmolt_log_buffer };
static bcmcli_prop_descr BCM_DESCR prop_descr_logger_cfg_wrap_around = { .name = "wrap_around", .descr = "Log file wrap-around option. TRUE=wrap around when full. FALSE=stop when full", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_LOGGER_CFG_ID_WRAP_AROUND, .offset = offsetof(bcmolt_logger_cfg_data, wrap_around), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_logger_cfg_clear_after_read = { .name = "clear_after_read", .descr = "Clear log after last record has been read", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_LOGGER_CFG_ID_CLEAR_AFTER_READ, .offset = offsetof(bcmolt_logger_cfg_data, clear_after_read), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_logger_cfg_enable_log = { .name = "enable_log", .descr = "Enable logger", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_LOGGER_CFG_ID_ENABLE_LOG, .offset = offsetof(bcmolt_logger_cfg_data, enable_log), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_logger_cfg_log_names = { .name = "log_names", .descr = "log_names", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_LOGGER_CFG_ID_LOG_NAMES, .offset = offsetof(bcmolt_logger_cfg_data, log_names), .type = &type_descr_bcmolt_str_1000 };
static bcmcli_prop_descr * BCM_DESCR logger_cfg_prop_array[] = { &prop_descr_logger_cfg_buffer, &prop_descr_logger_cfg_wrap_around, &prop_descr_logger_cfg_clear_after_read, &prop_descr_logger_cfg_enable_log, &prop_descr_logger_cfg_log_names };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_logger_cfg_data_fields[] = { { .name = "buffer", .descr = "Contains \"next\" log records read by \"bcmolt_cfg_get() API", .offset = offsetof(bcmolt_logger_cfg_data, buffer), .type = &type_descr_bcmolt_log_buffer }, { .name = "wrap_around", .descr = "Log file wrap-around option. TRUE=wrap around when full. FALSE=stop when full", .offset = offsetof(bcmolt_logger_cfg_data, wrap_around), .type = &type_descr_bcmos_bool }, { .name = "clear_after_read", .descr = "Clear log after last record has been read", .offset = offsetof(bcmolt_logger_cfg_data, clear_after_read), .type = &type_descr_bcmos_bool }, { .name = "enable_log", .descr = "Enable logger", .offset = offsetof(bcmolt_logger_cfg_data, enable_log), .type = &type_descr_bcmos_bool }, { .name = "log_names", .descr = "log_names", .offset = offsetof(bcmolt_logger_cfg_data, log_names), .type = &type_descr_bcmolt_str_1000 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_logger_cfg_data = { .name = "bcmolt_logger_cfg_data", .descr = "cfg", .size = sizeof(bcmolt_logger_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_logger_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_logger_cfg_data_fields } } };

/* Group: logger - stat */
static bcmcli_prop_descr BCM_DESCR prop_descr_logger_stat_lines_in_log = { .name = "lines_in_log", .descr = "lines in log", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_LOGGER_STAT_ID_LINES_IN_LOG, .offset = offsetof(bcmolt_logger_stat_data, lines_in_log), .type = &type_descr_uint32_t };
static bcmcli_prop_descr * BCM_DESCR logger_stat_prop_array[] = { &prop_descr_logger_stat_lines_in_log };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_logger_stat_data_fields[] = { { .name = "lines_in_log", .descr = "lines in log", .offset = offsetof(bcmolt_logger_stat_data, lines_in_log), .type = &type_descr_uint32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_logger_stat_data = { .name = "bcmolt_logger_stat_data", .descr = "stat", .size = sizeof(bcmolt_logger_stat_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_logger_stat_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_logger_stat_data_fields } } };

/* Group: logger - clear_log */
static bcmcli_prop_descr * BCM_DESCR logger_clear_log_prop_array[] = { };

/* Group: logger - stat_cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_logger_stat_cfg_cfg = { .name = "cfg", .descr = "Statistic alarm configuration.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_LOGGER_STAT_CFG_ID_CFG, .offset = offsetof(bcmolt_logger_stat_cfg_data, cfg), .type = &type_descr_bcmolt_stat_alarm_config };
static bcmcli_prop_descr * BCM_DESCR logger_stat_cfg_prop_array[] = { &prop_descr_logger_stat_cfg_cfg };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_logger_stat_cfg_data_fields[] = { { .name = "cfg", .descr = "Statistic alarm configuration.", .offset = offsetof(bcmolt_logger_stat_cfg_data, cfg), .type = &type_descr_bcmolt_stat_alarm_config } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_logger_stat_cfg_data = { .name = "bcmolt_logger_stat_cfg_data", .descr = "Statistic Configuration", .size = sizeof(bcmolt_logger_stat_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_logger_stat_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_logger_stat_cfg_data_fields } } };

/* Group: logger - stat_alarm_raised */
static bcmcli_prop_descr BCM_DESCR prop_descr_logger_stat_alarm_raised_stat = { .name = "stat", .descr = "Statistic identifier.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_LOGGER_STAT_ALARM_RAISED_ID_STAT, .offset = offsetof(bcmolt_logger_stat_alarm_raised_data, stat), .type = &type_descr_bcmolt_logger_stat_id };
static bcmcli_prop_descr * BCM_DESCR logger_stat_alarm_raised_prop_array[] = { &prop_descr_logger_stat_alarm_raised_stat };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_logger_stat_alarm_raised_data_fields[] = { { .name = "stat", .descr = "Statistic identifier.", .offset = offsetof(bcmolt_logger_stat_alarm_raised_data, stat), .type = &type_descr_bcmolt_logger_stat_id } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_logger_stat_alarm_raised_data = { .name = "bcmolt_logger_stat_alarm_raised_data", .descr = "Sent when a configured statistic alarm condition has been met.", .size = sizeof(bcmolt_logger_stat_alarm_raised_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_logger_stat_alarm_raised_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_logger_stat_alarm_raised_data_fields } } };

/* Group: logger - stat_alarm_cleared */
static bcmcli_prop_descr BCM_DESCR prop_descr_logger_stat_alarm_cleared_stat = { .name = "stat", .descr = "Statistic identifier.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_LOGGER_STAT_ALARM_CLEARED_ID_STAT, .offset = offsetof(bcmolt_logger_stat_alarm_cleared_data, stat), .type = &type_descr_bcmolt_logger_stat_id };
static bcmcli_prop_descr * BCM_DESCR logger_stat_alarm_cleared_prop_array[] = { &prop_descr_logger_stat_alarm_cleared_stat };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_logger_stat_alarm_cleared_data_fields[] = { { .name = "stat", .descr = "Statistic identifier.", .offset = offsetof(bcmolt_logger_stat_alarm_cleared_data, stat), .type = &type_descr_bcmolt_logger_stat_id } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_logger_stat_alarm_cleared_data = { .name = "bcmolt_logger_stat_alarm_cleared_data", .descr = "Sent when a configured statistic alarm condition is no longer met.", .size = sizeof(bcmolt_logger_stat_alarm_cleared_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_logger_stat_alarm_cleared_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_logger_stat_alarm_cleared_data_fields } } };

/* Group: logger - auto_cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_logger_auto_cfg_stat_alarm_cleared = { .name = "stat_alarm_cleared", .descr = "If true, indications of type \"stat_alarm_cleared\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_LOGGER_AUTO_CFG_ID_STAT_ALARM_CLEARED, .offset = offsetof(bcmolt_logger_auto_cfg_data, stat_alarm_cleared), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_logger_auto_cfg_stat_alarm_raised = { .name = "stat_alarm_raised", .descr = "If true, indications of type \"stat_alarm_raised\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_LOGGER_AUTO_CFG_ID_STAT_ALARM_RAISED, .offset = offsetof(bcmolt_logger_auto_cfg_data, stat_alarm_raised), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr * BCM_DESCR logger_auto_cfg_prop_array[] = { &prop_descr_logger_auto_cfg_stat_alarm_cleared, &prop_descr_logger_auto_cfg_stat_alarm_raised };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_logger_auto_cfg_data_fields[] = { { .name = "stat_alarm_cleared", .descr = "If true, indications of type \"stat_alarm_cleared\" will be generated.", .offset = offsetof(bcmolt_logger_auto_cfg_data, stat_alarm_cleared), .type = &type_descr_bcmos_bool }, { .name = "stat_alarm_raised", .descr = "If true, indications of type \"stat_alarm_raised\" will be generated.", .offset = offsetof(bcmolt_logger_auto_cfg_data, stat_alarm_raised), .type = &type_descr_bcmos_bool } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_logger_auto_cfg_data = { .name = "bcmolt_logger_auto_cfg_data", .descr = "Indication Configuration", .size = sizeof(bcmolt_logger_auto_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_logger_auto_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_logger_auto_cfg_data_fields } } };

/* ==== Object: nni ==== */

/* Group: nni - key */
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_key_pon_ni = { .name = "pon_ni", .descr = "PON NI", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_KEY_ID_PON_NI, .offset = offsetof(bcmolt_nni_key, pon_ni), .type = &type_descr_uint8_t };
static bcmcli_prop_descr * BCM_DESCR nni_key_prop_array[] = { &prop_descr_nni_key_pon_ni };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_nni_key_fields[] = { { .name = "pon_ni", .descr = "PON NI", .offset = offsetof(bcmolt_nni_key, pon_ni), .type = &type_descr_uint8_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_nni_key = { .name = "bcmolt_nni_key", .descr = "key", .size = sizeof(bcmolt_nni_key), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_nni_key_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_nni_key_fields } } };

/* Group: nni - cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_cfg_remote_loopback = { .name = "remote_loopback", .descr = "Incoming packets coming from the PON (upstream) and going back to the PON (Downstream) ", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_CFG_ID_REMOTE_LOOPBACK, .offset = offsetof(bcmolt_nni_cfg_data, remote_loopback), .type = &type_descr_bcmolt_control_state };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_cfg_line_loopback = { .name = "line_loopback", .descr = "Incoming packets coming from the NNI interface to the PM and going back towards the NNI interface", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_CFG_ID_LINE_LOOPBACK, .offset = offsetof(bcmolt_nni_cfg_data, line_loopback), .type = &type_descr_bcmolt_control_state };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_cfg_mac_address = { .name = "mac_address", .descr = "Mac address to be used for this NNI.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_CFG_ID_MAC_ADDRESS, .offset = offsetof(bcmolt_nni_cfg_data, mac_address), .type = &type_descr_bcmos_mac_address };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_cfg_nni_status = { .name = "nni_status", .descr = "NNI status", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_NNI_CFG_ID_NNI_STATUS, .offset = offsetof(bcmolt_nni_cfg_data, nni_status), .type = &type_descr_bcmolt_nni_link_status };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_cfg_nni_backup_status = { .name = "nni_backup_status", .descr = "Status of the backup NNI.", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_NNI_CFG_ID_NNI_BACKUP_STATUS, .offset = offsetof(bcmolt_nni_cfg_data, nni_backup_status), .type = &type_descr_bcmolt_nni_link_status };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_cfg_active_nni = { .name = "active_nni", .descr = "Which NNI is currently active.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_CFG_ID_ACTIVE_NNI, .offset = offsetof(bcmolt_nni_cfg_data, active_nni), .type = &type_descr_bcmolt_nni_connection };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_cfg_nni_status_polling_interval_ms = { .name = "nni_status_polling_interval_ms", .descr = "How often to check the status of the primary and backup NNIs (units: ms). Zero (0) disables status polling.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_CFG_ID_NNI_STATUS_POLLING_INTERVAL_MS, .offset = offsetof(bcmolt_nni_cfg_data, nni_status_polling_interval_ms), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_cfg_autoswitch = { .name = "autoswitch", .descr = "Should firmware automatically switch between primary/backup NNIs when Loss of Link is detected?", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_CFG_ID_AUTOSWITCH, .offset = offsetof(bcmolt_nni_cfg_data, autoswitch), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_cfg_flow_control = { .name = "flow_control", .descr = "NNI Flow control.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_CFG_ID_FLOW_CONTROL, .offset = offsetof(bcmolt_nni_cfg_data, flow_control), .type = &type_descr_bcmolt_control_state };
static bcmcli_prop_descr * BCM_DESCR nni_cfg_prop_array[] = { &prop_descr_nni_cfg_remote_loopback, &prop_descr_nni_cfg_line_loopback, &prop_descr_nni_cfg_mac_address, &prop_descr_nni_cfg_nni_status, &prop_descr_nni_cfg_nni_backup_status, &prop_descr_nni_cfg_active_nni, &prop_descr_nni_cfg_nni_status_polling_interval_ms, &prop_descr_nni_cfg_autoswitch, &prop_descr_nni_cfg_flow_control };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_nni_cfg_data_fields[] = { { .name = "remote_loopback", .descr = "Incoming packets coming from the PON (upstream) and going back to the PON (Downstream) ", .offset = offsetof(bcmolt_nni_cfg_data, remote_loopback), .type = &type_descr_bcmolt_control_state }, { .name = "line_loopback", .descr = "Incoming packets coming from the NNI interface to the PM and going back towards the NNI interface", .offset = offsetof(bcmolt_nni_cfg_data, line_loopback), .type = &type_descr_bcmolt_control_state }, { .name = "mac_address", .descr = "Mac address to be used for this NNI.", .offset = offsetof(bcmolt_nni_cfg_data, mac_address), .type = &type_descr_bcmos_mac_address }, { .name = "nni_status", .descr = "NNI status", .offset = offsetof(bcmolt_nni_cfg_data, nni_status), .type = &type_descr_bcmolt_nni_link_status }, { .name = "nni_backup_status", .descr = "Status of the backup NNI.", .offset = offsetof(bcmolt_nni_cfg_data, nni_backup_status), .type = &type_descr_bcmolt_nni_link_status }, { .name = "active_nni", .descr = "Which NNI is currently active.", .offset = offsetof(bcmolt_nni_cfg_data, active_nni), .type = &type_descr_bcmolt_nni_connection }, { .name = "nni_status_polling_interval_ms", .descr = "How often to check the status of the primary and backup NNIs (units: ms). Zero (0) disables status polling.", .offset = offsetof(bcmolt_nni_cfg_data, nni_status_polling_interval_ms), .type = &type_descr_uint32_t }, { .name = "autoswitch", .descr = "Should firmware automatically switch between primary/backup NNIs when Loss of Link is detected?", .offset = offsetof(bcmolt_nni_cfg_data, autoswitch), .type = &type_descr_bcmos_bool }, { .name = "flow_control", .descr = "NNI Flow control.", .offset = offsetof(bcmolt_nni_cfg_data, flow_control), .type = &type_descr_bcmolt_control_state } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_nni_cfg_data = { .name = "bcmolt_nni_cfg_data", .descr = "cfg", .size = sizeof(bcmolt_nni_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_nni_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_nni_cfg_data_fields } } };

/* Group: nni - stat */
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_rx_frames_64 = { .name = "rx_frames_64", .descr = "The count of RX 64 byte frames on this NNI.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_RX_FRAMES_64, .offset = offsetof(bcmolt_nni_stat_data, rx_frames_64), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_rx_frames_65_127 = { .name = "rx_frames_65_127", .descr = "The count of RX 65 to 127 byte frames on this NNI.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_RX_FRAMES_65_127, .offset = offsetof(bcmolt_nni_stat_data, rx_frames_65_127), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_rx_frames_128_255 = { .name = "rx_frames_128_255", .descr = "The count of RX 128 to 255 byte frames on this NNI.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_RX_FRAMES_128_255, .offset = offsetof(bcmolt_nni_stat_data, rx_frames_128_255), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_rx_frames_256_511 = { .name = "rx_frames_256_511", .descr = "The count of RX 256 to 511 byte frames on this NNI.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_RX_FRAMES_256_511, .offset = offsetof(bcmolt_nni_stat_data, rx_frames_256_511), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_rx_frames_512_1023 = { .name = "rx_frames_512_1023", .descr = "The count of RX 512 to 1023 byte frames on this NNI.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_RX_FRAMES_512_1023, .offset = offsetof(bcmolt_nni_stat_data, rx_frames_512_1023), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_rx_frames_1024_1518 = { .name = "rx_frames_1024_1518", .descr = "The count of RX 1024 to 1518 byte frames on this NNI.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_RX_FRAMES_1024_1518, .offset = offsetof(bcmolt_nni_stat_data, rx_frames_1024_1518), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_rx_frames_1519_2047 = { .name = "rx_frames_1519_2047", .descr = "The count of RX 1519 to 2047 byte frames on this NNI.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_RX_FRAMES_1519_2047, .offset = offsetof(bcmolt_nni_stat_data, rx_frames_1519_2047), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_rx_frames_2048_4095 = { .name = "rx_frames_2048_4095", .descr = "The count of RX 2048 to 4095 byte frames on this NNI.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_RX_FRAMES_2048_4095, .offset = offsetof(bcmolt_nni_stat_data, rx_frames_2048_4095), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_rx_frames_4096_9216 = { .name = "rx_frames_4096_9216", .descr = "The count of RX 4096 to 9216 byte frames on this NNI.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_RX_FRAMES_4096_9216, .offset = offsetof(bcmolt_nni_stat_data, rx_frames_4096_9216), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_rx_frames_9217_16383 = { .name = "rx_frames_9217_16383", .descr = "The count of RX 9217 to 16383 byte frames on this NNI.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_RX_FRAMES_9217_16383, .offset = offsetof(bcmolt_nni_stat_data, rx_frames_9217_16383), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_rx_frames = { .name = "rx_frames", .descr = "The number of received frames on this NNI. This includes all errored frames as well.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_RX_FRAMES, .offset = offsetof(bcmolt_nni_stat_data, rx_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_rx_bytes = { .name = "rx_bytes", .descr = "The number of received bytes on this NNI. This includes all errored frames as well.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_RX_BYTES, .offset = offsetof(bcmolt_nni_stat_data, rx_bytes), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_rx_good_frames = { .name = "rx_good_frames", .descr = "The number of received good frames on this NNI.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_RX_GOOD_FRAMES, .offset = offsetof(bcmolt_nni_stat_data, rx_good_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_rx_unicast_frames = { .name = "rx_unicast_frames", .descr = "The number of received unicast frames on this NNI.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_RX_UNICAST_FRAMES, .offset = offsetof(bcmolt_nni_stat_data, rx_unicast_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_rx_multicast_frames = { .name = "rx_multicast_frames", .descr = "The number of received multicast frames on this NNI.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_RX_MULTICAST_FRAMES, .offset = offsetof(bcmolt_nni_stat_data, rx_multicast_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_rx_broadcast_frames = { .name = "rx_broadcast_frames", .descr = "The number of received broadcast frames on this NNI.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_RX_BROADCAST_FRAMES, .offset = offsetof(bcmolt_nni_stat_data, rx_broadcast_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_rx_fcs_errors = { .name = "rx_fcs_errors", .descr = "The number of received FCS errors on this NNI.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_RX_FCS_ERRORS, .offset = offsetof(bcmolt_nni_stat_data, rx_fcs_errors), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_rx_control_frames = { .name = "rx_control_frames", .descr = "The number of received control frames on this NNI.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_RX_CONTROL_FRAMES, .offset = offsetof(bcmolt_nni_stat_data, rx_control_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_rx_pause_frames = { .name = "rx_pause_frames", .descr = "The number of received pause frames on this NNI.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_RX_PAUSE_FRAMES, .offset = offsetof(bcmolt_nni_stat_data, rx_pause_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_rx_pfc_frames = { .name = "rx_pfc_frames", .descr = "The number of received PFC frames on this NNI.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_RX_PFC_FRAMES, .offset = offsetof(bcmolt_nni_stat_data, rx_pfc_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_rx_unsupported_opcode = { .name = "rx_unsupported_opcode", .descr = "The number of received Unsupported Opcode frames on this NNI.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_RX_UNSUPPORTED_OPCODE, .offset = offsetof(bcmolt_nni_stat_data, rx_unsupported_opcode), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_rx_unsupported_da = { .name = "rx_unsupported_da", .descr = "The number of received unsupported DA frames on this NNI.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_RX_UNSUPPORTED_DA, .offset = offsetof(bcmolt_nni_stat_data, rx_unsupported_da), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_rx_alignment_errors = { .name = "rx_alignment_errors", .descr = "The number of received alignment errors on this NNI.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_RX_ALIGNMENT_ERRORS, .offset = offsetof(bcmolt_nni_stat_data, rx_alignment_errors), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_rx_length_out_of_range = { .name = "rx_length_out_of_range", .descr = "The number of received length out of range errors on this NNI.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_RX_LENGTH_OUT_OF_RANGE, .offset = offsetof(bcmolt_nni_stat_data, rx_length_out_of_range), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_rx_code_errors = { .name = "rx_code_errors", .descr = "The number of received code errors on this NNI.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_RX_CODE_ERRORS, .offset = offsetof(bcmolt_nni_stat_data, rx_code_errors), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_rx_oversized_frames = { .name = "rx_oversized_frames", .descr = "The number of received oversized frames on this NNI.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_RX_OVERSIZED_FRAMES, .offset = offsetof(bcmolt_nni_stat_data, rx_oversized_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_rx_jabber_frames = { .name = "rx_jabber_frames", .descr = "The number of received jabber frames on this NNI. these are oversized frames that also contain an invalid CRC, code error, or IEEE length check error.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_RX_JABBER_FRAMES, .offset = offsetof(bcmolt_nni_stat_data, rx_jabber_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_rx_mtu_check_errors = { .name = "rx_mtu_check_errors", .descr = "The number of received MTU Check Errors on this NNI.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_RX_MTU_CHECK_ERRORS, .offset = offsetof(bcmolt_nni_stat_data, rx_mtu_check_errors), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_rx_promiscuous_frames = { .name = "rx_promiscuous_frames", .descr = "The number of received frames on this NNI that are not control packets and have a DA that is not matching with the RX SA.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_RX_PROMISCUOUS_FRAMES, .offset = offsetof(bcmolt_nni_stat_data, rx_promiscuous_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_rx_vlan_frames = { .name = "rx_vlan_frames", .descr = "The number of received VLAN tagged frames on this NNI (with TPID 8100). This counts both single and double tagged frames.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_RX_VLAN_FRAMES, .offset = offsetof(bcmolt_nni_stat_data, rx_vlan_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_rx_double_vlan_frames = { .name = "rx_double_vlan_frames", .descr = "The number of received double VLAN tagged frames on this NNI (with TPID 8100). ", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_RX_DOUBLE_VLAN_FRAMES, .offset = offsetof(bcmolt_nni_stat_data, rx_double_vlan_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_rx_truncated_frames = { .name = "rx_truncated_frames", .descr = "The number of received truncated frames on this NNI. This is likely due to RX FIFO Full. ", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_RX_TRUNCATED_FRAMES, .offset = offsetof(bcmolt_nni_stat_data, rx_truncated_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_rx_undersize_frames = { .name = "rx_undersize_frames", .descr = "The number of received undersized frames on this NNI.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_RX_UNDERSIZE_FRAMES, .offset = offsetof(bcmolt_nni_stat_data, rx_undersize_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_rx_fragmented_frames = { .name = "rx_fragmented_frames", .descr = "The number of received fragmented frames on this NNI.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_RX_FRAGMENTED_FRAMES, .offset = offsetof(bcmolt_nni_stat_data, rx_fragmented_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_rx_runt_frames = { .name = "rx_runt_frames", .descr = "The number of received runt frames on this NNI.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_RX_RUNT_FRAMES, .offset = offsetof(bcmolt_nni_stat_data, rx_runt_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_tx_frames_64 = { .name = "tx_frames_64", .descr = "The count of TX 64 byte frames on this NNI.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_TX_FRAMES_64, .offset = offsetof(bcmolt_nni_stat_data, tx_frames_64), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_tx_frames_65_127 = { .name = "tx_frames_65_127", .descr = "The count of TX 65 to 127 byte frames on this NNI.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_TX_FRAMES_65_127, .offset = offsetof(bcmolt_nni_stat_data, tx_frames_65_127), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_tx_frames_128_255 = { .name = "tx_frames_128_255", .descr = "The count of TX 128 to 255 byte frames on this NNI.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_TX_FRAMES_128_255, .offset = offsetof(bcmolt_nni_stat_data, tx_frames_128_255), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_tx_frames_256_511 = { .name = "tx_frames_256_511", .descr = "The count of TX 256 to 511 byte frames on this NNI.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_TX_FRAMES_256_511, .offset = offsetof(bcmolt_nni_stat_data, tx_frames_256_511), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_tx_frames_512_1023 = { .name = "tx_frames_512_1023", .descr = "The count of TX 512 to 1023 byte frames on this NNI.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_TX_FRAMES_512_1023, .offset = offsetof(bcmolt_nni_stat_data, tx_frames_512_1023), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_tx_frames_1024_1518 = { .name = "tx_frames_1024_1518", .descr = "The count of TX 1024 to 1518 byte frames on this NNI.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_TX_FRAMES_1024_1518, .offset = offsetof(bcmolt_nni_stat_data, tx_frames_1024_1518), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_tx_frames_1519_2047 = { .name = "tx_frames_1519_2047", .descr = "The count of TX 1519 to 2047 byte frames on this NNI.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_TX_FRAMES_1519_2047, .offset = offsetof(bcmolt_nni_stat_data, tx_frames_1519_2047), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_tx_frames_2048_4095 = { .name = "tx_frames_2048_4095", .descr = "The count of TX 2048 to 4095 byte frames on this NNI.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_TX_FRAMES_2048_4095, .offset = offsetof(bcmolt_nni_stat_data, tx_frames_2048_4095), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_tx_frames_4096_9216 = { .name = "tx_frames_4096_9216", .descr = "The count of TX 4096 to 9216 byte frames on this NNI.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_TX_FRAMES_4096_9216, .offset = offsetof(bcmolt_nni_stat_data, tx_frames_4096_9216), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_tx_frames_9217_16383 = { .name = "tx_frames_9217_16383", .descr = "The count of TX 9217 to 16383 byte frames on this NNI.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_TX_FRAMES_9217_16383, .offset = offsetof(bcmolt_nni_stat_data, tx_frames_9217_16383), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_tx_frames = { .name = "tx_frames", .descr = "The number of transmitted frames on this NNI. This includes all errored frames as well.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_TX_FRAMES, .offset = offsetof(bcmolt_nni_stat_data, tx_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_tx_bytes = { .name = "tx_bytes", .descr = "The number of transmitted bytes on this NNI. This includes all errored frames as well.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_TX_BYTES, .offset = offsetof(bcmolt_nni_stat_data, tx_bytes), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_tx_good_frames = { .name = "tx_good_frames", .descr = "The number of transmitted good frames on this NNI.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_TX_GOOD_FRAMES, .offset = offsetof(bcmolt_nni_stat_data, tx_good_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_tx_unicast_frames = { .name = "tx_unicast_frames", .descr = "The number of transmitted unicast frames on this NNI.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_TX_UNICAST_FRAMES, .offset = offsetof(bcmolt_nni_stat_data, tx_unicast_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_tx_multicast_frames = { .name = "tx_multicast_frames", .descr = "The number of transmitted multicast frames on this NNI.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_TX_MULTICAST_FRAMES, .offset = offsetof(bcmolt_nni_stat_data, tx_multicast_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_tx_broadcast_frames = { .name = "tx_broadcast_frames", .descr = "The number of transmitted broadcast frames on this NNI.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_TX_BROADCAST_FRAMES, .offset = offsetof(bcmolt_nni_stat_data, tx_broadcast_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_tx_pause_frames = { .name = "tx_pause_frames", .descr = "The number of transmitted pause frames on this NNI.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_TX_PAUSE_FRAMES, .offset = offsetof(bcmolt_nni_stat_data, tx_pause_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_tx_pfc_frames = { .name = "tx_pfc_frames", .descr = "The number of transmitted PFC frames on this NNI.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_TX_PFC_FRAMES, .offset = offsetof(bcmolt_nni_stat_data, tx_pfc_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_tx_jabber_frames = { .name = "tx_jabber_frames", .descr = "The number of transmitted jabber frames on this NNI. These are oversized frames that also contain an invalid FCS.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_TX_JABBER_FRAMES, .offset = offsetof(bcmolt_nni_stat_data, tx_jabber_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_tx_fcs_errors = { .name = "tx_fcs_errors", .descr = "The number of transmitted FCS errors on this NNI. ", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_TX_FCS_ERRORS, .offset = offsetof(bcmolt_nni_stat_data, tx_fcs_errors), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_tx_control_frames = { .name = "tx_control_frames", .descr = "The number of transmitted control frames on this NNI. ", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_TX_CONTROL_FRAMES, .offset = offsetof(bcmolt_nni_stat_data, tx_control_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_tx_oversize_frames = { .name = "tx_oversize_frames", .descr = "The number of transmitted oversized frames on this NNI. ", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_TX_OVERSIZE_FRAMES, .offset = offsetof(bcmolt_nni_stat_data, tx_oversize_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_tx_fragmented_frames = { .name = "tx_fragmented_frames", .descr = "The number of transmitted fragmented frames on this NNI. ", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_TX_FRAGMENTED_FRAMES, .offset = offsetof(bcmolt_nni_stat_data, tx_fragmented_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_tx_error_frames = { .name = "tx_error_frames", .descr = "The number of transmitted errored frames on this NNI. ", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_TX_ERROR_FRAMES, .offset = offsetof(bcmolt_nni_stat_data, tx_error_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_tx_vlan_frames = { .name = "tx_vlan_frames", .descr = "The number of transmitted VLAN tagged frames on this NNI (with TPID 8100). This counts both single and double tagged frames.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_TX_VLAN_FRAMES, .offset = offsetof(bcmolt_nni_stat_data, tx_vlan_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_tx_double_vlan_frames = { .name = "tx_double_vlan_frames", .descr = "The number of transmitted double VLAN tagged frames on this NNI (with TPID 8100). ", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_TX_DOUBLE_VLAN_FRAMES, .offset = offsetof(bcmolt_nni_stat_data, tx_double_vlan_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_tx_runt_frames = { .name = "tx_runt_frames", .descr = "The number of transmitted runt frames on this NNI. ", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_TX_RUNT_FRAMES, .offset = offsetof(bcmolt_nni_stat_data, tx_runt_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_tx_underrun_frames = { .name = "tx_underrun_frames", .descr = "The number of transmitted underrun frames on this NNI. Thus happens when a frame encounters a MAC underrun (Tx Sync FIFO runs out of data before the end of packet).", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ID_TX_UNDERRUN_FRAMES, .offset = offsetof(bcmolt_nni_stat_data, tx_underrun_frames), .type = &type_descr_uint64_t };
static bcmcli_prop_descr * BCM_DESCR nni_stat_prop_array[] = { &prop_descr_nni_stat_rx_frames_64, &prop_descr_nni_stat_rx_frames_65_127, &prop_descr_nni_stat_rx_frames_128_255, &prop_descr_nni_stat_rx_frames_256_511, &prop_descr_nni_stat_rx_frames_512_1023, &prop_descr_nni_stat_rx_frames_1024_1518, &prop_descr_nni_stat_rx_frames_1519_2047, &prop_descr_nni_stat_rx_frames_2048_4095, &prop_descr_nni_stat_rx_frames_4096_9216, &prop_descr_nni_stat_rx_frames_9217_16383, &prop_descr_nni_stat_rx_frames, &prop_descr_nni_stat_rx_bytes, &prop_descr_nni_stat_rx_good_frames, &prop_descr_nni_stat_rx_unicast_frames, &prop_descr_nni_stat_rx_multicast_frames, &prop_descr_nni_stat_rx_broadcast_frames, &prop_descr_nni_stat_rx_fcs_errors, &prop_descr_nni_stat_rx_control_frames, &prop_descr_nni_stat_rx_pause_frames, &prop_descr_nni_stat_rx_pfc_frames, &prop_descr_nni_stat_rx_unsupported_opcode, &prop_descr_nni_stat_rx_unsupported_da, &prop_descr_nni_stat_rx_alignment_errors, &prop_descr_nni_stat_rx_length_out_of_range, &prop_descr_nni_stat_rx_code_errors, &prop_descr_nni_stat_rx_oversized_frames, &prop_descr_nni_stat_rx_jabber_frames, &prop_descr_nni_stat_rx_mtu_check_errors, &prop_descr_nni_stat_rx_promiscuous_frames, &prop_descr_nni_stat_rx_vlan_frames, &prop_descr_nni_stat_rx_double_vlan_frames, &prop_descr_nni_stat_rx_truncated_frames, &prop_descr_nni_stat_rx_undersize_frames, &prop_descr_nni_stat_rx_fragmented_frames, &prop_descr_nni_stat_rx_runt_frames, &prop_descr_nni_stat_tx_frames_64, &prop_descr_nni_stat_tx_frames_65_127, &prop_descr_nni_stat_tx_frames_128_255, &prop_descr_nni_stat_tx_frames_256_511, &prop_descr_nni_stat_tx_frames_512_1023, &prop_descr_nni_stat_tx_frames_1024_1518, &prop_descr_nni_stat_tx_frames_1519_2047, &prop_descr_nni_stat_tx_frames_2048_4095, &prop_descr_nni_stat_tx_frames_4096_9216, &prop_descr_nni_stat_tx_frames_9217_16383, &prop_descr_nni_stat_tx_frames, &prop_descr_nni_stat_tx_bytes, &prop_descr_nni_stat_tx_good_frames, &prop_descr_nni_stat_tx_unicast_frames, &prop_descr_nni_stat_tx_multicast_frames, &prop_descr_nni_stat_tx_broadcast_frames, &prop_descr_nni_stat_tx_pause_frames, &prop_descr_nni_stat_tx_pfc_frames, &prop_descr_nni_stat_tx_jabber_frames, &prop_descr_nni_stat_tx_fcs_errors, &prop_descr_nni_stat_tx_control_frames, &prop_descr_nni_stat_tx_oversize_frames, &prop_descr_nni_stat_tx_fragmented_frames, &prop_descr_nni_stat_tx_error_frames, &prop_descr_nni_stat_tx_vlan_frames, &prop_descr_nni_stat_tx_double_vlan_frames, &prop_descr_nni_stat_tx_runt_frames, &prop_descr_nni_stat_tx_underrun_frames };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_nni_stat_data_fields[] =
{
    { .name = "rx_frames_64", .descr = "The count of RX 64 byte frames on this NNI.", .offset = offsetof(bcmolt_nni_stat_data, rx_frames_64), .type = &type_descr_uint64_t },
    { .name = "rx_frames_65_127", .descr = "The count of RX 65 to 127 byte frames on this NNI.", .offset = offsetof(bcmolt_nni_stat_data, rx_frames_65_127), .type = &type_descr_uint64_t },
    { .name = "rx_frames_128_255", .descr = "The count of RX 128 to 255 byte frames on this NNI.", .offset = offsetof(bcmolt_nni_stat_data, rx_frames_128_255), .type = &type_descr_uint64_t },
    { .name = "rx_frames_256_511", .descr = "The count of RX 256 to 511 byte frames on this NNI.", .offset = offsetof(bcmolt_nni_stat_data, rx_frames_256_511), .type = &type_descr_uint64_t },
    { .name = "rx_frames_512_1023", .descr = "The count of RX 512 to 1023 byte frames on this NNI.", .offset = offsetof(bcmolt_nni_stat_data, rx_frames_512_1023), .type = &type_descr_uint64_t },
    { .name = "rx_frames_1024_1518", .descr = "The count of RX 1024 to 1518 byte frames on this NNI.", .offset = offsetof(bcmolt_nni_stat_data, rx_frames_1024_1518), .type = &type_descr_uint64_t },
    { .name = "rx_frames_1519_2047", .descr = "The count of RX 1519 to 2047 byte frames on this NNI.", .offset = offsetof(bcmolt_nni_stat_data, rx_frames_1519_2047), .type = &type_descr_uint64_t },
    { .name = "rx_frames_2048_4095", .descr = "The count of RX 2048 to 4095 byte frames on this NNI.", .offset = offsetof(bcmolt_nni_stat_data, rx_frames_2048_4095), .type = &type_descr_uint64_t },
    { .name = "rx_frames_4096_9216", .descr = "The count of RX 4096 to 9216 byte frames on this NNI.", .offset = offsetof(bcmolt_nni_stat_data, rx_frames_4096_9216), .type = &type_descr_uint64_t },
    { .name = "rx_frames_9217_16383", .descr = "The count of RX 9217 to 16383 byte frames on this NNI.", .offset = offsetof(bcmolt_nni_stat_data, rx_frames_9217_16383), .type = &type_descr_uint64_t },
    { .name = "rx_frames", .descr = "The number of received frames on this NNI. This includes all errored frames as well.", .offset = offsetof(bcmolt_nni_stat_data, rx_frames), .type = &type_descr_uint64_t },
    { .name = "rx_bytes", .descr = "The number of received bytes on this NNI. This includes all errored frames as well.", .offset = offsetof(bcmolt_nni_stat_data, rx_bytes), .type = &type_descr_uint64_t },
    { .name = "rx_good_frames", .descr = "The number of received good frames on this NNI.", .offset = offsetof(bcmolt_nni_stat_data, rx_good_frames), .type = &type_descr_uint64_t },
    { .name = "rx_unicast_frames", .descr = "The number of received unicast frames on this NNI.", .offset = offsetof(bcmolt_nni_stat_data, rx_unicast_frames), .type = &type_descr_uint64_t },
    { .name = "rx_multicast_frames", .descr = "The number of received multicast frames on this NNI.", .offset = offsetof(bcmolt_nni_stat_data, rx_multicast_frames), .type = &type_descr_uint64_t },
    { .name = "rx_broadcast_frames", .descr = "The number of received broadcast frames on this NNI.", .offset = offsetof(bcmolt_nni_stat_data, rx_broadcast_frames), .type = &type_descr_uint64_t },
    { .name = "rx_fcs_errors", .descr = "The number of received FCS errors on this NNI.", .offset = offsetof(bcmolt_nni_stat_data, rx_fcs_errors), .type = &type_descr_uint64_t },
    { .name = "rx_control_frames", .descr = "The number of received control frames on this NNI.", .offset = offsetof(bcmolt_nni_stat_data, rx_control_frames), .type = &type_descr_uint64_t },
    { .name = "rx_pause_frames", .descr = "The number of received pause frames on this NNI.", .offset = offsetof(bcmolt_nni_stat_data, rx_pause_frames), .type = &type_descr_uint64_t },
    { .name = "rx_pfc_frames", .descr = "The number of received PFC frames on this NNI.", .offset = offsetof(bcmolt_nni_stat_data, rx_pfc_frames), .type = &type_descr_uint64_t },
    { .name = "rx_unsupported_opcode", .descr = "The number of received Unsupported Opcode frames on this NNI.", .offset = offsetof(bcmolt_nni_stat_data, rx_unsupported_opcode), .type = &type_descr_uint64_t },
    { .name = "rx_unsupported_da", .descr = "The number of received unsupported DA frames on this NNI.", .offset = offsetof(bcmolt_nni_stat_data, rx_unsupported_da), .type = &type_descr_uint64_t },
    { .name = "rx_alignment_errors", .descr = "The number of received alignment errors on this NNI.", .offset = offsetof(bcmolt_nni_stat_data, rx_alignment_errors), .type = &type_descr_uint64_t },
    { .name = "rx_length_out_of_range", .descr = "The number of received length out of range errors on this NNI.", .offset = offsetof(bcmolt_nni_stat_data, rx_length_out_of_range), .type = &type_descr_uint64_t },
    { .name = "rx_code_errors", .descr = "The number of received code errors on this NNI.", .offset = offsetof(bcmolt_nni_stat_data, rx_code_errors), .type = &type_descr_uint64_t },
    { .name = "rx_oversized_frames", .descr = "The number of received oversized frames on this NNI.", .offset = offsetof(bcmolt_nni_stat_data, rx_oversized_frames), .type = &type_descr_uint64_t },
    { .name = "rx_jabber_frames", .descr = "The number of received jabber frames on this NNI. these are oversized frames that also contain an invalid CRC, code error, or IEEE length check error.", .offset = offsetof(bcmolt_nni_stat_data, rx_jabber_frames), .type = &type_descr_uint64_t },
    { .name = "rx_mtu_check_errors", .descr = "The number of received MTU Check Errors on this NNI.", .offset = offsetof(bcmolt_nni_stat_data, rx_mtu_check_errors), .type = &type_descr_uint64_t },
    { .name = "rx_promiscuous_frames", .descr = "The number of received frames on this NNI that are not control packets and have a DA that is not matching with the RX SA.", .offset = offsetof(bcmolt_nni_stat_data, rx_promiscuous_frames), .type = &type_descr_uint64_t },
    { .name = "rx_vlan_frames", .descr = "The number of received VLAN tagged frames on this NNI (with TPID 8100). This counts both single and double tagged frames.", .offset = offsetof(bcmolt_nni_stat_data, rx_vlan_frames), .type = &type_descr_uint64_t },
    { .name = "rx_double_vlan_frames", .descr = "The number of received double VLAN tagged frames on this NNI (with TPID 8100). ", .offset = offsetof(bcmolt_nni_stat_data, rx_double_vlan_frames), .type = &type_descr_uint64_t },
    { .name = "rx_truncated_frames", .descr = "The number of received truncated frames on this NNI. This is likely due to RX FIFO Full. ", .offset = offsetof(bcmolt_nni_stat_data, rx_truncated_frames), .type = &type_descr_uint64_t },
    { .name = "rx_undersize_frames", .descr = "The number of received undersized frames on this NNI.", .offset = offsetof(bcmolt_nni_stat_data, rx_undersize_frames), .type = &type_descr_uint64_t },
    { .name = "rx_fragmented_frames", .descr = "The number of received fragmented frames on this NNI.", .offset = offsetof(bcmolt_nni_stat_data, rx_fragmented_frames), .type = &type_descr_uint64_t },
    { .name = "rx_runt_frames", .descr = "The number of received runt frames on this NNI.", .offset = offsetof(bcmolt_nni_stat_data, rx_runt_frames), .type = &type_descr_uint64_t },
    { .name = "tx_frames_64", .descr = "The count of TX 64 byte frames on this NNI.", .offset = offsetof(bcmolt_nni_stat_data, tx_frames_64), .type = &type_descr_uint64_t },
    { .name = "tx_frames_65_127", .descr = "The count of TX 65 to 127 byte frames on this NNI.", .offset = offsetof(bcmolt_nni_stat_data, tx_frames_65_127), .type = &type_descr_uint64_t },
    { .name = "tx_frames_128_255", .descr = "The count of TX 128 to 255 byte frames on this NNI.", .offset = offsetof(bcmolt_nni_stat_data, tx_frames_128_255), .type = &type_descr_uint64_t },
    { .name = "tx_frames_256_511", .descr = "The count of TX 256 to 511 byte frames on this NNI.", .offset = offsetof(bcmolt_nni_stat_data, tx_frames_256_511), .type = &type_descr_uint64_t },
    { .name = "tx_frames_512_1023", .descr = "The count of TX 512 to 1023 byte frames on this NNI.", .offset = offsetof(bcmolt_nni_stat_data, tx_frames_512_1023), .type = &type_descr_uint64_t },
    { .name = "tx_frames_1024_1518", .descr = "The count of TX 1024 to 1518 byte frames on this NNI.", .offset = offsetof(bcmolt_nni_stat_data, tx_frames_1024_1518), .type = &type_descr_uint64_t },
    { .name = "tx_frames_1519_2047", .descr = "The count of TX 1519 to 2047 byte frames on this NNI.", .offset = offsetof(bcmolt_nni_stat_data, tx_frames_1519_2047), .type = &type_descr_uint64_t },
    { .name = "tx_frames_2048_4095", .descr = "The count of TX 2048 to 4095 byte frames on this NNI.", .offset = offsetof(bcmolt_nni_stat_data, tx_frames_2048_4095), .type = &type_descr_uint64_t },
    { .name = "tx_frames_4096_9216", .descr = "The count of TX 4096 to 9216 byte frames on this NNI.", .offset = offsetof(bcmolt_nni_stat_data, tx_frames_4096_9216), .type = &type_descr_uint64_t },
    { .name = "tx_frames_9217_16383", .descr = "The count of TX 9217 to 16383 byte frames on this NNI.", .offset = offsetof(bcmolt_nni_stat_data, tx_frames_9217_16383), .type = &type_descr_uint64_t },
    { .name = "tx_frames", .descr = "The number of transmitted frames on this NNI. This includes all errored frames as well.", .offset = offsetof(bcmolt_nni_stat_data, tx_frames), .type = &type_descr_uint64_t },
    { .name = "tx_bytes", .descr = "The number of transmitted bytes on this NNI. This includes all errored frames as well.", .offset = offsetof(bcmolt_nni_stat_data, tx_bytes), .type = &type_descr_uint64_t },
    { .name = "tx_good_frames", .descr = "The number of transmitted good frames on this NNI.", .offset = offsetof(bcmolt_nni_stat_data, tx_good_frames), .type = &type_descr_uint64_t },
    { .name = "tx_unicast_frames", .descr = "The number of transmitted unicast frames on this NNI.", .offset = offsetof(bcmolt_nni_stat_data, tx_unicast_frames), .type = &type_descr_uint64_t },
    { .name = "tx_multicast_frames", .descr = "The number of transmitted multicast frames on this NNI.", .offset = offsetof(bcmolt_nni_stat_data, tx_multicast_frames), .type = &type_descr_uint64_t },
    { .name = "tx_broadcast_frames", .descr = "The number of transmitted broadcast frames on this NNI.", .offset = offsetof(bcmolt_nni_stat_data, tx_broadcast_frames), .type = &type_descr_uint64_t },
    { .name = "tx_pause_frames", .descr = "The number of transmitted pause frames on this NNI.", .offset = offsetof(bcmolt_nni_stat_data, tx_pause_frames), .type = &type_descr_uint64_t },
    { .name = "tx_pfc_frames", .descr = "The number of transmitted PFC frames on this NNI.", .offset = offsetof(bcmolt_nni_stat_data, tx_pfc_frames), .type = &type_descr_uint64_t },
    { .name = "tx_jabber_frames", .descr = "The number of transmitted jabber frames on this NNI. These are oversized frames that also contain an invalid FCS.", .offset = offsetof(bcmolt_nni_stat_data, tx_jabber_frames), .type = &type_descr_uint64_t },
    { .name = "tx_fcs_errors", .descr = "The number of transmitted FCS errors on this NNI. ", .offset = offsetof(bcmolt_nni_stat_data, tx_fcs_errors), .type = &type_descr_uint64_t },
    { .name = "tx_control_frames", .descr = "The number of transmitted control frames on this NNI. ", .offset = offsetof(bcmolt_nni_stat_data, tx_control_frames), .type = &type_descr_uint64_t },
    { .name = "tx_oversize_frames", .descr = "The number of transmitted oversized frames on this NNI. ", .offset = offsetof(bcmolt_nni_stat_data, tx_oversize_frames), .type = &type_descr_uint64_t },
    { .name = "tx_fragmented_frames", .descr = "The number of transmitted fragmented frames on this NNI. ", .offset = offsetof(bcmolt_nni_stat_data, tx_fragmented_frames), .type = &type_descr_uint64_t },
    { .name = "tx_error_frames", .descr = "The number of transmitted errored frames on this NNI. ", .offset = offsetof(bcmolt_nni_stat_data, tx_error_frames), .type = &type_descr_uint64_t },
    { .name = "tx_vlan_frames", .descr = "The number of transmitted VLAN tagged frames on this NNI (with TPID 8100). This counts both single and double tagged frames.", .offset = offsetof(bcmolt_nni_stat_data, tx_vlan_frames), .type = &type_descr_uint64_t },
    { .name = "tx_double_vlan_frames", .descr = "The number of transmitted double VLAN tagged frames on this NNI (with TPID 8100). ", .offset = offsetof(bcmolt_nni_stat_data, tx_double_vlan_frames), .type = &type_descr_uint64_t },
    { .name = "tx_runt_frames", .descr = "The number of transmitted runt frames on this NNI. ", .offset = offsetof(bcmolt_nni_stat_data, tx_runt_frames), .type = &type_descr_uint64_t },
    { .name = "tx_underrun_frames", .descr = "The number of transmitted underrun frames on this NNI. Thus happens when a frame encounters a MAC underrun (Tx Sync FIFO runs out of data before the end of packet).", .offset = offsetof(bcmolt_nni_stat_data, tx_underrun_frames), .type = &type_descr_uint64_t }
};
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_nni_stat_data = { .name = "bcmolt_nni_stat_data", .descr = "stat", .size = sizeof(bcmolt_nni_stat_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_nni_stat_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_nni_stat_data_fields } } };

/* Group: nni - status_changed */
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_status_changed_new_status = { .name = "new_status", .descr = "New NNI Link Status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STATUS_CHANGED_ID_NEW_STATUS, .offset = offsetof(bcmolt_nni_status_changed_data, new_status), .type = &type_descr_bcmolt_status };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_status_changed_link = { .name = "link", .descr = "Which NNI this indication pertains to.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STATUS_CHANGED_ID_LINK, .offset = offsetof(bcmolt_nni_status_changed_data, link), .type = &type_descr_bcmolt_nni_connection };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_status_changed_previous_active = { .name = "previous_active", .descr = "Which NNI was active before this status change.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STATUS_CHANGED_ID_PREVIOUS_ACTIVE, .offset = offsetof(bcmolt_nni_status_changed_data, previous_active), .type = &type_descr_bcmolt_nni_connection };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_status_changed_new_active = { .name = "new_active", .descr = "Which NNI is now active after this status change.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STATUS_CHANGED_ID_NEW_ACTIVE, .offset = offsetof(bcmolt_nni_status_changed_data, new_active), .type = &type_descr_bcmolt_nni_connection };
static bcmcli_prop_descr * BCM_DESCR nni_status_changed_prop_array[] = { &prop_descr_nni_status_changed_new_status, &prop_descr_nni_status_changed_link, &prop_descr_nni_status_changed_previous_active, &prop_descr_nni_status_changed_new_active };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_nni_status_changed_data_fields[] = { { .name = "new_status", .descr = "New NNI Link Status", .offset = offsetof(bcmolt_nni_status_changed_data, new_status), .type = &type_descr_bcmolt_status }, { .name = "link", .descr = "Which NNI this indication pertains to.", .offset = offsetof(bcmolt_nni_status_changed_data, link), .type = &type_descr_bcmolt_nni_connection }, { .name = "previous_active", .descr = "Which NNI was active before this status change.", .offset = offsetof(bcmolt_nni_status_changed_data, previous_active), .type = &type_descr_bcmolt_nni_connection }, { .name = "new_active", .descr = "Which NNI is now active after this status change.", .offset = offsetof(bcmolt_nni_status_changed_data, new_active), .type = &type_descr_bcmolt_nni_connection } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_nni_status_changed_data = { .name = "bcmolt_nni_status_changed_data", .descr = "NNI Link status changed", .size = sizeof(bcmolt_nni_status_changed_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_nni_status_changed_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_nni_status_changed_data_fields } } };

/* Group: nni - stat_cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_cfg_cfg = { .name = "cfg", .descr = "Statistic alarm configuration.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_CFG_ID_CFG, .offset = offsetof(bcmolt_nni_stat_cfg_data, cfg), .type = &type_descr_bcmolt_stat_alarm_config };
static bcmcli_prop_descr * BCM_DESCR nni_stat_cfg_prop_array[] = { &prop_descr_nni_stat_cfg_cfg };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_nni_stat_cfg_data_fields[] = { { .name = "cfg", .descr = "Statistic alarm configuration.", .offset = offsetof(bcmolt_nni_stat_cfg_data, cfg), .type = &type_descr_bcmolt_stat_alarm_config } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_nni_stat_cfg_data = { .name = "bcmolt_nni_stat_cfg_data", .descr = "Statistic Configuration", .size = sizeof(bcmolt_nni_stat_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_nni_stat_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_nni_stat_cfg_data_fields } } };

/* Group: nni - stat_alarm_raised */
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_alarm_raised_stat = { .name = "stat", .descr = "Statistic identifier.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ALARM_RAISED_ID_STAT, .offset = offsetof(bcmolt_nni_stat_alarm_raised_data, stat), .type = &type_descr_bcmolt_nni_stat_id };
static bcmcli_prop_descr * BCM_DESCR nni_stat_alarm_raised_prop_array[] = { &prop_descr_nni_stat_alarm_raised_stat };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_nni_stat_alarm_raised_data_fields[] = { { .name = "stat", .descr = "Statistic identifier.", .offset = offsetof(bcmolt_nni_stat_alarm_raised_data, stat), .type = &type_descr_bcmolt_nni_stat_id } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_nni_stat_alarm_raised_data = { .name = "bcmolt_nni_stat_alarm_raised_data", .descr = "Sent when a configured statistic alarm condition has been met.", .size = sizeof(bcmolt_nni_stat_alarm_raised_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_nni_stat_alarm_raised_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_nni_stat_alarm_raised_data_fields } } };

/* Group: nni - stat_alarm_cleared */
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_stat_alarm_cleared_stat = { .name = "stat", .descr = "Statistic identifier.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_STAT_ALARM_CLEARED_ID_STAT, .offset = offsetof(bcmolt_nni_stat_alarm_cleared_data, stat), .type = &type_descr_bcmolt_nni_stat_id };
static bcmcli_prop_descr * BCM_DESCR nni_stat_alarm_cleared_prop_array[] = { &prop_descr_nni_stat_alarm_cleared_stat };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_nni_stat_alarm_cleared_data_fields[] = { { .name = "stat", .descr = "Statistic identifier.", .offset = offsetof(bcmolt_nni_stat_alarm_cleared_data, stat), .type = &type_descr_bcmolt_nni_stat_id } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_nni_stat_alarm_cleared_data = { .name = "bcmolt_nni_stat_alarm_cleared_data", .descr = "Sent when a configured statistic alarm condition is no longer met.", .size = sizeof(bcmolt_nni_stat_alarm_cleared_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_nni_stat_alarm_cleared_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_nni_stat_alarm_cleared_data_fields } } };

/* Group: nni - auto_cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_auto_cfg_stat_alarm_cleared = { .name = "stat_alarm_cleared", .descr = "If true, indications of type \"stat_alarm_cleared\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_AUTO_CFG_ID_STAT_ALARM_CLEARED, .offset = offsetof(bcmolt_nni_auto_cfg_data, stat_alarm_cleared), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_auto_cfg_stat_alarm_raised = { .name = "stat_alarm_raised", .descr = "If true, indications of type \"stat_alarm_raised\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_AUTO_CFG_ID_STAT_ALARM_RAISED, .offset = offsetof(bcmolt_nni_auto_cfg_data, stat_alarm_raised), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_auto_cfg_status_changed = { .name = "status_changed", .descr = "If true, indications of type \"status_changed\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_AUTO_CFG_ID_STATUS_CHANGED, .offset = offsetof(bcmolt_nni_auto_cfg_data, status_changed), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr * BCM_DESCR nni_auto_cfg_prop_array[] = { &prop_descr_nni_auto_cfg_stat_alarm_cleared, &prop_descr_nni_auto_cfg_stat_alarm_raised, &prop_descr_nni_auto_cfg_status_changed };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_nni_auto_cfg_data_fields[] = { { .name = "stat_alarm_cleared", .descr = "If true, indications of type \"stat_alarm_cleared\" will be generated.", .offset = offsetof(bcmolt_nni_auto_cfg_data, stat_alarm_cleared), .type = &type_descr_bcmos_bool }, { .name = "stat_alarm_raised", .descr = "If true, indications of type \"stat_alarm_raised\" will be generated.", .offset = offsetof(bcmolt_nni_auto_cfg_data, stat_alarm_raised), .type = &type_descr_bcmos_bool }, { .name = "status_changed", .descr = "If true, indications of type \"status_changed\" will be generated.", .offset = offsetof(bcmolt_nni_auto_cfg_data, status_changed), .type = &type_descr_bcmos_bool } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_nni_auto_cfg_data = { .name = "bcmolt_nni_auto_cfg_data", .descr = "Indication Configuration", .size = sizeof(bcmolt_nni_auto_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_nni_auto_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_nni_auto_cfg_data_fields } } };

/* ==== Object: nni_serdes ==== */

/* Group: nni_serdes - key */
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_serdes_key_pon_ni = { .name = "pon_ni", .descr = "PON NI", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_SERDES_KEY_ID_PON_NI, .offset = offsetof(bcmolt_nni_serdes_key, pon_ni), .type = &type_descr_uint8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_serdes_key_instance = { .name = "instance", .descr = "SerDes instance.: 0 = Primary, 1 = Secondary.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_SERDES_KEY_ID_INSTANCE, .offset = offsetof(bcmolt_nni_serdes_key, instance), .type = &type_descr_bcmolt_serdes_instance };
static bcmcli_prop_descr * BCM_DESCR nni_serdes_key_prop_array[] = { &prop_descr_nni_serdes_key_pon_ni, &prop_descr_nni_serdes_key_instance };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_nni_serdes_key_fields[] = { { .name = "pon_ni", .descr = "PON NI", .offset = offsetof(bcmolt_nni_serdes_key, pon_ni), .type = &type_descr_uint8_t }, { .name = "instance", .descr = "SerDes instance.: 0 = Primary, 1 = Secondary.", .offset = offsetof(bcmolt_nni_serdes_key, instance), .type = &type_descr_bcmolt_serdes_instance } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_nni_serdes_key = { .name = "bcmolt_nni_serdes_key", .descr = "key", .size = sizeof(bcmolt_nni_serdes_key), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_nni_serdes_key_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_nni_serdes_key_fields } } };

/* Group: nni_serdes - cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_serdes_cfg_rx_vga = { .name = "rx_vga", .descr = "Rx Vga", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_SERDES_CFG_ID_RX_VGA, .offset = offsetof(bcmolt_nni_serdes_cfg_data, rx_vga), .type = &type_descr_uint8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_serdes_cfg_rx_pf = { .name = "rx_pf", .descr = "Peaking Filter", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_SERDES_CFG_ID_RX_PF, .offset = offsetof(bcmolt_nni_serdes_cfg_data, rx_pf), .type = &type_descr_uint8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_serdes_cfg_rx_lfpf = { .name = "rx_lfpf", .descr = "Low Frequency Peaking Filter", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_SERDES_CFG_ID_RX_LFPF, .offset = offsetof(bcmolt_nni_serdes_cfg_data, rx_lfpf), .type = &type_descr_uint8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_serdes_cfg_rx_dfe1 = { .name = "rx_dfe1", .descr = "Rx DFE1", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_SERDES_CFG_ID_RX_DFE1, .offset = offsetof(bcmolt_nni_serdes_cfg_data, rx_dfe1), .type = &type_descr_uint8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_serdes_cfg_rx_dfe2 = { .name = "rx_dfe2", .descr = "Rx DFE2", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_SERDES_CFG_ID_RX_DFE2, .offset = offsetof(bcmolt_nni_serdes_cfg_data, rx_dfe2), .type = &type_descr_int8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_serdes_cfg_rx_dfe3 = { .name = "rx_dfe3", .descr = "Rx DFE3", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_SERDES_CFG_ID_RX_DFE3, .offset = offsetof(bcmolt_nni_serdes_cfg_data, rx_dfe3), .type = &type_descr_int8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_serdes_cfg_rx_dfe4 = { .name = "rx_dfe4", .descr = "Rx DFE4", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_SERDES_CFG_ID_RX_DFE4, .offset = offsetof(bcmolt_nni_serdes_cfg_data, rx_dfe4), .type = &type_descr_int8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_serdes_cfg_rx_dfe5 = { .name = "rx_dfe5", .descr = "Rx DFE5", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_SERDES_CFG_ID_RX_DFE5, .offset = offsetof(bcmolt_nni_serdes_cfg_data, rx_dfe5), .type = &type_descr_int8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_serdes_cfg_tx_pre = { .name = "tx_pre", .descr = "Tx Pre", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_SERDES_CFG_ID_TX_PRE, .offset = offsetof(bcmolt_nni_serdes_cfg_data, tx_pre), .type = &type_descr_uint8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_serdes_cfg_tx_main = { .name = "tx_main", .descr = "Tx Main", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_SERDES_CFG_ID_TX_MAIN, .offset = offsetof(bcmolt_nni_serdes_cfg_data, tx_main), .type = &type_descr_uint8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_serdes_cfg_tx_post1 = { .name = "tx_post1", .descr = "Tx Post1", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_SERDES_CFG_ID_TX_POST1, .offset = offsetof(bcmolt_nni_serdes_cfg_data, tx_post1), .type = &type_descr_uint8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_serdes_cfg_tx_post2 = { .name = "tx_post2", .descr = "Tx Post2", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_SERDES_CFG_ID_TX_POST2, .offset = offsetof(bcmolt_nni_serdes_cfg_data, tx_post2), .type = &type_descr_int8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_serdes_cfg_tx_post3 = { .name = "tx_post3", .descr = "Tx Post3", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_SERDES_CFG_ID_TX_POST3, .offset = offsetof(bcmolt_nni_serdes_cfg_data, tx_post3), .type = &type_descr_int8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_nni_serdes_cfg_tx_amp = { .name = "tx_amp", .descr = "Tx Amp", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_NNI_SERDES_CFG_ID_TX_AMP, .offset = offsetof(bcmolt_nni_serdes_cfg_data, tx_amp), .type = &type_descr_uint8_t };
static bcmcli_prop_descr * BCM_DESCR nni_serdes_cfg_prop_array[] = { &prop_descr_nni_serdes_cfg_rx_vga, &prop_descr_nni_serdes_cfg_rx_pf, &prop_descr_nni_serdes_cfg_rx_lfpf, &prop_descr_nni_serdes_cfg_rx_dfe1, &prop_descr_nni_serdes_cfg_rx_dfe2, &prop_descr_nni_serdes_cfg_rx_dfe3, &prop_descr_nni_serdes_cfg_rx_dfe4, &prop_descr_nni_serdes_cfg_rx_dfe5, &prop_descr_nni_serdes_cfg_tx_pre, &prop_descr_nni_serdes_cfg_tx_main, &prop_descr_nni_serdes_cfg_tx_post1, &prop_descr_nni_serdes_cfg_tx_post2, &prop_descr_nni_serdes_cfg_tx_post3, &prop_descr_nni_serdes_cfg_tx_amp };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_nni_serdes_cfg_data_fields[] = { { .name = "rx_vga", .descr = "Rx Vga", .offset = offsetof(bcmolt_nni_serdes_cfg_data, rx_vga), .type = &type_descr_uint8_t }, { .name = "rx_pf", .descr = "Peaking Filter", .offset = offsetof(bcmolt_nni_serdes_cfg_data, rx_pf), .type = &type_descr_uint8_t }, { .name = "rx_lfpf", .descr = "Low Frequency Peaking Filter", .offset = offsetof(bcmolt_nni_serdes_cfg_data, rx_lfpf), .type = &type_descr_uint8_t }, { .name = "rx_dfe1", .descr = "Rx DFE1", .offset = offsetof(bcmolt_nni_serdes_cfg_data, rx_dfe1), .type = &type_descr_uint8_t }, { .name = "rx_dfe2", .descr = "Rx DFE2", .offset = offsetof(bcmolt_nni_serdes_cfg_data, rx_dfe2), .type = &type_descr_int8_t }, { .name = "rx_dfe3", .descr = "Rx DFE3", .offset = offsetof(bcmolt_nni_serdes_cfg_data, rx_dfe3), .type = &type_descr_int8_t }, { .name = "rx_dfe4", .descr = "Rx DFE4", .offset = offsetof(bcmolt_nni_serdes_cfg_data, rx_dfe4), .type = &type_descr_int8_t }, { .name = "rx_dfe5", .descr = "Rx DFE5", .offset = offsetof(bcmolt_nni_serdes_cfg_data, rx_dfe5), .type = &type_descr_int8_t }, { .name = "tx_pre", .descr = "Tx Pre", .offset = offsetof(bcmolt_nni_serdes_cfg_data, tx_pre), .type = &type_descr_uint8_t }, { .name = "tx_main", .descr = "Tx Main", .offset = offsetof(bcmolt_nni_serdes_cfg_data, tx_main), .type = &type_descr_uint8_t }, { .name = "tx_post1", .descr = "Tx Post1", .offset = offsetof(bcmolt_nni_serdes_cfg_data, tx_post1), .type = &type_descr_uint8_t }, { .name = "tx_post2", .descr = "Tx Post2", .offset = offsetof(bcmolt_nni_serdes_cfg_data, tx_post2), .type = &type_descr_int8_t }, { .name = "tx_post3", .descr = "Tx Post3", .offset = offsetof(bcmolt_nni_serdes_cfg_data, tx_post3), .type = &type_descr_int8_t }, { .name = "tx_amp", .descr = "Tx Amp", .offset = offsetof(bcmolt_nni_serdes_cfg_data, tx_amp), .type = &type_descr_uint8_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_nni_serdes_cfg_data = { .name = "bcmolt_nni_serdes_cfg_data", .descr = "cfg", .size = sizeof(bcmolt_nni_serdes_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_nni_serdes_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_nni_serdes_cfg_data_fields } } };

/* ==== Object: software_error ==== */

/* Group: software_error - key */
static bcmcli_prop_descr BCM_DESCR prop_descr_software_error_key_reserved = { .name = "reserved", .descr = "Reserved (set to 0).", .access = 0, .property = BCMOLT_SOFTWARE_ERROR_KEY_ID_RESERVED, .offset = offsetof(bcmolt_software_error_key, reserved), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_software_error_key_idx = { .name = "idx", .descr = "Index", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_SOFTWARE_ERROR_KEY_ID_IDX, .offset = offsetof(bcmolt_software_error_key, idx), .type = &type_descr_uint32_t };
static bcmcli_prop_descr * BCM_DESCR software_error_key_prop_array[] = { &prop_descr_software_error_key_reserved, &prop_descr_software_error_key_idx };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_software_error_key_fields[] = { { .name = "reserved", .descr = "Reserved (set to 0).", .offset = offsetof(bcmolt_software_error_key, reserved), .type = &type_descr_uint32_t }, { .name = "idx", .descr = "Index", .offset = offsetof(bcmolt_software_error_key, idx), .type = &type_descr_uint32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_software_error_key = { .name = "bcmolt_software_error_key", .descr = "key", .size = sizeof(bcmolt_software_error_key), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_software_error_key_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_software_error_key_fields } } };

/* Group: software_error - cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_software_error_cfg_entry = { .name = "entry", .descr = "Entry", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_SOFTWARE_ERROR_CFG_ID_ENTRY, .offset = offsetof(bcmolt_software_error_cfg_data, entry), .type = &type_descr_bcmolt_sw_error };
static bcmcli_prop_descr * BCM_DESCR software_error_cfg_prop_array[] = { &prop_descr_software_error_cfg_entry };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_software_error_cfg_data_fields[] = { { .name = "entry", .descr = "Entry", .offset = offsetof(bcmolt_software_error_cfg_data, entry), .type = &type_descr_bcmolt_sw_error } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_software_error_cfg_data = { .name = "bcmolt_software_error_cfg_data", .descr = "cfg", .size = sizeof(bcmolt_software_error_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_software_error_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_software_error_cfg_data_fields } } };

/* ==== Object: trx_calibration ==== */

/* Group: trx_calibration - key */
static bcmcli_prop_descr BCM_DESCR prop_descr_trx_calibration_key_reserved = { .name = "reserved", .descr = "Reserved (set to 0)", .access = 0, .property = BCMOLT_TRX_CALIBRATION_KEY_ID_RESERVED, .offset = offsetof(bcmolt_trx_calibration_key, reserved), .type = &type_descr_uint32_t };
static bcmcli_prop_descr * BCM_DESCR trx_calibration_key_prop_array[] = { &prop_descr_trx_calibration_key_reserved };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_trx_calibration_key_fields[] = { { .name = "reserved", .descr = "Reserved (set to 0)", .offset = offsetof(bcmolt_trx_calibration_key, reserved), .type = &type_descr_uint32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_trx_calibration_key = { .name = "bcmolt_trx_calibration_key", .descr = "key", .size = sizeof(bcmolt_trx_calibration_key), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_trx_calibration_key_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_trx_calibration_key_fields } } };

/* Group: trx_calibration - start_capture_window */
static bcmcli_prop_descr BCM_DESCR prop_descr_trx_calibration_start_capture_window_pon_ni = { .name = "pon_ni", .descr = "pon_ni", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_TRX_CALIBRATION_START_CAPTURE_WINDOW_ID_PON_NI, .offset = offsetof(bcmolt_trx_calibration_start_capture_window_data, pon_ni), .type = &type_descr_uint8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_trx_calibration_start_capture_window_trigger = { .name = "trigger", .descr = "trigger", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_TRX_CALIBRATION_START_CAPTURE_WINDOW_ID_TRIGGER, .offset = offsetof(bcmolt_trx_calibration_start_capture_window_data, trigger), .type = &type_descr_bcmolt_trx_calibration_trigger };
static bcmcli_prop_descr BCM_DESCR prop_descr_trx_calibration_start_capture_window_strobe = { .name = "strobe", .descr = "strobe", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_TRX_CALIBRATION_START_CAPTURE_WINDOW_ID_STROBE, .offset = offsetof(bcmolt_trx_calibration_start_capture_window_data, strobe), .type = &type_descr_bcmolt_capture_strobe_signal };
static bcmcli_prop_descr BCM_DESCR prop_descr_trx_calibration_start_capture_window_window_mode = { .name = "window_mode", .descr = "window mode", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_TRX_CALIBRATION_START_CAPTURE_WINDOW_ID_WINDOW_MODE, .offset = offsetof(bcmolt_trx_calibration_start_capture_window_data, window_mode), .type = &type_descr_bcmolt_trx_calibration_window_mode };
static bcmcli_prop_descr BCM_DESCR prop_descr_trx_calibration_start_capture_window_onu_id = { .name = "onu_id", .descr = "onu id", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_TRX_CALIBRATION_START_CAPTURE_WINDOW_ID_ONU_ID, .offset = offsetof(bcmolt_trx_calibration_start_capture_window_data, onu_id), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_trx_calibration_start_capture_window_trigger_position = { .name = "trigger_position", .descr = "trigger position", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_TRX_CALIBRATION_START_CAPTURE_WINDOW_ID_TRIGGER_POSITION, .offset = offsetof(bcmolt_trx_calibration_start_capture_window_data, trigger_position), .type = &type_descr_bcmolt_trx_calibration_trigger_position };
static bcmcli_prop_descr BCM_DESCR prop_descr_trx_calibration_start_capture_window_stop_due_to_corrupt_strobe = { .name = "stop_due_to_corrupt_strobe", .descr = "enable/disable corrupt strobe from MAC to terminate stat window", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_TRX_CALIBRATION_START_CAPTURE_WINDOW_ID_STOP_DUE_TO_CORRUPT_STROBE, .offset = offsetof(bcmolt_trx_calibration_start_capture_window_data, stop_due_to_corrupt_strobe), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_trx_calibration_start_capture_window_start_offset = { .name = "start_offset", .descr = "start offset", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_TRX_CALIBRATION_START_CAPTURE_WINDOW_ID_START_OFFSET, .offset = offsetof(bcmolt_trx_calibration_start_capture_window_data, start_offset), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_trx_calibration_start_capture_window_end_offset = { .name = "end_offset", .descr = "end offset", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_TRX_CALIBRATION_START_CAPTURE_WINDOW_ID_END_OFFSET, .offset = offsetof(bcmolt_trx_calibration_start_capture_window_data, end_offset), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_trx_calibration_start_capture_window_number_of_cycles = { .name = "number_of_cycles", .descr = "number of cycles", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_TRX_CALIBRATION_START_CAPTURE_WINDOW_ID_NUMBER_OF_CYCLES, .offset = offsetof(bcmolt_trx_calibration_start_capture_window_data, number_of_cycles), .type = &type_descr_uint8_t };
static bcmcli_prop_descr * BCM_DESCR trx_calibration_start_capture_window_prop_array[] = { &prop_descr_trx_calibration_start_capture_window_pon_ni, &prop_descr_trx_calibration_start_capture_window_trigger, &prop_descr_trx_calibration_start_capture_window_strobe, &prop_descr_trx_calibration_start_capture_window_window_mode, &prop_descr_trx_calibration_start_capture_window_onu_id, &prop_descr_trx_calibration_start_capture_window_trigger_position, &prop_descr_trx_calibration_start_capture_window_stop_due_to_corrupt_strobe, &prop_descr_trx_calibration_start_capture_window_start_offset, &prop_descr_trx_calibration_start_capture_window_end_offset, &prop_descr_trx_calibration_start_capture_window_number_of_cycles };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_trx_calibration_start_capture_window_data_fields[] = { { .name = "pon_ni", .descr = "pon_ni", .offset = offsetof(bcmolt_trx_calibration_start_capture_window_data, pon_ni), .type = &type_descr_uint8_t }, { .name = "trigger", .descr = "trigger", .offset = offsetof(bcmolt_trx_calibration_start_capture_window_data, trigger), .type = &type_descr_bcmolt_trx_calibration_trigger }, { .name = "strobe", .descr = "strobe", .offset = offsetof(bcmolt_trx_calibration_start_capture_window_data, strobe), .type = &type_descr_bcmolt_capture_strobe_signal }, { .name = "window_mode", .descr = "window mode", .offset = offsetof(bcmolt_trx_calibration_start_capture_window_data, window_mode), .type = &type_descr_bcmolt_trx_calibration_window_mode }, { .name = "onu_id", .descr = "onu id", .offset = offsetof(bcmolt_trx_calibration_start_capture_window_data, onu_id), .type = &type_descr_uint16_t }, { .name = "trigger_position", .descr = "trigger position", .offset = offsetof(bcmolt_trx_calibration_start_capture_window_data, trigger_position), .type = &type_descr_bcmolt_trx_calibration_trigger_position }, { .name = "stop_due_to_corrupt_strobe", .descr = "enable/disable corrupt strobe from MAC to terminate stat window", .offset = offsetof(bcmolt_trx_calibration_start_capture_window_data, stop_due_to_corrupt_strobe), .type = &type_descr_bcmos_bool }, { .name = "start_offset", .descr = "start offset", .offset = offsetof(bcmolt_trx_calibration_start_capture_window_data, start_offset), .type = &type_descr_uint16_t }, { .name = "end_offset", .descr = "end offset", .offset = offsetof(bcmolt_trx_calibration_start_capture_window_data, end_offset), .type = &type_descr_uint16_t }, { .name = "number_of_cycles", .descr = "number of cycles", .offset = offsetof(bcmolt_trx_calibration_start_capture_window_data, number_of_cycles), .type = &type_descr_uint8_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_trx_calibration_start_capture_window_data = { .name = "bcmolt_trx_calibration_start_capture_window_data", .descr = "start capture window", .size = sizeof(bcmolt_trx_calibration_start_capture_window_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_trx_calibration_start_capture_window_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_trx_calibration_start_capture_window_data_fields } } };

/* Group: trx_calibration - capture_window_and_statistic_completed */
static bcmcli_prop_descr BCM_DESCR prop_descr_trx_calibration_capture_window_and_statistic_completed_data_window = { .name = "data_window", .descr = "data window", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_TRX_CALIBRATION_CAPTURE_WINDOW_AND_STATISTIC_COMPLETED_ID_DATA_WINDOW, .offset = offsetof(bcmolt_trx_calibration_capture_window_and_statistic_completed_data, data_window), .type = &type_descr_bcmolt_u32_list_u32_max_500_hex };
static bcmcli_prop_descr BCM_DESCR prop_descr_trx_calibration_capture_window_and_statistic_completed_strobe_window = { .name = "strobe_window", .descr = "strobe window", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_TRX_CALIBRATION_CAPTURE_WINDOW_AND_STATISTIC_COMPLETED_ID_STROBE_WINDOW, .offset = offsetof(bcmolt_trx_calibration_capture_window_and_statistic_completed_data, strobe_window), .type = &type_descr_bcmolt_u32_list_u32_max_500_hex };
static bcmcli_prop_descr BCM_DESCR prop_descr_trx_calibration_capture_window_and_statistic_completed_edge_rise_min_min = { .name = "edge_rise_min_min", .descr = "edge rise min min", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_TRX_CALIBRATION_CAPTURE_WINDOW_AND_STATISTIC_COMPLETED_ID_EDGE_RISE_MIN_MIN, .offset = offsetof(bcmolt_trx_calibration_capture_window_and_statistic_completed_data, edge_rise_min_min), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_trx_calibration_capture_window_and_statistic_completed_edge_rise_min_max = { .name = "edge_rise_min_max", .descr = "edge rise min max", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_TRX_CALIBRATION_CAPTURE_WINDOW_AND_STATISTIC_COMPLETED_ID_EDGE_RISE_MIN_MAX, .offset = offsetof(bcmolt_trx_calibration_capture_window_and_statistic_completed_data, edge_rise_min_max), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_trx_calibration_capture_window_and_statistic_completed_edge_rise_max_min = { .name = "edge_rise_max_min", .descr = "edge rise max min", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_TRX_CALIBRATION_CAPTURE_WINDOW_AND_STATISTIC_COMPLETED_ID_EDGE_RISE_MAX_MIN, .offset = offsetof(bcmolt_trx_calibration_capture_window_and_statistic_completed_data, edge_rise_max_min), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_trx_calibration_capture_window_and_statistic_completed_edge_rise_max_max = { .name = "edge_rise_max_max", .descr = "edge rise max max", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_TRX_CALIBRATION_CAPTURE_WINDOW_AND_STATISTIC_COMPLETED_ID_EDGE_RISE_MAX_MAX, .offset = offsetof(bcmolt_trx_calibration_capture_window_and_statistic_completed_data, edge_rise_max_max), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_trx_calibration_capture_window_and_statistic_completed_edge_fall_min_min = { .name = "edge_fall_min_min", .descr = "edge fall min min ", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_TRX_CALIBRATION_CAPTURE_WINDOW_AND_STATISTIC_COMPLETED_ID_EDGE_FALL_MIN_MIN, .offset = offsetof(bcmolt_trx_calibration_capture_window_and_statistic_completed_data, edge_fall_min_min), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_trx_calibration_capture_window_and_statistic_completed_edge_fall_min_max = { .name = "edge_fall_min_max", .descr = "edge fall min max", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_TRX_CALIBRATION_CAPTURE_WINDOW_AND_STATISTIC_COMPLETED_ID_EDGE_FALL_MIN_MAX, .offset = offsetof(bcmolt_trx_calibration_capture_window_and_statistic_completed_data, edge_fall_min_max), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_trx_calibration_capture_window_and_statistic_completed_edge_fall_max_min = { .name = "edge_fall_max_min", .descr = "edge fall max min", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_TRX_CALIBRATION_CAPTURE_WINDOW_AND_STATISTIC_COMPLETED_ID_EDGE_FALL_MAX_MIN, .offset = offsetof(bcmolt_trx_calibration_capture_window_and_statistic_completed_data, edge_fall_max_min), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_trx_calibration_capture_window_and_statistic_completed_edge_fall_max_max = { .name = "edge_fall_max_max", .descr = "edge fall max max", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_TRX_CALIBRATION_CAPTURE_WINDOW_AND_STATISTIC_COMPLETED_ID_EDGE_FALL_MAX_MAX, .offset = offsetof(bcmolt_trx_calibration_capture_window_and_statistic_completed_data, edge_fall_max_max), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_trx_calibration_capture_window_and_statistic_completed_result = { .name = "result", .descr = "result", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_TRX_CALIBRATION_CAPTURE_WINDOW_AND_STATISTIC_COMPLETED_ID_RESULT, .offset = offsetof(bcmolt_trx_calibration_capture_window_and_statistic_completed_data, result), .type = &type_descr_bcmolt_result };
static bcmcli_prop_descr * BCM_DESCR trx_calibration_capture_window_and_statistic_completed_prop_array[] = { &prop_descr_trx_calibration_capture_window_and_statistic_completed_data_window, &prop_descr_trx_calibration_capture_window_and_statistic_completed_strobe_window, &prop_descr_trx_calibration_capture_window_and_statistic_completed_edge_rise_min_min, &prop_descr_trx_calibration_capture_window_and_statistic_completed_edge_rise_min_max, &prop_descr_trx_calibration_capture_window_and_statistic_completed_edge_rise_max_min, &prop_descr_trx_calibration_capture_window_and_statistic_completed_edge_rise_max_max, &prop_descr_trx_calibration_capture_window_and_statistic_completed_edge_fall_min_min, &prop_descr_trx_calibration_capture_window_and_statistic_completed_edge_fall_min_max, &prop_descr_trx_calibration_capture_window_and_statistic_completed_edge_fall_max_min, &prop_descr_trx_calibration_capture_window_and_statistic_completed_edge_fall_max_max, &prop_descr_trx_calibration_capture_window_and_statistic_completed_result };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_trx_calibration_capture_window_and_statistic_completed_data_fields[] = { { .name = "data_window", .descr = "data window", .offset = offsetof(bcmolt_trx_calibration_capture_window_and_statistic_completed_data, data_window), .type = &type_descr_bcmolt_u32_list_u32_max_500_hex }, { .name = "strobe_window", .descr = "strobe window", .offset = offsetof(bcmolt_trx_calibration_capture_window_and_statistic_completed_data, strobe_window), .type = &type_descr_bcmolt_u32_list_u32_max_500_hex }, { .name = "edge_rise_min_min", .descr = "edge rise min min", .offset = offsetof(bcmolt_trx_calibration_capture_window_and_statistic_completed_data, edge_rise_min_min), .type = &type_descr_uint64_t }, { .name = "edge_rise_min_max", .descr = "edge rise min max", .offset = offsetof(bcmolt_trx_calibration_capture_window_and_statistic_completed_data, edge_rise_min_max), .type = &type_descr_uint64_t }, { .name = "edge_rise_max_min", .descr = "edge rise max min", .offset = offsetof(bcmolt_trx_calibration_capture_window_and_statistic_completed_data, edge_rise_max_min), .type = &type_descr_uint64_t }, { .name = "edge_rise_max_max", .descr = "edge rise max max", .offset = offsetof(bcmolt_trx_calibration_capture_window_and_statistic_completed_data, edge_rise_max_max), .type = &type_descr_uint64_t }, { .name = "edge_fall_min_min", .descr = "edge fall min min ", .offset = offsetof(bcmolt_trx_calibration_capture_window_and_statistic_completed_data, edge_fall_min_min), .type = &type_descr_uint64_t }, { .name = "edge_fall_min_max", .descr = "edge fall min max", .offset = offsetof(bcmolt_trx_calibration_capture_window_and_statistic_completed_data, edge_fall_min_max), .type = &type_descr_uint64_t }, { .name = "edge_fall_max_min", .descr = "edge fall max min", .offset = offsetof(bcmolt_trx_calibration_capture_window_and_statistic_completed_data, edge_fall_max_min), .type = &type_descr_uint64_t }, { .name = "edge_fall_max_max", .descr = "edge fall max max", .offset = offsetof(bcmolt_trx_calibration_capture_window_and_statistic_completed_data, edge_fall_max_max), .type = &type_descr_uint64_t }, { .name = "result", .descr = "result", .offset = offsetof(bcmolt_trx_calibration_capture_window_and_statistic_completed_data, result), .type = &type_descr_bcmolt_result } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_trx_calibration_capture_window_and_statistic_completed_data = { .name = "bcmolt_trx_calibration_capture_window_and_statistic_completed_data", .descr = "Capture window and statistic completed", .size = sizeof(bcmolt_trx_calibration_capture_window_and_statistic_completed_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_trx_calibration_capture_window_and_statistic_completed_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_trx_calibration_capture_window_and_statistic_completed_data_fields } } };

/* Group: trx_calibration - stop_capture_window */
static bcmcli_prop_descr BCM_DESCR prop_descr_trx_calibration_stop_capture_window_pon_ni = { .name = "pon_ni", .descr = "pon_ni", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_TRX_CALIBRATION_STOP_CAPTURE_WINDOW_ID_PON_NI, .offset = offsetof(bcmolt_trx_calibration_stop_capture_window_data, pon_ni), .type = &type_descr_uint8_t };
static bcmcli_prop_descr * BCM_DESCR trx_calibration_stop_capture_window_prop_array[] = { &prop_descr_trx_calibration_stop_capture_window_pon_ni };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_trx_calibration_stop_capture_window_data_fields[] = { { .name = "pon_ni", .descr = "pon_ni", .offset = offsetof(bcmolt_trx_calibration_stop_capture_window_data, pon_ni), .type = &type_descr_uint8_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_trx_calibration_stop_capture_window_data = { .name = "bcmolt_trx_calibration_stop_capture_window_data", .descr = "stop capture window", .size = sizeof(bcmolt_trx_calibration_stop_capture_window_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_trx_calibration_stop_capture_window_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_trx_calibration_stop_capture_window_data_fields } } };

/* Group: trx_calibration - auto_cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_trx_calibration_auto_cfg_capture_window_and_statistic_completed = { .name = "capture_window_and_statistic_completed", .descr = "If true, indications of type \"capture_window_and_statistic_completed\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_TRX_CALIBRATION_AUTO_CFG_ID_CAPTURE_WINDOW_AND_STATISTIC_COMPLETED, .offset = offsetof(bcmolt_trx_calibration_auto_cfg_data, capture_window_and_statistic_completed), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr * BCM_DESCR trx_calibration_auto_cfg_prop_array[] = { &prop_descr_trx_calibration_auto_cfg_capture_window_and_statistic_completed };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_trx_calibration_auto_cfg_data_fields[] = { { .name = "capture_window_and_statistic_completed", .descr = "If true, indications of type \"capture_window_and_statistic_completed\" will be generated.", .offset = offsetof(bcmolt_trx_calibration_auto_cfg_data, capture_window_and_statistic_completed), .type = &type_descr_bcmos_bool } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_trx_calibration_auto_cfg_data = { .name = "bcmolt_trx_calibration_auto_cfg_data", .descr = "Indication Configuration", .size = sizeof(bcmolt_trx_calibration_auto_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_trx_calibration_auto_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_trx_calibration_auto_cfg_data_fields } } };

/* ==== Object: xgpon_alloc ==== */

/* Group: xgpon_alloc - key */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_alloc_key_pon_ni = { .name = "pon_ni", .descr = "PON network interface", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ALLOC_KEY_ID_PON_NI, .offset = offsetof(bcmolt_xgpon_alloc_key, pon_ni), .type = &type_descr_uint8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_alloc_key_alloc_id = { .name = "alloc_id", .descr = "Alloc ID", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ALLOC_KEY_ID_ALLOC_ID, .offset = offsetof(bcmolt_xgpon_alloc_key, alloc_id), .type = &type_descr_uint16_t };
static bcmcli_prop_descr * BCM_DESCR xgpon_alloc_key_prop_array[] = { &prop_descr_xgpon_alloc_key_pon_ni, &prop_descr_xgpon_alloc_key_alloc_id };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_alloc_key_fields[] = { { .name = "pon_ni", .descr = "PON network interface", .offset = offsetof(bcmolt_xgpon_alloc_key, pon_ni), .type = &type_descr_uint8_t }, { .name = "alloc_id", .descr = "Alloc ID", .offset = offsetof(bcmolt_xgpon_alloc_key, alloc_id), .type = &type_descr_uint16_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_alloc_key = { .name = "bcmolt_xgpon_alloc_key", .descr = "key", .size = sizeof(bcmolt_xgpon_alloc_key), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_alloc_key_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_alloc_key_fields } } };

/* Group: xgpon_alloc - cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_alloc_cfg_state = { .name = "state", .descr = "Current Alloc ID state", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_XGPON_ALLOC_CFG_ID_STATE, .offset = offsetof(bcmolt_xgpon_alloc_cfg_data, state), .type = &type_descr_bcmolt_alloc_state };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_alloc_cfg_sla = { .name = "sla", .descr = "Alloc ID SLA", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ALLOC_CFG_ID_SLA, .offset = offsetof(bcmolt_xgpon_alloc_cfg_data, sla), .type = &type_descr_bcmolt_pon_alloc_sla };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_alloc_cfg_onu_id = { .name = "onu_id", .descr = "ONU ID the alloc ID is assigned to", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ALLOC_CFG_ID_ONU_ID, .offset = offsetof(bcmolt_xgpon_alloc_cfg_data, onu_id), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_alloc_cfg_collect_stats = { .name = "collect_stats", .descr = "Enable statistics collection for this alloc ID", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ALLOC_CFG_ID_COLLECT_STATS, .offset = offsetof(bcmolt_xgpon_alloc_cfg_data, collect_stats), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr * BCM_DESCR xgpon_alloc_cfg_prop_array[] = { &prop_descr_xgpon_alloc_cfg_state, &prop_descr_xgpon_alloc_cfg_sla, &prop_descr_xgpon_alloc_cfg_onu_id, &prop_descr_xgpon_alloc_cfg_collect_stats };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_alloc_cfg_data_fields[] = { { .name = "state", .descr = "Current Alloc ID state", .offset = offsetof(bcmolt_xgpon_alloc_cfg_data, state), .type = &type_descr_bcmolt_alloc_state }, { .name = "sla", .descr = "Alloc ID SLA", .offset = offsetof(bcmolt_xgpon_alloc_cfg_data, sla), .type = &type_descr_bcmolt_pon_alloc_sla }, { .name = "onu_id", .descr = "ONU ID the alloc ID is assigned to", .offset = offsetof(bcmolt_xgpon_alloc_cfg_data, onu_id), .type = &type_descr_uint16_t }, { .name = "collect_stats", .descr = "Enable statistics collection for this alloc ID", .offset = offsetof(bcmolt_xgpon_alloc_cfg_data, collect_stats), .type = &type_descr_bcmos_bool } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_alloc_cfg_data = { .name = "bcmolt_xgpon_alloc_cfg_data", .descr = "cfg", .size = sizeof(bcmolt_xgpon_alloc_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_alloc_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_alloc_cfg_data_fields } } };

/* Group: xgpon_alloc - configuration_completed */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_alloc_configuration_completed_status = { .name = "status", .descr = "status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ALLOC_CONFIGURATION_COMPLETED_ID_STATUS, .offset = offsetof(bcmolt_xgpon_alloc_configuration_completed_data, status), .type = &type_descr_bcmolt_result };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_alloc_configuration_completed_new_state = { .name = "new_state", .descr = "new state", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ALLOC_CONFIGURATION_COMPLETED_ID_NEW_STATE, .offset = offsetof(bcmolt_xgpon_alloc_configuration_completed_data, new_state), .type = &type_descr_bcmolt_alloc_state };
static bcmcli_prop_descr * BCM_DESCR xgpon_alloc_configuration_completed_prop_array[] = { &prop_descr_xgpon_alloc_configuration_completed_status, &prop_descr_xgpon_alloc_configuration_completed_new_state };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_alloc_configuration_completed_data_fields[] = { { .name = "status", .descr = "status", .offset = offsetof(bcmolt_xgpon_alloc_configuration_completed_data, status), .type = &type_descr_bcmolt_result }, { .name = "new_state", .descr = "new state", .offset = offsetof(bcmolt_xgpon_alloc_configuration_completed_data, new_state), .type = &type_descr_bcmolt_alloc_state } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_alloc_configuration_completed_data = { .name = "bcmolt_xgpon_alloc_configuration_completed_data", .descr = "Configuration Completed", .size = sizeof(bcmolt_xgpon_alloc_configuration_completed_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_alloc_configuration_completed_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_alloc_configuration_completed_data_fields } } };

/* Group: xgpon_alloc - get_stats */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_alloc_get_stats_num_of_cycles = { .name = "num_of_cycles", .descr = "The number of cycles to run statistics collection", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ALLOC_GET_STATS_ID_NUM_OF_CYCLES, .offset = offsetof(bcmolt_xgpon_alloc_get_stats_data, num_of_cycles), .type = &type_descr_uint32_t };
static bcmcli_prop_descr * BCM_DESCR xgpon_alloc_get_stats_prop_array[] = { &prop_descr_xgpon_alloc_get_stats_num_of_cycles };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_alloc_get_stats_data_fields[] = { { .name = "num_of_cycles", .descr = "The number of cycles to run statistics collection", .offset = offsetof(bcmolt_xgpon_alloc_get_stats_data, num_of_cycles), .type = &type_descr_uint32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_alloc_get_stats_data = { .name = "bcmolt_xgpon_alloc_get_stats_data", .descr = "Run statistics collection for a given period of time", .size = sizeof(bcmolt_xgpon_alloc_get_stats_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_alloc_get_stats_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_alloc_get_stats_data_fields } } };

/* Group: xgpon_alloc - get_alloc_stats_completed */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_alloc_get_alloc_stats_completed_status = { .name = "status", .descr = "status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ALLOC_GET_ALLOC_STATS_COMPLETED_ID_STATUS, .offset = offsetof(bcmolt_xgpon_alloc_get_alloc_stats_completed_data, status), .type = &type_descr_bcmolt_result };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_alloc_get_alloc_stats_completed_average_nsr_used = { .name = "average_nsr_used", .descr = "Average NSR used words", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ALLOC_GET_ALLOC_STATS_COMPLETED_ID_AVERAGE_NSR_USED, .offset = offsetof(bcmolt_xgpon_alloc_get_alloc_stats_completed_data, average_nsr_used), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_alloc_get_alloc_stats_completed_average_nsr_allocated = { .name = "average_nsr_allocated", .descr = "Average NSR allocated words", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ALLOC_GET_ALLOC_STATS_COMPLETED_ID_AVERAGE_NSR_ALLOCATED, .offset = offsetof(bcmolt_xgpon_alloc_get_alloc_stats_completed_data, average_nsr_allocated), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_alloc_get_alloc_stats_completed_average_sr_report = { .name = "average_sr_report", .descr = "Average SR report", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ALLOC_GET_ALLOC_STATS_COMPLETED_ID_AVERAGE_SR_REPORT, .offset = offsetof(bcmolt_xgpon_alloc_get_alloc_stats_completed_data, average_sr_report), .type = &type_descr_uint32_t };
static bcmcli_prop_descr * BCM_DESCR xgpon_alloc_get_alloc_stats_completed_prop_array[] = { &prop_descr_xgpon_alloc_get_alloc_stats_completed_status, &prop_descr_xgpon_alloc_get_alloc_stats_completed_average_nsr_used, &prop_descr_xgpon_alloc_get_alloc_stats_completed_average_nsr_allocated, &prop_descr_xgpon_alloc_get_alloc_stats_completed_average_sr_report };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_alloc_get_alloc_stats_completed_data_fields[] = { { .name = "status", .descr = "status", .offset = offsetof(bcmolt_xgpon_alloc_get_alloc_stats_completed_data, status), .type = &type_descr_bcmolt_result }, { .name = "average_nsr_used", .descr = "Average NSR used words", .offset = offsetof(bcmolt_xgpon_alloc_get_alloc_stats_completed_data, average_nsr_used), .type = &type_descr_uint32_t }, { .name = "average_nsr_allocated", .descr = "Average NSR allocated words", .offset = offsetof(bcmolt_xgpon_alloc_get_alloc_stats_completed_data, average_nsr_allocated), .type = &type_descr_uint32_t }, { .name = "average_sr_report", .descr = "Average SR report", .offset = offsetof(bcmolt_xgpon_alloc_get_alloc_stats_completed_data, average_sr_report), .type = &type_descr_uint32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_alloc_get_alloc_stats_completed_data = { .name = "bcmolt_xgpon_alloc_get_alloc_stats_completed_data", .descr = "Collected alloc ID statistics from get_stats operation", .size = sizeof(bcmolt_xgpon_alloc_get_alloc_stats_completed_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_alloc_get_alloc_stats_completed_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_alloc_get_alloc_stats_completed_data_fields } } };

/* Group: xgpon_alloc - set_state */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_alloc_set_state_state = { .name = "state", .descr = "State", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ALLOC_SET_STATE_ID_STATE, .offset = offsetof(bcmolt_xgpon_alloc_set_state_data, state), .type = &type_descr_bcmolt_alloc_operation };
static bcmcli_prop_descr * BCM_DESCR xgpon_alloc_set_state_prop_array[] = { &prop_descr_xgpon_alloc_set_state_state };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_alloc_set_state_data_fields[] = { { .name = "state", .descr = "State", .offset = offsetof(bcmolt_xgpon_alloc_set_state_data, state), .type = &type_descr_bcmolt_alloc_operation } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_alloc_set_state_data = { .name = "bcmolt_xgpon_alloc_set_state_data", .descr = "Sets the alloc's activation state.  This is only used for protection switching on an active-standby PON.  In normal operation, this isn't necessary since allocs are activated/deactivated automatically along with the ONU.", .size = sizeof(bcmolt_xgpon_alloc_set_state_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_alloc_set_state_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_alloc_set_state_data_fields } } };

/* Group: xgpon_alloc - stat */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_alloc_stat_rx_bytes = { .name = "rx_bytes", .descr = "Number of alloc ID received bytes.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ALLOC_STAT_ID_RX_BYTES, .offset = offsetof(bcmolt_xgpon_alloc_stat_data, rx_bytes), .type = &type_descr_uint64_t };
static bcmcli_prop_descr * BCM_DESCR xgpon_alloc_stat_prop_array[] = { &prop_descr_xgpon_alloc_stat_rx_bytes };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_alloc_stat_data_fields[] = { { .name = "rx_bytes", .descr = "Number of alloc ID received bytes.", .offset = offsetof(bcmolt_xgpon_alloc_stat_data, rx_bytes), .type = &type_descr_uint64_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_alloc_stat_data = { .name = "bcmolt_xgpon_alloc_stat_data", .descr = "stat", .size = sizeof(bcmolt_xgpon_alloc_stat_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_alloc_stat_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_alloc_stat_data_fields } } };

/* Group: xgpon_alloc - stat_cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_alloc_stat_cfg_cfg = { .name = "cfg", .descr = "Statistic alarm configuration.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ALLOC_STAT_CFG_ID_CFG, .offset = offsetof(bcmolt_xgpon_alloc_stat_cfg_data, cfg), .type = &type_descr_bcmolt_stat_alarm_config };
static bcmcli_prop_descr * BCM_DESCR xgpon_alloc_stat_cfg_prop_array[] = { &prop_descr_xgpon_alloc_stat_cfg_cfg };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_alloc_stat_cfg_data_fields[] = { { .name = "cfg", .descr = "Statistic alarm configuration.", .offset = offsetof(bcmolt_xgpon_alloc_stat_cfg_data, cfg), .type = &type_descr_bcmolt_stat_alarm_config } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_alloc_stat_cfg_data = { .name = "bcmolt_xgpon_alloc_stat_cfg_data", .descr = "Statistic Configuration", .size = sizeof(bcmolt_xgpon_alloc_stat_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_alloc_stat_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_alloc_stat_cfg_data_fields } } };

/* Group: xgpon_alloc - stat_alarm_raised */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_alloc_stat_alarm_raised_stat = { .name = "stat", .descr = "Statistic identifier.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ALLOC_STAT_ALARM_RAISED_ID_STAT, .offset = offsetof(bcmolt_xgpon_alloc_stat_alarm_raised_data, stat), .type = &type_descr_bcmolt_xgpon_alloc_stat_id };
static bcmcli_prop_descr * BCM_DESCR xgpon_alloc_stat_alarm_raised_prop_array[] = { &prop_descr_xgpon_alloc_stat_alarm_raised_stat };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_alloc_stat_alarm_raised_data_fields[] = { { .name = "stat", .descr = "Statistic identifier.", .offset = offsetof(bcmolt_xgpon_alloc_stat_alarm_raised_data, stat), .type = &type_descr_bcmolt_xgpon_alloc_stat_id } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_alloc_stat_alarm_raised_data = { .name = "bcmolt_xgpon_alloc_stat_alarm_raised_data", .descr = "Sent when a configured statistic alarm condition has been met.", .size = sizeof(bcmolt_xgpon_alloc_stat_alarm_raised_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_alloc_stat_alarm_raised_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_alloc_stat_alarm_raised_data_fields } } };

/* Group: xgpon_alloc - stat_alarm_cleared */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_alloc_stat_alarm_cleared_stat = { .name = "stat", .descr = "Statistic identifier.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ALLOC_STAT_ALARM_CLEARED_ID_STAT, .offset = offsetof(bcmolt_xgpon_alloc_stat_alarm_cleared_data, stat), .type = &type_descr_bcmolt_xgpon_alloc_stat_id };
static bcmcli_prop_descr * BCM_DESCR xgpon_alloc_stat_alarm_cleared_prop_array[] = { &prop_descr_xgpon_alloc_stat_alarm_cleared_stat };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_alloc_stat_alarm_cleared_data_fields[] = { { .name = "stat", .descr = "Statistic identifier.", .offset = offsetof(bcmolt_xgpon_alloc_stat_alarm_cleared_data, stat), .type = &type_descr_bcmolt_xgpon_alloc_stat_id } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_alloc_stat_alarm_cleared_data = { .name = "bcmolt_xgpon_alloc_stat_alarm_cleared_data", .descr = "Sent when a configured statistic alarm condition is no longer met.", .size = sizeof(bcmolt_xgpon_alloc_stat_alarm_cleared_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_alloc_stat_alarm_cleared_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_alloc_stat_alarm_cleared_data_fields } } };

/* Group: xgpon_alloc - auto_cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_alloc_auto_cfg_configuration_completed = { .name = "configuration_completed", .descr = "If true, indications of type \"configuration_completed\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ALLOC_AUTO_CFG_ID_CONFIGURATION_COMPLETED, .offset = offsetof(bcmolt_xgpon_alloc_auto_cfg_data, configuration_completed), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_alloc_auto_cfg_get_alloc_stats_completed = { .name = "get_alloc_stats_completed", .descr = "If true, indications of type \"get_alloc_stats_completed\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ALLOC_AUTO_CFG_ID_GET_ALLOC_STATS_COMPLETED, .offset = offsetof(bcmolt_xgpon_alloc_auto_cfg_data, get_alloc_stats_completed), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_alloc_auto_cfg_stat_alarm_cleared = { .name = "stat_alarm_cleared", .descr = "If true, indications of type \"stat_alarm_cleared\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ALLOC_AUTO_CFG_ID_STAT_ALARM_CLEARED, .offset = offsetof(bcmolt_xgpon_alloc_auto_cfg_data, stat_alarm_cleared), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_alloc_auto_cfg_stat_alarm_raised = { .name = "stat_alarm_raised", .descr = "If true, indications of type \"stat_alarm_raised\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ALLOC_AUTO_CFG_ID_STAT_ALARM_RAISED, .offset = offsetof(bcmolt_xgpon_alloc_auto_cfg_data, stat_alarm_raised), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr * BCM_DESCR xgpon_alloc_auto_cfg_prop_array[] = { &prop_descr_xgpon_alloc_auto_cfg_configuration_completed, &prop_descr_xgpon_alloc_auto_cfg_get_alloc_stats_completed, &prop_descr_xgpon_alloc_auto_cfg_stat_alarm_cleared, &prop_descr_xgpon_alloc_auto_cfg_stat_alarm_raised };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_alloc_auto_cfg_data_fields[] = { { .name = "configuration_completed", .descr = "If true, indications of type \"configuration_completed\" will be generated.", .offset = offsetof(bcmolt_xgpon_alloc_auto_cfg_data, configuration_completed), .type = &type_descr_bcmos_bool }, { .name = "get_alloc_stats_completed", .descr = "If true, indications of type \"get_alloc_stats_completed\" will be generated.", .offset = offsetof(bcmolt_xgpon_alloc_auto_cfg_data, get_alloc_stats_completed), .type = &type_descr_bcmos_bool }, { .name = "stat_alarm_cleared", .descr = "If true, indications of type \"stat_alarm_cleared\" will be generated.", .offset = offsetof(bcmolt_xgpon_alloc_auto_cfg_data, stat_alarm_cleared), .type = &type_descr_bcmos_bool }, { .name = "stat_alarm_raised", .descr = "If true, indications of type \"stat_alarm_raised\" will be generated.", .offset = offsetof(bcmolt_xgpon_alloc_auto_cfg_data, stat_alarm_raised), .type = &type_descr_bcmos_bool } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_alloc_auto_cfg_data = { .name = "bcmolt_xgpon_alloc_auto_cfg_data", .descr = "Indication Configuration", .size = sizeof(bcmolt_xgpon_alloc_auto_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_alloc_auto_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_alloc_auto_cfg_data_fields } } };

/* ==== Object: xgpon_gem_port ==== */

/* Group: xgpon_gem_port - key */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_gem_port_key_pon_ni = { .name = "pon_ni", .descr = "PON network interface", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_GEM_PORT_KEY_ID_PON_NI, .offset = offsetof(bcmolt_xgpon_gem_port_key, pon_ni), .type = &type_descr_uint8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_gem_port_key_gem_port_id = { .name = "gem_port_id", .descr = "GEM PORT ID", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_GEM_PORT_KEY_ID_GEM_PORT_ID, .offset = offsetof(bcmolt_xgpon_gem_port_key, gem_port_id), .type = &type_descr_uint16_t };
static bcmcli_prop_descr * BCM_DESCR xgpon_gem_port_key_prop_array[] = { &prop_descr_xgpon_gem_port_key_pon_ni, &prop_descr_xgpon_gem_port_key_gem_port_id };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_gem_port_key_fields[] = { { .name = "pon_ni", .descr = "PON network interface", .offset = offsetof(bcmolt_xgpon_gem_port_key, pon_ni), .type = &type_descr_uint8_t }, { .name = "gem_port_id", .descr = "GEM PORT ID", .offset = offsetof(bcmolt_xgpon_gem_port_key, gem_port_id), .type = &type_descr_uint16_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_gem_port_key = { .name = "bcmolt_xgpon_gem_port_key", .descr = "key", .size = sizeof(bcmolt_xgpon_gem_port_key), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_gem_port_key_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_gem_port_key_fields } } };

/* Group: xgpon_gem_port - cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_gem_port_cfg_configuration = { .name = "configuration", .descr = "GEM port configuration parameters", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_GEM_PORT_CFG_ID_CONFIGURATION, .offset = offsetof(bcmolt_xgpon_gem_port_cfg_data, configuration), .type = &type_descr_bcmolt_gem_port_configuration };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_gem_port_cfg_onu_id = { .name = "onu_id", .descr = "ONU ID this GEM port is assigned to", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_GEM_PORT_CFG_ID_ONU_ID, .offset = offsetof(bcmolt_xgpon_gem_port_cfg_data, onu_id), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_gem_port_cfg_gem_port_state = { .name = "gem_port_state", .descr = "Current GEM port state", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_XGPON_GEM_PORT_CFG_ID_GEM_PORT_STATE, .offset = offsetof(bcmolt_xgpon_gem_port_cfg_data, gem_port_state), .type = &type_descr_bcmolt_xgpon_gem_port_state };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_gem_port_cfg_encryption_mode = { .name = "encryption_mode", .descr = "Enable/Disable the downstream encryption mode of the GEM Port", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_GEM_PORT_CFG_ID_ENCRYPTION_MODE, .offset = offsetof(bcmolt_xgpon_gem_port_cfg_data, encryption_mode), .type = &type_descr_bcmolt_control_state };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_gem_port_cfg_upstream_destination_queue = { .name = "upstream_destination_queue", .descr = "The destination queue of the packets arriving on this GEM Port on the upstream direction", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_GEM_PORT_CFG_ID_UPSTREAM_DESTINATION_QUEUE, .offset = offsetof(bcmolt_xgpon_gem_port_cfg_data, upstream_destination_queue), .type = &type_descr_bcmolt_us_gem_port_destination };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_gem_port_cfg_control = { .name = "control", .descr = "Enable/Disable the GEM Port ID in the OLT", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_GEM_PORT_CFG_ID_CONTROL, .offset = offsetof(bcmolt_xgpon_gem_port_cfg_data, control), .type = &type_descr_bcmolt_control_state };
static bcmcli_prop_descr * BCM_DESCR xgpon_gem_port_cfg_prop_array[] = { &prop_descr_xgpon_gem_port_cfg_configuration, &prop_descr_xgpon_gem_port_cfg_onu_id, &prop_descr_xgpon_gem_port_cfg_gem_port_state, &prop_descr_xgpon_gem_port_cfg_encryption_mode, &prop_descr_xgpon_gem_port_cfg_upstream_destination_queue, &prop_descr_xgpon_gem_port_cfg_control };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_gem_port_cfg_data_fields[] = { { .name = "configuration", .descr = "GEM port configuration parameters", .offset = offsetof(bcmolt_xgpon_gem_port_cfg_data, configuration), .type = &type_descr_bcmolt_gem_port_configuration }, { .name = "onu_id", .descr = "ONU ID this GEM port is assigned to", .offset = offsetof(bcmolt_xgpon_gem_port_cfg_data, onu_id), .type = &type_descr_uint16_t }, { .name = "gem_port_state", .descr = "Current GEM port state", .offset = offsetof(bcmolt_xgpon_gem_port_cfg_data, gem_port_state), .type = &type_descr_bcmolt_xgpon_gem_port_state }, { .name = "encryption_mode", .descr = "Enable/Disable the downstream encryption mode of the GEM Port", .offset = offsetof(bcmolt_xgpon_gem_port_cfg_data, encryption_mode), .type = &type_descr_bcmolt_control_state }, { .name = "upstream_destination_queue", .descr = "The destination queue of the packets arriving on this GEM Port on the upstream direction", .offset = offsetof(bcmolt_xgpon_gem_port_cfg_data, upstream_destination_queue), .type = &type_descr_bcmolt_us_gem_port_destination }, { .name = "control", .descr = "Enable/Disable the GEM Port ID in the OLT", .offset = offsetof(bcmolt_xgpon_gem_port_cfg_data, control), .type = &type_descr_bcmolt_control_state } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_gem_port_cfg_data = { .name = "bcmolt_xgpon_gem_port_cfg_data", .descr = "cfg", .size = sizeof(bcmolt_xgpon_gem_port_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_gem_port_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_gem_port_cfg_data_fields } } };

/* Group: xgpon_gem_port - stat */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_gem_port_stat_tx_bytes = { .name = "tx_bytes", .descr = "TX bytes", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_GEM_PORT_STAT_ID_TX_BYTES, .offset = offsetof(bcmolt_xgpon_gem_port_stat_data, tx_bytes), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_gem_port_stat_tx_packets = { .name = "tx_packets", .descr = "TX packets", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_GEM_PORT_STAT_ID_TX_PACKETS, .offset = offsetof(bcmolt_xgpon_gem_port_stat_data, tx_packets), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_gem_port_stat_rx_packets = { .name = "rx_packets", .descr = "RX packets", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_GEM_PORT_STAT_ID_RX_PACKETS, .offset = offsetof(bcmolt_xgpon_gem_port_stat_data, rx_packets), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_gem_port_stat_rx_bytes = { .name = "rx_bytes", .descr = "RX bytes", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_GEM_PORT_STAT_ID_RX_BYTES, .offset = offsetof(bcmolt_xgpon_gem_port_stat_data, rx_bytes), .type = &type_descr_uint64_t };
static bcmcli_prop_descr * BCM_DESCR xgpon_gem_port_stat_prop_array[] = { &prop_descr_xgpon_gem_port_stat_tx_bytes, &prop_descr_xgpon_gem_port_stat_tx_packets, &prop_descr_xgpon_gem_port_stat_rx_packets, &prop_descr_xgpon_gem_port_stat_rx_bytes };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_gem_port_stat_data_fields[] = { { .name = "tx_bytes", .descr = "TX bytes", .offset = offsetof(bcmolt_xgpon_gem_port_stat_data, tx_bytes), .type = &type_descr_uint64_t }, { .name = "tx_packets", .descr = "TX packets", .offset = offsetof(bcmolt_xgpon_gem_port_stat_data, tx_packets), .type = &type_descr_uint64_t }, { .name = "rx_packets", .descr = "RX packets", .offset = offsetof(bcmolt_xgpon_gem_port_stat_data, rx_packets), .type = &type_descr_uint64_t }, { .name = "rx_bytes", .descr = "RX bytes", .offset = offsetof(bcmolt_xgpon_gem_port_stat_data, rx_bytes), .type = &type_descr_uint64_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_gem_port_stat_data = { .name = "bcmolt_xgpon_gem_port_stat_data", .descr = "stat", .size = sizeof(bcmolt_xgpon_gem_port_stat_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_gem_port_stat_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_gem_port_stat_data_fields } } };

/* Group: xgpon_gem_port - stat_cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_gem_port_stat_cfg_cfg = { .name = "cfg", .descr = "Statistic alarm configuration.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_GEM_PORT_STAT_CFG_ID_CFG, .offset = offsetof(bcmolt_xgpon_gem_port_stat_cfg_data, cfg), .type = &type_descr_bcmolt_stat_alarm_config };
static bcmcli_prop_descr * BCM_DESCR xgpon_gem_port_stat_cfg_prop_array[] = { &prop_descr_xgpon_gem_port_stat_cfg_cfg };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_gem_port_stat_cfg_data_fields[] = { { .name = "cfg", .descr = "Statistic alarm configuration.", .offset = offsetof(bcmolt_xgpon_gem_port_stat_cfg_data, cfg), .type = &type_descr_bcmolt_stat_alarm_config } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_gem_port_stat_cfg_data = { .name = "bcmolt_xgpon_gem_port_stat_cfg_data", .descr = "Statistic Configuration", .size = sizeof(bcmolt_xgpon_gem_port_stat_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_gem_port_stat_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_gem_port_stat_cfg_data_fields } } };

/* Group: xgpon_gem_port - stat_alarm_raised */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_gem_port_stat_alarm_raised_stat = { .name = "stat", .descr = "Statistic identifier.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_GEM_PORT_STAT_ALARM_RAISED_ID_STAT, .offset = offsetof(bcmolt_xgpon_gem_port_stat_alarm_raised_data, stat), .type = &type_descr_bcmolt_xgpon_gem_port_stat_id };
static bcmcli_prop_descr * BCM_DESCR xgpon_gem_port_stat_alarm_raised_prop_array[] = { &prop_descr_xgpon_gem_port_stat_alarm_raised_stat };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_gem_port_stat_alarm_raised_data_fields[] = { { .name = "stat", .descr = "Statistic identifier.", .offset = offsetof(bcmolt_xgpon_gem_port_stat_alarm_raised_data, stat), .type = &type_descr_bcmolt_xgpon_gem_port_stat_id } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_gem_port_stat_alarm_raised_data = { .name = "bcmolt_xgpon_gem_port_stat_alarm_raised_data", .descr = "Sent when a configured statistic alarm condition has been met.", .size = sizeof(bcmolt_xgpon_gem_port_stat_alarm_raised_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_gem_port_stat_alarm_raised_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_gem_port_stat_alarm_raised_data_fields } } };

/* Group: xgpon_gem_port - stat_alarm_cleared */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_gem_port_stat_alarm_cleared_stat = { .name = "stat", .descr = "Statistic identifier.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_GEM_PORT_STAT_ALARM_CLEARED_ID_STAT, .offset = offsetof(bcmolt_xgpon_gem_port_stat_alarm_cleared_data, stat), .type = &type_descr_bcmolt_xgpon_gem_port_stat_id };
static bcmcli_prop_descr * BCM_DESCR xgpon_gem_port_stat_alarm_cleared_prop_array[] = { &prop_descr_xgpon_gem_port_stat_alarm_cleared_stat };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_gem_port_stat_alarm_cleared_data_fields[] = { { .name = "stat", .descr = "Statistic identifier.", .offset = offsetof(bcmolt_xgpon_gem_port_stat_alarm_cleared_data, stat), .type = &type_descr_bcmolt_xgpon_gem_port_stat_id } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_gem_port_stat_alarm_cleared_data = { .name = "bcmolt_xgpon_gem_port_stat_alarm_cleared_data", .descr = "Sent when a configured statistic alarm condition is no longer met.", .size = sizeof(bcmolt_xgpon_gem_port_stat_alarm_cleared_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_gem_port_stat_alarm_cleared_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_gem_port_stat_alarm_cleared_data_fields } } };

/* Group: xgpon_gem_port - auto_cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_gem_port_auto_cfg_stat_alarm_cleared = { .name = "stat_alarm_cleared", .descr = "If true, indications of type \"stat_alarm_cleared\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_GEM_PORT_AUTO_CFG_ID_STAT_ALARM_CLEARED, .offset = offsetof(bcmolt_xgpon_gem_port_auto_cfg_data, stat_alarm_cleared), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_gem_port_auto_cfg_stat_alarm_raised = { .name = "stat_alarm_raised", .descr = "If true, indications of type \"stat_alarm_raised\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_GEM_PORT_AUTO_CFG_ID_STAT_ALARM_RAISED, .offset = offsetof(bcmolt_xgpon_gem_port_auto_cfg_data, stat_alarm_raised), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr * BCM_DESCR xgpon_gem_port_auto_cfg_prop_array[] = { &prop_descr_xgpon_gem_port_auto_cfg_stat_alarm_cleared, &prop_descr_xgpon_gem_port_auto_cfg_stat_alarm_raised };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_gem_port_auto_cfg_data_fields[] = { { .name = "stat_alarm_cleared", .descr = "If true, indications of type \"stat_alarm_cleared\" will be generated.", .offset = offsetof(bcmolt_xgpon_gem_port_auto_cfg_data, stat_alarm_cleared), .type = &type_descr_bcmos_bool }, { .name = "stat_alarm_raised", .descr = "If true, indications of type \"stat_alarm_raised\" will be generated.", .offset = offsetof(bcmolt_xgpon_gem_port_auto_cfg_data, stat_alarm_raised), .type = &type_descr_bcmos_bool } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_gem_port_auto_cfg_data = { .name = "bcmolt_xgpon_gem_port_auto_cfg_data", .descr = "Indication Configuration", .size = sizeof(bcmolt_xgpon_gem_port_auto_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_gem_port_auto_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_gem_port_auto_cfg_data_fields } } };

/* ==== Object: xgpon_iwf ==== */

/* Group: xgpon_iwf - key */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_iwf_key_pon_ni = { .name = "pon_ni", .descr = "PON network interface", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_IWF_KEY_ID_PON_NI, .offset = offsetof(bcmolt_xgpon_iwf_key, pon_ni), .type = &type_descr_uint8_t };
static bcmcli_prop_descr * BCM_DESCR xgpon_iwf_key_prop_array[] = { &prop_descr_xgpon_iwf_key_pon_ni };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_iwf_key_fields[] = { { .name = "pon_ni", .descr = "PON network interface", .offset = offsetof(bcmolt_xgpon_iwf_key, pon_ni), .type = &type_descr_uint8_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_iwf_key = { .name = "bcmolt_xgpon_iwf_key", .descr = "key", .size = sizeof(bcmolt_xgpon_iwf_key), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_iwf_key_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_iwf_key_fields } } };

/* Group: xgpon_iwf - cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_iwf_cfg_us_otag_direct_tpid = { .name = "us_otag_direct_tpid", .descr = "TPID value of the VLAN tag added to upstream packet", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_IWF_CFG_ID_US_OTAG_DIRECT_TPID, .offset = offsetof(bcmolt_xgpon_iwf_cfg_data, us_otag_direct_tpid), .type = &type_descr_uint16_t_hex };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_iwf_cfg_ds_tpid = { .name = "ds_tpid", .descr = "Packets marked with one of the five configured DS TPID options will be forwarded, all the rest will be dropped", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_IWF_CFG_ID_DS_TPID, .offset = offsetof(bcmolt_xgpon_iwf_cfg_data, ds_tpid), .type = &type_descr_bcmolt_arr_u16_5_hex };
static bcmcli_prop_descr * BCM_DESCR xgpon_iwf_cfg_prop_array[] = { &prop_descr_xgpon_iwf_cfg_us_otag_direct_tpid, &prop_descr_xgpon_iwf_cfg_ds_tpid };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_iwf_cfg_data_fields[] = { { .name = "us_otag_direct_tpid", .descr = "TPID value of the VLAN tag added to upstream packet", .offset = offsetof(bcmolt_xgpon_iwf_cfg_data, us_otag_direct_tpid), .type = &type_descr_uint16_t_hex }, { .name = "ds_tpid", .descr = "Packets marked with one of the five configured DS TPID options will be forwarded, all the rest will be dropped", .offset = offsetof(bcmolt_xgpon_iwf_cfg_data, ds_tpid), .type = &type_descr_bcmolt_arr_u16_5_hex } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_iwf_cfg_data = { .name = "bcmolt_xgpon_iwf_cfg_data", .descr = "cfg", .size = sizeof(bcmolt_xgpon_iwf_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_iwf_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_iwf_cfg_data_fields } } };

/* ==== Object: xgpon_ni ==== */

/* Group: xgpon_ni - key */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_key_pon_ni = { .name = "pon_ni", .descr = "PON network interface", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_KEY_ID_PON_NI, .offset = offsetof(bcmolt_xgpon_ni_key, pon_ni), .type = &type_descr_uint8_t };
static bcmcli_prop_descr * BCM_DESCR xgpon_ni_key_prop_array[] = { &prop_descr_xgpon_ni_key_pon_ni };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_key_fields[] = { { .name = "pon_ni", .descr = "PON network interface", .offset = offsetof(bcmolt_xgpon_ni_key, pon_ni), .type = &type_descr_uint8_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_key = { .name = "bcmolt_xgpon_ni_key", .descr = "key", .size = sizeof(bcmolt_xgpon_ni_key), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_ni_key_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_ni_key_fields } } };

/* Group: xgpon_ni - cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_cfg_hw_pon_id = { .name = "hw_pon_id", .descr = "51 bit PON identifier. This attribute is part of the downstream physical synchronization block (PSBd)", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_CFG_ID_HW_PON_ID, .offset = offsetof(bcmolt_xgpon_ni_cfg_data, hw_pon_id), .type = &type_descr_bcmolt_hw_pon_id };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_cfg_available_bandwidth = { .name = "available_bandwidth", .descr = "PON available bandwidth parameters", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_XGPON_NI_CFG_ID_AVAILABLE_BANDWIDTH, .offset = offsetof(bcmolt_xgpon_ni_cfg_data, available_bandwidth), .type = &type_descr_bcmolt_pon_available_bandwidth };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_cfg_number_of_active_onus = { .name = "number_of_active_onus", .descr = "Number of active ONUs on the PON", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_XGPON_NI_CFG_ID_NUMBER_OF_ACTIVE_ONUS, .offset = offsetof(bcmolt_xgpon_ni_cfg_data, number_of_active_onus), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_cfg_pon_status = { .name = "pon_status", .descr = "PON status parameters", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_XGPON_NI_CFG_ID_PON_STATUS, .offset = offsetof(bcmolt_xgpon_ni_cfg_data, pon_status), .type = &type_descr_bcmolt_pon_status };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_cfg_pon_distance = { .name = "pon_distance", .descr = "PON distance", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_CFG_ID_PON_DISTANCE, .offset = offsetof(bcmolt_xgpon_ni_cfg_data, pon_distance), .type = &type_descr_bcmolt_pon_distance };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_cfg_ranging_window_size = { .name = "ranging_window_size", .descr = "Ranging window size in BW units (4-byte words for 2.5G upstream, 16-byte blocks for 10G upstream)", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_XGPON_NI_CFG_ID_RANGING_WINDOW_SIZE, .offset = offsetof(bcmolt_xgpon_ni_cfg_data, ranging_window_size), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_cfg_eqd_cycles_number = { .name = "eqd_cycles_number", .descr = "How many ranging windows are opened during a single ONU activation process", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_CFG_ID_EQD_CYCLES_NUMBER, .offset = offsetof(bcmolt_xgpon_ni_cfg_data, eqd_cycles_number), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_cfg_drift_control = { .name = "drift_control", .descr = "Drift control process configuration", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_CFG_ID_DRIFT_CONTROL, .offset = offsetof(bcmolt_xgpon_ni_cfg_data, drift_control), .type = &type_descr_bcmolt_pon_drift_control };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_cfg_los_alarm_threshold = { .name = "los_alarm_threshold", .descr = "LOS alarm threshold", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_CFG_ID_LOS_ALARM_THRESHOLD, .offset = offsetof(bcmolt_xgpon_ni_cfg_data, los_alarm_threshold), .type = &type_descr_uint8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_cfg_los_initial_value = { .name = "los_initial_value", .descr = "LOS initial value following PON activation", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_CFG_ID_LOS_INITIAL_VALUE, .offset = offsetof(bcmolt_xgpon_ni_cfg_data, los_initial_value), .type = &type_descr_bcmolt_status };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_cfg_onu_alarms_thresholds = { .name = "onu_alarms_thresholds", .descr = "ONU alarms thresholds configuration", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_CFG_ID_ONU_ALARMS_THRESHOLDS, .offset = offsetof(bcmolt_xgpon_ni_cfg_data, onu_alarms_thresholds), .type = &type_descr_bcmolt_xgpon_onu_alarms_thresholds };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_cfg_ber_monitor = { .name = "ber_monitor", .descr = "BER monitor process configuration", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_CFG_ID_BER_MONITOR, .offset = offsetof(bcmolt_xgpon_ni_cfg_data, ber_monitor), .type = &type_descr_bcmolt_ber_monitor_params };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_cfg_onu_activation = { .name = "onu_activation", .descr = "ONU activation control parameters", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_CFG_ID_ONU_ACTIVATION, .offset = offsetof(bcmolt_xgpon_ni_cfg_data, onu_activation), .type = &type_descr_bcmolt_xgpon_onu_activation };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_cfg_sn_acquisition = { .name = "sn_acquisition", .descr = "Serial Number process configuration", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_CFG_ID_SN_ACQUISITION, .offset = offsetof(bcmolt_xgpon_ni_cfg_data, sn_acquisition), .type = &type_descr_bcmolt_xgpon_sn_acquisition };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_cfg_key_exchange = { .name = "key_exchange", .descr = "Key Exchange process configuration", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_CFG_ID_KEY_EXCHANGE, .offset = offsetof(bcmolt_xgpon_ni_cfg_data, key_exchange), .type = &type_descr_bcmolt_xgpon_key_exchange };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_cfg_protection_switching = { .name = "protection_switching", .descr = "Protection switching control", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_CFG_ID_PROTECTION_SWITCHING, .offset = offsetof(bcmolt_xgpon_ni_cfg_data, protection_switching), .type = &type_descr_bcmolt_xgpon_protection_switching };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_cfg_protection_switching_debug = { .name = "protection_switching_debug", .descr = "protection switching debug ", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_CFG_ID_PROTECTION_SWITCHING_DEBUG, .offset = offsetof(bcmolt_xgpon_ni_cfg_data, protection_switching_debug), .type = &type_descr_bcmolt_xgpon_protection_switching_debug };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_cfg_cbr_rt_allocation_profile = { .name = "cbr_rt_allocation_profile", .descr = "CBR Real Time allocation profile", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_CFG_ID_CBR_RT_ALLOCATION_PROFILE, .offset = offsetof(bcmolt_xgpon_ni_cfg_data, cbr_rt_allocation_profile), .type = &type_descr_bcmolt_cbr_rt_allocation_profile };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_cfg_cbr_nrt_allocation_profile = { .name = "cbr_nrt_allocation_profile", .descr = "CBR non Real Time allocation profile", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_CFG_ID_CBR_NRT_ALLOCATION_PROFILE, .offset = offsetof(bcmolt_xgpon_ni_cfg_data, cbr_nrt_allocation_profile), .type = &type_descr_bcmolt_arr_u16_2 };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_cfg_power_management = { .name = "power_management", .descr = "ONU power management control", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_CFG_ID_POWER_MANAGEMENT, .offset = offsetof(bcmolt_xgpon_ni_cfg_data, power_management), .type = &type_descr_bcmolt_onu_power_management_configuration };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_cfg_rogue_onu_detection_process = { .name = "rogue_onu_detection_process", .descr = "TBD", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_CFG_ID_ROGUE_ONU_DETECTION_PROCESS, .offset = offsetof(bcmolt_xgpon_ni_cfg_data, rogue_onu_detection_process), .type = &type_descr_bcmolt_rogue_onu_detection_process };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_cfg_periodic_standby_pon_monitoring = { .name = "periodic_standby_pon_monitoring", .descr = "Periodic Standby PON monitoring", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_CFG_ID_PERIODIC_STANDBY_PON_MONITORING, .offset = offsetof(bcmolt_xgpon_ni_cfg_data, periodic_standby_pon_monitoring), .type = &type_descr_bcmolt_periodic_standby_pon_monitoring };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_cfg_dba_mode = { .name = "dba_mode", .descr = "DBA mode", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_CFG_ID_DBA_MODE, .offset = offsetof(bcmolt_xgpon_ni_cfg_data, dba_mode), .type = &type_descr_bcmolt_dba_mode };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_cfg_ploam_handling = { .name = "ploam_handling", .descr = "Ploam handling configuration", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_CFG_ID_PLOAM_HANDLING, .offset = offsetof(bcmolt_xgpon_ni_cfg_data, ploam_handling), .type = &type_descr_bcmolt_xgpon_ploam_handling };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_cfg_min_data_alloc_id = { .name = "min_data_alloc_id", .descr = "Min data Alloc ID value", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_CFG_ID_MIN_DATA_ALLOC_ID, .offset = offsetof(bcmolt_xgpon_ni_cfg_data, min_data_alloc_id), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_cfg_min_data_gem_port_id = { .name = "min_data_gem_port_id", .descr = "Min data XGEM port ID value", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_CFG_ID_MIN_DATA_GEM_PORT_ID, .offset = offsetof(bcmolt_xgpon_ni_cfg_data, min_data_gem_port_id), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_cfg_multicast_key = { .name = "multicast_key", .descr = "Multicast XGEM ports encryption control", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_CFG_ID_MULTICAST_KEY, .offset = offsetof(bcmolt_xgpon_ni_cfg_data, multicast_key), .type = &type_descr_bcmolt_xgpon_multicast_key };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_cfg_prbs_checker = { .name = "prbs_checker", .descr = "US PRBS checker configuration", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_CFG_ID_PRBS_CHECKER, .offset = offsetof(bcmolt_xgpon_ni_cfg_data, prbs_checker), .type = &type_descr_bcmolt_prbs_checker_config };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_cfg_prbs_generator = { .name = "prbs_generator", .descr = "DS PRBS generator configuration", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_CFG_ID_PRBS_GENERATOR, .offset = offsetof(bcmolt_xgpon_ni_cfg_data, prbs_generator), .type = &type_descr_bcmolt_prbs_generator_config };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_cfg_prbs_status = { .name = "prbs_status", .descr = "Result of US PRBS checker", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_XGPON_NI_CFG_ID_PRBS_STATUS, .offset = offsetof(bcmolt_xgpon_ni_cfg_data, prbs_status), .type = &type_descr_bcmolt_prbs_status };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_cfg_automatic_onu_deactivation = { .name = "automatic_onu_deactivation", .descr = "Option to disable the automatic deactivation of ONUs due to alarms", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_CFG_ID_AUTOMATIC_ONU_DEACTIVATION, .offset = offsetof(bcmolt_xgpon_ni_cfg_data, automatic_onu_deactivation), .type = &type_descr_bcmolt_automatic_onu_deactivation };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_cfg_us_bandwidth_limit = { .name = "us_bandwidth_limit", .descr = "Total PON upstream bandwidth limit in bytes per second.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_CFG_ID_US_BANDWIDTH_LIMIT, .offset = offsetof(bcmolt_xgpon_ni_cfg_data, us_bandwidth_limit), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_cfg_all_onus = { .name = "all_onus", .descr = "All ONUs currently provisioned on this PON.", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_XGPON_NI_CFG_ID_ALL_ONUS, .offset = offsetof(bcmolt_xgpon_ni_cfg_data, all_onus), .type = &type_descr_bcmolt_xgpon_onu_with_state_list_u16_max_510 };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_cfg_all_mcast_gem_ports = { .name = "all_mcast_gem_ports", .descr = "All multicast GEM ports currently provisioned on this PON.", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_XGPON_NI_CFG_ID_ALL_MCAST_GEM_PORTS, .offset = offsetof(bcmolt_xgpon_ni_cfg_data, all_mcast_gem_ports), .type = &type_descr_bcmolt_xgpon_gem_port_with_state_list_u16_max_128 };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_cfg_debug = { .name = "debug", .descr = "PON NI debug parameters", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_CFG_ID_DEBUG, .offset = offsetof(bcmolt_xgpon_ni_cfg_data, debug), .type = &type_descr_bcmolt_xgpon_ni_debug };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_cfg_onu_upgrade_params = { .name = "onu_upgrade_params", .descr = "ONU upgrade params", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_CFG_ID_ONU_UPGRADE_PARAMS, .offset = offsetof(bcmolt_xgpon_ni_cfg_data, onu_upgrade_params), .type = &type_descr_bcmolt_gpon_onu_upgrade_params };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_cfg_ds_fec_mode = { .name = "ds_fec_mode", .descr = "DS FEC mode", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_CFG_ID_DS_FEC_MODE, .offset = offsetof(bcmolt_xgpon_ni_cfg_data, ds_fec_mode), .type = &type_descr_bcmolt_control_state };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_cfg_dba_type = { .name = "dba_type", .descr = "DBA implementation type", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_CFG_ID_DBA_TYPE, .offset = offsetof(bcmolt_xgpon_ni_cfg_data, dba_type), .type = &type_descr_bcmolt_dba_type };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_cfg_onu_tuning = { .name = "onu_tuning", .descr = "onu tuning", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_CFG_ID_ONU_TUNING, .offset = offsetof(bcmolt_xgpon_ni_cfg_data, onu_tuning), .type = &type_descr_bcmolt_onu_tuning_configuration };
static bcmcli_prop_descr * BCM_DESCR xgpon_ni_cfg_prop_array[] = { &prop_descr_xgpon_ni_cfg_hw_pon_id, &prop_descr_xgpon_ni_cfg_available_bandwidth, &prop_descr_xgpon_ni_cfg_number_of_active_onus, &prop_descr_xgpon_ni_cfg_pon_status, &prop_descr_xgpon_ni_cfg_pon_distance, &prop_descr_xgpon_ni_cfg_ranging_window_size, &prop_descr_xgpon_ni_cfg_eqd_cycles_number, &prop_descr_xgpon_ni_cfg_drift_control, &prop_descr_xgpon_ni_cfg_los_alarm_threshold, &prop_descr_xgpon_ni_cfg_los_initial_value, &prop_descr_xgpon_ni_cfg_onu_alarms_thresholds, &prop_descr_xgpon_ni_cfg_ber_monitor, &prop_descr_xgpon_ni_cfg_onu_activation, &prop_descr_xgpon_ni_cfg_sn_acquisition, &prop_descr_xgpon_ni_cfg_key_exchange, &prop_descr_xgpon_ni_cfg_protection_switching, &prop_descr_xgpon_ni_cfg_protection_switching_debug, &prop_descr_xgpon_ni_cfg_cbr_rt_allocation_profile, &prop_descr_xgpon_ni_cfg_cbr_nrt_allocation_profile, &prop_descr_xgpon_ni_cfg_power_management, &prop_descr_xgpon_ni_cfg_rogue_onu_detection_process, &prop_descr_xgpon_ni_cfg_periodic_standby_pon_monitoring, &prop_descr_xgpon_ni_cfg_dba_mode, &prop_descr_xgpon_ni_cfg_ploam_handling, &prop_descr_xgpon_ni_cfg_min_data_alloc_id, &prop_descr_xgpon_ni_cfg_min_data_gem_port_id, &prop_descr_xgpon_ni_cfg_multicast_key, &prop_descr_xgpon_ni_cfg_prbs_checker, &prop_descr_xgpon_ni_cfg_prbs_generator, &prop_descr_xgpon_ni_cfg_prbs_status, &prop_descr_xgpon_ni_cfg_automatic_onu_deactivation, &prop_descr_xgpon_ni_cfg_us_bandwidth_limit, &prop_descr_xgpon_ni_cfg_all_onus, &prop_descr_xgpon_ni_cfg_all_mcast_gem_ports, &prop_descr_xgpon_ni_cfg_debug, &prop_descr_xgpon_ni_cfg_onu_upgrade_params, &prop_descr_xgpon_ni_cfg_ds_fec_mode, &prop_descr_xgpon_ni_cfg_dba_type, &prop_descr_xgpon_ni_cfg_onu_tuning };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_cfg_data_fields[] = { { .name = "hw_pon_id", .descr = "51 bit PON identifier. This attribute is part of the downstream physical synchronization block (PSBd)", .offset = offsetof(bcmolt_xgpon_ni_cfg_data, hw_pon_id), .type = &type_descr_bcmolt_hw_pon_id }, { .name = "available_bandwidth", .descr = "PON available bandwidth parameters", .offset = offsetof(bcmolt_xgpon_ni_cfg_data, available_bandwidth), .type = &type_descr_bcmolt_pon_available_bandwidth }, { .name = "number_of_active_onus", .descr = "Number of active ONUs on the PON", .offset = offsetof(bcmolt_xgpon_ni_cfg_data, number_of_active_onus), .type = &type_descr_uint16_t }, { .name = "pon_status", .descr = "PON status parameters", .offset = offsetof(bcmolt_xgpon_ni_cfg_data, pon_status), .type = &type_descr_bcmolt_pon_status }, { .name = "pon_distance", .descr = "PON distance", .offset = offsetof(bcmolt_xgpon_ni_cfg_data, pon_distance), .type = &type_descr_bcmolt_pon_distance }, { .name = "ranging_window_size", .descr = "Ranging window size in BW units (4-byte words for 2.5G upstream, 16-byte blocks for 10G upstream)", .offset = offsetof(bcmolt_xgpon_ni_cfg_data, ranging_window_size), .type = &type_descr_uint32_t }, { .name = "eqd_cycles_number", .descr = "How many ranging windows are opened during a single ONU activation process", .offset = offsetof(bcmolt_xgpon_ni_cfg_data, eqd_cycles_number), .type = &type_descr_uint32_t }, { .name = "drift_control", .descr = "Drift control process configuration", .offset = offsetof(bcmolt_xgpon_ni_cfg_data, drift_control), .type = &type_descr_bcmolt_pon_drift_control }, { .name = "los_alarm_threshold", .descr = "LOS alarm threshold", .offset = offsetof(bcmolt_xgpon_ni_cfg_data, los_alarm_threshold), .type = &type_descr_uint8_t }, { .name = "los_initial_value", .descr = "LOS initial value following PON activation", .offset = offsetof(bcmolt_xgpon_ni_cfg_data, los_initial_value), .type = &type_descr_bcmolt_status }, { .name = "onu_alarms_thresholds", .descr = "ONU alarms thresholds configuration", .offset = offsetof(bcmolt_xgpon_ni_cfg_data, onu_alarms_thresholds), .type = &type_descr_bcmolt_xgpon_onu_alarms_thresholds }, { .name = "ber_monitor", .descr = "BER monitor process configuration", .offset = offsetof(bcmolt_xgpon_ni_cfg_data, ber_monitor), .type = &type_descr_bcmolt_ber_monitor_params }, { .name = "onu_activation", .descr = "ONU activation control parameters", .offset = offsetof(bcmolt_xgpon_ni_cfg_data, onu_activation), .type = &type_descr_bcmolt_xgpon_onu_activation }, { .name = "sn_acquisition", .descr = "Serial Number process configuration", .offset = offsetof(bcmolt_xgpon_ni_cfg_data, sn_acquisition), .type = &type_descr_bcmolt_xgpon_sn_acquisition }, { .name = "key_exchange", .descr = "Key Exchange process configuration", .offset = offsetof(bcmolt_xgpon_ni_cfg_data, key_exchange), .type = &type_descr_bcmolt_xgpon_key_exchange }, { .name = "protection_switching", .descr = "Protection switching control", .offset = offsetof(bcmolt_xgpon_ni_cfg_data, protection_switching), .type = &type_descr_bcmolt_xgpon_protection_switching }, { .name = "protection_switching_debug", .descr = "protection switching debug ", .offset = offsetof(bcmolt_xgpon_ni_cfg_data, protection_switching_debug), .type = &type_descr_bcmolt_xgpon_protection_switching_debug }, { .name = "cbr_rt_allocation_profile", .descr = "CBR Real Time allocation profile", .offset = offsetof(bcmolt_xgpon_ni_cfg_data, cbr_rt_allocation_profile), .type = &type_descr_bcmolt_cbr_rt_allocation_profile }, { .name = "cbr_nrt_allocation_profile", .descr = "CBR non Real Time allocation profile", .offset = offsetof(bcmolt_xgpon_ni_cfg_data, cbr_nrt_allocation_profile), .type = &type_descr_bcmolt_arr_u16_2 }, { .name = "power_management", .descr = "ONU power management control", .offset = offsetof(bcmolt_xgpon_ni_cfg_data, power_management), .type = &type_descr_bcmolt_onu_power_management_configuration }, { .name = "rogue_onu_detection_process", .descr = "TBD", .offset = offsetof(bcmolt_xgpon_ni_cfg_data, rogue_onu_detection_process), .type = &type_descr_bcmolt_rogue_onu_detection_process }, { .name = "periodic_standby_pon_monitoring", .descr = "Periodic Standby PON monitoring", .offset = offsetof(bcmolt_xgpon_ni_cfg_data, periodic_standby_pon_monitoring), .type = &type_descr_bcmolt_periodic_standby_pon_monitoring }, { .name = "dba_mode", .descr = "DBA mode", .offset = offsetof(bcmolt_xgpon_ni_cfg_data, dba_mode), .type = &type_descr_bcmolt_dba_mode }, { .name = "ploam_handling", .descr = "Ploam handling configuration", .offset = offsetof(bcmolt_xgpon_ni_cfg_data, ploam_handling), .type = &type_descr_bcmolt_xgpon_ploam_handling }, { .name = "min_data_alloc_id", .descr = "Min data Alloc ID value", .offset = offsetof(bcmolt_xgpon_ni_cfg_data, min_data_alloc_id), .type = &type_descr_uint16_t }, { .name = "min_data_gem_port_id", .descr = "Min data XGEM port ID value", .offset = offsetof(bcmolt_xgpon_ni_cfg_data, min_data_gem_port_id), .type = &type_descr_uint16_t }, { .name = "multicast_key", .descr = "Multicast XGEM ports encryption control", .offset = offsetof(bcmolt_xgpon_ni_cfg_data, multicast_key), .type = &type_descr_bcmolt_xgpon_multicast_key }, { .name = "prbs_checker", .descr = "US PRBS checker configuration", .offset = offsetof(bcmolt_xgpon_ni_cfg_data, prbs_checker), .type = &type_descr_bcmolt_prbs_checker_config }, { .name = "prbs_generator", .descr = "DS PRBS generator configuration", .offset = offsetof(bcmolt_xgpon_ni_cfg_data, prbs_generator), .type = &type_descr_bcmolt_prbs_generator_config }, { .name = "prbs_status", .descr = "Result of US PRBS checker", .offset = offsetof(bcmolt_xgpon_ni_cfg_data, prbs_status), .type = &type_descr_bcmolt_prbs_status }, { .name = "automatic_onu_deactivation", .descr = "Option to disable the automatic deactivation of ONUs due to alarms", .offset = offsetof(bcmolt_xgpon_ni_cfg_data, automatic_onu_deactivation), .type = &type_descr_bcmolt_automatic_onu_deactivation }, { .name = "us_bandwidth_limit", .descr = "Total PON upstream bandwidth limit in bytes per second.", .offset = offsetof(bcmolt_xgpon_ni_cfg_data, us_bandwidth_limit), .type = &type_descr_uint32_t }, { .name = "all_onus", .descr = "All ONUs currently provisioned on this PON.", .offset = offsetof(bcmolt_xgpon_ni_cfg_data, all_onus), .type = &type_descr_bcmolt_xgpon_onu_with_state_list_u16_max_510 }, { .name = "all_mcast_gem_ports", .descr = "All multicast GEM ports currently provisioned on this PON.", .offset = offsetof(bcmolt_xgpon_ni_cfg_data, all_mcast_gem_ports), .type = &type_descr_bcmolt_xgpon_gem_port_with_state_list_u16_max_128 }, { .name = "debug", .descr = "PON NI debug parameters", .offset = offsetof(bcmolt_xgpon_ni_cfg_data, debug), .type = &type_descr_bcmolt_xgpon_ni_debug }, { .name = "onu_upgrade_params", .descr = "ONU upgrade params", .offset = offsetof(bcmolt_xgpon_ni_cfg_data, onu_upgrade_params), .type = &type_descr_bcmolt_gpon_onu_upgrade_params }, { .name = "ds_fec_mode", .descr = "DS FEC mode", .offset = offsetof(bcmolt_xgpon_ni_cfg_data, ds_fec_mode), .type = &type_descr_bcmolt_control_state }, { .name = "dba_type", .descr = "DBA implementation type", .offset = offsetof(bcmolt_xgpon_ni_cfg_data, dba_type), .type = &type_descr_bcmolt_dba_type }, { .name = "onu_tuning", .descr = "onu tuning", .offset = offsetof(bcmolt_xgpon_ni_cfg_data, onu_tuning), .type = &type_descr_bcmolt_onu_tuning_configuration } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_cfg_data = { .name = "bcmolt_xgpon_ni_cfg_data", .descr = "cfg", .size = sizeof(bcmolt_xgpon_ni_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_ni_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_ni_cfg_data_fields } } };

/* Group: xgpon_ni - stat */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_stat_fec_codewords = { .name = "fec_codewords", .descr = "Receive FEC codewords", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_STAT_ID_FEC_CODEWORDS, .offset = offsetof(bcmolt_xgpon_ni_stat_data, fec_codewords), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_stat_bip32_bytes = { .name = "bip32_bytes", .descr = "Received bytes protected by bip32", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_STAT_ID_BIP32_BYTES, .offset = offsetof(bcmolt_xgpon_ni_stat_data, bip32_bytes), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_stat_bip32_errors = { .name = "bip32_errors", .descr = "Received bip32 errors", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_STAT_ID_BIP32_ERRORS, .offset = offsetof(bcmolt_xgpon_ni_stat_data, bip32_errors), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_stat_rx_xgtc_headers = { .name = "rx_xgtc_headers", .descr = "Received valid XGTC headers", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_STAT_ID_RX_XGTC_HEADERS, .offset = offsetof(bcmolt_xgpon_ni_stat_data, rx_xgtc_headers), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_stat_rx_xgtc_corrected = { .name = "rx_xgtc_corrected", .descr = "Received corrected XGTC headers", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_STAT_ID_RX_XGTC_CORRECTED, .offset = offsetof(bcmolt_xgpon_ni_stat_data, rx_xgtc_corrected), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_stat_rx_xgtc_uncorrected = { .name = "rx_xgtc_uncorrected", .descr = "Received uncorrected XGTC headers", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_STAT_ID_RX_XGTC_UNCORRECTED, .offset = offsetof(bcmolt_xgpon_ni_stat_data, rx_xgtc_uncorrected), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_stat_rx_xgem = { .name = "rx_xgem", .descr = "Received valid XGEM frames", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_STAT_ID_RX_XGEM, .offset = offsetof(bcmolt_xgpon_ni_stat_data, rx_xgem), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_stat_rx_xgem_dropped = { .name = "rx_xgem_dropped", .descr = "Received dropped XGEM ID frames", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_STAT_ID_RX_XGEM_DROPPED, .offset = offsetof(bcmolt_xgpon_ni_stat_data, rx_xgem_dropped), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_stat_rx_xgem_idle = { .name = "rx_xgem_idle", .descr = "Received idle XGEM frames", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_STAT_ID_RX_XGEM_IDLE, .offset = offsetof(bcmolt_xgpon_ni_stat_data, rx_xgem_idle), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_stat_rx_xgem_corrected = { .name = "rx_xgem_corrected", .descr = "Received corrected XGEM frames", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_STAT_ID_RX_XGEM_CORRECTED, .offset = offsetof(bcmolt_xgpon_ni_stat_data, rx_xgem_corrected), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_stat_rx_crc_error = { .name = "rx_crc_error", .descr = "Received packets with CRC error", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_STAT_ID_RX_CRC_ERROR, .offset = offsetof(bcmolt_xgpon_ni_stat_data, rx_crc_error), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_stat_rx_fragment_error = { .name = "rx_fragment_error", .descr = "Received fragment errors", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_STAT_ID_RX_FRAGMENT_ERROR, .offset = offsetof(bcmolt_xgpon_ni_stat_data, rx_fragment_error), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_stat_rx_packets_dropped = { .name = "rx_packets_dropped", .descr = "Global dropped packets", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_STAT_ID_RX_PACKETS_DROPPED, .offset = offsetof(bcmolt_xgpon_ni_stat_data, rx_packets_dropped), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_stat_rx_dropped_too_short = { .name = "rx_dropped_too_short", .descr = "Received packets dropped due to length too short", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_STAT_ID_RX_DROPPED_TOO_SHORT, .offset = offsetof(bcmolt_xgpon_ni_stat_data, rx_dropped_too_short), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_stat_rx_dropped_too_long = { .name = "rx_dropped_too_long", .descr = "Received packet dropped due to length too long", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_STAT_ID_RX_DROPPED_TOO_LONG, .offset = offsetof(bcmolt_xgpon_ni_stat_data, rx_dropped_too_long), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_stat_rx_key_error = { .name = "rx_key_error", .descr = "Received key errors", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_STAT_ID_RX_KEY_ERROR, .offset = offsetof(bcmolt_xgpon_ni_stat_data, rx_key_error), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_stat_tx_ploams = { .name = "tx_ploams", .descr = "Transmitted Ploams", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_STAT_ID_TX_PLOAMS, .offset = offsetof(bcmolt_xgpon_ni_stat_data, tx_ploams), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_stat_rx_ploams_dropped = { .name = "rx_ploams_dropped", .descr = "Received dropped Ploams", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_STAT_ID_RX_PLOAMS_DROPPED, .offset = offsetof(bcmolt_xgpon_ni_stat_data, rx_ploams_dropped), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_stat_rx_allocations_valid = { .name = "rx_allocations_valid", .descr = "Received valid allocations", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_STAT_ID_RX_ALLOCATIONS_VALID, .offset = offsetof(bcmolt_xgpon_ni_stat_data, rx_allocations_valid), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_stat_rx_allocations_invalid = { .name = "rx_allocations_invalid", .descr = "Received invalid allocations", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_STAT_ID_RX_ALLOCATIONS_INVALID, .offset = offsetof(bcmolt_xgpon_ni_stat_data, rx_allocations_invalid), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_stat_rx_allocations_disabled = { .name = "rx_allocations_disabled", .descr = "Received disabled allocations", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_STAT_ID_RX_ALLOCATIONS_DISABLED, .offset = offsetof(bcmolt_xgpon_ni_stat_data, rx_allocations_disabled), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_stat_rx_ploams = { .name = "rx_ploams", .descr = "Received Ploams", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_STAT_ID_RX_PLOAMS, .offset = offsetof(bcmolt_xgpon_ni_stat_data, rx_ploams), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_stat_rx_ploams_non_idle = { .name = "rx_ploams_non_idle", .descr = "Received non idle Ploams", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_STAT_ID_RX_PLOAMS_NON_IDLE, .offset = offsetof(bcmolt_xgpon_ni_stat_data, rx_ploams_non_idle), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_stat_rx_ploams_error = { .name = "rx_ploams_error", .descr = "Received error Ploams", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_STAT_ID_RX_PLOAMS_ERROR, .offset = offsetof(bcmolt_xgpon_ni_stat_data, rx_ploams_error), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_stat_rx_cpu = { .name = "rx_cpu", .descr = "Received CPU packets", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_STAT_ID_RX_CPU, .offset = offsetof(bcmolt_xgpon_ni_stat_data, rx_cpu), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_stat_rx_omci = { .name = "rx_omci", .descr = "Received OMCI packets", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_STAT_ID_RX_OMCI, .offset = offsetof(bcmolt_xgpon_ni_stat_data, rx_omci), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_stat_rx_omci_packets_crc_error = { .name = "rx_omci_packets_crc_error", .descr = "Received OMCI packets with CRC errors", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_STAT_ID_RX_OMCI_PACKETS_CRC_ERROR, .offset = offsetof(bcmolt_xgpon_ni_stat_data, rx_omci_packets_crc_error), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_stat_tx_packets = { .name = "tx_packets", .descr = "Transmitted packets", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_STAT_ID_TX_PACKETS, .offset = offsetof(bcmolt_xgpon_ni_stat_data, tx_packets), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_stat_tx_xgem = { .name = "tx_xgem", .descr = "Transmitted XGEM fragments", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_STAT_ID_TX_XGEM, .offset = offsetof(bcmolt_xgpon_ni_stat_data, tx_xgem), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_stat_tx_cpu = { .name = "tx_cpu", .descr = "Transmitted CPU packets", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_STAT_ID_TX_CPU, .offset = offsetof(bcmolt_xgpon_ni_stat_data, tx_cpu), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_stat_tx_omci = { .name = "tx_omci", .descr = "Transmitted OMCI packets", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_STAT_ID_TX_OMCI, .offset = offsetof(bcmolt_xgpon_ni_stat_data, tx_omci), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_stat_tx_cpu_omci_packets_dropped = { .name = "tx_cpu_omci_packets_dropped", .descr = "Transmit packets dropped due to illegal length", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_STAT_ID_TX_CPU_OMCI_PACKETS_DROPPED, .offset = offsetof(bcmolt_xgpon_ni_stat_data, tx_cpu_omci_packets_dropped), .type = &type_descr_uint8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_stat_tx_dropped_illegal_length = { .name = "tx_dropped_illegal_length", .descr = "Transmit packets dropped due to illegal length", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_STAT_ID_TX_DROPPED_ILLEGAL_LENGTH, .offset = offsetof(bcmolt_xgpon_ni_stat_data, tx_dropped_illegal_length), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_stat_tx_dropped_tpid_miss = { .name = "tx_dropped_tpid_miss", .descr = "Transmit packets dropped due to TPID miss", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_STAT_ID_TX_DROPPED_TPID_MISS, .offset = offsetof(bcmolt_xgpon_ni_stat_data, tx_dropped_tpid_miss), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_stat_tx_dropped_vid_miss = { .name = "tx_dropped_vid_miss", .descr = "Transmit packets droped due to VID miss", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_STAT_ID_TX_DROPPED_VID_MISS, .offset = offsetof(bcmolt_xgpon_ni_stat_data, tx_dropped_vid_miss), .type = &type_descr_uint64_t };
static bcmcli_prop_descr * BCM_DESCR xgpon_ni_stat_prop_array[] = { &prop_descr_xgpon_ni_stat_fec_codewords, &prop_descr_xgpon_ni_stat_bip32_bytes, &prop_descr_xgpon_ni_stat_bip32_errors, &prop_descr_xgpon_ni_stat_rx_xgtc_headers, &prop_descr_xgpon_ni_stat_rx_xgtc_corrected, &prop_descr_xgpon_ni_stat_rx_xgtc_uncorrected, &prop_descr_xgpon_ni_stat_rx_xgem, &prop_descr_xgpon_ni_stat_rx_xgem_dropped, &prop_descr_xgpon_ni_stat_rx_xgem_idle, &prop_descr_xgpon_ni_stat_rx_xgem_corrected, &prop_descr_xgpon_ni_stat_rx_crc_error, &prop_descr_xgpon_ni_stat_rx_fragment_error, &prop_descr_xgpon_ni_stat_rx_packets_dropped, &prop_descr_xgpon_ni_stat_rx_dropped_too_short, &prop_descr_xgpon_ni_stat_rx_dropped_too_long, &prop_descr_xgpon_ni_stat_rx_key_error, &prop_descr_xgpon_ni_stat_tx_ploams, &prop_descr_xgpon_ni_stat_rx_ploams_dropped, &prop_descr_xgpon_ni_stat_rx_allocations_valid, &prop_descr_xgpon_ni_stat_rx_allocations_invalid, &prop_descr_xgpon_ni_stat_rx_allocations_disabled, &prop_descr_xgpon_ni_stat_rx_ploams, &prop_descr_xgpon_ni_stat_rx_ploams_non_idle, &prop_descr_xgpon_ni_stat_rx_ploams_error, &prop_descr_xgpon_ni_stat_rx_cpu, &prop_descr_xgpon_ni_stat_rx_omci, &prop_descr_xgpon_ni_stat_rx_omci_packets_crc_error, &prop_descr_xgpon_ni_stat_tx_packets, &prop_descr_xgpon_ni_stat_tx_xgem, &prop_descr_xgpon_ni_stat_tx_cpu, &prop_descr_xgpon_ni_stat_tx_omci, &prop_descr_xgpon_ni_stat_tx_cpu_omci_packets_dropped, &prop_descr_xgpon_ni_stat_tx_dropped_illegal_length, &prop_descr_xgpon_ni_stat_tx_dropped_tpid_miss, &prop_descr_xgpon_ni_stat_tx_dropped_vid_miss };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_stat_data_fields[] = { { .name = "fec_codewords", .descr = "Receive FEC codewords", .offset = offsetof(bcmolt_xgpon_ni_stat_data, fec_codewords), .type = &type_descr_uint64_t }, { .name = "bip32_bytes", .descr = "Received bytes protected by bip32", .offset = offsetof(bcmolt_xgpon_ni_stat_data, bip32_bytes), .type = &type_descr_uint64_t }, { .name = "bip32_errors", .descr = "Received bip32 errors", .offset = offsetof(bcmolt_xgpon_ni_stat_data, bip32_errors), .type = &type_descr_uint64_t }, { .name = "rx_xgtc_headers", .descr = "Received valid XGTC headers", .offset = offsetof(bcmolt_xgpon_ni_stat_data, rx_xgtc_headers), .type = &type_descr_uint64_t }, { .name = "rx_xgtc_corrected", .descr = "Received corrected XGTC headers", .offset = offsetof(bcmolt_xgpon_ni_stat_data, rx_xgtc_corrected), .type = &type_descr_uint64_t }, { .name = "rx_xgtc_uncorrected", .descr = "Received uncorrected XGTC headers", .offset = offsetof(bcmolt_xgpon_ni_stat_data, rx_xgtc_uncorrected), .type = &type_descr_uint64_t }, { .name = "rx_xgem", .descr = "Received valid XGEM frames", .offset = offsetof(bcmolt_xgpon_ni_stat_data, rx_xgem), .type = &type_descr_uint64_t }, { .name = "rx_xgem_dropped", .descr = "Received dropped XGEM ID frames", .offset = offsetof(bcmolt_xgpon_ni_stat_data, rx_xgem_dropped), .type = &type_descr_uint64_t }, { .name = "rx_xgem_idle", .descr = "Received idle XGEM frames", .offset = offsetof(bcmolt_xgpon_ni_stat_data, rx_xgem_idle), .type = &type_descr_uint64_t }, { .name = "rx_xgem_corrected", .descr = "Received corrected XGEM frames", .offset = offsetof(bcmolt_xgpon_ni_stat_data, rx_xgem_corrected), .type = &type_descr_uint64_t }, { .name = "rx_crc_error", .descr = "Received packets with CRC error", .offset = offsetof(bcmolt_xgpon_ni_stat_data, rx_crc_error), .type = &type_descr_uint64_t }, { .name = "rx_fragment_error", .descr = "Received fragment errors", .offset = offsetof(bcmolt_xgpon_ni_stat_data, rx_fragment_error), .type = &type_descr_uint64_t }, { .name = "rx_packets_dropped", .descr = "Global dropped packets", .offset = offsetof(bcmolt_xgpon_ni_stat_data, rx_packets_dropped), .type = &type_descr_uint64_t }, { .name = "rx_dropped_too_short", .descr = "Received packets dropped due to length too short", .offset = offsetof(bcmolt_xgpon_ni_stat_data, rx_dropped_too_short), .type = &type_descr_uint64_t }, { .name = "rx_dropped_too_long", .descr = "Received packet dropped due to length too long", .offset = offsetof(bcmolt_xgpon_ni_stat_data, rx_dropped_too_long), .type = &type_descr_uint64_t }, { .name = "rx_key_error", .descr = "Received key errors", .offset = offsetof(bcmolt_xgpon_ni_stat_data, rx_key_error), .type = &type_descr_uint64_t }, { .name = "tx_ploams", .descr = "Transmitted Ploams", .offset = offsetof(bcmolt_xgpon_ni_stat_data, tx_ploams), .type = &type_descr_uint64_t }, { .name = "rx_ploams_dropped", .descr = "Received dropped Ploams", .offset = offsetof(bcmolt_xgpon_ni_stat_data, rx_ploams_dropped), .type = &type_descr_uint64_t }, { .name = "rx_allocations_valid", .descr = "Received valid allocations", .offset = offsetof(bcmolt_xgpon_ni_stat_data, rx_allocations_valid), .type = &type_descr_uint64_t }, { .name = "rx_allocations_invalid", .descr = "Received invalid allocations", .offset = offsetof(bcmolt_xgpon_ni_stat_data, rx_allocations_invalid), .type = &type_descr_uint64_t }, { .name = "rx_allocations_disabled", .descr = "Received disabled allocations", .offset = offsetof(bcmolt_xgpon_ni_stat_data, rx_allocations_disabled), .type = &type_descr_uint64_t }, { .name = "rx_ploams", .descr = "Received Ploams", .offset = offsetof(bcmolt_xgpon_ni_stat_data, rx_ploams), .type = &type_descr_uint64_t }, { .name = "rx_ploams_non_idle", .descr = "Received non idle Ploams", .offset = offsetof(bcmolt_xgpon_ni_stat_data, rx_ploams_non_idle), .type = &type_descr_uint64_t }, { .name = "rx_ploams_error", .descr = "Received error Ploams", .offset = offsetof(bcmolt_xgpon_ni_stat_data, rx_ploams_error), .type = &type_descr_uint64_t }, { .name = "rx_cpu", .descr = "Received CPU packets", .offset = offsetof(bcmolt_xgpon_ni_stat_data, rx_cpu), .type = &type_descr_uint64_t }, { .name = "rx_omci", .descr = "Received OMCI packets", .offset = offsetof(bcmolt_xgpon_ni_stat_data, rx_omci), .type = &type_descr_uint64_t }, { .name = "rx_omci_packets_crc_error", .descr = "Received OMCI packets with CRC errors", .offset = offsetof(bcmolt_xgpon_ni_stat_data, rx_omci_packets_crc_error), .type = &type_descr_uint64_t }, { .name = "tx_packets", .descr = "Transmitted packets", .offset = offsetof(bcmolt_xgpon_ni_stat_data, tx_packets), .type = &type_descr_uint64_t }, { .name = "tx_xgem", .descr = "Transmitted XGEM fragments", .offset = offsetof(bcmolt_xgpon_ni_stat_data, tx_xgem), .type = &type_descr_uint64_t }, { .name = "tx_cpu", .descr = "Transmitted CPU packets", .offset = offsetof(bcmolt_xgpon_ni_stat_data, tx_cpu), .type = &type_descr_uint64_t }, { .name = "tx_omci", .descr = "Transmitted OMCI packets", .offset = offsetof(bcmolt_xgpon_ni_stat_data, tx_omci), .type = &type_descr_uint64_t }, { .name = "tx_cpu_omci_packets_dropped", .descr = "Transmit packets dropped due to illegal length", .offset = offsetof(bcmolt_xgpon_ni_stat_data, tx_cpu_omci_packets_dropped), .type = &type_descr_uint8_t }, { .name = "tx_dropped_illegal_length", .descr = "Transmit packets dropped due to illegal length", .offset = offsetof(bcmolt_xgpon_ni_stat_data, tx_dropped_illegal_length), .type = &type_descr_uint64_t }, { .name = "tx_dropped_tpid_miss", .descr = "Transmit packets dropped due to TPID miss", .offset = offsetof(bcmolt_xgpon_ni_stat_data, tx_dropped_tpid_miss), .type = &type_descr_uint64_t }, { .name = "tx_dropped_vid_miss", .descr = "Transmit packets droped due to VID miss", .offset = offsetof(bcmolt_xgpon_ni_stat_data, tx_dropped_vid_miss), .type = &type_descr_uint64_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_stat_data = { .name = "bcmolt_xgpon_ni_stat_data", .descr = "stat", .size = sizeof(bcmolt_xgpon_ni_stat_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_ni_stat_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_ni_stat_data_fields } } };

/* Group: xgpon_ni - set_pon_state */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_set_pon_state_pon_state = { .name = "pon_state", .descr = "PON state", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_SET_PON_STATE_ID_PON_STATE, .offset = offsetof(bcmolt_xgpon_ni_set_pon_state_data, pon_state), .type = &type_descr_bcmolt_pon_operation };
static bcmcli_prop_descr * BCM_DESCR xgpon_ni_set_pon_state_prop_array[] = { &prop_descr_xgpon_ni_set_pon_state_pon_state };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_set_pon_state_data_fields[] = { { .name = "pon_state", .descr = "PON state", .offset = offsetof(bcmolt_xgpon_ni_set_pon_state_data, pon_state), .type = &type_descr_bcmolt_pon_operation } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_set_pon_state_data = { .name = "bcmolt_xgpon_ni_set_pon_state_data", .descr = "Set PON State", .size = sizeof(bcmolt_xgpon_ni_set_pon_state_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_ni_set_pon_state_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_ni_set_pon_state_data_fields } } };

/* Group: xgpon_ni - reset */
static bcmcli_prop_descr * BCM_DESCR xgpon_ni_reset_prop_array[] = { };

/* Group: xgpon_ni - disable_serial_number */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_disable_serial_number_control = { .name = "control", .descr = "control", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_DISABLE_SERIAL_NUMBER_ID_CONTROL, .offset = offsetof(bcmolt_xgpon_ni_disable_serial_number_data, control), .type = &type_descr_bcmolt_disable_serial_number_control };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_disable_serial_number_serial_number = { .name = "serial_number", .descr = "serial number", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_DISABLE_SERIAL_NUMBER_ID_SERIAL_NUMBER, .offset = offsetof(bcmolt_xgpon_ni_disable_serial_number_data, serial_number), .type = &type_descr_bcmolt_serial_number };
static bcmcli_prop_descr * BCM_DESCR xgpon_ni_disable_serial_number_prop_array[] = { &prop_descr_xgpon_ni_disable_serial_number_control, &prop_descr_xgpon_ni_disable_serial_number_serial_number };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_disable_serial_number_data_fields[] = { { .name = "control", .descr = "control", .offset = offsetof(bcmolt_xgpon_ni_disable_serial_number_data, control), .type = &type_descr_bcmolt_disable_serial_number_control }, { .name = "serial_number", .descr = "serial number", .offset = offsetof(bcmolt_xgpon_ni_disable_serial_number_data, serial_number), .type = &type_descr_bcmolt_serial_number } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_disable_serial_number_data = { .name = "bcmolt_xgpon_ni_disable_serial_number_data", .descr = "Disable Serial Number", .size = sizeof(bcmolt_xgpon_ni_disable_serial_number_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_ni_disable_serial_number_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_ni_disable_serial_number_data_fields } } };

/* Group: xgpon_ni - single_request_standby_pon_monitoring */
static bcmcli_prop_descr * BCM_DESCR xgpon_ni_single_request_standby_pon_monitoring_prop_array[] = { };

/* Group: xgpon_ni - set_onu_state */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_set_onu_state_onu_state = { .name = "onu_state", .descr = "New operation state of all ONUs.  The default operation may be configured by the XGPON NI configuration object : xgpon_ni.cfg.sn_acquisition.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_SET_ONU_STATE_ID_ONU_STATE, .offset = offsetof(bcmolt_xgpon_ni_set_onu_state_data, onu_state), .type = &type_descr_bcmolt_onu_operation };
static bcmcli_prop_descr * BCM_DESCR xgpon_ni_set_onu_state_prop_array[] = { &prop_descr_xgpon_ni_set_onu_state_onu_state };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_set_onu_state_data_fields[] = { { .name = "onu_state", .descr = "New operation state of all ONUs.  The default operation may be configured by the XGPON NI configuration object : xgpon_ni.cfg.sn_acquisition.", .offset = offsetof(bcmolt_xgpon_ni_set_onu_state_data, onu_state), .type = &type_descr_bcmolt_onu_operation } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_set_onu_state_data = { .name = "bcmolt_xgpon_ni_set_onu_state_data", .descr = "Set the operation state of all ONUs.", .size = sizeof(bcmolt_xgpon_ni_set_onu_state_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_ni_set_onu_state_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_ni_set_onu_state_data_fields } } };

/* Group: xgpon_ni - run_special_bw_map */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_run_special_bw_map_number_of_cycle = { .name = "number_of_cycle", .descr = "number of cycle", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_RUN_SPECIAL_BW_MAP_ID_NUMBER_OF_CYCLE, .offset = offsetof(bcmolt_xgpon_ni_run_special_bw_map_data, number_of_cycle), .type = &type_descr_uint8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_run_special_bw_map_allocation_number = { .name = "allocation_number", .descr = "allocation number", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_RUN_SPECIAL_BW_MAP_ID_ALLOCATION_NUMBER, .offset = offsetof(bcmolt_xgpon_ni_run_special_bw_map_data, allocation_number), .type = &type_descr_uint8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_run_special_bw_map_bw_map_array = { .name = "bw_map_array", .descr = "bw map array", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_RUN_SPECIAL_BW_MAP_ID_BW_MAP_ARRAY, .offset = offsetof(bcmolt_xgpon_ni_run_special_bw_map_data, bw_map_array), .type = &type_descr_uint8_t };
static bcmcli_prop_descr * BCM_DESCR xgpon_ni_run_special_bw_map_prop_array[] = { &prop_descr_xgpon_ni_run_special_bw_map_number_of_cycle, &prop_descr_xgpon_ni_run_special_bw_map_allocation_number, &prop_descr_xgpon_ni_run_special_bw_map_bw_map_array };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_run_special_bw_map_data_fields[] = { { .name = "number_of_cycle", .descr = "number of cycle", .offset = offsetof(bcmolt_xgpon_ni_run_special_bw_map_data, number_of_cycle), .type = &type_descr_uint8_t }, { .name = "allocation_number", .descr = "allocation number", .offset = offsetof(bcmolt_xgpon_ni_run_special_bw_map_data, allocation_number), .type = &type_descr_uint8_t }, { .name = "bw_map_array", .descr = "bw map array", .offset = offsetof(bcmolt_xgpon_ni_run_special_bw_map_data, bw_map_array), .type = &type_descr_uint8_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_run_special_bw_map_data = { .name = "bcmolt_xgpon_ni_run_special_bw_map_data", .descr = "Run Special BW Map", .size = sizeof(bcmolt_xgpon_ni_run_special_bw_map_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_ni_run_special_bw_map_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_ni_run_special_bw_map_data_fields } } };

/* Group: xgpon_ni - rogue_detection_window */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_rogue_detection_window_window_type = { .name = "window_type", .descr = "Type of silent measurement to execute", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_ROGUE_DETECTION_WINDOW_ID_WINDOW_TYPE, .offset = offsetof(bcmolt_xgpon_ni_rogue_detection_window_data, window_type), .type = &type_descr_bcmolt_rogue_detection_window };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_rogue_detection_window_alloc_id = { .name = "alloc_id", .descr = "ALLOC ID to scan", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_ROGUE_DETECTION_WINDOW_ID_ALLOC_ID, .offset = offsetof(bcmolt_xgpon_ni_rogue_detection_window_data, alloc_id), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_rogue_detection_window_onu_id = { .name = "onu_id", .descr = "ONU ID to scan", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_ROGUE_DETECTION_WINDOW_ID_ONU_ID, .offset = offsetof(bcmolt_xgpon_ni_rogue_detection_window_data, onu_id), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_rogue_detection_window_second_ranging_window = { .name = "second_ranging_window", .descr = "Not currently supported", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_ROGUE_DETECTION_WINDOW_ID_SECOND_RANGING_WINDOW, .offset = offsetof(bcmolt_xgpon_ni_rogue_detection_window_data, second_ranging_window), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr * BCM_DESCR xgpon_ni_rogue_detection_window_prop_array[] = { &prop_descr_xgpon_ni_rogue_detection_window_window_type, &prop_descr_xgpon_ni_rogue_detection_window_alloc_id, &prop_descr_xgpon_ni_rogue_detection_window_onu_id, &prop_descr_xgpon_ni_rogue_detection_window_second_ranging_window };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_rogue_detection_window_data_fields[] = { { .name = "window_type", .descr = "Type of silent measurement to execute", .offset = offsetof(bcmolt_xgpon_ni_rogue_detection_window_data, window_type), .type = &type_descr_bcmolt_rogue_detection_window }, { .name = "alloc_id", .descr = "ALLOC ID to scan", .offset = offsetof(bcmolt_xgpon_ni_rogue_detection_window_data, alloc_id), .type = &type_descr_uint16_t }, { .name = "onu_id", .descr = "ONU ID to scan", .offset = offsetof(bcmolt_xgpon_ni_rogue_detection_window_data, onu_id), .type = &type_descr_uint16_t }, { .name = "second_ranging_window", .descr = "Not currently supported", .offset = offsetof(bcmolt_xgpon_ni_rogue_detection_window_data, second_ranging_window), .type = &type_descr_bcmos_bool } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_rogue_detection_window_data = { .name = "bcmolt_xgpon_ni_rogue_detection_window_data", .descr = "Rogue Detection Window", .size = sizeof(bcmolt_xgpon_ni_rogue_detection_window_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_ni_rogue_detection_window_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_ni_rogue_detection_window_data_fields } } };

/* Group: xgpon_ni - state_change_completed */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_state_change_completed_result = { .name = "result", .descr = "Result", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_STATE_CHANGE_COMPLETED_ID_RESULT, .offset = offsetof(bcmolt_xgpon_ni_state_change_completed_data, result), .type = &type_descr_bcmolt_result };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_state_change_completed_previous_state = { .name = "previous_state", .descr = "Previous state", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_STATE_CHANGE_COMPLETED_ID_PREVIOUS_STATE, .offset = offsetof(bcmolt_xgpon_ni_state_change_completed_data, previous_state), .type = &type_descr_bcmolt_pon_state };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_state_change_completed_new_state = { .name = "new_state", .descr = "new state", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_STATE_CHANGE_COMPLETED_ID_NEW_STATE, .offset = offsetof(bcmolt_xgpon_ni_state_change_completed_data, new_state), .type = &type_descr_bcmolt_pon_state };
static bcmcli_prop_descr * BCM_DESCR xgpon_ni_state_change_completed_prop_array[] = { &prop_descr_xgpon_ni_state_change_completed_result, &prop_descr_xgpon_ni_state_change_completed_previous_state, &prop_descr_xgpon_ni_state_change_completed_new_state };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_state_change_completed_data_fields[] = { { .name = "result", .descr = "Result", .offset = offsetof(bcmolt_xgpon_ni_state_change_completed_data, result), .type = &type_descr_bcmolt_result }, { .name = "previous_state", .descr = "Previous state", .offset = offsetof(bcmolt_xgpon_ni_state_change_completed_data, previous_state), .type = &type_descr_bcmolt_pon_state }, { .name = "new_state", .descr = "new state", .offset = offsetof(bcmolt_xgpon_ni_state_change_completed_data, new_state), .type = &type_descr_bcmolt_pon_state } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_state_change_completed_data = { .name = "bcmolt_xgpon_ni_state_change_completed_data", .descr = "State Change Completed", .size = sizeof(bcmolt_xgpon_ni_state_change_completed_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_ni_state_change_completed_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_ni_state_change_completed_data_fields } } };

/* Group: xgpon_ni - los */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_los_status = { .name = "status", .descr = "status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_LOS_ID_STATUS, .offset = offsetof(bcmolt_xgpon_ni_los_data, status), .type = &type_descr_bcmolt_status };
static bcmcli_prop_descr * BCM_DESCR xgpon_ni_los_prop_array[] = { &prop_descr_xgpon_ni_los_status };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_los_data_fields[] = { { .name = "status", .descr = "status", .offset = offsetof(bcmolt_xgpon_ni_los_data, status), .type = &type_descr_bcmolt_status } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_los_data = { .name = "bcmolt_xgpon_ni_los_data", .descr = "LOS", .size = sizeof(bcmolt_xgpon_ni_los_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_ni_los_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_ni_los_data_fields } } };

/* Group: xgpon_ni - serial_number_acquisition_cycle_start */
static bcmcli_prop_descr * BCM_DESCR xgpon_ni_serial_number_acquisition_cycle_start_prop_array[] = { };

/* Group: xgpon_ni - protection_switching_traffic_resume */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_protection_switching_traffic_resume_result = { .name = "result", .descr = "Result", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_PROTECTION_SWITCHING_TRAFFIC_RESUME_ID_RESULT, .offset = offsetof(bcmolt_xgpon_ni_protection_switching_traffic_resume_data, result), .type = &type_descr_bcmolt_traffic_resume_result };
static bcmcli_prop_descr * BCM_DESCR xgpon_ni_protection_switching_traffic_resume_prop_array[] = { &prop_descr_xgpon_ni_protection_switching_traffic_resume_result };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_protection_switching_traffic_resume_data_fields[] = { { .name = "result", .descr = "Result", .offset = offsetof(bcmolt_xgpon_ni_protection_switching_traffic_resume_data, result), .type = &type_descr_bcmolt_traffic_resume_result } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_protection_switching_traffic_resume_data = { .name = "bcmolt_xgpon_ni_protection_switching_traffic_resume_data", .descr = "Protection Switching Traffic Resume", .size = sizeof(bcmolt_xgpon_ni_protection_switching_traffic_resume_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_ni_protection_switching_traffic_resume_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_ni_protection_switching_traffic_resume_data_fields } } };

/* Group: xgpon_ni - protection_switching_onus_ranged */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_protection_switching_onus_ranged_onus = { .name = "onus", .descr = "ONUs", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_PROTECTION_SWITCHING_ONUS_RANGED_ID_ONUS, .offset = offsetof(bcmolt_xgpon_ni_protection_switching_onus_ranged_data, onus), .type = &type_descr_bcmolt_xgpon_onu_eqd_list_u32 };
static bcmcli_prop_descr * BCM_DESCR xgpon_ni_protection_switching_onus_ranged_prop_array[] = { &prop_descr_xgpon_ni_protection_switching_onus_ranged_onus };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_protection_switching_onus_ranged_data_fields[] = { { .name = "onus", .descr = "ONUs", .offset = offsetof(bcmolt_xgpon_ni_protection_switching_onus_ranged_data, onus), .type = &type_descr_bcmolt_xgpon_onu_eqd_list_u32 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_protection_switching_onus_ranged_data = { .name = "bcmolt_xgpon_ni_protection_switching_onus_ranged_data", .descr = "After a switchover is complete and all ONU ranging times have stabilized, this indication is sent to inform the host of all new ONU EQDs.", .size = sizeof(bcmolt_xgpon_ni_protection_switching_onus_ranged_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_ni_protection_switching_onus_ranged_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_ni_protection_switching_onus_ranged_data_fields } } };

/* Group: xgpon_ni - protection_switching_switchover_completed */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_protection_switching_switchover_completed_result = { .name = "result", .descr = "Result", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_PROTECTION_SWITCHING_SWITCHOVER_COMPLETED_ID_RESULT, .offset = offsetof(bcmolt_xgpon_ni_protection_switching_switchover_completed_data, result), .type = &type_descr_bcmolt_result };
static bcmcli_prop_descr * BCM_DESCR xgpon_ni_protection_switching_switchover_completed_prop_array[] = { &prop_descr_xgpon_ni_protection_switching_switchover_completed_result };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_protection_switching_switchover_completed_data_fields[] = { { .name = "result", .descr = "Result", .offset = offsetof(bcmolt_xgpon_ni_protection_switching_switchover_completed_data, result), .type = &type_descr_bcmolt_result } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_protection_switching_switchover_completed_data = { .name = "bcmolt_xgpon_ni_protection_switching_switchover_completed_data", .descr = "Protection Switching Switchover Completed", .size = sizeof(bcmolt_xgpon_ni_protection_switching_switchover_completed_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_ni_protection_switching_switchover_completed_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_ni_protection_switching_switchover_completed_data_fields } } };

/* Group: xgpon_ni - standby_pon_monitoring_cycle_completed */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_standby_pon_monitoring_cycle_completed_number_of_detected_delimiter = { .name = "number_of_detected_delimiter", .descr = "number of detected delimiter", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_STANDBY_PON_MONITORING_CYCLE_COMPLETED_ID_NUMBER_OF_DETECTED_DELIMITER, .offset = offsetof(bcmolt_xgpon_ni_standby_pon_monitoring_cycle_completed_data, number_of_detected_delimiter), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_standby_pon_monitoring_cycle_completed_energy_detect_signal = { .name = "energy_detect_signal", .descr = "energy detect signal", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_STANDBY_PON_MONITORING_CYCLE_COMPLETED_ID_ENERGY_DETECT_SIGNAL, .offset = offsetof(bcmolt_xgpon_ni_standby_pon_monitoring_cycle_completed_data, energy_detect_signal), .type = &type_descr_bcmolt_status };
static bcmcli_prop_descr * BCM_DESCR xgpon_ni_standby_pon_monitoring_cycle_completed_prop_array[] = { &prop_descr_xgpon_ni_standby_pon_monitoring_cycle_completed_number_of_detected_delimiter, &prop_descr_xgpon_ni_standby_pon_monitoring_cycle_completed_energy_detect_signal };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_standby_pon_monitoring_cycle_completed_data_fields[] = { { .name = "number_of_detected_delimiter", .descr = "number of detected delimiter", .offset = offsetof(bcmolt_xgpon_ni_standby_pon_monitoring_cycle_completed_data, number_of_detected_delimiter), .type = &type_descr_uint32_t }, { .name = "energy_detect_signal", .descr = "energy detect signal", .offset = offsetof(bcmolt_xgpon_ni_standby_pon_monitoring_cycle_completed_data, energy_detect_signal), .type = &type_descr_bcmolt_status } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_standby_pon_monitoring_cycle_completed_data = { .name = "bcmolt_xgpon_ni_standby_pon_monitoring_cycle_completed_data", .descr = "Standby PON Monitoring Cycle Completed", .size = sizeof(bcmolt_xgpon_ni_standby_pon_monitoring_cycle_completed_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_ni_standby_pon_monitoring_cycle_completed_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_ni_standby_pon_monitoring_cycle_completed_data_fields } } };

/* Group: xgpon_ni - onu_discovered */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_onu_discovered_serial_number = { .name = "serial_number", .descr = "serial number", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_ONU_DISCOVERED_ID_SERIAL_NUMBER, .offset = offsetof(bcmolt_xgpon_ni_onu_discovered_data, serial_number), .type = &type_descr_bcmolt_serial_number };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_onu_discovered_ranging_time = { .name = "ranging_time", .descr = "ranging time", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_ONU_DISCOVERED_ID_RANGING_TIME, .offset = offsetof(bcmolt_xgpon_ni_onu_discovered_data, ranging_time), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_onu_discovered_onu_id = { .name = "onu_id", .descr = "onu_id", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_ONU_DISCOVERED_ID_ONU_ID, .offset = offsetof(bcmolt_xgpon_ni_onu_discovered_data, onu_id), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_onu_discovered_upstream_line_rate_capabilities = { .name = "upstream_line_rate_capabilities", .descr = "Upstream line rate capabilities", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_ONU_DISCOVERED_ID_UPSTREAM_LINE_RATE_CAPABILITIES, .offset = offsetof(bcmolt_xgpon_ni_onu_discovered_data, upstream_line_rate_capabilities), .type = &type_descr_bcmolt_upstream_line_rate_capabilities };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_onu_discovered_current_downstream_pon_id = { .name = "current_downstream_pon_id", .descr = "The PON-ID received by the ONU in its current downstream wavelength channel", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_ONU_DISCOVERED_ID_CURRENT_DOWNSTREAM_PON_ID, .offset = offsetof(bcmolt_xgpon_ni_onu_discovered_data, current_downstream_pon_id), .type = &type_descr_uint8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_onu_discovered_current_upstream_pon_id = { .name = "current_upstream_pon_id", .descr = "The PON-ID of the Channel Profile containing the descriptor of the upstream wavelength channel in which the ONU is transmitting", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_ONU_DISCOVERED_ID_CURRENT_UPSTREAM_PON_ID, .offset = offsetof(bcmolt_xgpon_ni_onu_discovered_data, current_upstream_pon_id), .type = &type_descr_uint8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_onu_discovered_calibration_record = { .name = "calibration_record", .descr = "Calibration record", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_ONU_DISCOVERED_ID_CALIBRATION_RECORD, .offset = offsetof(bcmolt_xgpon_ni_onu_discovered_data, calibration_record), .type = &type_descr_bcmolt_arr_calibration_record_8 };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_onu_discovered_tuning_granularity = { .name = "tuning_granularity", .descr = "The tuning granularity of the ONU transmitted expressed in units of 1Ghz. Value of 0 indicates that the ONU does not support fine tuning / dithering", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_ONU_DISCOVERED_ID_TUNING_GRANULARITY, .offset = offsetof(bcmolt_xgpon_ni_onu_discovered_data, tuning_granularity), .type = &type_descr_uint8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_onu_discovered_step_tuning_time = { .name = "step_tuning_time", .descr = "The value of the tuning time for a single granularity step, expressed in unit of PHY frames. The value 0 indicates that the ONU does not support fine tuning / dithering", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_ONU_DISCOVERED_ID_STEP_TUNING_TIME, .offset = offsetof(bcmolt_xgpon_ni_onu_discovered_data, step_tuning_time), .type = &type_descr_uint8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_onu_discovered_attenuation = { .name = "attenuation", .descr = "The ONU attenuation in steps of 3dB at the time of the message transmission as part of the power levelling report. Value of 0 represents un-attenuated transmission", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_ONU_DISCOVERED_ID_ATTENUATION, .offset = offsetof(bcmolt_xgpon_ni_onu_discovered_data, attenuation), .type = &type_descr_uint8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_onu_discovered_power_levelling_capabilities = { .name = "power_levelling_capabilities", .descr = "The ONU supports attenuation level in step of 3dB", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_ONU_DISCOVERED_ID_POWER_LEVELLING_CAPABILITIES, .offset = offsetof(bcmolt_xgpon_ni_onu_discovered_data, power_levelling_capabilities), .type = &type_descr_uint8_t };
static bcmcli_prop_descr * BCM_DESCR xgpon_ni_onu_discovered_prop_array[] = { &prop_descr_xgpon_ni_onu_discovered_serial_number, &prop_descr_xgpon_ni_onu_discovered_ranging_time, &prop_descr_xgpon_ni_onu_discovered_onu_id, &prop_descr_xgpon_ni_onu_discovered_upstream_line_rate_capabilities, &prop_descr_xgpon_ni_onu_discovered_current_downstream_pon_id, &prop_descr_xgpon_ni_onu_discovered_current_upstream_pon_id, &prop_descr_xgpon_ni_onu_discovered_calibration_record, &prop_descr_xgpon_ni_onu_discovered_tuning_granularity, &prop_descr_xgpon_ni_onu_discovered_step_tuning_time, &prop_descr_xgpon_ni_onu_discovered_attenuation, &prop_descr_xgpon_ni_onu_discovered_power_levelling_capabilities };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_onu_discovered_data_fields[] = { { .name = "serial_number", .descr = "serial number", .offset = offsetof(bcmolt_xgpon_ni_onu_discovered_data, serial_number), .type = &type_descr_bcmolt_serial_number }, { .name = "ranging_time", .descr = "ranging time", .offset = offsetof(bcmolt_xgpon_ni_onu_discovered_data, ranging_time), .type = &type_descr_uint32_t }, { .name = "onu_id", .descr = "onu_id", .offset = offsetof(bcmolt_xgpon_ni_onu_discovered_data, onu_id), .type = &type_descr_uint16_t }, { .name = "upstream_line_rate_capabilities", .descr = "Upstream line rate capabilities", .offset = offsetof(bcmolt_xgpon_ni_onu_discovered_data, upstream_line_rate_capabilities), .type = &type_descr_bcmolt_upstream_line_rate_capabilities }, { .name = "current_downstream_pon_id", .descr = "The PON-ID received by the ONU in its current downstream wavelength channel", .offset = offsetof(bcmolt_xgpon_ni_onu_discovered_data, current_downstream_pon_id), .type = &type_descr_uint8_t }, { .name = "current_upstream_pon_id", .descr = "The PON-ID of the Channel Profile containing the descriptor of the upstream wavelength channel in which the ONU is transmitting", .offset = offsetof(bcmolt_xgpon_ni_onu_discovered_data, current_upstream_pon_id), .type = &type_descr_uint8_t }, { .name = "calibration_record", .descr = "Calibration record", .offset = offsetof(bcmolt_xgpon_ni_onu_discovered_data, calibration_record), .type = &type_descr_bcmolt_arr_calibration_record_8 }, { .name = "tuning_granularity", .descr = "The tuning granularity of the ONU transmitted expressed in units of 1Ghz. Value of 0 indicates that the ONU does not support fine tuning / dithering", .offset = offsetof(bcmolt_xgpon_ni_onu_discovered_data, tuning_granularity), .type = &type_descr_uint8_t }, { .name = "step_tuning_time", .descr = "The value of the tuning time for a single granularity step, expressed in unit of PHY frames. The value 0 indicates that the ONU does not support fine tuning / dithering", .offset = offsetof(bcmolt_xgpon_ni_onu_discovered_data, step_tuning_time), .type = &type_descr_uint8_t }, { .name = "attenuation", .descr = "The ONU attenuation in steps of 3dB at the time of the message transmission as part of the power levelling report. Value of 0 represents un-attenuated transmission", .offset = offsetof(bcmolt_xgpon_ni_onu_discovered_data, attenuation), .type = &type_descr_uint8_t }, { .name = "power_levelling_capabilities", .descr = "The ONU supports attenuation level in step of 3dB", .offset = offsetof(bcmolt_xgpon_ni_onu_discovered_data, power_levelling_capabilities), .type = &type_descr_uint8_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_onu_discovered_data = { .name = "bcmolt_xgpon_ni_onu_discovered_data", .descr = "ONU Discovered", .size = sizeof(bcmolt_xgpon_ni_onu_discovered_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_ni_onu_discovered_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_ni_onu_discovered_data_fields } } };

/* Group: xgpon_ni - cpu_packets_failure */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_cpu_packets_failure_error = { .name = "error", .descr = "The error that was encountered.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_CPU_PACKETS_FAILURE_ID_ERROR, .offset = offsetof(bcmolt_xgpon_ni_cpu_packets_failure_data, error), .type = &type_descr_bcmolt_packet_injection_error };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_cpu_packets_failure_gem_port_id = { .name = "gem_port_id", .descr = "The GEM port that caused the error.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_CPU_PACKETS_FAILURE_ID_GEM_PORT_ID, .offset = offsetof(bcmolt_xgpon_ni_cpu_packets_failure_data, gem_port_id), .type = &type_descr_uint16_t };
static bcmcli_prop_descr * BCM_DESCR xgpon_ni_cpu_packets_failure_prop_array[] = { &prop_descr_xgpon_ni_cpu_packets_failure_error, &prop_descr_xgpon_ni_cpu_packets_failure_gem_port_id };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_cpu_packets_failure_data_fields[] = { { .name = "error", .descr = "The error that was encountered.", .offset = offsetof(bcmolt_xgpon_ni_cpu_packets_failure_data, error), .type = &type_descr_bcmolt_packet_injection_error }, { .name = "gem_port_id", .descr = "The GEM port that caused the error.", .offset = offsetof(bcmolt_xgpon_ni_cpu_packets_failure_data, gem_port_id), .type = &type_descr_uint16_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_cpu_packets_failure_data = { .name = "bcmolt_xgpon_ni_cpu_packets_failure_data", .descr = "A failure was encountered during the \"cpu_packets\" proxy operation.", .size = sizeof(bcmolt_xgpon_ni_cpu_packets_failure_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_ni_cpu_packets_failure_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_ni_cpu_packets_failure_data_fields } } };

/* Group: xgpon_ni - cpu_packets */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_cpu_packets_packet_type = { .name = "packet_type", .descr = "packet type", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_CPU_PACKETS_ID_PACKET_TYPE, .offset = offsetof(bcmolt_xgpon_ni_cpu_packets_data, packet_type), .type = &type_descr_bcmolt_packet_type };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_cpu_packets_calc_crc = { .name = "calc_crc", .descr = "calc crc", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_CPU_PACKETS_ID_CALC_CRC, .offset = offsetof(bcmolt_xgpon_ni_cpu_packets_data, calc_crc), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_cpu_packets_gem_port_list = { .name = "gem_port_list", .descr = "gem port list", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_CPU_PACKETS_ID_GEM_PORT_LIST, .offset = offsetof(bcmolt_xgpon_ni_cpu_packets_data, gem_port_list), .type = &type_descr_bcmolt_xgpon_gem_id_list_u8_max_16 };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_cpu_packets_buffer = { .name = "buffer", .descr = "buffer", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_CPU_PACKETS_ID_BUFFER, .offset = offsetof(bcmolt_xgpon_ni_cpu_packets_data, buffer), .type = &type_descr_bcmolt_u8_list_u32_max_2048 };
static bcmcli_prop_descr * BCM_DESCR xgpon_ni_cpu_packets_prop_array[] = { &prop_descr_xgpon_ni_cpu_packets_packet_type, &prop_descr_xgpon_ni_cpu_packets_calc_crc, &prop_descr_xgpon_ni_cpu_packets_gem_port_list, &prop_descr_xgpon_ni_cpu_packets_buffer };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_cpu_packets_data_fields[] = { { .name = "packet_type", .descr = "packet type", .offset = offsetof(bcmolt_xgpon_ni_cpu_packets_data, packet_type), .type = &type_descr_bcmolt_packet_type }, { .name = "calc_crc", .descr = "calc crc", .offset = offsetof(bcmolt_xgpon_ni_cpu_packets_data, calc_crc), .type = &type_descr_bcmos_bool }, { .name = "gem_port_list", .descr = "gem port list", .offset = offsetof(bcmolt_xgpon_ni_cpu_packets_data, gem_port_list), .type = &type_descr_bcmolt_xgpon_gem_id_list_u8_max_16 }, { .name = "buffer", .descr = "buffer", .offset = offsetof(bcmolt_xgpon_ni_cpu_packets_data, buffer), .type = &type_descr_bcmolt_u8_list_u32_max_2048 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_cpu_packets_data = { .name = "bcmolt_xgpon_ni_cpu_packets_data", .descr = "XGPON CPU packets", .size = sizeof(bcmolt_xgpon_ni_cpu_packets_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_ni_cpu_packets_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_ni_cpu_packets_data_fields } } };

/* Group: xgpon_ni - broadcast_ploam_packet */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_broadcast_ploam_packet_ploam = { .name = "ploam", .descr = "ploam", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_BROADCAST_PLOAM_PACKET_ID_PLOAM, .offset = offsetof(bcmolt_xgpon_ni_broadcast_ploam_packet_data, ploam), .type = &type_descr_bcmolt_arr_u8_40 };
static bcmcli_prop_descr * BCM_DESCR xgpon_ni_broadcast_ploam_packet_prop_array[] = { &prop_descr_xgpon_ni_broadcast_ploam_packet_ploam };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_broadcast_ploam_packet_data_fields[] = { { .name = "ploam", .descr = "ploam", .offset = offsetof(bcmolt_xgpon_ni_broadcast_ploam_packet_data, ploam), .type = &type_descr_bcmolt_arr_u8_40 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_broadcast_ploam_packet_data = { .name = "bcmolt_xgpon_ni_broadcast_ploam_packet_data", .descr = "Broadcast PLOAM Packet", .size = sizeof(bcmolt_xgpon_ni_broadcast_ploam_packet_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_ni_broadcast_ploam_packet_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_ni_broadcast_ploam_packet_data_fields } } };

/* Group: xgpon_ni - rogue_detection_completed */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_rogue_detection_completed_window_type = { .name = "window_type", .descr = "Silent Window or Cut off Window", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_ROGUE_DETECTION_COMPLETED_ID_WINDOW_TYPE, .offset = offsetof(bcmolt_xgpon_ni_rogue_detection_completed_data, window_type), .type = &type_descr_bcmolt_rogue_detection_window };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_rogue_detection_completed_measurement_status = { .name = "measurement_status", .descr = "Status of the rogue ONU detection result.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_ROGUE_DETECTION_COMPLETED_ID_MEASUREMENT_STATUS, .offset = offsetof(bcmolt_xgpon_ni_rogue_detection_completed_data, measurement_status), .type = &type_descr_bcmolt_rogue_measurement_result };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_rogue_detection_completed_alloc_id = { .name = "alloc_id", .descr = "Alloc-ID", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_ROGUE_DETECTION_COMPLETED_ID_ALLOC_ID, .offset = offsetof(bcmolt_xgpon_ni_rogue_detection_completed_data, alloc_id), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_rogue_detection_completed_onu_id = { .name = "onu_id", .descr = "ONU-ID", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_ROGUE_DETECTION_COMPLETED_ID_ONU_ID, .offset = offsetof(bcmolt_xgpon_ni_rogue_detection_completed_data, onu_id), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_rogue_detection_completed_is_delineation = { .name = "is_delineation", .descr = "Burst Delineation detected during the rogue ONU detection.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_ROGUE_DETECTION_COMPLETED_ID_IS_DELINEATION, .offset = offsetof(bcmolt_xgpon_ni_rogue_detection_completed_data, is_delineation), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_rogue_detection_completed_is_ed = { .name = "is_ed", .descr = "Is ED", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_ROGUE_DETECTION_COMPLETED_ID_IS_ED, .offset = offsetof(bcmolt_xgpon_ni_rogue_detection_completed_data, is_ed), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_rogue_detection_completed_rx_data = { .name = "rx_data", .descr = "Captured PLOAMu message if the burst delinieation was detected.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_ROGUE_DETECTION_COMPLETED_ID_RX_DATA, .offset = offsetof(bcmolt_xgpon_ni_rogue_detection_completed_data, rx_data), .type = &type_descr_bcmolt_u8_list_u32 };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_rogue_detection_completed_ploam_received_onu_id = { .name = "ploam_received_onu_id", .descr = "ONU ID received in the ploam", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_ROGUE_DETECTION_COMPLETED_ID_PLOAM_RECEIVED_ONU_ID, .offset = offsetof(bcmolt_xgpon_ni_rogue_detection_completed_data, ploam_received_onu_id), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_rogue_detection_completed_ploam_received_mic_error = { .name = "ploam_received_mic_error", .descr = "Mic error in the received ploam", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_ROGUE_DETECTION_COMPLETED_ID_PLOAM_RECEIVED_MIC_ERROR, .offset = offsetof(bcmolt_xgpon_ni_rogue_detection_completed_data, ploam_received_mic_error), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr * BCM_DESCR xgpon_ni_rogue_detection_completed_prop_array[] = { &prop_descr_xgpon_ni_rogue_detection_completed_window_type, &prop_descr_xgpon_ni_rogue_detection_completed_measurement_status, &prop_descr_xgpon_ni_rogue_detection_completed_alloc_id, &prop_descr_xgpon_ni_rogue_detection_completed_onu_id, &prop_descr_xgpon_ni_rogue_detection_completed_is_delineation, &prop_descr_xgpon_ni_rogue_detection_completed_is_ed, &prop_descr_xgpon_ni_rogue_detection_completed_rx_data, &prop_descr_xgpon_ni_rogue_detection_completed_ploam_received_onu_id, &prop_descr_xgpon_ni_rogue_detection_completed_ploam_received_mic_error };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_rogue_detection_completed_data_fields[] = { { .name = "window_type", .descr = "Silent Window or Cut off Window", .offset = offsetof(bcmolt_xgpon_ni_rogue_detection_completed_data, window_type), .type = &type_descr_bcmolt_rogue_detection_window }, { .name = "measurement_status", .descr = "Status of the rogue ONU detection result.", .offset = offsetof(bcmolt_xgpon_ni_rogue_detection_completed_data, measurement_status), .type = &type_descr_bcmolt_rogue_measurement_result }, { .name = "alloc_id", .descr = "Alloc-ID", .offset = offsetof(bcmolt_xgpon_ni_rogue_detection_completed_data, alloc_id), .type = &type_descr_uint16_t }, { .name = "onu_id", .descr = "ONU-ID", .offset = offsetof(bcmolt_xgpon_ni_rogue_detection_completed_data, onu_id), .type = &type_descr_uint16_t }, { .name = "is_delineation", .descr = "Burst Delineation detected during the rogue ONU detection.", .offset = offsetof(bcmolt_xgpon_ni_rogue_detection_completed_data, is_delineation), .type = &type_descr_bcmos_bool }, { .name = "is_ed", .descr = "Is ED", .offset = offsetof(bcmolt_xgpon_ni_rogue_detection_completed_data, is_ed), .type = &type_descr_bcmos_bool }, { .name = "rx_data", .descr = "Captured PLOAMu message if the burst delinieation was detected.", .offset = offsetof(bcmolt_xgpon_ni_rogue_detection_completed_data, rx_data), .type = &type_descr_bcmolt_u8_list_u32 }, { .name = "ploam_received_onu_id", .descr = "ONU ID received in the ploam", .offset = offsetof(bcmolt_xgpon_ni_rogue_detection_completed_data, ploam_received_onu_id), .type = &type_descr_uint16_t }, { .name = "ploam_received_mic_error", .descr = "Mic error in the received ploam", .offset = offsetof(bcmolt_xgpon_ni_rogue_detection_completed_data, ploam_received_mic_error), .type = &type_descr_bcmos_bool } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_rogue_detection_completed_data = { .name = "bcmolt_xgpon_ni_rogue_detection_completed_data", .descr = "Rogue detection completed", .size = sizeof(bcmolt_xgpon_ni_rogue_detection_completed_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_ni_rogue_detection_completed_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_ni_rogue_detection_completed_data_fields } } };

/* Group: xgpon_ni - deactivate_all_onus_completed */
static bcmcli_prop_descr * BCM_DESCR xgpon_ni_deactivate_all_onus_completed_prop_array[] = { };

/* Group: xgpon_ni - disable_all_onus_completed */
static bcmcli_prop_descr * BCM_DESCR xgpon_ni_disable_all_onus_completed_prop_array[] = { };

/* Group: xgpon_ni - activate_all_onus_completed */
static bcmcli_prop_descr * BCM_DESCR xgpon_ni_activate_all_onus_completed_prop_array[] = { };

/* Group: xgpon_ni - enable_all_onus_completed */
static bcmcli_prop_descr * BCM_DESCR xgpon_ni_enable_all_onus_completed_prop_array[] = { };

/* Group: xgpon_ni - tod_request_completed */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_tod_request_completed_tod_string = { .name = "tod_string", .descr = "tod_string", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_TOD_REQUEST_COMPLETED_ID_TOD_STRING, .offset = offsetof(bcmolt_xgpon_ni_tod_request_completed_data, tod_string), .type = &type_descr_bcmolt_str_64 };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_tod_request_completed_sfc = { .name = "sfc", .descr = "sfc", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_TOD_REQUEST_COMPLETED_ID_SFC, .offset = offsetof(bcmolt_xgpon_ni_tod_request_completed_data, sfc), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_tod_request_completed_rtc_offset_sec = { .name = "rtc_offset_sec", .descr = "rtc_offset_sec", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_TOD_REQUEST_COMPLETED_ID_RTC_OFFSET_SEC, .offset = offsetof(bcmolt_xgpon_ni_tod_request_completed_data, rtc_offset_sec), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_tod_request_completed_rtc_offset_nsec = { .name = "rtc_offset_nsec", .descr = "rtc_offset_nsec", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_TOD_REQUEST_COMPLETED_ID_RTC_OFFSET_NSEC, .offset = offsetof(bcmolt_xgpon_ni_tod_request_completed_data, rtc_offset_nsec), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_tod_request_completed_status = { .name = "status", .descr = "status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_TOD_REQUEST_COMPLETED_ID_STATUS, .offset = offsetof(bcmolt_xgpon_ni_tod_request_completed_data, status), .type = &type_descr_bcmolt_result };
static bcmcli_prop_descr * BCM_DESCR xgpon_ni_tod_request_completed_prop_array[] = { &prop_descr_xgpon_ni_tod_request_completed_tod_string, &prop_descr_xgpon_ni_tod_request_completed_sfc, &prop_descr_xgpon_ni_tod_request_completed_rtc_offset_sec, &prop_descr_xgpon_ni_tod_request_completed_rtc_offset_nsec, &prop_descr_xgpon_ni_tod_request_completed_status };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_tod_request_completed_data_fields[] = { { .name = "tod_string", .descr = "tod_string", .offset = offsetof(bcmolt_xgpon_ni_tod_request_completed_data, tod_string), .type = &type_descr_bcmolt_str_64 }, { .name = "sfc", .descr = "sfc", .offset = offsetof(bcmolt_xgpon_ni_tod_request_completed_data, sfc), .type = &type_descr_uint64_t }, { .name = "rtc_offset_sec", .descr = "rtc_offset_sec", .offset = offsetof(bcmolt_xgpon_ni_tod_request_completed_data, rtc_offset_sec), .type = &type_descr_uint64_t }, { .name = "rtc_offset_nsec", .descr = "rtc_offset_nsec", .offset = offsetof(bcmolt_xgpon_ni_tod_request_completed_data, rtc_offset_nsec), .type = &type_descr_uint32_t }, { .name = "status", .descr = "status", .offset = offsetof(bcmolt_xgpon_ni_tod_request_completed_data, status), .type = &type_descr_bcmolt_result } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_tod_request_completed_data = { .name = "bcmolt_xgpon_ni_tod_request_completed_data", .descr = "TOD request completed", .size = sizeof(bcmolt_xgpon_ni_tod_request_completed_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_ni_tod_request_completed_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_ni_tod_request_completed_data_fields } } };

/* Group: xgpon_ni - tod_request */
static bcmcli_prop_descr * BCM_DESCR xgpon_ni_tod_request_prop_array[] = { };

/* Group: xgpon_ni - start_onu_upgrade */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_start_onu_upgrade_list_of_onu_ids = { .name = "list_of_onu_ids", .descr = "List of ONU IDs to upgrade the firmware.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_START_ONU_UPGRADE_ID_LIST_OF_ONU_IDS, .offset = offsetof(bcmolt_xgpon_ni_start_onu_upgrade_data, list_of_onu_ids), .type = &type_descr_bcmolt_pon_onu_id_list_u32 };
static bcmcli_prop_descr * BCM_DESCR xgpon_ni_start_onu_upgrade_prop_array[] = { &prop_descr_xgpon_ni_start_onu_upgrade_list_of_onu_ids };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_start_onu_upgrade_data_fields[] = { { .name = "list_of_onu_ids", .descr = "List of ONU IDs to upgrade the firmware.", .offset = offsetof(bcmolt_xgpon_ni_start_onu_upgrade_data, list_of_onu_ids), .type = &type_descr_bcmolt_pon_onu_id_list_u32 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_start_onu_upgrade_data = { .name = "bcmolt_xgpon_ni_start_onu_upgrade_data", .descr = "OLT to ONU firmware transfer", .size = sizeof(bcmolt_xgpon_ni_start_onu_upgrade_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_ni_start_onu_upgrade_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_ni_start_onu_upgrade_data_fields } } };

/* Group: xgpon_ni - onu_upgrade_complete */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_onu_upgrade_complete_status = { .name = "status", .descr = "Success or failure.  Against entire upgrade process.  This is added per Anat's request.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_ONU_UPGRADE_COMPLETE_ID_STATUS, .offset = offsetof(bcmolt_xgpon_ni_onu_upgrade_complete_data, status), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_onu_upgrade_complete_list_of_failed_entities = { .name = "list_of_failed_entities", .descr = "List of ONU-IDs the upgrade failed for.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_ONU_UPGRADE_COMPLETE_ID_LIST_OF_FAILED_ENTITIES, .offset = offsetof(bcmolt_xgpon_ni_onu_upgrade_complete_data, list_of_failed_entities), .type = &type_descr_bcmolt_gpon_onu_upgrade_status_list_u32 };
static bcmcli_prop_descr * BCM_DESCR xgpon_ni_onu_upgrade_complete_prop_array[] = { &prop_descr_xgpon_ni_onu_upgrade_complete_status, &prop_descr_xgpon_ni_onu_upgrade_complete_list_of_failed_entities };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_onu_upgrade_complete_data_fields[] = { { .name = "status", .descr = "Success or failure.  Against entire upgrade process.  This is added per Anat's request.", .offset = offsetof(bcmolt_xgpon_ni_onu_upgrade_complete_data, status), .type = &type_descr_bcmos_bool }, { .name = "list_of_failed_entities", .descr = "List of ONU-IDs the upgrade failed for.", .offset = offsetof(bcmolt_xgpon_ni_onu_upgrade_complete_data, list_of_failed_entities), .type = &type_descr_bcmolt_gpon_onu_upgrade_status_list_u32 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_onu_upgrade_complete_data = { .name = "bcmolt_xgpon_ni_onu_upgrade_complete_data", .descr = "ONU Upgrade Complete", .size = sizeof(bcmolt_xgpon_ni_onu_upgrade_complete_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_ni_onu_upgrade_complete_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_ni_onu_upgrade_complete_data_fields } } };

/* Group: xgpon_ni - rogue_onu_special_map_cycle_start */
static bcmcli_prop_descr * BCM_DESCR xgpon_ni_rogue_onu_special_map_cycle_start_prop_array[] = { };

/* Group: xgpon_ni - adjust_tx_wavelength */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_adjust_tx_wavelength_serial_number = { .name = "serial_number", .descr = "Serial number", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_ADJUST_TX_WAVELENGTH_ID_SERIAL_NUMBER, .offset = offsetof(bcmolt_xgpon_ni_adjust_tx_wavelength_data, serial_number), .type = &type_descr_bcmolt_serial_number };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_adjust_tx_wavelength_freqency_adjustment_direction = { .name = "freqency_adjustment_direction", .descr = "Frequency adjustment direction", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_ADJUST_TX_WAVELENGTH_ID_FREQENCY_ADJUSTMENT_DIRECTION, .offset = offsetof(bcmolt_xgpon_ni_adjust_tx_wavelength_data, freqency_adjustment_direction), .type = &type_descr_bcmolt_frequency_adjustment_direction };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_adjust_tx_wavelength_frequency_adjustment_size = { .name = "frequency_adjustment_size", .descr = "The size of the frequncy adjustment in units of 0.1 Ghz", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_ADJUST_TX_WAVELENGTH_ID_FREQUENCY_ADJUSTMENT_SIZE, .offset = offsetof(bcmolt_xgpon_ni_adjust_tx_wavelength_data, frequency_adjustment_size), .type = &type_descr_uint8_t };
static bcmcli_prop_descr * BCM_DESCR xgpon_ni_adjust_tx_wavelength_prop_array[] = { &prop_descr_xgpon_ni_adjust_tx_wavelength_serial_number, &prop_descr_xgpon_ni_adjust_tx_wavelength_freqency_adjustment_direction, &prop_descr_xgpon_ni_adjust_tx_wavelength_frequency_adjustment_size };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_adjust_tx_wavelength_data_fields[] = { { .name = "serial_number", .descr = "Serial number", .offset = offsetof(bcmolt_xgpon_ni_adjust_tx_wavelength_data, serial_number), .type = &type_descr_bcmolt_serial_number }, { .name = "freqency_adjustment_direction", .descr = "Frequency adjustment direction", .offset = offsetof(bcmolt_xgpon_ni_adjust_tx_wavelength_data, freqency_adjustment_direction), .type = &type_descr_bcmolt_frequency_adjustment_direction }, { .name = "frequency_adjustment_size", .descr = "The size of the frequncy adjustment in units of 0.1 Ghz", .offset = offsetof(bcmolt_xgpon_ni_adjust_tx_wavelength_data, frequency_adjustment_size), .type = &type_descr_uint8_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_adjust_tx_wavelength_data = { .name = "bcmolt_xgpon_ni_adjust_tx_wavelength_data", .descr = "Instruct an unassigned ONU to adjust its upstream transmitter wavelength", .size = sizeof(bcmolt_xgpon_ni_adjust_tx_wavelength_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_ni_adjust_tx_wavelength_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_ni_adjust_tx_wavelength_data_fields } } };

/* Group: xgpon_ni - stat_cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_stat_cfg_cfg = { .name = "cfg", .descr = "Statistic alarm configuration.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_STAT_CFG_ID_CFG, .offset = offsetof(bcmolt_xgpon_ni_stat_cfg_data, cfg), .type = &type_descr_bcmolt_stat_alarm_config };
static bcmcli_prop_descr * BCM_DESCR xgpon_ni_stat_cfg_prop_array[] = { &prop_descr_xgpon_ni_stat_cfg_cfg };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_stat_cfg_data_fields[] = { { .name = "cfg", .descr = "Statistic alarm configuration.", .offset = offsetof(bcmolt_xgpon_ni_stat_cfg_data, cfg), .type = &type_descr_bcmolt_stat_alarm_config } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_stat_cfg_data = { .name = "bcmolt_xgpon_ni_stat_cfg_data", .descr = "Statistic Configuration", .size = sizeof(bcmolt_xgpon_ni_stat_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_ni_stat_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_ni_stat_cfg_data_fields } } };

/* Group: xgpon_ni - stat_alarm_raised */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_stat_alarm_raised_stat = { .name = "stat", .descr = "Statistic identifier.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_STAT_ALARM_RAISED_ID_STAT, .offset = offsetof(bcmolt_xgpon_ni_stat_alarm_raised_data, stat), .type = &type_descr_bcmolt_xgpon_ni_stat_id };
static bcmcli_prop_descr * BCM_DESCR xgpon_ni_stat_alarm_raised_prop_array[] = { &prop_descr_xgpon_ni_stat_alarm_raised_stat };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_stat_alarm_raised_data_fields[] = { { .name = "stat", .descr = "Statistic identifier.", .offset = offsetof(bcmolt_xgpon_ni_stat_alarm_raised_data, stat), .type = &type_descr_bcmolt_xgpon_ni_stat_id } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_stat_alarm_raised_data = { .name = "bcmolt_xgpon_ni_stat_alarm_raised_data", .descr = "Sent when a configured statistic alarm condition has been met.", .size = sizeof(bcmolt_xgpon_ni_stat_alarm_raised_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_ni_stat_alarm_raised_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_ni_stat_alarm_raised_data_fields } } };

/* Group: xgpon_ni - stat_alarm_cleared */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_stat_alarm_cleared_stat = { .name = "stat", .descr = "Statistic identifier.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_STAT_ALARM_CLEARED_ID_STAT, .offset = offsetof(bcmolt_xgpon_ni_stat_alarm_cleared_data, stat), .type = &type_descr_bcmolt_xgpon_ni_stat_id };
static bcmcli_prop_descr * BCM_DESCR xgpon_ni_stat_alarm_cleared_prop_array[] = { &prop_descr_xgpon_ni_stat_alarm_cleared_stat };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_stat_alarm_cleared_data_fields[] = { { .name = "stat", .descr = "Statistic identifier.", .offset = offsetof(bcmolt_xgpon_ni_stat_alarm_cleared_data, stat), .type = &type_descr_bcmolt_xgpon_ni_stat_id } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_stat_alarm_cleared_data = { .name = "bcmolt_xgpon_ni_stat_alarm_cleared_data", .descr = "Sent when a configured statistic alarm condition is no longer met.", .size = sizeof(bcmolt_xgpon_ni_stat_alarm_cleared_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_ni_stat_alarm_cleared_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_ni_stat_alarm_cleared_data_fields } } };

/* Group: xgpon_ni - auto_cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_auto_cfg_activate_all_onus_completed = { .name = "activate_all_onus_completed", .descr = "If true, indications of type \"activate_all_onus_completed\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_AUTO_CFG_ID_ACTIVATE_ALL_ONUS_COMPLETED, .offset = offsetof(bcmolt_xgpon_ni_auto_cfg_data, activate_all_onus_completed), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_auto_cfg_cpu_packets_failure = { .name = "cpu_packets_failure", .descr = "If true, indications of type \"cpu_packets_failure\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_AUTO_CFG_ID_CPU_PACKETS_FAILURE, .offset = offsetof(bcmolt_xgpon_ni_auto_cfg_data, cpu_packets_failure), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_auto_cfg_deactivate_all_onus_completed = { .name = "deactivate_all_onus_completed", .descr = "If true, indications of type \"deactivate_all_onus_completed\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_AUTO_CFG_ID_DEACTIVATE_ALL_ONUS_COMPLETED, .offset = offsetof(bcmolt_xgpon_ni_auto_cfg_data, deactivate_all_onus_completed), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_auto_cfg_disable_all_onus_completed = { .name = "disable_all_onus_completed", .descr = "If true, indications of type \"disable_all_onus_completed\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_AUTO_CFG_ID_DISABLE_ALL_ONUS_COMPLETED, .offset = offsetof(bcmolt_xgpon_ni_auto_cfg_data, disable_all_onus_completed), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_auto_cfg_enable_all_onus_completed = { .name = "enable_all_onus_completed", .descr = "If true, indications of type \"enable_all_onus_completed\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_AUTO_CFG_ID_ENABLE_ALL_ONUS_COMPLETED, .offset = offsetof(bcmolt_xgpon_ni_auto_cfg_data, enable_all_onus_completed), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_auto_cfg_los = { .name = "los", .descr = "If true, indications of type \"los\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_AUTO_CFG_ID_LOS, .offset = offsetof(bcmolt_xgpon_ni_auto_cfg_data, los), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_auto_cfg_onu_discovered = { .name = "onu_discovered", .descr = "If true, indications of type \"onu_discovered\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_AUTO_CFG_ID_ONU_DISCOVERED, .offset = offsetof(bcmolt_xgpon_ni_auto_cfg_data, onu_discovered), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_auto_cfg_onu_upgrade_complete = { .name = "onu_upgrade_complete", .descr = "If true, indications of type \"onu_upgrade_complete\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_AUTO_CFG_ID_ONU_UPGRADE_COMPLETE, .offset = offsetof(bcmolt_xgpon_ni_auto_cfg_data, onu_upgrade_complete), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_auto_cfg_protection_switching_onus_ranged = { .name = "protection_switching_onus_ranged", .descr = "If true, indications of type \"protection_switching_onus_ranged\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_AUTO_CFG_ID_PROTECTION_SWITCHING_ONUS_RANGED, .offset = offsetof(bcmolt_xgpon_ni_auto_cfg_data, protection_switching_onus_ranged), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_auto_cfg_protection_switching_switchover_completed = { .name = "protection_switching_switchover_completed", .descr = "If true, indications of type \"protection_switching_switchover_completed\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_AUTO_CFG_ID_PROTECTION_SWITCHING_SWITCHOVER_COMPLETED, .offset = offsetof(bcmolt_xgpon_ni_auto_cfg_data, protection_switching_switchover_completed), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_auto_cfg_protection_switching_traffic_resume = { .name = "protection_switching_traffic_resume", .descr = "If true, indications of type \"protection_switching_traffic_resume\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_AUTO_CFG_ID_PROTECTION_SWITCHING_TRAFFIC_RESUME, .offset = offsetof(bcmolt_xgpon_ni_auto_cfg_data, protection_switching_traffic_resume), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_auto_cfg_rogue_detection_completed = { .name = "rogue_detection_completed", .descr = "If true, indications of type \"rogue_detection_completed\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_AUTO_CFG_ID_ROGUE_DETECTION_COMPLETED, .offset = offsetof(bcmolt_xgpon_ni_auto_cfg_data, rogue_detection_completed), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_auto_cfg_rogue_onu_special_map_cycle_start = { .name = "rogue_onu_special_map_cycle_start", .descr = "If true, indications of type \"rogue_onu_special_map_cycle_start\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_AUTO_CFG_ID_ROGUE_ONU_SPECIAL_MAP_CYCLE_START, .offset = offsetof(bcmolt_xgpon_ni_auto_cfg_data, rogue_onu_special_map_cycle_start), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_auto_cfg_serial_number_acquisition_cycle_start = { .name = "serial_number_acquisition_cycle_start", .descr = "If true, indications of type \"serial_number_acquisition_cycle_start\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_AUTO_CFG_ID_SERIAL_NUMBER_ACQUISITION_CYCLE_START, .offset = offsetof(bcmolt_xgpon_ni_auto_cfg_data, serial_number_acquisition_cycle_start), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_auto_cfg_standby_pon_monitoring_cycle_completed = { .name = "standby_pon_monitoring_cycle_completed", .descr = "If true, indications of type \"standby_pon_monitoring_cycle_completed\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_AUTO_CFG_ID_STANDBY_PON_MONITORING_CYCLE_COMPLETED, .offset = offsetof(bcmolt_xgpon_ni_auto_cfg_data, standby_pon_monitoring_cycle_completed), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_auto_cfg_stat_alarm_cleared = { .name = "stat_alarm_cleared", .descr = "If true, indications of type \"stat_alarm_cleared\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_AUTO_CFG_ID_STAT_ALARM_CLEARED, .offset = offsetof(bcmolt_xgpon_ni_auto_cfg_data, stat_alarm_cleared), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_auto_cfg_stat_alarm_raised = { .name = "stat_alarm_raised", .descr = "If true, indications of type \"stat_alarm_raised\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_AUTO_CFG_ID_STAT_ALARM_RAISED, .offset = offsetof(bcmolt_xgpon_ni_auto_cfg_data, stat_alarm_raised), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_auto_cfg_state_change_completed = { .name = "state_change_completed", .descr = "If true, indications of type \"state_change_completed\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_AUTO_CFG_ID_STATE_CHANGE_COMPLETED, .offset = offsetof(bcmolt_xgpon_ni_auto_cfg_data, state_change_completed), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_ni_auto_cfg_tod_request_completed = { .name = "tod_request_completed", .descr = "If true, indications of type \"tod_request_completed\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_NI_AUTO_CFG_ID_TOD_REQUEST_COMPLETED, .offset = offsetof(bcmolt_xgpon_ni_auto_cfg_data, tod_request_completed), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr * BCM_DESCR xgpon_ni_auto_cfg_prop_array[] = { &prop_descr_xgpon_ni_auto_cfg_activate_all_onus_completed, &prop_descr_xgpon_ni_auto_cfg_cpu_packets_failure, &prop_descr_xgpon_ni_auto_cfg_deactivate_all_onus_completed, &prop_descr_xgpon_ni_auto_cfg_disable_all_onus_completed, &prop_descr_xgpon_ni_auto_cfg_enable_all_onus_completed, &prop_descr_xgpon_ni_auto_cfg_los, &prop_descr_xgpon_ni_auto_cfg_onu_discovered, &prop_descr_xgpon_ni_auto_cfg_onu_upgrade_complete, &prop_descr_xgpon_ni_auto_cfg_protection_switching_onus_ranged, &prop_descr_xgpon_ni_auto_cfg_protection_switching_switchover_completed, &prop_descr_xgpon_ni_auto_cfg_protection_switching_traffic_resume, &prop_descr_xgpon_ni_auto_cfg_rogue_detection_completed, &prop_descr_xgpon_ni_auto_cfg_rogue_onu_special_map_cycle_start, &prop_descr_xgpon_ni_auto_cfg_serial_number_acquisition_cycle_start, &prop_descr_xgpon_ni_auto_cfg_standby_pon_monitoring_cycle_completed, &prop_descr_xgpon_ni_auto_cfg_stat_alarm_cleared, &prop_descr_xgpon_ni_auto_cfg_stat_alarm_raised, &prop_descr_xgpon_ni_auto_cfg_state_change_completed, &prop_descr_xgpon_ni_auto_cfg_tod_request_completed };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_auto_cfg_data_fields[] = { { .name = "activate_all_onus_completed", .descr = "If true, indications of type \"activate_all_onus_completed\" will be generated.", .offset = offsetof(bcmolt_xgpon_ni_auto_cfg_data, activate_all_onus_completed), .type = &type_descr_bcmos_bool }, { .name = "cpu_packets_failure", .descr = "If true, indications of type \"cpu_packets_failure\" will be generated.", .offset = offsetof(bcmolt_xgpon_ni_auto_cfg_data, cpu_packets_failure), .type = &type_descr_bcmos_bool }, { .name = "deactivate_all_onus_completed", .descr = "If true, indications of type \"deactivate_all_onus_completed\" will be generated.", .offset = offsetof(bcmolt_xgpon_ni_auto_cfg_data, deactivate_all_onus_completed), .type = &type_descr_bcmos_bool }, { .name = "disable_all_onus_completed", .descr = "If true, indications of type \"disable_all_onus_completed\" will be generated.", .offset = offsetof(bcmolt_xgpon_ni_auto_cfg_data, disable_all_onus_completed), .type = &type_descr_bcmos_bool }, { .name = "enable_all_onus_completed", .descr = "If true, indications of type \"enable_all_onus_completed\" will be generated.", .offset = offsetof(bcmolt_xgpon_ni_auto_cfg_data, enable_all_onus_completed), .type = &type_descr_bcmos_bool }, { .name = "los", .descr = "If true, indications of type \"los\" will be generated.", .offset = offsetof(bcmolt_xgpon_ni_auto_cfg_data, los), .type = &type_descr_bcmos_bool }, { .name = "onu_discovered", .descr = "If true, indications of type \"onu_discovered\" will be generated.", .offset = offsetof(bcmolt_xgpon_ni_auto_cfg_data, onu_discovered), .type = &type_descr_bcmos_bool }, { .name = "onu_upgrade_complete", .descr = "If true, indications of type \"onu_upgrade_complete\" will be generated.", .offset = offsetof(bcmolt_xgpon_ni_auto_cfg_data, onu_upgrade_complete), .type = &type_descr_bcmos_bool }, { .name = "protection_switching_onus_ranged", .descr = "If true, indications of type \"protection_switching_onus_ranged\" will be generated.", .offset = offsetof(bcmolt_xgpon_ni_auto_cfg_data, protection_switching_onus_ranged), .type = &type_descr_bcmos_bool }, { .name = "protection_switching_switchover_completed", .descr = "If true, indications of type \"protection_switching_switchover_completed\" will be generated.", .offset = offsetof(bcmolt_xgpon_ni_auto_cfg_data, protection_switching_switchover_completed), .type = &type_descr_bcmos_bool }, { .name = "protection_switching_traffic_resume", .descr = "If true, indications of type \"protection_switching_traffic_resume\" will be generated.", .offset = offsetof(bcmolt_xgpon_ni_auto_cfg_data, protection_switching_traffic_resume), .type = &type_descr_bcmos_bool }, { .name = "rogue_detection_completed", .descr = "If true, indications of type \"rogue_detection_completed\" will be generated.", .offset = offsetof(bcmolt_xgpon_ni_auto_cfg_data, rogue_detection_completed), .type = &type_descr_bcmos_bool }, { .name = "rogue_onu_special_map_cycle_start", .descr = "If true, indications of type \"rogue_onu_special_map_cycle_start\" will be generated.", .offset = offsetof(bcmolt_xgpon_ni_auto_cfg_data, rogue_onu_special_map_cycle_start), .type = &type_descr_bcmos_bool }, { .name = "serial_number_acquisition_cycle_start", .descr = "If true, indications of type \"serial_number_acquisition_cycle_start\" will be generated.", .offset = offsetof(bcmolt_xgpon_ni_auto_cfg_data, serial_number_acquisition_cycle_start), .type = &type_descr_bcmos_bool }, { .name = "standby_pon_monitoring_cycle_completed", .descr = "If true, indications of type \"standby_pon_monitoring_cycle_completed\" will be generated.", .offset = offsetof(bcmolt_xgpon_ni_auto_cfg_data, standby_pon_monitoring_cycle_completed), .type = &type_descr_bcmos_bool }, { .name = "stat_alarm_cleared", .descr = "If true, indications of type \"stat_alarm_cleared\" will be generated.", .offset = offsetof(bcmolt_xgpon_ni_auto_cfg_data, stat_alarm_cleared), .type = &type_descr_bcmos_bool }, { .name = "stat_alarm_raised", .descr = "If true, indications of type \"stat_alarm_raised\" will be generated.", .offset = offsetof(bcmolt_xgpon_ni_auto_cfg_data, stat_alarm_raised), .type = &type_descr_bcmos_bool }, { .name = "state_change_completed", .descr = "If true, indications of type \"state_change_completed\" will be generated.", .offset = offsetof(bcmolt_xgpon_ni_auto_cfg_data, state_change_completed), .type = &type_descr_bcmos_bool }, { .name = "tod_request_completed", .descr = "If true, indications of type \"tod_request_completed\" will be generated.", .offset = offsetof(bcmolt_xgpon_ni_auto_cfg_data, tod_request_completed), .type = &type_descr_bcmos_bool } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_ni_auto_cfg_data = { .name = "bcmolt_xgpon_ni_auto_cfg_data", .descr = "Indication Configuration", .size = sizeof(bcmolt_xgpon_ni_auto_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_ni_auto_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_ni_auto_cfg_data_fields } } };

/* ==== Object: xgpon_onu ==== */

/* Group: xgpon_onu - key */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_key_pon_ni = { .name = "pon_ni", .descr = "PON network interface", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_KEY_ID_PON_NI, .offset = offsetof(bcmolt_xgpon_onu_key, pon_ni), .type = &type_descr_uint8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_key_onu_id = { .name = "onu_id", .descr = "onu id", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_KEY_ID_ONU_ID, .offset = offsetof(bcmolt_xgpon_onu_key, onu_id), .type = &type_descr_uint16_t };
static bcmcli_prop_descr * BCM_DESCR xgpon_onu_key_prop_array[] = { &prop_descr_xgpon_onu_key_pon_ni, &prop_descr_xgpon_onu_key_onu_id };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_key_fields[] = { { .name = "pon_ni", .descr = "PON network interface", .offset = offsetof(bcmolt_xgpon_onu_key, pon_ni), .type = &type_descr_uint8_t }, { .name = "onu_id", .descr = "onu id", .offset = offsetof(bcmolt_xgpon_onu_key, onu_id), .type = &type_descr_uint16_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_key = { .name = "bcmolt_xgpon_onu_key", .descr = "key", .size = sizeof(bcmolt_xgpon_onu_key), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_onu_key_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_onu_key_fields } } };

/* Group: xgpon_onu - cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_cfg_onu_state = { .name = "onu_state", .descr = "Current ONU state", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_CFG_ID_ONU_STATE, .offset = offsetof(bcmolt_xgpon_onu_cfg_data, onu_state), .type = &type_descr_bcmolt_onu_state };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_cfg_onu_old_state = { .name = "onu_old_state", .descr = "onu old state", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_XGPON_ONU_CFG_ID_ONU_OLD_STATE, .offset = offsetof(bcmolt_xgpon_onu_cfg_data, onu_old_state), .type = &type_descr_bcmolt_onu_state };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_cfg_alarm_state = { .name = "alarm_state", .descr = "State of all ONU alarms.  This is normally read-only and can only be written when the PON is in active-standby mode to keep the ONU in sync.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_CFG_ID_ALARM_STATE, .offset = offsetof(bcmolt_xgpon_onu_cfg_data, alarm_state), .type = &type_descr_bcmolt_xgpon_onu_alarm_state };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_cfg_registration_encryption_keys = { .name = "registration_encryption_keys", .descr = "AES encryption keys learned during ONU registration.  This is normally read-only and can only be written when the PON is in active-standby mode to keep the ONU in sync.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_CFG_ID_REGISTRATION_ENCRYPTION_KEYS, .offset = offsetof(bcmolt_xgpon_onu_cfg_data, registration_encryption_keys), .type = &type_descr_bcmolt_xgpon_onu_registration_keys };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_cfg_current_encryption_key = { .name = "current_encryption_key", .descr = "Current AES encryption key.  This is normally read-only and can only be written when the PON is in active-standby mode to keep the ONU in sync.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_CFG_ID_CURRENT_ENCRYPTION_KEY, .offset = offsetof(bcmolt_xgpon_onu_cfg_data, current_encryption_key), .type = &type_descr_bcmolt_xgpon_onu_aes_key };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_cfg_serial_number = { .name = "serial_number", .descr = "ONU serial number", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_CFG_ID_SERIAL_NUMBER, .offset = offsetof(bcmolt_xgpon_onu_cfg_data, serial_number), .type = &type_descr_bcmolt_serial_number };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_cfg_registration_id = { .name = "registration_id", .descr = "ONU registration ID", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_CFG_ID_REGISTRATION_ID, .offset = offsetof(bcmolt_xgpon_onu_cfg_data, registration_id), .type = &type_descr_bcmolt_arr_u8_36 };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_cfg_registration_id_auto_learning = { .name = "registration_id_auto_learning", .descr = "Enable\\Disable automatic registration learning", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_CFG_ID_REGISTRATION_ID_AUTO_LEARNING, .offset = offsetof(bcmolt_xgpon_onu_cfg_data, registration_id_auto_learning), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_cfg_ranging_burst_profile = { .name = "ranging_burst_profile", .descr = "Burst profile index for ranging allocations", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_CFG_ID_RANGING_BURST_PROFILE, .offset = offsetof(bcmolt_xgpon_onu_cfg_data, ranging_burst_profile), .type = &type_descr_uint8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_cfg_data_burst_profile = { .name = "data_burst_profile", .descr = "Burst profile index for data allocations", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_CFG_ID_DATA_BURST_PROFILE, .offset = offsetof(bcmolt_xgpon_onu_cfg_data, data_burst_profile), .type = &type_descr_uint8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_cfg_ranging_time = { .name = "ranging_time", .descr = "ONU ranging time.  This is normally read-only and can only be written when the PON is in active-standby mode to keep the ONU in sync.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_CFG_ID_RANGING_TIME, .offset = offsetof(bcmolt_xgpon_onu_cfg_data, ranging_time), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_cfg_disabled_after_discovery = { .name = "disabled_after_discovery", .descr = "This ONU was disabled after SN discovery", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_XGPON_ONU_CFG_ID_DISABLED_AFTER_DISCOVERY, .offset = offsetof(bcmolt_xgpon_onu_cfg_data, disabled_after_discovery), .type = &type_descr_bcmolt_status };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_cfg_deactivation_reason = { .name = "deactivation_reason", .descr = "deactivation reason", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_XGPON_ONU_CFG_ID_DEACTIVATION_REASON, .offset = offsetof(bcmolt_xgpon_onu_cfg_data, deactivation_reason), .type = &type_descr_bcmolt_deactivation_reason };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_cfg_all_gem_ports = { .name = "all_gem_ports", .descr = "All unicast GEM ports currently provisioned on this ONU.", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_XGPON_ONU_CFG_ID_ALL_GEM_PORTS, .offset = offsetof(bcmolt_xgpon_onu_cfg_data, all_gem_ports), .type = &type_descr_bcmolt_xgpon_gem_port_with_state_list_u16_max_256 };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_cfg_all_allocs = { .name = "all_allocs", .descr = "All alloc IDs currently provisioned on this ONU.", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_XGPON_ONU_CFG_ID_ALL_ALLOCS, .offset = offsetof(bcmolt_xgpon_onu_cfg_data, all_allocs), .type = &type_descr_bcmolt_xgpon_alloc_with_state_list_u16_max_32 };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_cfg_extended_guard_time = { .name = "extended_guard_time", .descr = "Additional guard time (in bytes) for this ONU.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_CFG_ID_EXTENDED_GUARD_TIME, .offset = offsetof(bcmolt_xgpon_onu_cfg_data, extended_guard_time), .type = &type_descr_bcmolt_extended_guard_time };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_cfg_us_line_rate = { .name = "us_line_rate", .descr = "US line rate", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_CFG_ID_US_LINE_RATE, .offset = offsetof(bcmolt_xgpon_onu_cfg_data, us_line_rate), .type = &type_descr_bcmolt_upstream_line_rate_capabilities };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_cfg_calibration_record = { .name = "calibration_record", .descr = "Calibration record", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_CFG_ID_CALIBRATION_RECORD, .offset = offsetof(bcmolt_xgpon_onu_cfg_data, calibration_record), .type = &type_descr_bcmolt_arr_calibration_record_8 };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_cfg_tuning_granularity = { .name = "tuning_granularity", .descr = "The tuning granularity of the ONU transmitted expressed in units of 1GHz. Value of 0 indicates that the ONU does not support fine tuning/dithering", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_CFG_ID_TUNING_GRANULARITY, .offset = offsetof(bcmolt_xgpon_onu_cfg_data, tuning_granularity), .type = &type_descr_uint8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_cfg_step_tuning_time = { .name = "step_tuning_time", .descr = "The value of the tuning time for a single granularity step, expressed in units of PHY frames.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_CFG_ID_STEP_TUNING_TIME, .offset = offsetof(bcmolt_xgpon_onu_cfg_data, step_tuning_time), .type = &type_descr_uint8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_cfg_power_levelling_capabilities = { .name = "power_levelling_capabilities", .descr = "Power levelling capabilities", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_CFG_ID_POWER_LEVELLING_CAPABILITIES, .offset = offsetof(bcmolt_xgpon_onu_cfg_data, power_levelling_capabilities), .type = &type_descr_uint8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_cfg_request_registration_status = { .name = "request_registration_status", .descr = "This value indicate that the onu is in the middle of request registration process", .access = BCMOLT_PROP_ACCESS_ID_R, .property = BCMOLT_XGPON_ONU_CFG_ID_REQUEST_REGISTRATION_STATUS, .offset = offsetof(bcmolt_xgpon_onu_cfg_data, request_registration_status), .type = &type_descr_bcmolt_request_registration_status };
static bcmcli_prop_descr * BCM_DESCR xgpon_onu_cfg_prop_array[] = { &prop_descr_xgpon_onu_cfg_onu_state, &prop_descr_xgpon_onu_cfg_onu_old_state, &prop_descr_xgpon_onu_cfg_alarm_state, &prop_descr_xgpon_onu_cfg_registration_encryption_keys, &prop_descr_xgpon_onu_cfg_current_encryption_key, &prop_descr_xgpon_onu_cfg_serial_number, &prop_descr_xgpon_onu_cfg_registration_id, &prop_descr_xgpon_onu_cfg_registration_id_auto_learning, &prop_descr_xgpon_onu_cfg_ranging_burst_profile, &prop_descr_xgpon_onu_cfg_data_burst_profile, &prop_descr_xgpon_onu_cfg_ranging_time, &prop_descr_xgpon_onu_cfg_disabled_after_discovery, &prop_descr_xgpon_onu_cfg_deactivation_reason, &prop_descr_xgpon_onu_cfg_all_gem_ports, &prop_descr_xgpon_onu_cfg_all_allocs, &prop_descr_xgpon_onu_cfg_extended_guard_time, &prop_descr_xgpon_onu_cfg_us_line_rate, &prop_descr_xgpon_onu_cfg_calibration_record, &prop_descr_xgpon_onu_cfg_tuning_granularity, &prop_descr_xgpon_onu_cfg_step_tuning_time, &prop_descr_xgpon_onu_cfg_power_levelling_capabilities, &prop_descr_xgpon_onu_cfg_request_registration_status };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_cfg_data_fields[] = { { .name = "onu_state", .descr = "Current ONU state", .offset = offsetof(bcmolt_xgpon_onu_cfg_data, onu_state), .type = &type_descr_bcmolt_onu_state }, { .name = "onu_old_state", .descr = "onu old state", .offset = offsetof(bcmolt_xgpon_onu_cfg_data, onu_old_state), .type = &type_descr_bcmolt_onu_state }, { .name = "alarm_state", .descr = "State of all ONU alarms.  This is normally read-only and can only be written when the PON is in active-standby mode to keep the ONU in sync.", .offset = offsetof(bcmolt_xgpon_onu_cfg_data, alarm_state), .type = &type_descr_bcmolt_xgpon_onu_alarm_state }, { .name = "registration_encryption_keys", .descr = "AES encryption keys learned during ONU registration.  This is normally read-only and can only be written when the PON is in active-standby mode to keep the ONU in sync.", .offset = offsetof(bcmolt_xgpon_onu_cfg_data, registration_encryption_keys), .type = &type_descr_bcmolt_xgpon_onu_registration_keys }, { .name = "current_encryption_key", .descr = "Current AES encryption key.  This is normally read-only and can only be written when the PON is in active-standby mode to keep the ONU in sync.", .offset = offsetof(bcmolt_xgpon_onu_cfg_data, current_encryption_key), .type = &type_descr_bcmolt_xgpon_onu_aes_key }, { .name = "serial_number", .descr = "ONU serial number", .offset = offsetof(bcmolt_xgpon_onu_cfg_data, serial_number), .type = &type_descr_bcmolt_serial_number }, { .name = "registration_id", .descr = "ONU registration ID", .offset = offsetof(bcmolt_xgpon_onu_cfg_data, registration_id), .type = &type_descr_bcmolt_arr_u8_36 }, { .name = "registration_id_auto_learning", .descr = "Enable\\Disable automatic registration learning", .offset = offsetof(bcmolt_xgpon_onu_cfg_data, registration_id_auto_learning), .type = &type_descr_bcmos_bool }, { .name = "ranging_burst_profile", .descr = "Burst profile index for ranging allocations", .offset = offsetof(bcmolt_xgpon_onu_cfg_data, ranging_burst_profile), .type = &type_descr_uint8_t }, { .name = "data_burst_profile", .descr = "Burst profile index for data allocations", .offset = offsetof(bcmolt_xgpon_onu_cfg_data, data_burst_profile), .type = &type_descr_uint8_t }, { .name = "ranging_time", .descr = "ONU ranging time.  This is normally read-only and can only be written when the PON is in active-standby mode to keep the ONU in sync.", .offset = offsetof(bcmolt_xgpon_onu_cfg_data, ranging_time), .type = &type_descr_uint32_t }, { .name = "disabled_after_discovery", .descr = "This ONU was disabled after SN discovery", .offset = offsetof(bcmolt_xgpon_onu_cfg_data, disabled_after_discovery), .type = &type_descr_bcmolt_status }, { .name = "deactivation_reason", .descr = "deactivation reason", .offset = offsetof(bcmolt_xgpon_onu_cfg_data, deactivation_reason), .type = &type_descr_bcmolt_deactivation_reason }, { .name = "all_gem_ports", .descr = "All unicast GEM ports currently provisioned on this ONU.", .offset = offsetof(bcmolt_xgpon_onu_cfg_data, all_gem_ports), .type = &type_descr_bcmolt_xgpon_gem_port_with_state_list_u16_max_256 }, { .name = "all_allocs", .descr = "All alloc IDs currently provisioned on this ONU.", .offset = offsetof(bcmolt_xgpon_onu_cfg_data, all_allocs), .type = &type_descr_bcmolt_xgpon_alloc_with_state_list_u16_max_32 }, { .name = "extended_guard_time", .descr = "Additional guard time (in bytes) for this ONU.", .offset = offsetof(bcmolt_xgpon_onu_cfg_data, extended_guard_time), .type = &type_descr_bcmolt_extended_guard_time }, { .name = "us_line_rate", .descr = "US line rate", .offset = offsetof(bcmolt_xgpon_onu_cfg_data, us_line_rate), .type = &type_descr_bcmolt_upstream_line_rate_capabilities }, { .name = "calibration_record", .descr = "Calibration record", .offset = offsetof(bcmolt_xgpon_onu_cfg_data, calibration_record), .type = &type_descr_bcmolt_arr_calibration_record_8 }, { .name = "tuning_granularity", .descr = "The tuning granularity of the ONU transmitted expressed in units of 1GHz. Value of 0 indicates that the ONU does not support fine tuning/dithering", .offset = offsetof(bcmolt_xgpon_onu_cfg_data, tuning_granularity), .type = &type_descr_uint8_t }, { .name = "step_tuning_time", .descr = "The value of the tuning time for a single granularity step, expressed in units of PHY frames.", .offset = offsetof(bcmolt_xgpon_onu_cfg_data, step_tuning_time), .type = &type_descr_uint8_t }, { .name = "power_levelling_capabilities", .descr = "Power levelling capabilities", .offset = offsetof(bcmolt_xgpon_onu_cfg_data, power_levelling_capabilities), .type = &type_descr_uint8_t }, { .name = "request_registration_status", .descr = "This value indicate that the onu is in the middle of request registration process", .offset = offsetof(bcmolt_xgpon_onu_cfg_data, request_registration_status), .type = &type_descr_bcmolt_request_registration_status } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_cfg_data = { .name = "bcmolt_xgpon_onu_cfg_data", .descr = "cfg", .size = sizeof(bcmolt_xgpon_onu_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_onu_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_onu_cfg_data_fields } } };

/* Group: xgpon_onu - stat */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_stat_positive_drift = { .name = "positive_drift", .descr = "positive drift", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_STAT_ID_POSITIVE_DRIFT, .offset = offsetof(bcmolt_xgpon_onu_stat_data, positive_drift), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_stat_negative_drift = { .name = "negative_drift", .descr = "negative drift", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_STAT_ID_NEGATIVE_DRIFT, .offset = offsetof(bcmolt_xgpon_onu_stat_data, negative_drift), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_stat_delimiter_miss_detection = { .name = "delimiter_miss_detection", .descr = "delimiter miss detection", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_STAT_ID_DELIMITER_MISS_DETECTION, .offset = offsetof(bcmolt_xgpon_onu_stat_data, delimiter_miss_detection), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_stat_bip32_errors = { .name = "bip32_errors", .descr = "bip32 errors", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_STAT_ID_BIP32_ERRORS, .offset = offsetof(bcmolt_xgpon_onu_stat_data, bip32_errors), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_stat_rx_words = { .name = "rx_words", .descr = "Number of 4-byte words received (word size is 4 bytes regardless of upstream data rate).", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_STAT_ID_RX_WORDS, .offset = offsetof(bcmolt_xgpon_onu_stat_data, rx_words), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_stat_fec_corrected_symbols = { .name = "fec_corrected_symbols", .descr = "fec corrected symbols", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_STAT_ID_FEC_CORRECTED_SYMBOLS, .offset = offsetof(bcmolt_xgpon_onu_stat_data, fec_corrected_symbols), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_stat_fec_corrected_codewords = { .name = "fec_corrected_codewords", .descr = "fec corrected codewords", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_STAT_ID_FEC_CORRECTED_CODEWORDS, .offset = offsetof(bcmolt_xgpon_onu_stat_data, fec_corrected_codewords), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_stat_fec_uncorrectable_codewords = { .name = "fec_uncorrectable_codewords", .descr = "fec uncorrectable codewords", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_STAT_ID_FEC_UNCORRECTABLE_CODEWORDS, .offset = offsetof(bcmolt_xgpon_onu_stat_data, fec_uncorrectable_codewords), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_stat_fec_codewords = { .name = "fec_codewords", .descr = "fec total codewords", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_STAT_ID_FEC_CODEWORDS, .offset = offsetof(bcmolt_xgpon_onu_stat_data, fec_codewords), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_stat_fec_corrected_bits = { .name = "fec_corrected_bits", .descr = "fec corrected bits", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_STAT_ID_FEC_CORRECTED_BITS, .offset = offsetof(bcmolt_xgpon_onu_stat_data, fec_corrected_bits), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_stat_xgem_key_errors = { .name = "xgem_key_errors", .descr = "xgem key error", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_STAT_ID_XGEM_KEY_ERRORS, .offset = offsetof(bcmolt_xgpon_onu_stat_data, xgem_key_errors), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_stat_xgem_loss = { .name = "xgem_loss", .descr = "xgem loss ", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_STAT_ID_XGEM_LOSS, .offset = offsetof(bcmolt_xgpon_onu_stat_data, xgem_loss), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_stat_rx_ploams_mic_error = { .name = "rx_ploams_mic_error", .descr = "mic error ploam", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_STAT_ID_RX_PLOAMS_MIC_ERROR, .offset = offsetof(bcmolt_xgpon_onu_stat_data, rx_ploams_mic_error), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_stat_rx_ploams_non_idle = { .name = "rx_ploams_non_idle", .descr = "non idle ploam", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_STAT_ID_RX_PLOAMS_NON_IDLE, .offset = offsetof(bcmolt_xgpon_onu_stat_data, rx_ploams_non_idle), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_stat_rx_omci = { .name = "rx_omci", .descr = "Received OMCI packets", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_STAT_ID_RX_OMCI, .offset = offsetof(bcmolt_xgpon_onu_stat_data, rx_omci), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_stat_rx_omci_packets_crc_error = { .name = "rx_omci_packets_crc_error", .descr = "Received OMCI packets with CRC errors", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_STAT_ID_RX_OMCI_PACKETS_CRC_ERROR, .offset = offsetof(bcmolt_xgpon_onu_stat_data, rx_omci_packets_crc_error), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_stat_rx_bytes = { .name = "rx_bytes", .descr = "rx bytes", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_STAT_ID_RX_BYTES, .offset = offsetof(bcmolt_xgpon_onu_stat_data, rx_bytes), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_stat_rx_packets = { .name = "rx_packets", .descr = "rx packets", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_STAT_ID_RX_PACKETS, .offset = offsetof(bcmolt_xgpon_onu_stat_data, rx_packets), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_stat_tx_bytes = { .name = "tx_bytes", .descr = "tx bytes", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_STAT_ID_TX_BYTES, .offset = offsetof(bcmolt_xgpon_onu_stat_data, tx_bytes), .type = &type_descr_uint64_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_stat_tx_packets = { .name = "tx_packets", .descr = "tx packets", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_STAT_ID_TX_PACKETS, .offset = offsetof(bcmolt_xgpon_onu_stat_data, tx_packets), .type = &type_descr_uint64_t };
static bcmcli_prop_descr * BCM_DESCR xgpon_onu_stat_prop_array[] = { &prop_descr_xgpon_onu_stat_positive_drift, &prop_descr_xgpon_onu_stat_negative_drift, &prop_descr_xgpon_onu_stat_delimiter_miss_detection, &prop_descr_xgpon_onu_stat_bip32_errors, &prop_descr_xgpon_onu_stat_rx_words, &prop_descr_xgpon_onu_stat_fec_corrected_symbols, &prop_descr_xgpon_onu_stat_fec_corrected_codewords, &prop_descr_xgpon_onu_stat_fec_uncorrectable_codewords, &prop_descr_xgpon_onu_stat_fec_codewords, &prop_descr_xgpon_onu_stat_fec_corrected_bits, &prop_descr_xgpon_onu_stat_xgem_key_errors, &prop_descr_xgpon_onu_stat_xgem_loss, &prop_descr_xgpon_onu_stat_rx_ploams_mic_error, &prop_descr_xgpon_onu_stat_rx_ploams_non_idle, &prop_descr_xgpon_onu_stat_rx_omci, &prop_descr_xgpon_onu_stat_rx_omci_packets_crc_error, &prop_descr_xgpon_onu_stat_rx_bytes, &prop_descr_xgpon_onu_stat_rx_packets, &prop_descr_xgpon_onu_stat_tx_bytes, &prop_descr_xgpon_onu_stat_tx_packets };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_stat_data_fields[] = { { .name = "positive_drift", .descr = "positive drift", .offset = offsetof(bcmolt_xgpon_onu_stat_data, positive_drift), .type = &type_descr_uint64_t }, { .name = "negative_drift", .descr = "negative drift", .offset = offsetof(bcmolt_xgpon_onu_stat_data, negative_drift), .type = &type_descr_uint64_t }, { .name = "delimiter_miss_detection", .descr = "delimiter miss detection", .offset = offsetof(bcmolt_xgpon_onu_stat_data, delimiter_miss_detection), .type = &type_descr_uint64_t }, { .name = "bip32_errors", .descr = "bip32 errors", .offset = offsetof(bcmolt_xgpon_onu_stat_data, bip32_errors), .type = &type_descr_uint64_t }, { .name = "rx_words", .descr = "Number of 4-byte words received (word size is 4 bytes regardless of upstream data rate).", .offset = offsetof(bcmolt_xgpon_onu_stat_data, rx_words), .type = &type_descr_uint64_t }, { .name = "fec_corrected_symbols", .descr = "fec corrected symbols", .offset = offsetof(bcmolt_xgpon_onu_stat_data, fec_corrected_symbols), .type = &type_descr_uint64_t }, { .name = "fec_corrected_codewords", .descr = "fec corrected codewords", .offset = offsetof(bcmolt_xgpon_onu_stat_data, fec_corrected_codewords), .type = &type_descr_uint64_t }, { .name = "fec_uncorrectable_codewords", .descr = "fec uncorrectable codewords", .offset = offsetof(bcmolt_xgpon_onu_stat_data, fec_uncorrectable_codewords), .type = &type_descr_uint64_t }, { .name = "fec_codewords", .descr = "fec total codewords", .offset = offsetof(bcmolt_xgpon_onu_stat_data, fec_codewords), .type = &type_descr_uint64_t }, { .name = "fec_corrected_bits", .descr = "fec corrected bits", .offset = offsetof(bcmolt_xgpon_onu_stat_data, fec_corrected_bits), .type = &type_descr_uint64_t }, { .name = "xgem_key_errors", .descr = "xgem key error", .offset = offsetof(bcmolt_xgpon_onu_stat_data, xgem_key_errors), .type = &type_descr_uint64_t }, { .name = "xgem_loss", .descr = "xgem loss ", .offset = offsetof(bcmolt_xgpon_onu_stat_data, xgem_loss), .type = &type_descr_uint64_t }, { .name = "rx_ploams_mic_error", .descr = "mic error ploam", .offset = offsetof(bcmolt_xgpon_onu_stat_data, rx_ploams_mic_error), .type = &type_descr_uint64_t }, { .name = "rx_ploams_non_idle", .descr = "non idle ploam", .offset = offsetof(bcmolt_xgpon_onu_stat_data, rx_ploams_non_idle), .type = &type_descr_uint64_t }, { .name = "rx_omci", .descr = "Received OMCI packets", .offset = offsetof(bcmolt_xgpon_onu_stat_data, rx_omci), .type = &type_descr_uint64_t }, { .name = "rx_omci_packets_crc_error", .descr = "Received OMCI packets with CRC errors", .offset = offsetof(bcmolt_xgpon_onu_stat_data, rx_omci_packets_crc_error), .type = &type_descr_uint64_t }, { .name = "rx_bytes", .descr = "rx bytes", .offset = offsetof(bcmolt_xgpon_onu_stat_data, rx_bytes), .type = &type_descr_uint64_t }, { .name = "rx_packets", .descr = "rx packets", .offset = offsetof(bcmolt_xgpon_onu_stat_data, rx_packets), .type = &type_descr_uint64_t }, { .name = "tx_bytes", .descr = "tx bytes", .offset = offsetof(bcmolt_xgpon_onu_stat_data, tx_bytes), .type = &type_descr_uint64_t }, { .name = "tx_packets", .descr = "tx packets", .offset = offsetof(bcmolt_xgpon_onu_stat_data, tx_packets), .type = &type_descr_uint64_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_stat_data = { .name = "bcmolt_xgpon_onu_stat_data", .descr = "stat", .size = sizeof(bcmolt_xgpon_onu_stat_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_onu_stat_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_onu_stat_data_fields } } };

/* Group: xgpon_onu - set_onu_state */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_set_onu_state_onu_state = { .name = "onu_state", .descr = "ONU state", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_SET_ONU_STATE_ID_ONU_STATE, .offset = offsetof(bcmolt_xgpon_onu_set_onu_state_data, onu_state), .type = &type_descr_bcmolt_onu_operation };
static bcmcli_prop_descr * BCM_DESCR xgpon_onu_set_onu_state_prop_array[] = { &prop_descr_xgpon_onu_set_onu_state_onu_state };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_set_onu_state_data_fields[] = { { .name = "onu_state", .descr = "ONU state", .offset = offsetof(bcmolt_xgpon_onu_set_onu_state_data, onu_state), .type = &type_descr_bcmolt_onu_operation } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_set_onu_state_data = { .name = "bcmolt_xgpon_onu_set_onu_state_data", .descr = "Set ONU State", .size = sizeof(bcmolt_xgpon_onu_set_onu_state_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_onu_set_onu_state_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_onu_set_onu_state_data_fields } } };

/* Group: xgpon_onu - rssi_measurement */
static bcmcli_prop_descr * BCM_DESCR xgpon_onu_rssi_measurement_prop_array[] = { };

/* Group: xgpon_onu - onu_alarm */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_onu_alarm_onu_alarm = { .name = "onu_alarm", .descr = "onu alarm", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_ONU_ALARM_ID_ONU_ALARM, .offset = offsetof(bcmolt_xgpon_onu_onu_alarm_data, onu_alarm), .type = &type_descr_bcmolt_xgpon_onu_alarms };
static bcmcli_prop_descr * BCM_DESCR xgpon_onu_onu_alarm_prop_array[] = { &prop_descr_xgpon_onu_onu_alarm_onu_alarm };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_onu_alarm_data_fields[] = { { .name = "onu_alarm", .descr = "onu alarm", .offset = offsetof(bcmolt_xgpon_onu_onu_alarm_data, onu_alarm), .type = &type_descr_bcmolt_xgpon_onu_alarms } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_onu_alarm_data = { .name = "bcmolt_xgpon_onu_onu_alarm_data", .descr = "ONU Alarm", .size = sizeof(bcmolt_xgpon_onu_onu_alarm_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_onu_onu_alarm_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_onu_onu_alarm_data_fields } } };

/* Group: xgpon_onu - dowi */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_dowi_alarm_status = { .name = "alarm_status", .descr = "Alarm status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_DOWI_ID_ALARM_STATUS, .offset = offsetof(bcmolt_xgpon_onu_dowi_data, alarm_status), .type = &type_descr_bcmolt_status };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_dowi_drift_value = { .name = "drift_value", .descr = "Calculated amount of drift (positive + negative as a signed value).", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_DOWI_ID_DRIFT_VALUE, .offset = offsetof(bcmolt_xgpon_onu_dowi_data, drift_value), .type = &type_descr_int32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_dowi_new_eqd = { .name = "new_eqd", .descr = "New EQD after drift is corrected (only valid if status is 'on').", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_DOWI_ID_NEW_EQD, .offset = offsetof(bcmolt_xgpon_onu_dowi_data, new_eqd), .type = &type_descr_uint32_t };
static bcmcli_prop_descr * BCM_DESCR xgpon_onu_dowi_prop_array[] = { &prop_descr_xgpon_onu_dowi_alarm_status, &prop_descr_xgpon_onu_dowi_drift_value, &prop_descr_xgpon_onu_dowi_new_eqd };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_dowi_data_fields[] = { { .name = "alarm_status", .descr = "Alarm status", .offset = offsetof(bcmolt_xgpon_onu_dowi_data, alarm_status), .type = &type_descr_bcmolt_status }, { .name = "drift_value", .descr = "Calculated amount of drift (positive + negative as a signed value).", .offset = offsetof(bcmolt_xgpon_onu_dowi_data, drift_value), .type = &type_descr_int32_t }, { .name = "new_eqd", .descr = "New EQD after drift is corrected (only valid if status is 'on').", .offset = offsetof(bcmolt_xgpon_onu_dowi_data, new_eqd), .type = &type_descr_uint32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_dowi_data = { .name = "bcmolt_xgpon_onu_dowi_data", .descr = "Drift of Window of ONUi", .size = sizeof(bcmolt_xgpon_onu_dowi_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_onu_dowi_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_onu_dowi_data_fields } } };

/* Group: xgpon_onu - sfi */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_sfi_alarm_status = { .name = "alarm_status", .descr = "alarm status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_SFI_ID_ALARM_STATUS, .offset = offsetof(bcmolt_xgpon_onu_sfi_data, alarm_status), .type = &type_descr_bcmolt_status };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_sfi_ber = { .name = "ber", .descr = "Inverse bit error rate (e.g. if this number is 1000, the BER is 1/1000).", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_SFI_ID_BER, .offset = offsetof(bcmolt_xgpon_onu_sfi_data, ber), .type = &type_descr_uint32_t };
static bcmcli_prop_descr * BCM_DESCR xgpon_onu_sfi_prop_array[] = { &prop_descr_xgpon_onu_sfi_alarm_status, &prop_descr_xgpon_onu_sfi_ber };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_sfi_data_fields[] = { { .name = "alarm_status", .descr = "alarm status", .offset = offsetof(bcmolt_xgpon_onu_sfi_data, alarm_status), .type = &type_descr_bcmolt_status }, { .name = "ber", .descr = "Inverse bit error rate (e.g. if this number is 1000, the BER is 1/1000).", .offset = offsetof(bcmolt_xgpon_onu_sfi_data, ber), .type = &type_descr_uint32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_sfi_data = { .name = "bcmolt_xgpon_onu_sfi_data", .descr = "Signal Fail of ONUi", .size = sizeof(bcmolt_xgpon_onu_sfi_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_onu_sfi_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_onu_sfi_data_fields } } };

/* Group: xgpon_onu - sdi */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_sdi_alarm_status = { .name = "alarm_status", .descr = "alarm status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_SDI_ID_ALARM_STATUS, .offset = offsetof(bcmolt_xgpon_onu_sdi_data, alarm_status), .type = &type_descr_bcmolt_status };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_sdi_ber = { .name = "ber", .descr = "Inverse bit error rate (e.g. if this number is 1000, the BER is 1/1000).", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_SDI_ID_BER, .offset = offsetof(bcmolt_xgpon_onu_sdi_data, ber), .type = &type_descr_uint32_t };
static bcmcli_prop_descr * BCM_DESCR xgpon_onu_sdi_prop_array[] = { &prop_descr_xgpon_onu_sdi_alarm_status, &prop_descr_xgpon_onu_sdi_ber };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_sdi_data_fields[] = { { .name = "alarm_status", .descr = "alarm status", .offset = offsetof(bcmolt_xgpon_onu_sdi_data, alarm_status), .type = &type_descr_bcmolt_status }, { .name = "ber", .descr = "Inverse bit error rate (e.g. if this number is 1000, the BER is 1/1000).", .offset = offsetof(bcmolt_xgpon_onu_sdi_data, ber), .type = &type_descr_uint32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_sdi_data = { .name = "bcmolt_xgpon_onu_sdi_data", .descr = "Signal Degraded of ONUi", .size = sizeof(bcmolt_xgpon_onu_sdi_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_onu_sdi_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_onu_sdi_data_fields } } };

/* Group: xgpon_onu - dfi */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_dfi_alarm_status = { .name = "alarm_status", .descr = "alarm status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_DFI_ID_ALARM_STATUS, .offset = offsetof(bcmolt_xgpon_onu_dfi_data, alarm_status), .type = &type_descr_bcmolt_status };
static bcmcli_prop_descr * BCM_DESCR xgpon_onu_dfi_prop_array[] = { &prop_descr_xgpon_onu_dfi_alarm_status };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_dfi_data_fields[] = { { .name = "alarm_status", .descr = "alarm status", .offset = offsetof(bcmolt_xgpon_onu_dfi_data, alarm_status), .type = &type_descr_bcmolt_status } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_dfi_data = { .name = "bcmolt_xgpon_onu_dfi_data", .descr = "Receive Dying-Gasp of ONUi", .size = sizeof(bcmolt_xgpon_onu_dfi_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_onu_dfi_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_onu_dfi_data_fields } } };

/* Group: xgpon_onu - pqsi */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_pqsi_alarm_status = { .name = "alarm_status", .descr = "alarm status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_PQSI_ID_ALARM_STATUS, .offset = offsetof(bcmolt_xgpon_onu_pqsi_data, alarm_status), .type = &type_descr_bcmolt_status };
static bcmcli_prop_descr * BCM_DESCR xgpon_onu_pqsi_prop_array[] = { &prop_descr_xgpon_onu_pqsi_alarm_status };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_pqsi_data_fields[] = { { .name = "alarm_status", .descr = "alarm status", .offset = offsetof(bcmolt_xgpon_onu_pqsi_data, alarm_status), .type = &type_descr_bcmolt_status } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_pqsi_data = { .name = "bcmolt_xgpon_onu_pqsi_data", .descr = "ploam queue status", .size = sizeof(bcmolt_xgpon_onu_pqsi_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_onu_pqsi_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_onu_pqsi_data_fields } } };

/* Group: xgpon_onu - sufi */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_sufi_alarm_status = { .name = "alarm_status", .descr = "alarm status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_SUFI_ID_ALARM_STATUS, .offset = offsetof(bcmolt_xgpon_onu_sufi_data, alarm_status), .type = &type_descr_bcmolt_status };
static bcmcli_prop_descr * BCM_DESCR xgpon_onu_sufi_prop_array[] = { &prop_descr_xgpon_onu_sufi_alarm_status };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_sufi_data_fields[] = { { .name = "alarm_status", .descr = "alarm status", .offset = offsetof(bcmolt_xgpon_onu_sufi_data, alarm_status), .type = &type_descr_bcmolt_status } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_sufi_data = { .name = "bcmolt_xgpon_onu_sufi_data", .descr = "SUFi", .size = sizeof(bcmolt_xgpon_onu_sufi_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_onu_sufi_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_onu_sufi_data_fields } } };

/* Group: xgpon_onu - tiwi */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_tiwi_alarm_status = { .name = "alarm_status", .descr = "Alarm status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_TIWI_ID_ALARM_STATUS, .offset = offsetof(bcmolt_xgpon_onu_tiwi_data, alarm_status), .type = &type_descr_bcmolt_status };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_tiwi_drift_value = { .name = "drift_value", .descr = "Calculated amount of drift (positive + negative as a signed value).", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_TIWI_ID_DRIFT_VALUE, .offset = offsetof(bcmolt_xgpon_onu_tiwi_data, drift_value), .type = &type_descr_int32_t };
static bcmcli_prop_descr * BCM_DESCR xgpon_onu_tiwi_prop_array[] = { &prop_descr_xgpon_onu_tiwi_alarm_status, &prop_descr_xgpon_onu_tiwi_drift_value };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_tiwi_data_fields[] = { { .name = "alarm_status", .descr = "Alarm status", .offset = offsetof(bcmolt_xgpon_onu_tiwi_data, alarm_status), .type = &type_descr_bcmolt_status }, { .name = "drift_value", .descr = "Calculated amount of drift (positive + negative as a signed value).", .offset = offsetof(bcmolt_xgpon_onu_tiwi_data, drift_value), .type = &type_descr_int32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_tiwi_data = { .name = "bcmolt_xgpon_onu_tiwi_data", .descr = "Transmission Interference Warning", .size = sizeof(bcmolt_xgpon_onu_tiwi_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_onu_tiwi_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_onu_tiwi_data_fields } } };

/* Group: xgpon_onu - looci */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_looci_alarm_status = { .name = "alarm_status", .descr = "alarm status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_LOOCI_ID_ALARM_STATUS, .offset = offsetof(bcmolt_xgpon_onu_looci_data, alarm_status), .type = &type_descr_bcmolt_status };
static bcmcli_prop_descr * BCM_DESCR xgpon_onu_looci_prop_array[] = { &prop_descr_xgpon_onu_looci_alarm_status };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_looci_data_fields[] = { { .name = "alarm_status", .descr = "alarm status", .offset = offsetof(bcmolt_xgpon_onu_looci_data, alarm_status), .type = &type_descr_bcmolt_status } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_looci_data = { .name = "bcmolt_xgpon_onu_looci_data", .descr = "LOOCi", .size = sizeof(bcmolt_xgpon_onu_looci_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_onu_looci_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_onu_looci_data_fields } } };

/* Group: xgpon_onu - ranging_completed */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_ranging_completed_status = { .name = "status", .descr = "status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_RANGING_COMPLETED_ID_STATUS, .offset = offsetof(bcmolt_xgpon_onu_ranging_completed_data, status), .type = &type_descr_bcmolt_result };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_ranging_completed_fail_reason = { .name = "fail_reason", .descr = "fail reason", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_RANGING_COMPLETED_ID_FAIL_REASON, .offset = offsetof(bcmolt_xgpon_onu_ranging_completed_data, fail_reason), .type = &type_descr_bcmolt_ranging_fail_reason };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_ranging_completed_eqd = { .name = "eqd", .descr = "EQD", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_RANGING_COMPLETED_ID_EQD, .offset = offsetof(bcmolt_xgpon_onu_ranging_completed_data, eqd), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_ranging_completed_number_of_ploams = { .name = "number_of_ploams", .descr = "number of ploams", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_RANGING_COMPLETED_ID_NUMBER_OF_PLOAMS, .offset = offsetof(bcmolt_xgpon_onu_ranging_completed_data, number_of_ploams), .type = &type_descr_uint8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_ranging_completed_power_level = { .name = "power_level", .descr = "power level", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_RANGING_COMPLETED_ID_POWER_LEVEL, .offset = offsetof(bcmolt_xgpon_onu_ranging_completed_data, power_level), .type = &type_descr_uint8_t };
static bcmcli_prop_descr * BCM_DESCR xgpon_onu_ranging_completed_prop_array[] = { &prop_descr_xgpon_onu_ranging_completed_status, &prop_descr_xgpon_onu_ranging_completed_fail_reason, &prop_descr_xgpon_onu_ranging_completed_eqd, &prop_descr_xgpon_onu_ranging_completed_number_of_ploams, &prop_descr_xgpon_onu_ranging_completed_power_level };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_ranging_completed_data_fields[] = { { .name = "status", .descr = "status", .offset = offsetof(bcmolt_xgpon_onu_ranging_completed_data, status), .type = &type_descr_bcmolt_result }, { .name = "fail_reason", .descr = "fail reason", .offset = offsetof(bcmolt_xgpon_onu_ranging_completed_data, fail_reason), .type = &type_descr_bcmolt_ranging_fail_reason }, { .name = "eqd", .descr = "EQD", .offset = offsetof(bcmolt_xgpon_onu_ranging_completed_data, eqd), .type = &type_descr_uint32_t }, { .name = "number_of_ploams", .descr = "number of ploams", .offset = offsetof(bcmolt_xgpon_onu_ranging_completed_data, number_of_ploams), .type = &type_descr_uint8_t }, { .name = "power_level", .descr = "power level", .offset = offsetof(bcmolt_xgpon_onu_ranging_completed_data, power_level), .type = &type_descr_uint8_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_ranging_completed_data = { .name = "bcmolt_xgpon_onu_ranging_completed_data", .descr = "Ranging Completed", .size = sizeof(bcmolt_xgpon_onu_ranging_completed_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_onu_ranging_completed_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_onu_ranging_completed_data_fields } } };

/* Group: xgpon_onu - onu_activation_completed */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_onu_activation_completed_status = { .name = "status", .descr = "status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_ONU_ACTIVATION_COMPLETED_ID_STATUS, .offset = offsetof(bcmolt_xgpon_onu_onu_activation_completed_data, status), .type = &type_descr_bcmolt_result };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_onu_activation_completed_fail_reason = { .name = "fail_reason", .descr = "fail reason", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_ONU_ACTIVATION_COMPLETED_ID_FAIL_REASON, .offset = offsetof(bcmolt_xgpon_onu_onu_activation_completed_data, fail_reason), .type = &type_descr_bcmolt_activation_fail_reason };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_onu_activation_completed_registration_id = { .name = "registration_id", .descr = "registration id", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_ONU_ACTIVATION_COMPLETED_ID_REGISTRATION_ID, .offset = offsetof(bcmolt_xgpon_onu_onu_activation_completed_data, registration_id), .type = &type_descr_bcmolt_arr_u8_36 };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_onu_activation_completed_registration_encryption_keys = { .name = "registration_encryption_keys", .descr = "registration encryption keys", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_ONU_ACTIVATION_COMPLETED_ID_REGISTRATION_ENCRYPTION_KEYS, .offset = offsetof(bcmolt_xgpon_onu_onu_activation_completed_data, registration_encryption_keys), .type = &type_descr_bcmolt_xgpon_onu_registration_keys };
static bcmcli_prop_descr * BCM_DESCR xgpon_onu_onu_activation_completed_prop_array[] = { &prop_descr_xgpon_onu_onu_activation_completed_status, &prop_descr_xgpon_onu_onu_activation_completed_fail_reason, &prop_descr_xgpon_onu_onu_activation_completed_registration_id, &prop_descr_xgpon_onu_onu_activation_completed_registration_encryption_keys };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_onu_activation_completed_data_fields[] = { { .name = "status", .descr = "status", .offset = offsetof(bcmolt_xgpon_onu_onu_activation_completed_data, status), .type = &type_descr_bcmolt_result }, { .name = "fail_reason", .descr = "fail reason", .offset = offsetof(bcmolt_xgpon_onu_onu_activation_completed_data, fail_reason), .type = &type_descr_bcmolt_activation_fail_reason }, { .name = "registration_id", .descr = "registration id", .offset = offsetof(bcmolt_xgpon_onu_onu_activation_completed_data, registration_id), .type = &type_descr_bcmolt_arr_u8_36 }, { .name = "registration_encryption_keys", .descr = "registration encryption keys", .offset = offsetof(bcmolt_xgpon_onu_onu_activation_completed_data, registration_encryption_keys), .type = &type_descr_bcmolt_xgpon_onu_registration_keys } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_onu_activation_completed_data = { .name = "bcmolt_xgpon_onu_onu_activation_completed_data", .descr = "ONU Activation Completed", .size = sizeof(bcmolt_xgpon_onu_onu_activation_completed_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_onu_onu_activation_completed_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_onu_onu_activation_completed_data_fields } } };

/* Group: xgpon_onu - onu_deactivation_completed */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_onu_deactivation_completed_status = { .name = "status", .descr = "Status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_ONU_DEACTIVATION_COMPLETED_ID_STATUS, .offset = offsetof(bcmolt_xgpon_onu_onu_deactivation_completed_data, status), .type = &type_descr_bcmolt_result };
static bcmcli_prop_descr * BCM_DESCR xgpon_onu_onu_deactivation_completed_prop_array[] = { &prop_descr_xgpon_onu_onu_deactivation_completed_status };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_onu_deactivation_completed_data_fields[] = { { .name = "status", .descr = "Status", .offset = offsetof(bcmolt_xgpon_onu_onu_deactivation_completed_data, status), .type = &type_descr_bcmolt_result } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_onu_deactivation_completed_data = { .name = "bcmolt_xgpon_onu_onu_deactivation_completed_data", .descr = "ONU Deactivation Completed", .size = sizeof(bcmolt_xgpon_onu_onu_deactivation_completed_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_onu_onu_deactivation_completed_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_onu_onu_deactivation_completed_data_fields } } };

/* Group: xgpon_onu - onu_enable_completed */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_onu_enable_completed_serial_number = { .name = "serial_number", .descr = "serial number", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_ONU_ENABLE_COMPLETED_ID_SERIAL_NUMBER, .offset = offsetof(bcmolt_xgpon_onu_onu_enable_completed_data, serial_number), .type = &type_descr_bcmolt_serial_number };
static bcmcli_prop_descr * BCM_DESCR xgpon_onu_onu_enable_completed_prop_array[] = { &prop_descr_xgpon_onu_onu_enable_completed_serial_number };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_onu_enable_completed_data_fields[] = { { .name = "serial_number", .descr = "serial number", .offset = offsetof(bcmolt_xgpon_onu_onu_enable_completed_data, serial_number), .type = &type_descr_bcmolt_serial_number } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_onu_enable_completed_data = { .name = "bcmolt_xgpon_onu_onu_enable_completed_data", .descr = "ONU Enable Completed", .size = sizeof(bcmolt_xgpon_onu_onu_enable_completed_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_onu_onu_enable_completed_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_onu_onu_enable_completed_data_fields } } };

/* Group: xgpon_onu - onu_disable_completed */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_onu_disable_completed_serial_number = { .name = "serial_number", .descr = "serial number", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_ONU_DISABLE_COMPLETED_ID_SERIAL_NUMBER, .offset = offsetof(bcmolt_xgpon_onu_onu_disable_completed_data, serial_number), .type = &type_descr_bcmolt_serial_number };
static bcmcli_prop_descr * BCM_DESCR xgpon_onu_onu_disable_completed_prop_array[] = { &prop_descr_xgpon_onu_onu_disable_completed_serial_number };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_onu_disable_completed_data_fields[] = { { .name = "serial_number", .descr = "serial number", .offset = offsetof(bcmolt_xgpon_onu_onu_disable_completed_data, serial_number), .type = &type_descr_bcmolt_serial_number } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_onu_disable_completed_data = { .name = "bcmolt_xgpon_onu_onu_disable_completed_data", .descr = "ONU Disable Completed", .size = sizeof(bcmolt_xgpon_onu_onu_disable_completed_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_onu_onu_disable_completed_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_onu_onu_disable_completed_data_fields } } };

/* Group: xgpon_onu - rssi_measurement_completed */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_rssi_measurement_completed_status = { .name = "status", .descr = "status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_RSSI_MEASUREMENT_COMPLETED_ID_STATUS, .offset = offsetof(bcmolt_xgpon_onu_rssi_measurement_completed_data, status), .type = &type_descr_bcmolt_result };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_rssi_measurement_completed_fail_reason = { .name = "fail_reason", .descr = "fail reason", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_RSSI_MEASUREMENT_COMPLETED_ID_FAIL_REASON, .offset = offsetof(bcmolt_xgpon_onu_rssi_measurement_completed_data, fail_reason), .type = &type_descr_bcmolt_rssi_measurement_fail_reason };
static bcmcli_prop_descr * BCM_DESCR xgpon_onu_rssi_measurement_completed_prop_array[] = { &prop_descr_xgpon_onu_rssi_measurement_completed_status, &prop_descr_xgpon_onu_rssi_measurement_completed_fail_reason };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_rssi_measurement_completed_data_fields[] = { { .name = "status", .descr = "status", .offset = offsetof(bcmolt_xgpon_onu_rssi_measurement_completed_data, status), .type = &type_descr_bcmolt_result }, { .name = "fail_reason", .descr = "fail reason", .offset = offsetof(bcmolt_xgpon_onu_rssi_measurement_completed_data, fail_reason), .type = &type_descr_bcmolt_rssi_measurement_fail_reason } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_rssi_measurement_completed_data = { .name = "bcmolt_xgpon_onu_rssi_measurement_completed_data", .descr = "RSSI Measurement Completed", .size = sizeof(bcmolt_xgpon_onu_rssi_measurement_completed_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_onu_rssi_measurement_completed_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_onu_rssi_measurement_completed_data_fields } } };

/* Group: xgpon_onu - invalid_dbru_report */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_invalid_dbru_report_alloc_id = { .name = "alloc_id", .descr = "Alloc-ID", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_INVALID_DBRU_REPORT_ID_ALLOC_ID, .offset = offsetof(bcmolt_xgpon_onu_invalid_dbru_report_data, alloc_id), .type = &type_descr_uint16_t };
static bcmcli_prop_descr * BCM_DESCR xgpon_onu_invalid_dbru_report_prop_array[] = { &prop_descr_xgpon_onu_invalid_dbru_report_alloc_id };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_invalid_dbru_report_data_fields[] = { { .name = "alloc_id", .descr = "Alloc-ID", .offset = offsetof(bcmolt_xgpon_onu_invalid_dbru_report_data, alloc_id), .type = &type_descr_uint16_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_invalid_dbru_report_data = { .name = "bcmolt_xgpon_onu_invalid_dbru_report_data", .descr = "Invalid DBRu Report", .size = sizeof(bcmolt_xgpon_onu_invalid_dbru_report_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_onu_invalid_dbru_report_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_onu_invalid_dbru_report_data_fields } } };

/* Group: xgpon_onu - key_exchange_completed */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_key_exchange_completed_new_key = { .name = "new_key", .descr = "new key", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_KEY_EXCHANGE_COMPLETED_ID_NEW_KEY, .offset = offsetof(bcmolt_xgpon_onu_key_exchange_completed_data, new_key), .type = &type_descr_bcmolt_xgpon_onu_aes_key };
static bcmcli_prop_descr * BCM_DESCR xgpon_onu_key_exchange_completed_prop_array[] = { &prop_descr_xgpon_onu_key_exchange_completed_new_key };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_key_exchange_completed_data_fields[] = { { .name = "new_key", .descr = "new key", .offset = offsetof(bcmolt_xgpon_onu_key_exchange_completed_data, new_key), .type = &type_descr_bcmolt_xgpon_onu_aes_key } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_key_exchange_completed_data = { .name = "bcmolt_xgpon_onu_key_exchange_completed_data", .descr = "Key Exchange Completed", .size = sizeof(bcmolt_xgpon_onu_key_exchange_completed_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_onu_key_exchange_completed_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_onu_key_exchange_completed_data_fields } } };

/* Group: xgpon_onu - key_exchange_key_request_timeout */
static bcmcli_prop_descr * BCM_DESCR xgpon_onu_key_exchange_key_request_timeout_prop_array[] = { };

/* Group: xgpon_onu - key_exchange_cycle_skipped */
static bcmcli_prop_descr * BCM_DESCR xgpon_onu_key_exchange_cycle_skipped_prop_array[] = { };

/* Group: xgpon_onu - key_exchange_key_mismatch */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_key_exchange_key_mismatch_expected_key = { .name = "expected_key", .descr = "expected key", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_KEY_EXCHANGE_KEY_MISMATCH_ID_EXPECTED_KEY, .offset = offsetof(bcmolt_xgpon_onu_key_exchange_key_mismatch_data, expected_key), .type = &type_descr_bcmolt_aes_key };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_key_exchange_key_mismatch_received_key = { .name = "received_key", .descr = "received key", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_KEY_EXCHANGE_KEY_MISMATCH_ID_RECEIVED_KEY, .offset = offsetof(bcmolt_xgpon_onu_key_exchange_key_mismatch_data, received_key), .type = &type_descr_bcmolt_aes_key };
static bcmcli_prop_descr * BCM_DESCR xgpon_onu_key_exchange_key_mismatch_prop_array[] = { &prop_descr_xgpon_onu_key_exchange_key_mismatch_expected_key, &prop_descr_xgpon_onu_key_exchange_key_mismatch_received_key };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_key_exchange_key_mismatch_data_fields[] = { { .name = "expected_key", .descr = "expected key", .offset = offsetof(bcmolt_xgpon_onu_key_exchange_key_mismatch_data, expected_key), .type = &type_descr_bcmolt_aes_key }, { .name = "received_key", .descr = "received key", .offset = offsetof(bcmolt_xgpon_onu_key_exchange_key_mismatch_data, received_key), .type = &type_descr_bcmolt_aes_key } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_key_exchange_key_mismatch_data = { .name = "bcmolt_xgpon_onu_key_exchange_key_mismatch_data", .descr = "Key Exchange Key Mismatch", .size = sizeof(bcmolt_xgpon_onu_key_exchange_key_mismatch_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_onu_key_exchange_key_mismatch_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_onu_key_exchange_key_mismatch_data_fields } } };

/* Group: xgpon_onu - optical_reflection */
static bcmcli_prop_descr * BCM_DESCR xgpon_onu_optical_reflection_prop_array[] = { };

/* Group: xgpon_onu - ploam_packet */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_ploam_packet_default_key = { .name = "default_key", .descr = "default key", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_PLOAM_PACKET_ID_DEFAULT_KEY, .offset = offsetof(bcmolt_xgpon_onu_ploam_packet_data, default_key), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_ploam_packet_ploam = { .name = "ploam", .descr = "ploam", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_PLOAM_PACKET_ID_PLOAM, .offset = offsetof(bcmolt_xgpon_onu_ploam_packet_data, ploam), .type = &type_descr_bcmolt_arr_u8_40 };
static bcmcli_prop_descr * BCM_DESCR xgpon_onu_ploam_packet_prop_array[] = { &prop_descr_xgpon_onu_ploam_packet_default_key, &prop_descr_xgpon_onu_ploam_packet_ploam };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_ploam_packet_data_fields[] = { { .name = "default_key", .descr = "default key", .offset = offsetof(bcmolt_xgpon_onu_ploam_packet_data, default_key), .type = &type_descr_bcmos_bool }, { .name = "ploam", .descr = "ploam", .offset = offsetof(bcmolt_xgpon_onu_ploam_packet_data, ploam), .type = &type_descr_bcmolt_arr_u8_40 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_ploam_packet_data = { .name = "bcmolt_xgpon_onu_ploam_packet_data", .descr = "PLOAM Packet", .size = sizeof(bcmolt_xgpon_onu_ploam_packet_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_onu_ploam_packet_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_onu_ploam_packet_data_fields } } };

/* Group: xgpon_onu - cpu_packets */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_cpu_packets_packet_type = { .name = "packet_type", .descr = "packet type", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_CPU_PACKETS_ID_PACKET_TYPE, .offset = offsetof(bcmolt_xgpon_onu_cpu_packets_data, packet_type), .type = &type_descr_bcmolt_packet_type };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_cpu_packets_calc_crc = { .name = "calc_crc", .descr = "calc crc", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_CPU_PACKETS_ID_CALC_CRC, .offset = offsetof(bcmolt_xgpon_onu_cpu_packets_data, calc_crc), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_cpu_packets_number_of_packets = { .name = "number_of_packets", .descr = "number of packets", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_CPU_PACKETS_ID_NUMBER_OF_PACKETS, .offset = offsetof(bcmolt_xgpon_onu_cpu_packets_data, number_of_packets), .type = &type_descr_uint8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_cpu_packets_packet_size = { .name = "packet_size", .descr = "Single packet size", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_CPU_PACKETS_ID_PACKET_SIZE, .offset = offsetof(bcmolt_xgpon_onu_cpu_packets_data, packet_size), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_cpu_packets_buffer = { .name = "buffer", .descr = "buffer", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_CPU_PACKETS_ID_BUFFER, .offset = offsetof(bcmolt_xgpon_onu_cpu_packets_data, buffer), .type = &type_descr_bcmolt_u8_list_u32_max_2048 };
static bcmcli_prop_descr * BCM_DESCR xgpon_onu_cpu_packets_prop_array[] = { &prop_descr_xgpon_onu_cpu_packets_packet_type, &prop_descr_xgpon_onu_cpu_packets_calc_crc, &prop_descr_xgpon_onu_cpu_packets_number_of_packets, &prop_descr_xgpon_onu_cpu_packets_packet_size, &prop_descr_xgpon_onu_cpu_packets_buffer };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_cpu_packets_data_fields[] = { { .name = "packet_type", .descr = "packet type", .offset = offsetof(bcmolt_xgpon_onu_cpu_packets_data, packet_type), .type = &type_descr_bcmolt_packet_type }, { .name = "calc_crc", .descr = "calc crc", .offset = offsetof(bcmolt_xgpon_onu_cpu_packets_data, calc_crc), .type = &type_descr_bcmos_bool }, { .name = "number_of_packets", .descr = "number of packets", .offset = offsetof(bcmolt_xgpon_onu_cpu_packets_data, number_of_packets), .type = &type_descr_uint8_t }, { .name = "packet_size", .descr = "Single packet size", .offset = offsetof(bcmolt_xgpon_onu_cpu_packets_data, packet_size), .type = &type_descr_uint16_t }, { .name = "buffer", .descr = "buffer", .offset = offsetof(bcmolt_xgpon_onu_cpu_packets_data, buffer), .type = &type_descr_bcmolt_u8_list_u32_max_2048 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_cpu_packets_data = { .name = "bcmolt_xgpon_onu_cpu_packets_data", .descr = "XGPON CPU packets", .size = sizeof(bcmolt_xgpon_onu_cpu_packets_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_onu_cpu_packets_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_onu_cpu_packets_data_fields } } };

/* Group: xgpon_onu - cpu_packet */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_cpu_packet_port_id = { .name = "port_id", .descr = "port id", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_CPU_PACKET_ID_PORT_ID, .offset = offsetof(bcmolt_xgpon_onu_cpu_packet_data, port_id), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_cpu_packet_crc_ok = { .name = "crc_ok", .descr = "crc ok", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_CPU_PACKET_ID_CRC_OK, .offset = offsetof(bcmolt_xgpon_onu_cpu_packet_data, crc_ok), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_cpu_packet_packet_size = { .name = "packet_size", .descr = "packet size", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_CPU_PACKET_ID_PACKET_SIZE, .offset = offsetof(bcmolt_xgpon_onu_cpu_packet_data, packet_size), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_cpu_packet_buffer = { .name = "buffer", .descr = "buffer", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_CPU_PACKET_ID_BUFFER, .offset = offsetof(bcmolt_xgpon_onu_cpu_packet_data, buffer), .type = &type_descr_bcmolt_u8_list_u32 };
static bcmcli_prop_descr * BCM_DESCR xgpon_onu_cpu_packet_prop_array[] = { &prop_descr_xgpon_onu_cpu_packet_port_id, &prop_descr_xgpon_onu_cpu_packet_crc_ok, &prop_descr_xgpon_onu_cpu_packet_packet_size, &prop_descr_xgpon_onu_cpu_packet_buffer };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_cpu_packet_data_fields[] = { { .name = "port_id", .descr = "port id", .offset = offsetof(bcmolt_xgpon_onu_cpu_packet_data, port_id), .type = &type_descr_uint16_t }, { .name = "crc_ok", .descr = "crc ok", .offset = offsetof(bcmolt_xgpon_onu_cpu_packet_data, crc_ok), .type = &type_descr_bcmos_bool }, { .name = "packet_size", .descr = "packet size", .offset = offsetof(bcmolt_xgpon_onu_cpu_packet_data, packet_size), .type = &type_descr_uint32_t }, { .name = "buffer", .descr = "buffer", .offset = offsetof(bcmolt_xgpon_onu_cpu_packet_data, buffer), .type = &type_descr_bcmolt_u8_list_u32 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_cpu_packet_data = { .name = "bcmolt_xgpon_onu_cpu_packet_data", .descr = "Indicates CPU packet was received on the US from this ONU id", .size = sizeof(bcmolt_xgpon_onu_cpu_packet_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_onu_cpu_packet_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_onu_cpu_packet_data_fields } } };

/* Group: xgpon_onu - omci_packet */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_omci_packet_port_id = { .name = "port_id", .descr = "port id", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_OMCI_PACKET_ID_PORT_ID, .offset = offsetof(bcmolt_xgpon_onu_omci_packet_data, port_id), .type = &type_descr_uint16_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_omci_packet_crc_ok = { .name = "crc_ok", .descr = "crc ok", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_OMCI_PACKET_ID_CRC_OK, .offset = offsetof(bcmolt_xgpon_onu_omci_packet_data, crc_ok), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_omci_packet_packet_size = { .name = "packet_size", .descr = "packet size", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_OMCI_PACKET_ID_PACKET_SIZE, .offset = offsetof(bcmolt_xgpon_onu_omci_packet_data, packet_size), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_omci_packet_buffer = { .name = "buffer", .descr = "buffer", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_OMCI_PACKET_ID_BUFFER, .offset = offsetof(bcmolt_xgpon_onu_omci_packet_data, buffer), .type = &type_descr_bcmolt_u8_list_u32 };
static bcmcli_prop_descr * BCM_DESCR xgpon_onu_omci_packet_prop_array[] = { &prop_descr_xgpon_onu_omci_packet_port_id, &prop_descr_xgpon_onu_omci_packet_crc_ok, &prop_descr_xgpon_onu_omci_packet_packet_size, &prop_descr_xgpon_onu_omci_packet_buffer };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_omci_packet_data_fields[] = { { .name = "port_id", .descr = "port id", .offset = offsetof(bcmolt_xgpon_onu_omci_packet_data, port_id), .type = &type_descr_uint16_t }, { .name = "crc_ok", .descr = "crc ok", .offset = offsetof(bcmolt_xgpon_onu_omci_packet_data, crc_ok), .type = &type_descr_bcmos_bool }, { .name = "packet_size", .descr = "packet size", .offset = offsetof(bcmolt_xgpon_onu_omci_packet_data, packet_size), .type = &type_descr_uint32_t }, { .name = "buffer", .descr = "buffer", .offset = offsetof(bcmolt_xgpon_onu_omci_packet_data, buffer), .type = &type_descr_bcmolt_u8_list_u32 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_omci_packet_data = { .name = "bcmolt_xgpon_onu_omci_packet_data", .descr = "Indicates OMCI packet was received on the US from this ONU id", .size = sizeof(bcmolt_xgpon_onu_omci_packet_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_onu_omci_packet_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_onu_omci_packet_data_fields } } };

/* Group: xgpon_onu - dgi */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_dgi_alarm_status = { .name = "alarm_status", .descr = "alarm status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_DGI_ID_ALARM_STATUS, .offset = offsetof(bcmolt_xgpon_onu_dgi_data, alarm_status), .type = &type_descr_bcmolt_status };
static bcmcli_prop_descr * BCM_DESCR xgpon_onu_dgi_prop_array[] = { &prop_descr_xgpon_onu_dgi_alarm_status };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_dgi_data_fields[] = { { .name = "alarm_status", .descr = "alarm status", .offset = offsetof(bcmolt_xgpon_onu_dgi_data, alarm_status), .type = &type_descr_bcmolt_status } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_dgi_data = { .name = "bcmolt_xgpon_onu_dgi_data", .descr = "Receive Dying-Gasp of ONUi", .size = sizeof(bcmolt_xgpon_onu_dgi_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_onu_dgi_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_onu_dgi_data_fields } } };

/* Group: xgpon_onu - power_management_state_change */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_power_management_state_change_old_state = { .name = "old_state", .descr = "The state the ONU was previously in.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_POWER_MANAGEMENT_STATE_CHANGE_ID_OLD_STATE, .offset = offsetof(bcmolt_xgpon_onu_power_management_state_change_data, old_state), .type = &type_descr_bcmolt_onu_state };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_power_management_state_change_new_state = { .name = "new_state", .descr = "The state the ONU is currently in.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_POWER_MANAGEMENT_STATE_CHANGE_ID_NEW_STATE, .offset = offsetof(bcmolt_xgpon_onu_power_management_state_change_data, new_state), .type = &type_descr_bcmolt_onu_state };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_power_management_state_change_reason = { .name = "reason", .descr = "The reason for the state change.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_POWER_MANAGEMENT_STATE_CHANGE_ID_REASON, .offset = offsetof(bcmolt_xgpon_onu_power_management_state_change_data, reason), .type = &type_descr_bcmolt_power_management_transition_reason };
static bcmcli_prop_descr * BCM_DESCR xgpon_onu_power_management_state_change_prop_array[] = { &prop_descr_xgpon_onu_power_management_state_change_old_state, &prop_descr_xgpon_onu_power_management_state_change_new_state, &prop_descr_xgpon_onu_power_management_state_change_reason };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_power_management_state_change_data_fields[] = { { .name = "old_state", .descr = "The state the ONU was previously in.", .offset = offsetof(bcmolt_xgpon_onu_power_management_state_change_data, old_state), .type = &type_descr_bcmolt_onu_state }, { .name = "new_state", .descr = "The state the ONU is currently in.", .offset = offsetof(bcmolt_xgpon_onu_power_management_state_change_data, new_state), .type = &type_descr_bcmolt_onu_state }, { .name = "reason", .descr = "The reason for the state change.", .offset = offsetof(bcmolt_xgpon_onu_power_management_state_change_data, reason), .type = &type_descr_bcmolt_power_management_transition_reason } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_power_management_state_change_data = { .name = "bcmolt_xgpon_onu_power_management_state_change_data", .descr = "Notification that an ONUs power management state has changed.", .size = sizeof(bcmolt_xgpon_onu_power_management_state_change_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_onu_power_management_state_change_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_onu_power_management_state_change_data_fields } } };

/* Group: xgpon_onu - possible_drift */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_possible_drift_alarm_status = { .name = "alarm_status", .descr = "On: estimated drift has exceeded the configured threshold.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_POSSIBLE_DRIFT_ID_ALARM_STATUS, .offset = offsetof(bcmolt_xgpon_onu_possible_drift_data, alarm_status), .type = &type_descr_bcmolt_status };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_possible_drift_estimated_drift = { .name = "estimated_drift", .descr = "If status is on, the estimated drift value, otherwise zero (0).", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_POSSIBLE_DRIFT_ID_ESTIMATED_DRIFT, .offset = offsetof(bcmolt_xgpon_onu_possible_drift_data, estimated_drift), .type = &type_descr_int32_t };
static bcmcli_prop_descr * BCM_DESCR xgpon_onu_possible_drift_prop_array[] = { &prop_descr_xgpon_onu_possible_drift_alarm_status, &prop_descr_xgpon_onu_possible_drift_estimated_drift };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_possible_drift_data_fields[] = { { .name = "alarm_status", .descr = "On: estimated drift has exceeded the configured threshold.", .offset = offsetof(bcmolt_xgpon_onu_possible_drift_data, alarm_status), .type = &type_descr_bcmolt_status }, { .name = "estimated_drift", .descr = "If status is on, the estimated drift value, otherwise zero (0).", .offset = offsetof(bcmolt_xgpon_onu_possible_drift_data, estimated_drift), .type = &type_descr_int32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_possible_drift_data = { .name = "bcmolt_xgpon_onu_possible_drift_data", .descr = "An ONU in a low power state may be experiencing drift beyond the configured threshold. The estimate may be inaccurate depending on ONU behavior. Actual drift may be less than estimated.", .size = sizeof(bcmolt_xgpon_onu_possible_drift_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_onu_possible_drift_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_onu_possible_drift_data_fields } } };

/* Group: xgpon_onu - request_registration */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_request_registration_sma_flag = { .name = "sma_flag", .descr = "Is the request registration process is part of the SMA process", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_REQUEST_REGISTRATION_ID_SMA_FLAG, .offset = offsetof(bcmolt_xgpon_onu_request_registration_data, sma_flag), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr * BCM_DESCR xgpon_onu_request_registration_prop_array[] = { &prop_descr_xgpon_onu_request_registration_sma_flag };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_request_registration_data_fields[] = { { .name = "sma_flag", .descr = "Is the request registration process is part of the SMA process", .offset = offsetof(bcmolt_xgpon_onu_request_registration_data, sma_flag), .type = &type_descr_bcmos_bool } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_request_registration_data = { .name = "bcmolt_xgpon_onu_request_registration_data", .descr = "Request the ONU to send its Registration ID", .size = sizeof(bcmolt_xgpon_onu_request_registration_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_onu_request_registration_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_onu_request_registration_data_fields } } };

/* Group: xgpon_onu - change_power_levelling */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_change_power_levelling_control = { .name = "control", .descr = "control", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_CHANGE_POWER_LEVELLING_ID_CONTROL, .offset = offsetof(bcmolt_xgpon_onu_change_power_levelling_data, control), .type = &type_descr_bcmolt_power_levelling_control };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_change_power_levelling_attenuation = { .name = "attenuation", .descr = "The requested attenuation in steps of 3dB as part of power levelling instruction", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_CHANGE_POWER_LEVELLING_ID_ATTENUATION, .offset = offsetof(bcmolt_xgpon_onu_change_power_levelling_data, attenuation), .type = &type_descr_uint8_t };
static bcmcli_prop_descr * BCM_DESCR xgpon_onu_change_power_levelling_prop_array[] = { &prop_descr_xgpon_onu_change_power_levelling_control, &prop_descr_xgpon_onu_change_power_levelling_attenuation };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_change_power_levelling_data_fields[] = { { .name = "control", .descr = "control", .offset = offsetof(bcmolt_xgpon_onu_change_power_levelling_data, control), .type = &type_descr_bcmolt_power_levelling_control }, { .name = "attenuation", .descr = "The requested attenuation in steps of 3dB as part of power levelling instruction", .offset = offsetof(bcmolt_xgpon_onu_change_power_levelling_data, attenuation), .type = &type_descr_uint8_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_change_power_levelling_data = { .name = "bcmolt_xgpon_onu_change_power_levelling_data", .descr = "Change power levelling", .size = sizeof(bcmolt_xgpon_onu_change_power_levelling_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_onu_change_power_levelling_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_onu_change_power_levelling_data_fields } } };

/* Group: xgpon_onu - get_power_level */
static bcmcli_prop_descr * BCM_DESCR xgpon_onu_get_power_level_prop_array[] = { };

/* Group: xgpon_onu - get_power_consumption */
static bcmcli_prop_descr * BCM_DESCR xgpon_onu_get_power_consumption_prop_array[] = { };

/* Group: xgpon_onu - adjust_tx_wavelength */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_adjust_tx_wavelength_frequency_adjustment_direction = { .name = "frequency_adjustment_direction", .descr = "Frequency adjustment direction", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_ADJUST_TX_WAVELENGTH_ID_FREQUENCY_ADJUSTMENT_DIRECTION, .offset = offsetof(bcmolt_xgpon_onu_adjust_tx_wavelength_data, frequency_adjustment_direction), .type = &type_descr_bcmolt_frequency_adjustment_direction };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_adjust_tx_wavelength_frequency_adjustment_size = { .name = "frequency_adjustment_size", .descr = "The size of the frequency adjustment in units of 0.1GHz", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_ADJUST_TX_WAVELENGTH_ID_FREQUENCY_ADJUSTMENT_SIZE, .offset = offsetof(bcmolt_xgpon_onu_adjust_tx_wavelength_data, frequency_adjustment_size), .type = &type_descr_uint8_t };
static bcmcli_prop_descr * BCM_DESCR xgpon_onu_adjust_tx_wavelength_prop_array[] = { &prop_descr_xgpon_onu_adjust_tx_wavelength_frequency_adjustment_direction, &prop_descr_xgpon_onu_adjust_tx_wavelength_frequency_adjustment_size };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_adjust_tx_wavelength_data_fields[] = { { .name = "frequency_adjustment_direction", .descr = "Frequency adjustment direction", .offset = offsetof(bcmolt_xgpon_onu_adjust_tx_wavelength_data, frequency_adjustment_direction), .type = &type_descr_bcmolt_frequency_adjustment_direction }, { .name = "frequency_adjustment_size", .descr = "The size of the frequency adjustment in units of 0.1GHz", .offset = offsetof(bcmolt_xgpon_onu_adjust_tx_wavelength_data, frequency_adjustment_size), .type = &type_descr_uint8_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_adjust_tx_wavelength_data = { .name = "bcmolt_xgpon_onu_adjust_tx_wavelength_data", .descr = "Instruct the ONU to adjust its upstream transmitter wavelength", .size = sizeof(bcmolt_xgpon_onu_adjust_tx_wavelength_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_onu_adjust_tx_wavelength_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_onu_adjust_tx_wavelength_data_fields } } };

/* Group: xgpon_onu - registration_id */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_registration_id_registration_id = { .name = "registration_id", .descr = "Registration ID", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_REGISTRATION_ID_ID_REGISTRATION_ID, .offset = offsetof(bcmolt_xgpon_onu_registration_id_data, registration_id), .type = &type_descr_bcmolt_arr_u8_36 };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_registration_id_request_registration_status = { .name = "request_registration_status", .descr = "request registration status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_REGISTRATION_ID_ID_REQUEST_REGISTRATION_STATUS, .offset = offsetof(bcmolt_xgpon_onu_registration_id_data, request_registration_status), .type = &type_descr_bcmolt_result };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_registration_id_request_registration_fail_reason = { .name = "request_registration_fail_reason", .descr = "request registration fail reason", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_REGISTRATION_ID_ID_REQUEST_REGISTRATION_FAIL_REASON, .offset = offsetof(bcmolt_xgpon_onu_registration_id_data, request_registration_fail_reason), .type = &type_descr_bcmolt_request_registration_fail_reason };
static bcmcli_prop_descr * BCM_DESCR xgpon_onu_registration_id_prop_array[] = { &prop_descr_xgpon_onu_registration_id_registration_id, &prop_descr_xgpon_onu_registration_id_request_registration_status, &prop_descr_xgpon_onu_registration_id_request_registration_fail_reason };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_registration_id_data_fields[] = { { .name = "registration_id", .descr = "Registration ID", .offset = offsetof(bcmolt_xgpon_onu_registration_id_data, registration_id), .type = &type_descr_bcmolt_arr_u8_36 }, { .name = "request_registration_status", .descr = "request registration status", .offset = offsetof(bcmolt_xgpon_onu_registration_id_data, request_registration_status), .type = &type_descr_bcmolt_result }, { .name = "request_registration_fail_reason", .descr = "request registration fail reason", .offset = offsetof(bcmolt_xgpon_onu_registration_id_data, request_registration_fail_reason), .type = &type_descr_bcmolt_request_registration_fail_reason } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_registration_id_data = { .name = "bcmolt_xgpon_onu_registration_id_data", .descr = "Registration ID", .size = sizeof(bcmolt_xgpon_onu_registration_id_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_onu_registration_id_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_onu_registration_id_data_fields } } };

/* Group: xgpon_onu - power_level_report */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_power_level_report_attenuation = { .name = "attenuation", .descr = "Attenuation", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_POWER_LEVEL_REPORT_ID_ATTENUATION, .offset = offsetof(bcmolt_xgpon_onu_power_level_report_data, attenuation), .type = &type_descr_uint8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_power_level_report_power_levelling_capability = { .name = "power_levelling_capability", .descr = "Power levelling capability", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_POWER_LEVEL_REPORT_ID_POWER_LEVELLING_CAPABILITY, .offset = offsetof(bcmolt_xgpon_onu_power_level_report_data, power_levelling_capability), .type = &type_descr_uint8_t };
static bcmcli_prop_descr * BCM_DESCR xgpon_onu_power_level_report_prop_array[] = { &prop_descr_xgpon_onu_power_level_report_attenuation, &prop_descr_xgpon_onu_power_level_report_power_levelling_capability };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_power_level_report_data_fields[] = { { .name = "attenuation", .descr = "Attenuation", .offset = offsetof(bcmolt_xgpon_onu_power_level_report_data, attenuation), .type = &type_descr_uint8_t }, { .name = "power_levelling_capability", .descr = "Power levelling capability", .offset = offsetof(bcmolt_xgpon_onu_power_level_report_data, power_levelling_capability), .type = &type_descr_uint8_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_power_level_report_data = { .name = "bcmolt_xgpon_onu_power_level_report_data", .descr = "Power level report", .size = sizeof(bcmolt_xgpon_onu_power_level_report_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_onu_power_level_report_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_onu_power_level_report_data_fields } } };

/* Group: xgpon_onu - power_consumption_report */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_power_consumption_report_power_consumption_report = { .name = "power_consumption_report", .descr = "power consumption report", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_POWER_CONSUMPTION_REPORT_ID_POWER_CONSUMPTION_REPORT, .offset = offsetof(bcmolt_xgpon_onu_power_consumption_report_data, power_consumption_report), .type = &type_descr_bcmolt_arr_power_consumption_channel_report_8 };
static bcmcli_prop_descr * BCM_DESCR xgpon_onu_power_consumption_report_prop_array[] = { &prop_descr_xgpon_onu_power_consumption_report_power_consumption_report };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_power_consumption_report_data_fields[] = { { .name = "power_consumption_report", .descr = "power consumption report", .offset = offsetof(bcmolt_xgpon_onu_power_consumption_report_data, power_consumption_report), .type = &type_descr_bcmolt_arr_power_consumption_channel_report_8 } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_power_consumption_report_data = { .name = "bcmolt_xgpon_onu_power_consumption_report_data", .descr = "Power consumption report", .size = sizeof(bcmolt_xgpon_onu_power_consumption_report_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_onu_power_consumption_report_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_onu_power_consumption_report_data_fields } } };

/* Group: xgpon_onu - secure_mutual_authentication */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_secure_mutual_authentication_master_key = { .name = "master_key", .descr = "master key", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_SECURE_MUTUAL_AUTHENTICATION_ID_MASTER_KEY, .offset = offsetof(bcmolt_xgpon_onu_secure_mutual_authentication_data, master_key), .type = &type_descr_bcmolt_aes_key };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_secure_mutual_authentication_buffer = { .name = "buffer", .descr = "OMCI data buffer", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_SECURE_MUTUAL_AUTHENTICATION_ID_BUFFER, .offset = offsetof(bcmolt_xgpon_onu_secure_mutual_authentication_data, buffer), .type = &type_descr_bcmolt_u8_list_u32_max_2048 };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_secure_mutual_authentication_mic = { .name = "mic", .descr = "mic", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_SECURE_MUTUAL_AUTHENTICATION_ID_MIC, .offset = offsetof(bcmolt_xgpon_onu_secure_mutual_authentication_data, mic), .type = &type_descr_uint32_t };
static bcmcli_prop_descr * BCM_DESCR xgpon_onu_secure_mutual_authentication_prop_array[] = { &prop_descr_xgpon_onu_secure_mutual_authentication_master_key, &prop_descr_xgpon_onu_secure_mutual_authentication_buffer, &prop_descr_xgpon_onu_secure_mutual_authentication_mic };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_secure_mutual_authentication_data_fields[] = { { .name = "master_key", .descr = "master key", .offset = offsetof(bcmolt_xgpon_onu_secure_mutual_authentication_data, master_key), .type = &type_descr_bcmolt_aes_key }, { .name = "buffer", .descr = "OMCI data buffer", .offset = offsetof(bcmolt_xgpon_onu_secure_mutual_authentication_data, buffer), .type = &type_descr_bcmolt_u8_list_u32_max_2048 }, { .name = "mic", .descr = "mic", .offset = offsetof(bcmolt_xgpon_onu_secure_mutual_authentication_data, mic), .type = &type_descr_uint32_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_secure_mutual_authentication_data = { .name = "bcmolt_xgpon_onu_secure_mutual_authentication_data", .descr = "OMCI base secure mutual authentication", .size = sizeof(bcmolt_xgpon_onu_secure_mutual_authentication_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_onu_secure_mutual_authentication_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_onu_secure_mutual_authentication_data_fields } } };

/* Group: xgpon_onu - secure_mutual_authentication_failure */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_secure_mutual_authentication_failure_status = { .name = "status", .descr = "status", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_SECURE_MUTUAL_AUTHENTICATION_FAILURE_ID_STATUS, .offset = offsetof(bcmolt_xgpon_onu_secure_mutual_authentication_failure_data, status), .type = &type_descr_bcmolt_result };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_secure_mutual_authentication_failure_fail_reason = { .name = "fail_reason", .descr = "secure mutual authentication fail reason", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_SECURE_MUTUAL_AUTHENTICATION_FAILURE_ID_FAIL_REASON, .offset = offsetof(bcmolt_xgpon_onu_secure_mutual_authentication_failure_data, fail_reason), .type = &type_descr_bcmolt_secure_mutual_authentication_fail_reason };
static bcmcli_prop_descr * BCM_DESCR xgpon_onu_secure_mutual_authentication_failure_prop_array[] = { &prop_descr_xgpon_onu_secure_mutual_authentication_failure_status, &prop_descr_xgpon_onu_secure_mutual_authentication_failure_fail_reason };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_secure_mutual_authentication_failure_data_fields[] = { { .name = "status", .descr = "status", .offset = offsetof(bcmolt_xgpon_onu_secure_mutual_authentication_failure_data, status), .type = &type_descr_bcmolt_result }, { .name = "fail_reason", .descr = "secure mutual authentication fail reason", .offset = offsetof(bcmolt_xgpon_onu_secure_mutual_authentication_failure_data, fail_reason), .type = &type_descr_bcmolt_secure_mutual_authentication_fail_reason } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_secure_mutual_authentication_failure_data = { .name = "bcmolt_xgpon_onu_secure_mutual_authentication_failure_data", .descr = "Failure of secure mutual authentication due to MIC error", .size = sizeof(bcmolt_xgpon_onu_secure_mutual_authentication_failure_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_onu_secure_mutual_authentication_failure_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_onu_secure_mutual_authentication_failure_data_fields } } };

/* Group: xgpon_onu - onu_tuning_in */
static bcmcli_prop_descr * BCM_DESCR xgpon_onu_onu_tuning_in_prop_array[] = { };

/* Group: xgpon_onu - onu_tuning_out */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_onu_tuning_out_target_ds_pon_id = { .name = "target_ds_pon_id", .descr = "target ds pon id", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_ONU_TUNING_OUT_ID_TARGET_DS_PON_ID, .offset = offsetof(bcmolt_xgpon_onu_onu_tuning_out_data, target_ds_pon_id), .type = &type_descr_bcmolt_pon_id };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_onu_tuning_out_target_us_pon_id = { .name = "target_us_pon_id", .descr = "target us pon id", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_ONU_TUNING_OUT_ID_TARGET_US_PON_ID, .offset = offsetof(bcmolt_xgpon_onu_onu_tuning_out_data, target_us_pon_id), .type = &type_descr_bcmolt_pon_id };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_onu_tuning_out_time_to_switch = { .name = "time_to_switch", .descr = "Time to switch in ms", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_ONU_TUNING_OUT_ID_TIME_TO_SWITCH, .offset = offsetof(bcmolt_xgpon_onu_onu_tuning_out_data, time_to_switch), .type = &type_descr_uint32_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_onu_tuning_out_rollback = { .name = "rollback", .descr = "rollback", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_ONU_TUNING_OUT_ID_ROLLBACK, .offset = offsetof(bcmolt_xgpon_onu_onu_tuning_out_data, rollback), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_onu_tuning_out_status = { .name = "status", .descr = "on- to start tuning out off- to stop tuning out", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_ONU_TUNING_OUT_ID_STATUS, .offset = offsetof(bcmolt_xgpon_onu_onu_tuning_out_data, status), .type = &type_descr_bcmolt_status };
static bcmcli_prop_descr * BCM_DESCR xgpon_onu_onu_tuning_out_prop_array[] = { &prop_descr_xgpon_onu_onu_tuning_out_target_ds_pon_id, &prop_descr_xgpon_onu_onu_tuning_out_target_us_pon_id, &prop_descr_xgpon_onu_onu_tuning_out_time_to_switch, &prop_descr_xgpon_onu_onu_tuning_out_rollback, &prop_descr_xgpon_onu_onu_tuning_out_status };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_onu_tuning_out_data_fields[] = { { .name = "target_ds_pon_id", .descr = "target ds pon id", .offset = offsetof(bcmolt_xgpon_onu_onu_tuning_out_data, target_ds_pon_id), .type = &type_descr_bcmolt_pon_id }, { .name = "target_us_pon_id", .descr = "target us pon id", .offset = offsetof(bcmolt_xgpon_onu_onu_tuning_out_data, target_us_pon_id), .type = &type_descr_bcmolt_pon_id }, { .name = "time_to_switch", .descr = "Time to switch in ms", .offset = offsetof(bcmolt_xgpon_onu_onu_tuning_out_data, time_to_switch), .type = &type_descr_uint32_t }, { .name = "rollback", .descr = "rollback", .offset = offsetof(bcmolt_xgpon_onu_onu_tuning_out_data, rollback), .type = &type_descr_bcmos_bool }, { .name = "status", .descr = "on- to start tuning out off- to stop tuning out", .offset = offsetof(bcmolt_xgpon_onu_onu_tuning_out_data, status), .type = &type_descr_bcmolt_status } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_onu_tuning_out_data = { .name = "bcmolt_xgpon_onu_onu_tuning_out_data", .descr = "ONU Tuning out", .size = sizeof(bcmolt_xgpon_onu_onu_tuning_out_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_onu_onu_tuning_out_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_onu_onu_tuning_out_data_fields } } };

/* Group: xgpon_onu - onu_tuning_out_completed */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_onu_tuning_out_completed_result = { .name = "result", .descr = "result", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_ONU_TUNING_OUT_COMPLETED_ID_RESULT, .offset = offsetof(bcmolt_xgpon_onu_onu_tuning_out_completed_data, result), .type = &type_descr_bcmolt_result };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_onu_tuning_out_completed_fail_reason = { .name = "fail_reason", .descr = "fail reason", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_ONU_TUNING_OUT_COMPLETED_ID_FAIL_REASON, .offset = offsetof(bcmolt_xgpon_onu_onu_tuning_out_completed_data, fail_reason), .type = &type_descr_bcmolt_tune_out_fail_reason };
static bcmcli_prop_descr * BCM_DESCR xgpon_onu_onu_tuning_out_completed_prop_array[] = { &prop_descr_xgpon_onu_onu_tuning_out_completed_result, &prop_descr_xgpon_onu_onu_tuning_out_completed_fail_reason };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_onu_tuning_out_completed_data_fields[] = { { .name = "result", .descr = "result", .offset = offsetof(bcmolt_xgpon_onu_onu_tuning_out_completed_data, result), .type = &type_descr_bcmolt_result }, { .name = "fail_reason", .descr = "fail reason", .offset = offsetof(bcmolt_xgpon_onu_onu_tuning_out_completed_data, fail_reason), .type = &type_descr_bcmolt_tune_out_fail_reason } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_onu_tuning_out_completed_data = { .name = "bcmolt_xgpon_onu_onu_tuning_out_completed_data", .descr = "ONU Tuning out completed", .size = sizeof(bcmolt_xgpon_onu_onu_tuning_out_completed_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_onu_onu_tuning_out_completed_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_onu_onu_tuning_out_completed_data_fields } } };

/* Group: xgpon_onu - onu_tuning_in_completed */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_onu_tuning_in_completed_result = { .name = "result", .descr = "result", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_ONU_TUNING_IN_COMPLETED_ID_RESULT, .offset = offsetof(bcmolt_xgpon_onu_onu_tuning_in_completed_data, result), .type = &type_descr_bcmolt_result };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_onu_tuning_in_completed_fail_reason = { .name = "fail_reason", .descr = "fail reason", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_ONU_TUNING_IN_COMPLETED_ID_FAIL_REASON, .offset = offsetof(bcmolt_xgpon_onu_onu_tuning_in_completed_data, fail_reason), .type = &type_descr_bcmolt_tune_in_fail_reason };
static bcmcli_prop_descr * BCM_DESCR xgpon_onu_onu_tuning_in_completed_prop_array[] = { &prop_descr_xgpon_onu_onu_tuning_in_completed_result, &prop_descr_xgpon_onu_onu_tuning_in_completed_fail_reason };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_onu_tuning_in_completed_data_fields[] = { { .name = "result", .descr = "result", .offset = offsetof(bcmolt_xgpon_onu_onu_tuning_in_completed_data, result), .type = &type_descr_bcmolt_result }, { .name = "fail_reason", .descr = "fail reason", .offset = offsetof(bcmolt_xgpon_onu_onu_tuning_in_completed_data, fail_reason), .type = &type_descr_bcmolt_tune_in_fail_reason } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_onu_tuning_in_completed_data = { .name = "bcmolt_xgpon_onu_onu_tuning_in_completed_data", .descr = "ONU Tuning in completed", .size = sizeof(bcmolt_xgpon_onu_onu_tuning_in_completed_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_onu_onu_tuning_in_completed_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_onu_onu_tuning_in_completed_data_fields } } };

/* Group: xgpon_onu - tuning_response */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_tuning_response_ack = { .name = "ack", .descr = "is tuning response received with ack or nack", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_TUNING_RESPONSE_ID_ACK, .offset = offsetof(bcmolt_xgpon_onu_tuning_response_data, ack), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_tuning_response_result = { .name = "result", .descr = "result", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_TUNING_RESPONSE_ID_RESULT, .offset = offsetof(bcmolt_xgpon_onu_tuning_response_data, result), .type = &type_descr_bcmolt_result };
static bcmcli_prop_descr * BCM_DESCR xgpon_onu_tuning_response_prop_array[] = { &prop_descr_xgpon_onu_tuning_response_ack, &prop_descr_xgpon_onu_tuning_response_result };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_tuning_response_data_fields[] = { { .name = "ack", .descr = "is tuning response received with ack or nack", .offset = offsetof(bcmolt_xgpon_onu_tuning_response_data, ack), .type = &type_descr_bcmos_bool }, { .name = "result", .descr = "result", .offset = offsetof(bcmolt_xgpon_onu_tuning_response_data, result), .type = &type_descr_bcmolt_result } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_tuning_response_data = { .name = "bcmolt_xgpon_onu_tuning_response_data", .descr = "Tuning response", .size = sizeof(bcmolt_xgpon_onu_tuning_response_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_onu_tuning_response_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_onu_tuning_response_data_fields } } };

/* Group: xgpon_onu - stat_cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_stat_cfg_cfg = { .name = "cfg", .descr = "Statistic alarm configuration.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_STAT_CFG_ID_CFG, .offset = offsetof(bcmolt_xgpon_onu_stat_cfg_data, cfg), .type = &type_descr_bcmolt_stat_alarm_config };
static bcmcli_prop_descr * BCM_DESCR xgpon_onu_stat_cfg_prop_array[] = { &prop_descr_xgpon_onu_stat_cfg_cfg };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_stat_cfg_data_fields[] = { { .name = "cfg", .descr = "Statistic alarm configuration.", .offset = offsetof(bcmolt_xgpon_onu_stat_cfg_data, cfg), .type = &type_descr_bcmolt_stat_alarm_config } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_stat_cfg_data = { .name = "bcmolt_xgpon_onu_stat_cfg_data", .descr = "Statistic Configuration", .size = sizeof(bcmolt_xgpon_onu_stat_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_onu_stat_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_onu_stat_cfg_data_fields } } };

/* Group: xgpon_onu - stat_alarm_raised */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_stat_alarm_raised_stat = { .name = "stat", .descr = "Statistic identifier.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_STAT_ALARM_RAISED_ID_STAT, .offset = offsetof(bcmolt_xgpon_onu_stat_alarm_raised_data, stat), .type = &type_descr_bcmolt_xgpon_onu_stat_id };
static bcmcli_prop_descr * BCM_DESCR xgpon_onu_stat_alarm_raised_prop_array[] = { &prop_descr_xgpon_onu_stat_alarm_raised_stat };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_stat_alarm_raised_data_fields[] = { { .name = "stat", .descr = "Statistic identifier.", .offset = offsetof(bcmolt_xgpon_onu_stat_alarm_raised_data, stat), .type = &type_descr_bcmolt_xgpon_onu_stat_id } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_stat_alarm_raised_data = { .name = "bcmolt_xgpon_onu_stat_alarm_raised_data", .descr = "Sent when a configured statistic alarm condition has been met.", .size = sizeof(bcmolt_xgpon_onu_stat_alarm_raised_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_onu_stat_alarm_raised_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_onu_stat_alarm_raised_data_fields } } };

/* Group: xgpon_onu - stat_alarm_cleared */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_stat_alarm_cleared_stat = { .name = "stat", .descr = "Statistic identifier.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_STAT_ALARM_CLEARED_ID_STAT, .offset = offsetof(bcmolt_xgpon_onu_stat_alarm_cleared_data, stat), .type = &type_descr_bcmolt_xgpon_onu_stat_id };
static bcmcli_prop_descr * BCM_DESCR xgpon_onu_stat_alarm_cleared_prop_array[] = { &prop_descr_xgpon_onu_stat_alarm_cleared_stat };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_stat_alarm_cleared_data_fields[] = { { .name = "stat", .descr = "Statistic identifier.", .offset = offsetof(bcmolt_xgpon_onu_stat_alarm_cleared_data, stat), .type = &type_descr_bcmolt_xgpon_onu_stat_id } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_stat_alarm_cleared_data = { .name = "bcmolt_xgpon_onu_stat_alarm_cleared_data", .descr = "Sent when a configured statistic alarm condition is no longer met.", .size = sizeof(bcmolt_xgpon_onu_stat_alarm_cleared_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_onu_stat_alarm_cleared_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_onu_stat_alarm_cleared_data_fields } } };

/* Group: xgpon_onu - auto_cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_auto_cfg_dfi = { .name = "dfi", .descr = "If true, indications of type \"dfi\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_AUTO_CFG_ID_DFI, .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, dfi), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_auto_cfg_dgi = { .name = "dgi", .descr = "If true, indications of type \"dgi\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_AUTO_CFG_ID_DGI, .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, dgi), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_auto_cfg_dowi = { .name = "dowi", .descr = "If true, indications of type \"dowi\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_AUTO_CFG_ID_DOWI, .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, dowi), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_auto_cfg_invalid_dbru_report = { .name = "invalid_dbru_report", .descr = "If true, indications of type \"invalid_dbru_report\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_AUTO_CFG_ID_INVALID_DBRU_REPORT, .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, invalid_dbru_report), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_auto_cfg_key_exchange_completed = { .name = "key_exchange_completed", .descr = "If true, indications of type \"key_exchange_completed\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_AUTO_CFG_ID_KEY_EXCHANGE_COMPLETED, .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, key_exchange_completed), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_auto_cfg_key_exchange_cycle_skipped = { .name = "key_exchange_cycle_skipped", .descr = "If true, indications of type \"key_exchange_cycle_skipped\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_AUTO_CFG_ID_KEY_EXCHANGE_CYCLE_SKIPPED, .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, key_exchange_cycle_skipped), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_auto_cfg_key_exchange_key_mismatch = { .name = "key_exchange_key_mismatch", .descr = "If true, indications of type \"key_exchange_key_mismatch\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_AUTO_CFG_ID_KEY_EXCHANGE_KEY_MISMATCH, .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, key_exchange_key_mismatch), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_auto_cfg_key_exchange_key_request_timeout = { .name = "key_exchange_key_request_timeout", .descr = "If true, indications of type \"key_exchange_key_request_timeout\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_AUTO_CFG_ID_KEY_EXCHANGE_KEY_REQUEST_TIMEOUT, .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, key_exchange_key_request_timeout), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_auto_cfg_looci = { .name = "looci", .descr = "If true, indications of type \"looci\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_AUTO_CFG_ID_LOOCI, .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, looci), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_auto_cfg_onu_activation_completed = { .name = "onu_activation_completed", .descr = "If true, indications of type \"onu_activation_completed\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_AUTO_CFG_ID_ONU_ACTIVATION_COMPLETED, .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, onu_activation_completed), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_auto_cfg_onu_alarm = { .name = "onu_alarm", .descr = "If true, indications of type \"onu_alarm\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_AUTO_CFG_ID_ONU_ALARM, .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, onu_alarm), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_auto_cfg_onu_deactivation_completed = { .name = "onu_deactivation_completed", .descr = "If true, indications of type \"onu_deactivation_completed\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_AUTO_CFG_ID_ONU_DEACTIVATION_COMPLETED, .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, onu_deactivation_completed), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_auto_cfg_onu_disable_completed = { .name = "onu_disable_completed", .descr = "If true, indications of type \"onu_disable_completed\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_AUTO_CFG_ID_ONU_DISABLE_COMPLETED, .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, onu_disable_completed), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_auto_cfg_onu_enable_completed = { .name = "onu_enable_completed", .descr = "If true, indications of type \"onu_enable_completed\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_AUTO_CFG_ID_ONU_ENABLE_COMPLETED, .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, onu_enable_completed), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_auto_cfg_onu_tuning_in_completed = { .name = "onu_tuning_in_completed", .descr = "If true, indications of type \"onu_tuning_in_completed\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_AUTO_CFG_ID_ONU_TUNING_IN_COMPLETED, .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, onu_tuning_in_completed), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_auto_cfg_onu_tuning_out_completed = { .name = "onu_tuning_out_completed", .descr = "If true, indications of type \"onu_tuning_out_completed\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_AUTO_CFG_ID_ONU_TUNING_OUT_COMPLETED, .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, onu_tuning_out_completed), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_auto_cfg_optical_reflection = { .name = "optical_reflection", .descr = "If true, indications of type \"optical_reflection\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_AUTO_CFG_ID_OPTICAL_REFLECTION, .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, optical_reflection), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_auto_cfg_possible_drift = { .name = "possible_drift", .descr = "If true, indications of type \"possible_drift\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_AUTO_CFG_ID_POSSIBLE_DRIFT, .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, possible_drift), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_auto_cfg_power_consumption_report = { .name = "power_consumption_report", .descr = "If true, indications of type \"power_consumption_report\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_AUTO_CFG_ID_POWER_CONSUMPTION_REPORT, .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, power_consumption_report), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_auto_cfg_power_level_report = { .name = "power_level_report", .descr = "If true, indications of type \"power_level_report\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_AUTO_CFG_ID_POWER_LEVEL_REPORT, .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, power_level_report), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_auto_cfg_power_management_state_change = { .name = "power_management_state_change", .descr = "If true, indications of type \"power_management_state_change\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_AUTO_CFG_ID_POWER_MANAGEMENT_STATE_CHANGE, .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, power_management_state_change), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_auto_cfg_pqsi = { .name = "pqsi", .descr = "If true, indications of type \"pqsi\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_AUTO_CFG_ID_PQSI, .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, pqsi), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_auto_cfg_ranging_completed = { .name = "ranging_completed", .descr = "If true, indications of type \"ranging_completed\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_AUTO_CFG_ID_RANGING_COMPLETED, .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, ranging_completed), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_auto_cfg_registration_id = { .name = "registration_id", .descr = "If true, indications of type \"registration_id\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_AUTO_CFG_ID_REGISTRATION_ID, .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, registration_id), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_auto_cfg_rssi_measurement_completed = { .name = "rssi_measurement_completed", .descr = "If true, indications of type \"rssi_measurement_completed\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_AUTO_CFG_ID_RSSI_MEASUREMENT_COMPLETED, .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, rssi_measurement_completed), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_auto_cfg_sdi = { .name = "sdi", .descr = "If true, indications of type \"sdi\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_AUTO_CFG_ID_SDI, .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, sdi), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_auto_cfg_secure_mutual_authentication_failure = { .name = "secure_mutual_authentication_failure", .descr = "If true, indications of type \"secure_mutual_authentication_failure\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_AUTO_CFG_ID_SECURE_MUTUAL_AUTHENTICATION_FAILURE, .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, secure_mutual_authentication_failure), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_auto_cfg_sfi = { .name = "sfi", .descr = "If true, indications of type \"sfi\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_AUTO_CFG_ID_SFI, .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, sfi), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_auto_cfg_stat_alarm_cleared = { .name = "stat_alarm_cleared", .descr = "If true, indications of type \"stat_alarm_cleared\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_AUTO_CFG_ID_STAT_ALARM_CLEARED, .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, stat_alarm_cleared), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_auto_cfg_stat_alarm_raised = { .name = "stat_alarm_raised", .descr = "If true, indications of type \"stat_alarm_raised\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_AUTO_CFG_ID_STAT_ALARM_RAISED, .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, stat_alarm_raised), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_auto_cfg_sufi = { .name = "sufi", .descr = "If true, indications of type \"sufi\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_AUTO_CFG_ID_SUFI, .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, sufi), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_auto_cfg_tiwi = { .name = "tiwi", .descr = "If true, indications of type \"tiwi\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_AUTO_CFG_ID_TIWI, .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, tiwi), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_onu_auto_cfg_tuning_response = { .name = "tuning_response", .descr = "If true, indications of type \"tuning_response\" will be generated.", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_ONU_AUTO_CFG_ID_TUNING_RESPONSE, .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, tuning_response), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr * BCM_DESCR xgpon_onu_auto_cfg_prop_array[] = { &prop_descr_xgpon_onu_auto_cfg_dfi, &prop_descr_xgpon_onu_auto_cfg_dgi, &prop_descr_xgpon_onu_auto_cfg_dowi, &prop_descr_xgpon_onu_auto_cfg_invalid_dbru_report, &prop_descr_xgpon_onu_auto_cfg_key_exchange_completed, &prop_descr_xgpon_onu_auto_cfg_key_exchange_cycle_skipped, &prop_descr_xgpon_onu_auto_cfg_key_exchange_key_mismatch, &prop_descr_xgpon_onu_auto_cfg_key_exchange_key_request_timeout, &prop_descr_xgpon_onu_auto_cfg_looci, &prop_descr_xgpon_onu_auto_cfg_onu_activation_completed, &prop_descr_xgpon_onu_auto_cfg_onu_alarm, &prop_descr_xgpon_onu_auto_cfg_onu_deactivation_completed, &prop_descr_xgpon_onu_auto_cfg_onu_disable_completed, &prop_descr_xgpon_onu_auto_cfg_onu_enable_completed, &prop_descr_xgpon_onu_auto_cfg_onu_tuning_in_completed, &prop_descr_xgpon_onu_auto_cfg_onu_tuning_out_completed, &prop_descr_xgpon_onu_auto_cfg_optical_reflection, &prop_descr_xgpon_onu_auto_cfg_possible_drift, &prop_descr_xgpon_onu_auto_cfg_power_consumption_report, &prop_descr_xgpon_onu_auto_cfg_power_level_report, &prop_descr_xgpon_onu_auto_cfg_power_management_state_change, &prop_descr_xgpon_onu_auto_cfg_pqsi, &prop_descr_xgpon_onu_auto_cfg_ranging_completed, &prop_descr_xgpon_onu_auto_cfg_registration_id, &prop_descr_xgpon_onu_auto_cfg_rssi_measurement_completed, &prop_descr_xgpon_onu_auto_cfg_sdi, &prop_descr_xgpon_onu_auto_cfg_secure_mutual_authentication_failure, &prop_descr_xgpon_onu_auto_cfg_sfi, &prop_descr_xgpon_onu_auto_cfg_stat_alarm_cleared, &prop_descr_xgpon_onu_auto_cfg_stat_alarm_raised, &prop_descr_xgpon_onu_auto_cfg_sufi, &prop_descr_xgpon_onu_auto_cfg_tiwi, &prop_descr_xgpon_onu_auto_cfg_tuning_response };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_auto_cfg_data_fields[] = { { .name = "dfi", .descr = "If true, indications of type \"dfi\" will be generated.", .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, dfi), .type = &type_descr_bcmos_bool }, { .name = "dgi", .descr = "If true, indications of type \"dgi\" will be generated.", .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, dgi), .type = &type_descr_bcmos_bool }, { .name = "dowi", .descr = "If true, indications of type \"dowi\" will be generated.", .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, dowi), .type = &type_descr_bcmos_bool }, { .name = "invalid_dbru_report", .descr = "If true, indications of type \"invalid_dbru_report\" will be generated.", .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, invalid_dbru_report), .type = &type_descr_bcmos_bool }, { .name = "key_exchange_completed", .descr = "If true, indications of type \"key_exchange_completed\" will be generated.", .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, key_exchange_completed), .type = &type_descr_bcmos_bool }, { .name = "key_exchange_cycle_skipped", .descr = "If true, indications of type \"key_exchange_cycle_skipped\" will be generated.", .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, key_exchange_cycle_skipped), .type = &type_descr_bcmos_bool }, { .name = "key_exchange_key_mismatch", .descr = "If true, indications of type \"key_exchange_key_mismatch\" will be generated.", .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, key_exchange_key_mismatch), .type = &type_descr_bcmos_bool }, { .name = "key_exchange_key_request_timeout", .descr = "If true, indications of type \"key_exchange_key_request_timeout\" will be generated.", .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, key_exchange_key_request_timeout), .type = &type_descr_bcmos_bool }, { .name = "looci", .descr = "If true, indications of type \"looci\" will be generated.", .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, looci), .type = &type_descr_bcmos_bool }, { .name = "onu_activation_completed", .descr = "If true, indications of type \"onu_activation_completed\" will be generated.", .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, onu_activation_completed), .type = &type_descr_bcmos_bool }, { .name = "onu_alarm", .descr = "If true, indications of type \"onu_alarm\" will be generated.", .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, onu_alarm), .type = &type_descr_bcmos_bool }, { .name = "onu_deactivation_completed", .descr = "If true, indications of type \"onu_deactivation_completed\" will be generated.", .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, onu_deactivation_completed), .type = &type_descr_bcmos_bool }, { .name = "onu_disable_completed", .descr = "If true, indications of type \"onu_disable_completed\" will be generated.", .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, onu_disable_completed), .type = &type_descr_bcmos_bool }, { .name = "onu_enable_completed", .descr = "If true, indications of type \"onu_enable_completed\" will be generated.", .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, onu_enable_completed), .type = &type_descr_bcmos_bool }, { .name = "onu_tuning_in_completed", .descr = "If true, indications of type \"onu_tuning_in_completed\" will be generated.", .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, onu_tuning_in_completed), .type = &type_descr_bcmos_bool }, { .name = "onu_tuning_out_completed", .descr = "If true, indications of type \"onu_tuning_out_completed\" will be generated.", .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, onu_tuning_out_completed), .type = &type_descr_bcmos_bool }, { .name = "optical_reflection", .descr = "If true, indications of type \"optical_reflection\" will be generated.", .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, optical_reflection), .type = &type_descr_bcmos_bool }, { .name = "possible_drift", .descr = "If true, indications of type \"possible_drift\" will be generated.", .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, possible_drift), .type = &type_descr_bcmos_bool }, { .name = "power_consumption_report", .descr = "If true, indications of type \"power_consumption_report\" will be generated.", .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, power_consumption_report), .type = &type_descr_bcmos_bool }, { .name = "power_level_report", .descr = "If true, indications of type \"power_level_report\" will be generated.", .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, power_level_report), .type = &type_descr_bcmos_bool }, { .name = "power_management_state_change", .descr = "If true, indications of type \"power_management_state_change\" will be generated.", .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, power_management_state_change), .type = &type_descr_bcmos_bool }, { .name = "pqsi", .descr = "If true, indications of type \"pqsi\" will be generated.", .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, pqsi), .type = &type_descr_bcmos_bool }, { .name = "ranging_completed", .descr = "If true, indications of type \"ranging_completed\" will be generated.", .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, ranging_completed), .type = &type_descr_bcmos_bool }, { .name = "registration_id", .descr = "If true, indications of type \"registration_id\" will be generated.", .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, registration_id), .type = &type_descr_bcmos_bool }, { .name = "rssi_measurement_completed", .descr = "If true, indications of type \"rssi_measurement_completed\" will be generated.", .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, rssi_measurement_completed), .type = &type_descr_bcmos_bool }, { .name = "sdi", .descr = "If true, indications of type \"sdi\" will be generated.", .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, sdi), .type = &type_descr_bcmos_bool }, { .name = "secure_mutual_authentication_failure", .descr = "If true, indications of type \"secure_mutual_authentication_failure\" will be generated.", .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, secure_mutual_authentication_failure), .type = &type_descr_bcmos_bool }, { .name = "sfi", .descr = "If true, indications of type \"sfi\" will be generated.", .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, sfi), .type = &type_descr_bcmos_bool }, { .name = "stat_alarm_cleared", .descr = "If true, indications of type \"stat_alarm_cleared\" will be generated.", .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, stat_alarm_cleared), .type = &type_descr_bcmos_bool }, { .name = "stat_alarm_raised", .descr = "If true, indications of type \"stat_alarm_raised\" will be generated.", .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, stat_alarm_raised), .type = &type_descr_bcmos_bool }, { .name = "sufi", .descr = "If true, indications of type \"sufi\" will be generated.", .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, sufi), .type = &type_descr_bcmos_bool }, { .name = "tiwi", .descr = "If true, indications of type \"tiwi\" will be generated.", .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, tiwi), .type = &type_descr_bcmos_bool }, { .name = "tuning_response", .descr = "If true, indications of type \"tuning_response\" will be generated.", .offset = offsetof(bcmolt_xgpon_onu_auto_cfg_data, tuning_response), .type = &type_descr_bcmos_bool } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_onu_auto_cfg_data = { .name = "bcmolt_xgpon_onu_auto_cfg_data", .descr = "Indication Configuration", .size = sizeof(bcmolt_xgpon_onu_auto_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_onu_auto_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_onu_auto_cfg_data_fields } } };

/* ==== Object: xgpon_trx ==== */

/* Group: xgpon_trx - key */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_trx_key_pon_ni = { .name = "pon_ni", .descr = "PON network interface", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_TRX_KEY_ID_PON_NI, .offset = offsetof(bcmolt_xgpon_trx_key, pon_ni), .type = &type_descr_uint8_t };
static bcmcli_prop_descr * BCM_DESCR xgpon_trx_key_prop_array[] = { &prop_descr_xgpon_trx_key_pon_ni };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_trx_key_fields[] = { { .name = "pon_ni", .descr = "PON network interface", .offset = offsetof(bcmolt_xgpon_trx_key, pon_ni), .type = &type_descr_uint8_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_trx_key = { .name = "bcmolt_xgpon_trx_key", .descr = "key", .size = sizeof(bcmolt_xgpon_trx_key), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_trx_key_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_trx_key_fields } } };

/* Group: xgpon_trx - cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_trx_cfg_burst_profile = { .name = "burst_profile", .descr = "burst profile", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_TRX_CFG_ID_BURST_PROFILE, .offset = offsetof(bcmolt_xgpon_trx_cfg_data, burst_profile), .type = &type_descr_bcmolt_arr_xgpon_burst_profile_4 };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_trx_cfg_transceiver_config = { .name = "transceiver_config", .descr = "transceiver config", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_TRX_CFG_ID_TRANSCEIVER_CONFIG, .offset = offsetof(bcmolt_xgpon_trx_cfg_data, transceiver_config), .type = &type_descr_bcmolt_arr_xgpon_trx_configuration_4 };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_trx_cfg_transceiver_type = { .name = "transceiver_type", .descr = "trx type", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_TRX_CFG_ID_TRANSCEIVER_TYPE, .offset = offsetof(bcmolt_xgpon_trx_cfg_data, transceiver_type), .type = &type_descr_bcmolt_xgpon_trx_type };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_trx_cfg_debug = { .name = "debug", .descr = "debug", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_TRX_CFG_ID_DEBUG, .offset = offsetof(bcmolt_xgpon_trx_cfg_data, debug), .type = &type_descr_bcmolt_xgpon_trx_debug };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_trx_cfg_rssi_normal_config = { .name = "rssi_normal_config", .descr = "rssi normal config", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_TRX_CFG_ID_RSSI_NORMAL_CONFIG, .offset = offsetof(bcmolt_xgpon_trx_cfg_data, rssi_normal_config), .type = &type_descr_bcmolt_xgpon_rssi_normal_config };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_trx_cfg_rssi_ranging_config = { .name = "rssi_ranging_config", .descr = "rssi ranging config", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_TRX_CFG_ID_RSSI_RANGING_CONFIG, .offset = offsetof(bcmolt_xgpon_trx_cfg_data, rssi_ranging_config), .type = &type_descr_bcmolt_xgpon_rssi_ranging_config };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_trx_cfg_serdes_configuration = { .name = "serdes_configuration", .descr = "serdes configuration", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_TRX_CFG_ID_SERDES_CONFIGURATION, .offset = offsetof(bcmolt_xgpon_trx_cfg_data, serdes_configuration), .type = &type_descr_bcmolt_xgpon_serdes_configuration };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_trx_cfg_burst_profile_delimiter_max_errors = { .name = "burst_profile_delimiter_max_errors", .descr = "burst profile delimiter max errors", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_TRX_CFG_ID_BURST_PROFILE_DELIMITER_MAX_ERRORS, .offset = offsetof(bcmolt_xgpon_trx_cfg_data, burst_profile_delimiter_max_errors), .type = &type_descr_bcmolt_arr_u8_4 };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_trx_cfg_ranging_sm_patterns_at_init = { .name = "ranging_sm_patterns_at_init", .descr = "Reset patterns used at Init of Ranging-Window and after Access", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_TRX_CFG_ID_RANGING_SM_PATTERNS_AT_INIT, .offset = offsetof(bcmolt_xgpon_trx_cfg_data, ranging_sm_patterns_at_init), .type = &type_descr_bcmolt_xgpon_rx_ranging_sm_pattern };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_trx_cfg_ranging_sm_patterns_ed_failure = { .name = "ranging_sm_patterns_ed_failure", .descr = "ranging sm patterns ED failure", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_TRX_CFG_ID_RANGING_SM_PATTERNS_ED_FAILURE, .offset = offsetof(bcmolt_xgpon_trx_cfg_data, ranging_sm_patterns_ed_failure), .type = &type_descr_bcmolt_xgpon_rx_ranging_sm_pattern };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_trx_cfg_reset_on_del_miss = { .name = "reset_on_del_miss", .descr = "reset on del miss", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_TRX_CFG_ID_RESET_ON_DEL_MISS, .offset = offsetof(bcmolt_xgpon_trx_cfg_data, reset_on_del_miss), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_trx_cfg_ed_state = { .name = "ed_state", .descr = "ed state", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_TRX_CFG_ID_ED_STATE, .offset = offsetof(bcmolt_xgpon_trx_cfg_data, ed_state), .type = &type_descr_bcmolt_xgpon_ed_state };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_trx_cfg_invert_ed = { .name = "invert_ed", .descr = "invert ED", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_TRX_CFG_ID_INVERT_ED, .offset = offsetof(bcmolt_xgpon_trx_cfg_data, invert_ed), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_trx_cfg_end_of_burst_reset = { .name = "end_of_burst_reset", .descr = "end of burst reset", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_TRX_CFG_ID_END_OF_BURST_RESET, .offset = offsetof(bcmolt_xgpon_trx_cfg_data, end_of_burst_reset), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr BCM_DESCR prop_descr_xgpon_trx_cfg_trx_rst_polarity = { .name = "trx_rst_polarity", .descr = "TRX reset polarity", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XGPON_TRX_CFG_ID_TRX_RST_POLARITY, .offset = offsetof(bcmolt_xgpon_trx_cfg_data, trx_rst_polarity), .type = &type_descr_bcmos_bool };
static bcmcli_prop_descr * BCM_DESCR xgpon_trx_cfg_prop_array[] = { &prop_descr_xgpon_trx_cfg_burst_profile, &prop_descr_xgpon_trx_cfg_transceiver_config, &prop_descr_xgpon_trx_cfg_transceiver_type, &prop_descr_xgpon_trx_cfg_debug, &prop_descr_xgpon_trx_cfg_rssi_normal_config, &prop_descr_xgpon_trx_cfg_rssi_ranging_config, &prop_descr_xgpon_trx_cfg_serdes_configuration, &prop_descr_xgpon_trx_cfg_burst_profile_delimiter_max_errors, &prop_descr_xgpon_trx_cfg_ranging_sm_patterns_at_init, &prop_descr_xgpon_trx_cfg_ranging_sm_patterns_ed_failure, &prop_descr_xgpon_trx_cfg_reset_on_del_miss, &prop_descr_xgpon_trx_cfg_ed_state, &prop_descr_xgpon_trx_cfg_invert_ed, &prop_descr_xgpon_trx_cfg_end_of_burst_reset, &prop_descr_xgpon_trx_cfg_trx_rst_polarity };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xgpon_trx_cfg_data_fields[] = { { .name = "burst_profile", .descr = "burst profile", .offset = offsetof(bcmolt_xgpon_trx_cfg_data, burst_profile), .type = &type_descr_bcmolt_arr_xgpon_burst_profile_4 }, { .name = "transceiver_config", .descr = "transceiver config", .offset = offsetof(bcmolt_xgpon_trx_cfg_data, transceiver_config), .type = &type_descr_bcmolt_arr_xgpon_trx_configuration_4 }, { .name = "transceiver_type", .descr = "trx type", .offset = offsetof(bcmolt_xgpon_trx_cfg_data, transceiver_type), .type = &type_descr_bcmolt_xgpon_trx_type }, { .name = "debug", .descr = "debug", .offset = offsetof(bcmolt_xgpon_trx_cfg_data, debug), .type = &type_descr_bcmolt_xgpon_trx_debug }, { .name = "rssi_normal_config", .descr = "rssi normal config", .offset = offsetof(bcmolt_xgpon_trx_cfg_data, rssi_normal_config), .type = &type_descr_bcmolt_xgpon_rssi_normal_config }, { .name = "rssi_ranging_config", .descr = "rssi ranging config", .offset = offsetof(bcmolt_xgpon_trx_cfg_data, rssi_ranging_config), .type = &type_descr_bcmolt_xgpon_rssi_ranging_config }, { .name = "serdes_configuration", .descr = "serdes configuration", .offset = offsetof(bcmolt_xgpon_trx_cfg_data, serdes_configuration), .type = &type_descr_bcmolt_xgpon_serdes_configuration }, { .name = "burst_profile_delimiter_max_errors", .descr = "burst profile delimiter max errors", .offset = offsetof(bcmolt_xgpon_trx_cfg_data, burst_profile_delimiter_max_errors), .type = &type_descr_bcmolt_arr_u8_4 }, { .name = "ranging_sm_patterns_at_init", .descr = "Reset patterns used at Init of Ranging-Window and after Access", .offset = offsetof(bcmolt_xgpon_trx_cfg_data, ranging_sm_patterns_at_init), .type = &type_descr_bcmolt_xgpon_rx_ranging_sm_pattern }, { .name = "ranging_sm_patterns_ed_failure", .descr = "ranging sm patterns ED failure", .offset = offsetof(bcmolt_xgpon_trx_cfg_data, ranging_sm_patterns_ed_failure), .type = &type_descr_bcmolt_xgpon_rx_ranging_sm_pattern }, { .name = "reset_on_del_miss", .descr = "reset on del miss", .offset = offsetof(bcmolt_xgpon_trx_cfg_data, reset_on_del_miss), .type = &type_descr_bcmos_bool }, { .name = "ed_state", .descr = "ed state", .offset = offsetof(bcmolt_xgpon_trx_cfg_data, ed_state), .type = &type_descr_bcmolt_xgpon_ed_state }, { .name = "invert_ed", .descr = "invert ED", .offset = offsetof(bcmolt_xgpon_trx_cfg_data, invert_ed), .type = &type_descr_bcmos_bool }, { .name = "end_of_burst_reset", .descr = "end of burst reset", .offset = offsetof(bcmolt_xgpon_trx_cfg_data, end_of_burst_reset), .type = &type_descr_bcmos_bool }, { .name = "trx_rst_polarity", .descr = "TRX reset polarity", .offset = offsetof(bcmolt_xgpon_trx_cfg_data, trx_rst_polarity), .type = &type_descr_bcmos_bool } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xgpon_trx_cfg_data = { .name = "bcmolt_xgpon_trx_cfg_data", .descr = "cfg", .size = sizeof(bcmolt_xgpon_trx_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xgpon_trx_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xgpon_trx_cfg_data_fields } } };

/* ==== Object: xpon_serdes ==== */

/* Group: xpon_serdes - key */
static bcmcli_prop_descr BCM_DESCR prop_descr_xpon_serdes_key_pon_ni = { .name = "pon_ni", .descr = "PON NI", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XPON_SERDES_KEY_ID_PON_NI, .offset = offsetof(bcmolt_xpon_serdes_key, pon_ni), .type = &type_descr_uint8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xpon_serdes_key_instance = { .name = "instance", .descr = "Instance", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XPON_SERDES_KEY_ID_INSTANCE, .offset = offsetof(bcmolt_xpon_serdes_key, instance), .type = &type_descr_bcmolt_serdes_instance };
static bcmcli_prop_descr * BCM_DESCR xpon_serdes_key_prop_array[] = { &prop_descr_xpon_serdes_key_pon_ni, &prop_descr_xpon_serdes_key_instance };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xpon_serdes_key_fields[] = { { .name = "pon_ni", .descr = "PON NI", .offset = offsetof(bcmolt_xpon_serdes_key, pon_ni), .type = &type_descr_uint8_t }, { .name = "instance", .descr = "Instance", .offset = offsetof(bcmolt_xpon_serdes_key, instance), .type = &type_descr_bcmolt_serdes_instance } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xpon_serdes_key = { .name = "bcmolt_xpon_serdes_key", .descr = "key", .size = sizeof(bcmolt_xpon_serdes_key), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xpon_serdes_key_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xpon_serdes_key_fields } } };

/* Group: xpon_serdes - cfg */
static bcmcli_prop_descr BCM_DESCR prop_descr_xpon_serdes_cfg_rx_vga = { .name = "rx_vga", .descr = "Rx Vga", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XPON_SERDES_CFG_ID_RX_VGA, .offset = offsetof(bcmolt_xpon_serdes_cfg_data, rx_vga), .type = &type_descr_uint8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xpon_serdes_cfg_rx_pf = { .name = "rx_pf", .descr = "Peaking Filter", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XPON_SERDES_CFG_ID_RX_PF, .offset = offsetof(bcmolt_xpon_serdes_cfg_data, rx_pf), .type = &type_descr_uint8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xpon_serdes_cfg_rx_lfpf = { .name = "rx_lfpf", .descr = "Low Frequency Peaking Filter", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XPON_SERDES_CFG_ID_RX_LFPF, .offset = offsetof(bcmolt_xpon_serdes_cfg_data, rx_lfpf), .type = &type_descr_uint8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xpon_serdes_cfg_rx_dfe1 = { .name = "rx_dfe1", .descr = "Rx DFE1", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XPON_SERDES_CFG_ID_RX_DFE1, .offset = offsetof(bcmolt_xpon_serdes_cfg_data, rx_dfe1), .type = &type_descr_uint8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xpon_serdes_cfg_rx_dfe2 = { .name = "rx_dfe2", .descr = "Rx DFE2", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XPON_SERDES_CFG_ID_RX_DFE2, .offset = offsetof(bcmolt_xpon_serdes_cfg_data, rx_dfe2), .type = &type_descr_int8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xpon_serdes_cfg_rx_dfe3 = { .name = "rx_dfe3", .descr = "Rx DFE3", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XPON_SERDES_CFG_ID_RX_DFE3, .offset = offsetof(bcmolt_xpon_serdes_cfg_data, rx_dfe3), .type = &type_descr_int8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xpon_serdes_cfg_rx_dfe4 = { .name = "rx_dfe4", .descr = "Rx DFE4", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XPON_SERDES_CFG_ID_RX_DFE4, .offset = offsetof(bcmolt_xpon_serdes_cfg_data, rx_dfe4), .type = &type_descr_int8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xpon_serdes_cfg_rx_dfe5 = { .name = "rx_dfe5", .descr = "Rx DFE5", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XPON_SERDES_CFG_ID_RX_DFE5, .offset = offsetof(bcmolt_xpon_serdes_cfg_data, rx_dfe5), .type = &type_descr_int8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xpon_serdes_cfg_tx_pre = { .name = "tx_pre", .descr = "Tx Pre", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XPON_SERDES_CFG_ID_TX_PRE, .offset = offsetof(bcmolt_xpon_serdes_cfg_data, tx_pre), .type = &type_descr_uint8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xpon_serdes_cfg_tx_main = { .name = "tx_main", .descr = "Tx Main", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XPON_SERDES_CFG_ID_TX_MAIN, .offset = offsetof(bcmolt_xpon_serdes_cfg_data, tx_main), .type = &type_descr_uint8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xpon_serdes_cfg_tx_post1 = { .name = "tx_post1", .descr = "Tx Post1", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XPON_SERDES_CFG_ID_TX_POST1, .offset = offsetof(bcmolt_xpon_serdes_cfg_data, tx_post1), .type = &type_descr_uint8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xpon_serdes_cfg_tx_post2 = { .name = "tx_post2", .descr = "Tx Post2", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XPON_SERDES_CFG_ID_TX_POST2, .offset = offsetof(bcmolt_xpon_serdes_cfg_data, tx_post2), .type = &type_descr_int8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xpon_serdes_cfg_tx_post3 = { .name = "tx_post3", .descr = "Tx Post3", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XPON_SERDES_CFG_ID_TX_POST3, .offset = offsetof(bcmolt_xpon_serdes_cfg_data, tx_post3), .type = &type_descr_int8_t };
static bcmcli_prop_descr BCM_DESCR prop_descr_xpon_serdes_cfg_tx_amp = { .name = "tx_amp", .descr = "Tx Amp", .access = BCMOLT_PROP_ACCESS_ID_RW, .property = BCMOLT_XPON_SERDES_CFG_ID_TX_AMP, .offset = offsetof(bcmolt_xpon_serdes_cfg_data, tx_amp), .type = &type_descr_uint8_t };
static bcmcli_prop_descr * BCM_DESCR xpon_serdes_cfg_prop_array[] = { &prop_descr_xpon_serdes_cfg_rx_vga, &prop_descr_xpon_serdes_cfg_rx_pf, &prop_descr_xpon_serdes_cfg_rx_lfpf, &prop_descr_xpon_serdes_cfg_rx_dfe1, &prop_descr_xpon_serdes_cfg_rx_dfe2, &prop_descr_xpon_serdes_cfg_rx_dfe3, &prop_descr_xpon_serdes_cfg_rx_dfe4, &prop_descr_xpon_serdes_cfg_rx_dfe5, &prop_descr_xpon_serdes_cfg_tx_pre, &prop_descr_xpon_serdes_cfg_tx_main, &prop_descr_xpon_serdes_cfg_tx_post1, &prop_descr_xpon_serdes_cfg_tx_post2, &prop_descr_xpon_serdes_cfg_tx_post3, &prop_descr_xpon_serdes_cfg_tx_amp };
static bcmcli_field_descr BCM_DESCR type_descr_bcmolt_xpon_serdes_cfg_data_fields[] = { { .name = "rx_vga", .descr = "Rx Vga", .offset = offsetof(bcmolt_xpon_serdes_cfg_data, rx_vga), .type = &type_descr_uint8_t }, { .name = "rx_pf", .descr = "Peaking Filter", .offset = offsetof(bcmolt_xpon_serdes_cfg_data, rx_pf), .type = &type_descr_uint8_t }, { .name = "rx_lfpf", .descr = "Low Frequency Peaking Filter", .offset = offsetof(bcmolt_xpon_serdes_cfg_data, rx_lfpf), .type = &type_descr_uint8_t }, { .name = "rx_dfe1", .descr = "Rx DFE1", .offset = offsetof(bcmolt_xpon_serdes_cfg_data, rx_dfe1), .type = &type_descr_uint8_t }, { .name = "rx_dfe2", .descr = "Rx DFE2", .offset = offsetof(bcmolt_xpon_serdes_cfg_data, rx_dfe2), .type = &type_descr_int8_t }, { .name = "rx_dfe3", .descr = "Rx DFE3", .offset = offsetof(bcmolt_xpon_serdes_cfg_data, rx_dfe3), .type = &type_descr_int8_t }, { .name = "rx_dfe4", .descr = "Rx DFE4", .offset = offsetof(bcmolt_xpon_serdes_cfg_data, rx_dfe4), .type = &type_descr_int8_t }, { .name = "rx_dfe5", .descr = "Rx DFE5", .offset = offsetof(bcmolt_xpon_serdes_cfg_data, rx_dfe5), .type = &type_descr_int8_t }, { .name = "tx_pre", .descr = "Tx Pre", .offset = offsetof(bcmolt_xpon_serdes_cfg_data, tx_pre), .type = &type_descr_uint8_t }, { .name = "tx_main", .descr = "Tx Main", .offset = offsetof(bcmolt_xpon_serdes_cfg_data, tx_main), .type = &type_descr_uint8_t }, { .name = "tx_post1", .descr = "Tx Post1", .offset = offsetof(bcmolt_xpon_serdes_cfg_data, tx_post1), .type = &type_descr_uint8_t }, { .name = "tx_post2", .descr = "Tx Post2", .offset = offsetof(bcmolt_xpon_serdes_cfg_data, tx_post2), .type = &type_descr_int8_t }, { .name = "tx_post3", .descr = "Tx Post3", .offset = offsetof(bcmolt_xpon_serdes_cfg_data, tx_post3), .type = &type_descr_int8_t }, { .name = "tx_amp", .descr = "Tx Amp", .offset = offsetof(bcmolt_xpon_serdes_cfg_data, tx_amp), .type = &type_descr_uint8_t } };
static bcmcli_type_descr BCM_DESCR type_descr_bcmolt_xpon_serdes_cfg_data = { .name = "bcmolt_xpon_serdes_cfg_data", .descr = "cfg", .size = sizeof(bcmolt_xpon_serdes_cfg_data), .base_type = BCMOLT_BASE_TYPE_ID_STRUCT, .x = { .s = { .num_fields = sizeof(type_descr_bcmolt_xpon_serdes_cfg_data_fields) / sizeof(bcmcli_field_descr), .fields = type_descr_bcmolt_xpon_serdes_cfg_data_fields } } };

/* ==== API Helper Function Implementations ==== */
bcmos_errno api_cli_object_struct_size(bcmolt_obj_id obj, bcmolt_mgt_group group, uint16_t subgroup, uint32_t *key_size, uint32_t *key_offset, uint32_t *data_size, uint32_t *data_offset)
{
    if (((key_size == NULL) || (key_offset == NULL)) || ((data_size == NULL) || (data_offset == NULL)))
    {
        return BCM_ERR_RANGE;
    }

    switch (obj)
    {
        case BCMOLT_OBJ_ID_AE_NI:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_ae_ni_key);
                            *key_offset = 0;
                            *data_size = sizeof(bcmolt_ae_ni_key);
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_ae_ni_key);
                            *key_offset = offsetof(bcmolt_ae_ni_cfg, key);
                            *data_size = sizeof(bcmolt_ae_ni_cfg_data);
                            *data_offset = offsetof(bcmolt_ae_ni_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_OPER:
                    switch (subgroup)
                    {
                        case BCMOLT_AE_NI_OPER_ID_SET_AE_NI_EN_STATE:
                            *key_size = sizeof(bcmolt_ae_ni_key);
                            *key_offset = offsetof(bcmolt_ae_ni_set_ae_ni_en_state, key);
                            *data_size = sizeof(bcmolt_ae_ni_set_ae_ni_en_state_data);
                            *data_offset = offsetof(bcmolt_ae_ni_set_ae_ni_en_state, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_AE_PATH_DS:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_ae_path_ds_key);
                            *key_offset = 0;
                            *data_size = sizeof(bcmolt_ae_path_ds_key);
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_ae_path_ds_key);
                            *key_offset = offsetof(bcmolt_ae_path_ds_stat, key);
                            *data_size = sizeof(bcmolt_ae_path_ds_stat_data);
                            *data_offset = offsetof(bcmolt_ae_path_ds_stat, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                        case 1:
                        case 2:
                        case 3:
                        case 4:
                        case 5:
                        case 6:
                        case 7:
                        case 8:
                        case 9:
                        case 10:
                        case 11:
                        case 12:
                        case 13:
                        case 14:
                        case 15:
                        case 16:
                            *key_size = sizeof(bcmolt_ae_path_ds_key);
                            *key_offset = offsetof(bcmolt_ae_path_ds_stat_cfg, key);
                            *data_size = sizeof(bcmolt_ae_path_ds_stat_cfg_data);
                            *data_offset = offsetof(bcmolt_ae_path_ds_stat_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_AE_PATH_DS_AUTO_ID_STAT_ALARM_RAISED:
                            *key_size = sizeof(bcmolt_ae_path_ds_key);
                            *key_offset = offsetof(bcmolt_ae_path_ds_stat_alarm_raised, key);
                            *data_size = sizeof(bcmolt_ae_path_ds_stat_alarm_raised_data);
                            *data_offset = offsetof(bcmolt_ae_path_ds_stat_alarm_raised, data);
                            return BCM_ERR_OK;
                        case BCMOLT_AE_PATH_DS_AUTO_ID_STAT_ALARM_CLEARED:
                            *key_size = sizeof(bcmolt_ae_path_ds_key);
                            *key_offset = offsetof(bcmolt_ae_path_ds_stat_alarm_cleared, key);
                            *data_size = sizeof(bcmolt_ae_path_ds_stat_alarm_cleared_data);
                            *data_offset = offsetof(bcmolt_ae_path_ds_stat_alarm_cleared, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_ae_path_ds_key);
                            *key_offset = offsetof(bcmolt_ae_path_ds_auto_cfg, key);
                            *data_size = sizeof(bcmolt_ae_path_ds_auto_cfg_data);
                            *data_offset = offsetof(bcmolt_ae_path_ds_auto_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_AE_PATH_US:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_ae_path_us_key);
                            *key_offset = 0;
                            *data_size = sizeof(bcmolt_ae_path_us_key);
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_ae_path_us_key);
                            *key_offset = offsetof(bcmolt_ae_path_us_stat, key);
                            *data_size = sizeof(bcmolt_ae_path_us_stat_data);
                            *data_offset = offsetof(bcmolt_ae_path_us_stat, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                        case 1:
                        case 2:
                        case 3:
                        case 4:
                        case 5:
                        case 6:
                        case 7:
                        case 8:
                        case 9:
                        case 10:
                        case 11:
                        case 12:
                        case 13:
                        case 14:
                        case 15:
                        case 16:
                        case 17:
                        case 18:
                        case 19:
                            *key_size = sizeof(bcmolt_ae_path_us_key);
                            *key_offset = offsetof(bcmolt_ae_path_us_stat_cfg, key);
                            *data_size = sizeof(bcmolt_ae_path_us_stat_cfg_data);
                            *data_offset = offsetof(bcmolt_ae_path_us_stat_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_AE_PATH_US_AUTO_ID_STAT_ALARM_RAISED:
                            *key_size = sizeof(bcmolt_ae_path_us_key);
                            *key_offset = offsetof(bcmolt_ae_path_us_stat_alarm_raised, key);
                            *data_size = sizeof(bcmolt_ae_path_us_stat_alarm_raised_data);
                            *data_offset = offsetof(bcmolt_ae_path_us_stat_alarm_raised, data);
                            return BCM_ERR_OK;
                        case BCMOLT_AE_PATH_US_AUTO_ID_STAT_ALARM_CLEARED:
                            *key_size = sizeof(bcmolt_ae_path_us_key);
                            *key_offset = offsetof(bcmolt_ae_path_us_stat_alarm_cleared, key);
                            *data_size = sizeof(bcmolt_ae_path_us_stat_alarm_cleared_data);
                            *data_offset = offsetof(bcmolt_ae_path_us_stat_alarm_cleared, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_ae_path_us_key);
                            *key_offset = offsetof(bcmolt_ae_path_us_auto_cfg, key);
                            *data_size = sizeof(bcmolt_ae_path_us_auto_cfg_data);
                            *data_offset = offsetof(bcmolt_ae_path_us_auto_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_CHANNEL:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_channel_key);
                            *key_offset = 0;
                            *data_size = sizeof(bcmolt_channel_key);
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_channel_key);
                            *key_offset = offsetof(bcmolt_channel_cfg, key);
                            *data_size = sizeof(bcmolt_channel_cfg_data);
                            *data_offset = offsetof(bcmolt_channel_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_DEBUG:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_debug_key);
                            *key_offset = 0;
                            *data_size = sizeof(bcmolt_debug_key);
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_debug_key);
                            *key_offset = offsetof(bcmolt_debug_cfg, key);
                            *data_size = sizeof(bcmolt_debug_cfg_data);
                            *data_offset = offsetof(bcmolt_debug_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_DEBUG_AUTO_ID_CLI_OUTPUT:
                            *key_size = sizeof(bcmolt_debug_key);
                            *key_offset = offsetof(bcmolt_debug_cli_output, key);
                            *data_size = sizeof(bcmolt_debug_cli_output_data);
                            *data_offset = offsetof(bcmolt_debug_cli_output, data);
                            return BCM_ERR_OK;
                        case BCMOLT_DEBUG_AUTO_ID_FILE_ALMOST_FULL:
                            *key_size = sizeof(bcmolt_debug_key);
                            *key_offset = offsetof(bcmolt_debug_file_almost_full, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_debug_key);
                            *key_offset = offsetof(bcmolt_debug_auto_cfg, key);
                            *data_size = sizeof(bcmolt_debug_auto_cfg_data);
                            *data_offset = offsetof(bcmolt_debug_auto_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_OPER:
                    switch (subgroup)
                    {
                        case BCMOLT_DEBUG_OPER_ID_CLI_INPUT:
                            *key_size = sizeof(bcmolt_debug_key);
                            *key_offset = offsetof(bcmolt_debug_cli_input, key);
                            *data_size = sizeof(bcmolt_debug_cli_input_data);
                            *data_offset = offsetof(bcmolt_debug_cli_input, data);
                            return BCM_ERR_OK;
                        case BCMOLT_DEBUG_OPER_ID_START_API_CAPTURE:
                            *key_size = sizeof(bcmolt_debug_key);
                            *key_offset = offsetof(bcmolt_debug_start_api_capture, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        case BCMOLT_DEBUG_OPER_ID_STOP_API_CAPTURE:
                            *key_size = sizeof(bcmolt_debug_key);
                            *key_offset = offsetof(bcmolt_debug_stop_api_capture, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        case BCMOLT_DEBUG_OPER_ID_RESET_API_CAPTURE:
                            *key_size = sizeof(bcmolt_debug_key);
                            *key_offset = offsetof(bcmolt_debug_reset_api_capture, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_DEVICE:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_device_key);
                            *key_offset = 0;
                            *data_size = sizeof(bcmolt_device_key);
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_device_key);
                            *key_offset = offsetof(bcmolt_device_cfg, key);
                            *data_size = sizeof(bcmolt_device_cfg_data);
                            *data_offset = offsetof(bcmolt_device_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_DEVICE_AUTO_ID_DEVICE_READY:
                            *key_size = sizeof(bcmolt_device_key);
                            *key_offset = offsetof(bcmolt_device_device_ready, key);
                            *data_size = sizeof(bcmolt_device_device_ready_data);
                            *data_offset = offsetof(bcmolt_device_device_ready, data);
                            return BCM_ERR_OK;
                        case BCMOLT_DEVICE_AUTO_ID_CONNECTION_ESTABLISHED:
                            *key_size = sizeof(bcmolt_device_key);
                            *key_offset = offsetof(bcmolt_device_connection_established, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        case BCMOLT_DEVICE_AUTO_ID_DEVICE_KEEP_ALIVE:
                            *key_size = sizeof(bcmolt_device_key);
                            *key_offset = offsetof(bcmolt_device_device_keep_alive, key);
                            *data_size = sizeof(bcmolt_device_device_keep_alive_data);
                            *data_offset = offsetof(bcmolt_device_device_keep_alive, data);
                            return BCM_ERR_OK;
                        case BCMOLT_DEVICE_AUTO_ID_CONNECTION_FAILURE:
                            *key_size = sizeof(bcmolt_device_key);
                            *key_offset = offsetof(bcmolt_device_connection_failure, key);
                            *data_size = sizeof(bcmolt_device_connection_failure_data);
                            *data_offset = offsetof(bcmolt_device_connection_failure, data);
                            return BCM_ERR_OK;
                        case BCMOLT_DEVICE_AUTO_ID_CONNECTION_COMPLETE:
                            *key_size = sizeof(bcmolt_device_key);
                            *key_offset = offsetof(bcmolt_device_connection_complete, key);
                            *data_size = sizeof(bcmolt_device_connection_complete_data);
                            *data_offset = offsetof(bcmolt_device_connection_complete, data);
                            return BCM_ERR_OK;
                        case BCMOLT_DEVICE_AUTO_ID_DISCONNECTION_COMPLETE:
                            *key_size = sizeof(bcmolt_device_key);
                            *key_offset = offsetof(bcmolt_device_disconnection_complete, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        case BCMOLT_DEVICE_AUTO_ID_SW_ERROR:
                            *key_size = sizeof(bcmolt_device_key);
                            *key_offset = offsetof(bcmolt_device_sw_error, key);
                            *data_size = sizeof(bcmolt_device_sw_error_data);
                            *data_offset = offsetof(bcmolt_device_sw_error, data);
                            return BCM_ERR_OK;
                        case BCMOLT_DEVICE_AUTO_ID_SW_EXCEPTION:
                            *key_size = sizeof(bcmolt_device_key);
                            *key_offset = offsetof(bcmolt_device_sw_exception, key);
                            *data_size = sizeof(bcmolt_device_sw_exception_data);
                            *data_offset = offsetof(bcmolt_device_sw_exception, data);
                            return BCM_ERR_OK;
                        case BCMOLT_DEVICE_AUTO_ID_INDICATIONS_DROPPED:
                            *key_size = sizeof(bcmolt_device_key);
                            *key_offset = offsetof(bcmolt_device_indications_dropped, key);
                            *data_size = sizeof(bcmolt_device_indications_dropped_data);
                            *data_offset = offsetof(bcmolt_device_indications_dropped, data);
                            return BCM_ERR_OK;
                        case BCMOLT_DEVICE_AUTO_ID_IMAGE_TRANSFER_COMPLETE:
                            *key_size = sizeof(bcmolt_device_key);
                            *key_offset = offsetof(bcmolt_device_image_transfer_complete, key);
                            *data_size = sizeof(bcmolt_device_image_transfer_complete_data);
                            *data_offset = offsetof(bcmolt_device_image_transfer_complete, data);
                            return BCM_ERR_OK;
                        case BCMOLT_DEVICE_AUTO_ID_DDR_TEST_COMPLETE:
                            *key_size = sizeof(bcmolt_device_key);
                            *key_offset = offsetof(bcmolt_device_ddr_test_complete, key);
                            *data_size = sizeof(bcmolt_device_ddr_test_complete_data);
                            *data_offset = offsetof(bcmolt_device_ddr_test_complete, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_device_key);
                            *key_offset = offsetof(bcmolt_device_auto_cfg, key);
                            *data_size = sizeof(bcmolt_device_auto_cfg_data);
                            *data_offset = offsetof(bcmolt_device_auto_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_OPER:
                    switch (subgroup)
                    {
                        case BCMOLT_DEVICE_OPER_ID_CONNECT:
                            *key_size = sizeof(bcmolt_device_key);
                            *key_offset = offsetof(bcmolt_device_connect, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        case BCMOLT_DEVICE_OPER_ID_DISCONNECT:
                            *key_size = sizeof(bcmolt_device_key);
                            *key_offset = offsetof(bcmolt_device_disconnect, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        case BCMOLT_DEVICE_OPER_ID_RESET:
                            *key_size = sizeof(bcmolt_device_key);
                            *key_offset = offsetof(bcmolt_device_reset, key);
                            *data_size = sizeof(bcmolt_device_reset_data);
                            *data_offset = offsetof(bcmolt_device_reset, data);
                            return BCM_ERR_OK;
                        case BCMOLT_DEVICE_OPER_ID_HOST_KEEP_ALIVE:
                            *key_size = sizeof(bcmolt_device_key);
                            *key_offset = offsetof(bcmolt_device_host_keep_alive, key);
                            *data_size = sizeof(bcmolt_device_host_keep_alive_data);
                            *data_offset = offsetof(bcmolt_device_host_keep_alive, data);
                            return BCM_ERR_OK;
                        case BCMOLT_DEVICE_OPER_ID_SW_UPGRADE_ACTIVATE:
                            *key_size = sizeof(bcmolt_device_key);
                            *key_offset = offsetof(bcmolt_device_sw_upgrade_activate, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        case BCMOLT_DEVICE_OPER_ID_IMAGE_TRANSFER_START:
                            *key_size = sizeof(bcmolt_device_key);
                            *key_offset = offsetof(bcmolt_device_image_transfer_start, key);
                            *data_size = sizeof(bcmolt_device_image_transfer_start_data);
                            *data_offset = offsetof(bcmolt_device_image_transfer_start, data);
                            return BCM_ERR_OK;
                        case BCMOLT_DEVICE_OPER_ID_IMAGE_TRANSFER_DATA:
                            *key_size = sizeof(bcmolt_device_key);
                            *key_offset = offsetof(bcmolt_device_image_transfer_data, key);
                            *data_size = sizeof(bcmolt_device_image_transfer_data_data);
                            *data_offset = offsetof(bcmolt_device_image_transfer_data, data);
                            return BCM_ERR_OK;
                        case BCMOLT_DEVICE_OPER_ID_RUN_DDR_TEST:
                            *key_size = sizeof(bcmolt_device_key);
                            *key_offset = offsetof(bcmolt_device_run_ddr_test, key);
                            *data_size = sizeof(bcmolt_device_run_ddr_test_data);
                            *data_offset = offsetof(bcmolt_device_run_ddr_test, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_EPON_DENIED_LINK:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_epon_denied_link_key);
                            *key_offset = 0;
                            *data_size = sizeof(bcmolt_epon_denied_link_key);
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_epon_denied_link_key);
                            *key_offset = offsetof(bcmolt_epon_denied_link_cfg, key);
                            *data_size = sizeof(bcmolt_epon_denied_link_cfg_data);
                            *data_offset = offsetof(bcmolt_epon_denied_link_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_EPON_DENIED_LINK_AUTO_ID_UNKNOWN_LINK_VIOLATION:
                            *key_size = sizeof(bcmolt_epon_denied_link_key);
                            *key_offset = offsetof(bcmolt_epon_denied_link_unknown_link_violation, key);
                            *data_size = sizeof(bcmolt_epon_denied_link_unknown_link_violation_data);
                            *data_offset = offsetof(bcmolt_epon_denied_link_unknown_link_violation, data);
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_DENIED_LINK_AUTO_ID_OVERHEAD_PROFILE_VIOLATION:
                            *key_size = sizeof(bcmolt_epon_denied_link_key);
                            *key_offset = offsetof(bcmolt_epon_denied_link_overhead_profile_violation, key);
                            *data_size = sizeof(bcmolt_epon_denied_link_overhead_profile_violation_data);
                            *data_offset = offsetof(bcmolt_epon_denied_link_overhead_profile_violation, data);
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_DENIED_LINK_AUTO_ID_LASER_ON_OFF_VIOLATION:
                            *key_size = sizeof(bcmolt_epon_denied_link_key);
                            *key_offset = offsetof(bcmolt_epon_denied_link_laser_on_off_violation, key);
                            *data_size = sizeof(bcmolt_epon_denied_link_laser_on_off_violation_data);
                            *data_offset = offsetof(bcmolt_epon_denied_link_laser_on_off_violation, data);
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_DENIED_LINK_AUTO_ID_MAX_LINK_VIOLATION:
                            *key_size = sizeof(bcmolt_epon_denied_link_key);
                            *key_offset = offsetof(bcmolt_epon_denied_link_max_link_violation, key);
                            *data_size = sizeof(bcmolt_epon_denied_link_max_link_violation_data);
                            *data_offset = offsetof(bcmolt_epon_denied_link_max_link_violation, data);
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_DENIED_LINK_AUTO_ID_LLID_POOL_EMPTY_VIOLATION:
                            *key_size = sizeof(bcmolt_epon_denied_link_key);
                            *key_offset = offsetof(bcmolt_epon_denied_link_llid_pool_empty_violation, key);
                            *data_size = sizeof(bcmolt_epon_denied_link_llid_pool_empty_violation_data);
                            *data_offset = offsetof(bcmolt_epon_denied_link_llid_pool_empty_violation, data);
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_DENIED_LINK_AUTO_ID_SYSTEM_RESOURCE_VIOLATION:
                            *key_size = sizeof(bcmolt_epon_denied_link_key);
                            *key_offset = offsetof(bcmolt_epon_denied_link_system_resource_violation, key);
                            *data_size = sizeof(bcmolt_epon_denied_link_system_resource_violation_data);
                            *data_offset = offsetof(bcmolt_epon_denied_link_system_resource_violation, data);
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_DENIED_LINK_AUTO_ID_RANGE_VIOLATION:
                            *key_size = sizeof(bcmolt_epon_denied_link_key);
                            *key_offset = offsetof(bcmolt_epon_denied_link_range_violation, key);
                            *data_size = sizeof(bcmolt_epon_denied_link_range_violation_data);
                            *data_offset = offsetof(bcmolt_epon_denied_link_range_violation, data);
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_DENIED_LINK_AUTO_ID_TDM_CHANNELS_EXHAUSTED:
                            *key_size = sizeof(bcmolt_epon_denied_link_key);
                            *key_offset = offsetof(bcmolt_epon_denied_link_tdm_channels_exhausted, key);
                            *data_size = sizeof(bcmolt_epon_denied_link_tdm_channels_exhausted_data);
                            *data_offset = offsetof(bcmolt_epon_denied_link_tdm_channels_exhausted, data);
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_DENIED_LINK_AUTO_ID_ROGUE_VIOLATION:
                            *key_size = sizeof(bcmolt_epon_denied_link_key);
                            *key_offset = offsetof(bcmolt_epon_denied_link_rogue_violation, key);
                            *data_size = sizeof(bcmolt_epon_denied_link_rogue_violation_data);
                            *data_offset = offsetof(bcmolt_epon_denied_link_rogue_violation, data);
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_DENIED_LINK_AUTO_ID_UPSTREAM_BANDWIDTH_VIOLATION:
                            *key_size = sizeof(bcmolt_epon_denied_link_key);
                            *key_offset = offsetof(bcmolt_epon_denied_link_upstream_bandwidth_violation, key);
                            *data_size = sizeof(bcmolt_epon_denied_link_upstream_bandwidth_violation_data);
                            *data_offset = offsetof(bcmolt_epon_denied_link_upstream_bandwidth_violation, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_epon_denied_link_key);
                            *key_offset = offsetof(bcmolt_epon_denied_link_auto_cfg, key);
                            *data_size = sizeof(bcmolt_epon_denied_link_auto_cfg_data);
                            *data_offset = offsetof(bcmolt_epon_denied_link_auto_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_EPON_LINK:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_epon_link_key);
                            *key_offset = 0;
                            *data_size = sizeof(bcmolt_epon_link_key);
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_epon_link_key);
                            *key_offset = offsetof(bcmolt_epon_link_cfg, key);
                            *data_size = sizeof(bcmolt_epon_link_cfg_data);
                            *data_offset = offsetof(bcmolt_epon_link_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_epon_link_key);
                            *key_offset = offsetof(bcmolt_epon_link_stat, key);
                            *data_size = sizeof(bcmolt_epon_link_stat_data);
                            *data_offset = offsetof(bcmolt_epon_link_stat, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                        case 1:
                        case 2:
                        case 3:
                        case 4:
                        case 5:
                        case 6:
                        case 7:
                        case 8:
                        case 9:
                        case 10:
                        case 11:
                        case 12:
                        case 13:
                        case 14:
                        case 15:
                        case 16:
                        case 17:
                        case 18:
                        case 19:
                        case 20:
                        case 21:
                        case 22:
                        case 23:
                        case 24:
                        case 25:
                        case 26:
                        case 27:
                        case 28:
                        case 29:
                        case 30:
                        case 31:
                        case 32:
                        case 33:
                        case 34:
                        case 35:
                        case 36:
                        case 37:
                        case 38:
                        case 39:
                        case 40:
                        case 41:
                        case 42:
                            *key_size = sizeof(bcmolt_epon_link_key);
                            *key_offset = offsetof(bcmolt_epon_link_stat_cfg, key);
                            *data_size = sizeof(bcmolt_epon_link_stat_cfg_data);
                            *data_offset = offsetof(bcmolt_epon_link_stat_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_EPON_LINK_AUTO_ID_KEY_EXCHANGE_FAILURE:
                            *key_size = sizeof(bcmolt_epon_link_key);
                            *key_offset = offsetof(bcmolt_epon_link_key_exchange_failure, key);
                            *data_size = sizeof(bcmolt_epon_link_key_exchange_failure_data);
                            *data_offset = offsetof(bcmolt_epon_link_key_exchange_failure, data);
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_LINK_AUTO_ID_ENCRYPTION_ENABLED:
                            *key_size = sizeof(bcmolt_epon_link_key);
                            *key_offset = offsetof(bcmolt_epon_link_encryption_enabled, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_LINK_AUTO_ID_MPCP_REG_ACK_TIMEOUT:
                            *key_size = sizeof(bcmolt_epon_link_key);
                            *key_offset = offsetof(bcmolt_epon_link_mpcp_reg_ack_timeout, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_LINK_AUTO_ID_RANGE_VALUE_CHANGED:
                            *key_size = sizeof(bcmolt_epon_link_key);
                            *key_offset = offsetof(bcmolt_epon_link_range_value_changed, key);
                            *data_size = sizeof(bcmolt_epon_link_range_value_changed_data);
                            *data_offset = offsetof(bcmolt_epon_link_range_value_changed, data);
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_LINK_AUTO_ID_PROTECTION_SWITCH_OCCURRED:
                            *key_size = sizeof(bcmolt_epon_link_key);
                            *key_offset = offsetof(bcmolt_epon_link_protection_switch_occurred, key);
                            *data_size = sizeof(bcmolt_epon_link_protection_switch_occurred_data);
                            *data_offset = offsetof(bcmolt_epon_link_protection_switch_occurred, data);
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_LINK_AUTO_ID_DUPLICATE_MPCP_REGISTRATION_REQUEST:
                            *key_size = sizeof(bcmolt_epon_link_key);
                            *key_offset = offsetof(bcmolt_epon_link_duplicate_mpcp_registration_request, key);
                            *data_size = sizeof(bcmolt_epon_link_duplicate_mpcp_registration_request_data);
                            *data_offset = offsetof(bcmolt_epon_link_duplicate_mpcp_registration_request, data);
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_LINK_AUTO_ID_LINK_SPEED_MISMATCH:
                            *key_size = sizeof(bcmolt_epon_link_key);
                            *key_offset = offsetof(bcmolt_epon_link_link_speed_mismatch, key);
                            *data_size = sizeof(bcmolt_epon_link_link_speed_mismatch_data);
                            *data_offset = offsetof(bcmolt_epon_link_link_speed_mismatch, data);
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_LINK_AUTO_ID_MPCP_REPORT_TIMEOUT:
                            *key_size = sizeof(bcmolt_epon_link_key);
                            *key_offset = offsetof(bcmolt_epon_link_mpcp_report_timeout, key);
                            *data_size = sizeof(bcmolt_epon_link_mpcp_report_timeout_data);
                            *data_offset = offsetof(bcmolt_epon_link_mpcp_report_timeout, data);
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_LINK_AUTO_ID_OAM_KEEPALIVE_TIMEOUT:
                            *key_size = sizeof(bcmolt_epon_link_key);
                            *key_offset = offsetof(bcmolt_epon_link_oam_keepalive_timeout, key);
                            *data_size = sizeof(bcmolt_epon_link_oam_keepalive_timeout_data);
                            *data_offset = offsetof(bcmolt_epon_link_oam_keepalive_timeout, data);
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_LINK_AUTO_ID_MPCP_DISCOVERED:
                            *key_size = sizeof(bcmolt_epon_link_key);
                            *key_offset = offsetof(bcmolt_epon_link_mpcp_discovered, key);
                            *data_size = sizeof(bcmolt_epon_link_mpcp_discovered_data);
                            *data_offset = offsetof(bcmolt_epon_link_mpcp_discovered, data);
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_LINK_AUTO_ID_MPCP_DEREGISTERED:
                            *key_size = sizeof(bcmolt_epon_link_key);
                            *key_offset = offsetof(bcmolt_epon_link_mpcp_deregistered, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_LINK_AUTO_ID_PREPROVISIONED_LINK_CREATED:
                            *key_size = sizeof(bcmolt_epon_link_key);
                            *key_offset = offsetof(bcmolt_epon_link_preprovisioned_link_created, key);
                            *data_size = sizeof(bcmolt_epon_link_preprovisioned_link_created_data);
                            *data_offset = offsetof(bcmolt_epon_link_preprovisioned_link_created, data);
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_LINK_AUTO_ID_OAM_KEEPALIVE_TIMER_STARTED:
                            *key_size = sizeof(bcmolt_epon_link_key);
                            *key_offset = offsetof(bcmolt_epon_link_oam_keepalive_timer_started, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_LINK_AUTO_ID_OAM_KEEPALIVE_TIMER_STOPPED:
                            *key_size = sizeof(bcmolt_epon_link_key);
                            *key_offset = offsetof(bcmolt_epon_link_oam_keepalive_timer_stopped, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_LINK_AUTO_ID_KEY_EXCHANGE_STARTED:
                            *key_size = sizeof(bcmolt_epon_link_key);
                            *key_offset = offsetof(bcmolt_epon_link_key_exchange_started, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_LINK_AUTO_ID_KEY_EXCHANGE_STOPPED:
                            *key_size = sizeof(bcmolt_epon_link_key);
                            *key_offset = offsetof(bcmolt_epon_link_key_exchange_stopped, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_LINK_AUTO_ID_STATIC_REGISTRATION_DONE:
                            *key_size = sizeof(bcmolt_epon_link_key);
                            *key_offset = offsetof(bcmolt_epon_link_static_registration_done, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_LINK_AUTO_ID_RERANGE_FAILURE:
                            *key_size = sizeof(bcmolt_epon_link_key);
                            *key_offset = offsetof(bcmolt_epon_link_rerange_failure, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_LINK_AUTO_ID_LINK_DELETED:
                            *key_size = sizeof(bcmolt_epon_link_key);
                            *key_offset = offsetof(bcmolt_epon_link_link_deleted, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_LINK_AUTO_ID_STAT_ALARM_RAISED:
                            *key_size = sizeof(bcmolt_epon_link_key);
                            *key_offset = offsetof(bcmolt_epon_link_stat_alarm_raised, key);
                            *data_size = sizeof(bcmolt_epon_link_stat_alarm_raised_data);
                            *data_offset = offsetof(bcmolt_epon_link_stat_alarm_raised, data);
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_LINK_AUTO_ID_STAT_ALARM_CLEARED:
                            *key_size = sizeof(bcmolt_epon_link_key);
                            *key_offset = offsetof(bcmolt_epon_link_stat_alarm_cleared, key);
                            *data_size = sizeof(bcmolt_epon_link_stat_alarm_cleared_data);
                            *data_offset = offsetof(bcmolt_epon_link_stat_alarm_cleared, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_epon_link_key);
                            *key_offset = offsetof(bcmolt_epon_link_auto_cfg, key);
                            *data_size = sizeof(bcmolt_epon_link_auto_cfg_data);
                            *data_offset = offsetof(bcmolt_epon_link_auto_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_OPER:
                    switch (subgroup)
                    {
                        case BCMOLT_EPON_LINK_OPER_ID_FORCE_REDISCOVERY:
                            *key_size = sizeof(bcmolt_epon_link_key);
                            *key_offset = offsetof(bcmolt_epon_link_force_rediscovery, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_LINK_OPER_ID_DELETE_LINK:
                            *key_size = sizeof(bcmolt_epon_link_key);
                            *key_offset = offsetof(bcmolt_epon_link_delete_link, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_LINK_OPER_ID_OAM_KEEPALIVE_TIMER_START:
                            *key_size = sizeof(bcmolt_epon_link_key);
                            *key_offset = offsetof(bcmolt_epon_link_oam_keepalive_timer_start, key);
                            *data_size = sizeof(bcmolt_epon_link_oam_keepalive_timer_start_data);
                            *data_offset = offsetof(bcmolt_epon_link_oam_keepalive_timer_start, data);
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_LINK_OPER_ID_OAM_KEEPALIVE_TIMER_STOP:
                            *key_size = sizeof(bcmolt_epon_link_key);
                            *key_offset = offsetof(bcmolt_epon_link_oam_keepalive_timer_stop, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_LINK_OPER_ID_KEY_EXCHANGE_START:
                            *key_size = sizeof(bcmolt_epon_link_key);
                            *key_offset = offsetof(bcmolt_epon_link_key_exchange_start, key);
                            *data_size = sizeof(bcmolt_epon_link_key_exchange_start_data);
                            *data_offset = offsetof(bcmolt_epon_link_key_exchange_start, data);
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_LINK_OPER_ID_KEY_EXCHANGE_STOP:
                            *key_size = sizeof(bcmolt_epon_link_key);
                            *key_offset = offsetof(bcmolt_epon_link_key_exchange_stop, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_LINK_OPER_ID_STATIC_REGISTRATION:
                            *key_size = sizeof(bcmolt_epon_link_key);
                            *key_offset = offsetof(bcmolt_epon_link_static_registration, key);
                            *data_size = sizeof(bcmolt_epon_link_static_registration_data);
                            *data_offset = offsetof(bcmolt_epon_link_static_registration, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_PROXY:
                    switch (subgroup)
                    {
                        case BCMOLT_EPON_LINK_PROXY_ID_INJECT_FRAME:
                            *key_size = sizeof(bcmolt_epon_link_key);
                            *key_offset = offsetof(bcmolt_epon_link_inject_frame, key);
                            *data_size = sizeof(bcmolt_epon_link_inject_frame_data);
                            *data_offset = offsetof(bcmolt_epon_link_inject_frame, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_PROXY_RX:
                    switch (subgroup)
                    {
                        case BCMOLT_EPON_LINK_PROXY_RX_ID_FRAME_CAPTURED:
                            *key_size = sizeof(bcmolt_epon_link_key);
                            *key_offset = offsetof(bcmolt_epon_link_frame_captured, key);
                            *data_size = sizeof(bcmolt_epon_link_frame_captured_data);
                            *data_offset = offsetof(bcmolt_epon_link_frame_captured, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_EPON_NI:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_epon_ni_key);
                            *key_offset = 0;
                            *data_size = sizeof(bcmolt_epon_ni_key);
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_epon_ni_key);
                            *key_offset = offsetof(bcmolt_epon_ni_cfg, key);
                            *data_size = sizeof(bcmolt_epon_ni_cfg_data);
                            *data_offset = offsetof(bcmolt_epon_ni_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_EPON_NI_AUTO_ID_NO_REPORTS:
                            *key_size = sizeof(bcmolt_epon_ni_key);
                            *key_offset = offsetof(bcmolt_epon_ni_no_reports, key);
                            *data_size = sizeof(bcmolt_epon_ni_no_reports_data);
                            *data_offset = offsetof(bcmolt_epon_ni_no_reports, data);
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_NI_AUTO_ID_LLID_QUARANTINED:
                            *key_size = sizeof(bcmolt_epon_ni_key);
                            *key_offset = offsetof(bcmolt_epon_ni_llid_quarantined, key);
                            *data_size = sizeof(bcmolt_epon_ni_llid_quarantined_data);
                            *data_offset = offsetof(bcmolt_epon_ni_llid_quarantined, data);
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_NI_AUTO_ID_STATE_CHANGE_COMPLETED:
                            *key_size = sizeof(bcmolt_epon_ni_key);
                            *key_offset = offsetof(bcmolt_epon_ni_state_change_completed, key);
                            *data_size = sizeof(bcmolt_epon_ni_state_change_completed_data);
                            *data_offset = offsetof(bcmolt_epon_ni_state_change_completed, data);
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_NI_AUTO_ID_RERANGE_FAILURE:
                            *key_size = sizeof(bcmolt_epon_ni_key);
                            *key_offset = offsetof(bcmolt_epon_ni_rerange_failure, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_NI_AUTO_ID_RSSI_MEASUREMENT_COMPLETED:
                            *key_size = sizeof(bcmolt_epon_ni_key);
                            *key_offset = offsetof(bcmolt_epon_ni_rssi_measurement_completed, key);
                            *data_size = sizeof(bcmolt_epon_ni_rssi_measurement_completed_data);
                            *data_offset = offsetof(bcmolt_epon_ni_rssi_measurement_completed, data);
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_NI_AUTO_ID_ONU_UPGRADE_COMPLETE:
                            *key_size = sizeof(bcmolt_epon_ni_key);
                            *key_offset = offsetof(bcmolt_epon_ni_onu_upgrade_complete, key);
                            *data_size = sizeof(bcmolt_epon_ni_onu_upgrade_complete_data);
                            *data_offset = offsetof(bcmolt_epon_ni_onu_upgrade_complete, data);
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_NI_AUTO_ID_ROGUE_SCAN_COMPLETE:
                            *key_size = sizeof(bcmolt_epon_ni_key);
                            *key_offset = offsetof(bcmolt_epon_ni_rogue_scan_complete, key);
                            *data_size = sizeof(bcmolt_epon_ni_rogue_scan_complete_data);
                            *data_offset = offsetof(bcmolt_epon_ni_rogue_scan_complete, data);
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_NI_AUTO_ID_MPCP_TIMESTAMP_CHANGED:
                            *key_size = sizeof(bcmolt_epon_ni_key);
                            *key_offset = offsetof(bcmolt_epon_ni_mpcp_timestamp_changed, key);
                            *data_size = sizeof(bcmolt_epon_ni_mpcp_timestamp_changed_data);
                            *data_offset = offsetof(bcmolt_epon_ni_mpcp_timestamp_changed, data);
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_NI_AUTO_ID_AUTO_ROGUE_SCAN_1G_FAILURE:
                            *key_size = sizeof(bcmolt_epon_ni_key);
                            *key_offset = offsetof(bcmolt_epon_ni_auto_rogue_scan_1g_failure, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_NI_AUTO_ID_AUTO_ROGUE_SCAN_10G_FAILURE:
                            *key_size = sizeof(bcmolt_epon_ni_key);
                            *key_offset = offsetof(bcmolt_epon_ni_auto_rogue_scan_10g_failure, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_epon_ni_key);
                            *key_offset = offsetof(bcmolt_epon_ni_auto_cfg, key);
                            *data_size = sizeof(bcmolt_epon_ni_auto_cfg_data);
                            *data_offset = offsetof(bcmolt_epon_ni_auto_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_OPER:
                    switch (subgroup)
                    {
                        case BCMOLT_EPON_NI_OPER_ID_SET_EPON_NI_EN_STATE:
                            *key_size = sizeof(bcmolt_epon_ni_key);
                            *key_offset = offsetof(bcmolt_epon_ni_set_epon_ni_en_state, key);
                            *data_size = sizeof(bcmolt_epon_ni_set_epon_ni_en_state_data);
                            *data_offset = offsetof(bcmolt_epon_ni_set_epon_ni_en_state, data);
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_NI_OPER_ID_ISSUE_RSSI_GRANT:
                            *key_size = sizeof(bcmolt_epon_ni_key);
                            *key_offset = offsetof(bcmolt_epon_ni_issue_rssi_grant, key);
                            *data_size = sizeof(bcmolt_epon_ni_issue_rssi_grant_data);
                            *data_offset = offsetof(bcmolt_epon_ni_issue_rssi_grant, data);
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_NI_OPER_ID_ADD_LINK:
                            *key_size = sizeof(bcmolt_epon_ni_key);
                            *key_offset = offsetof(bcmolt_epon_ni_add_link, key);
                            *data_size = sizeof(bcmolt_epon_ni_add_link_data);
                            *data_offset = offsetof(bcmolt_epon_ni_add_link, data);
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_NI_OPER_ID_ADD_MULTICAST_LINK:
                            *key_size = sizeof(bcmolt_epon_ni_key);
                            *key_offset = offsetof(bcmolt_epon_ni_add_multicast_link, key);
                            *data_size = sizeof(bcmolt_epon_ni_add_multicast_link_data);
                            *data_offset = offsetof(bcmolt_epon_ni_add_multicast_link, data);
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_NI_OPER_ID_ADD_PROTECTED_STANDBY_LINK:
                            *key_size = sizeof(bcmolt_epon_ni_key);
                            *key_offset = offsetof(bcmolt_epon_ni_add_protected_standby_link, key);
                            *data_size = sizeof(bcmolt_epon_ni_add_protected_standby_link_data);
                            *data_offset = offsetof(bcmolt_epon_ni_add_protected_standby_link, data);
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_NI_OPER_ID_PROTECTION_SWITCHING_APPLY_RERANGE_DELTA:
                            *key_size = sizeof(bcmolt_epon_ni_key);
                            *key_offset = offsetof(bcmolt_epon_ni_protection_switching_apply_rerange_delta, key);
                            *data_size = sizeof(bcmolt_epon_ni_protection_switching_apply_rerange_delta_data);
                            *data_offset = offsetof(bcmolt_epon_ni_protection_switching_apply_rerange_delta, data);
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_NI_OPER_ID_ROGUE_LLID_SCAN:
                            *key_size = sizeof(bcmolt_epon_ni_key);
                            *key_offset = offsetof(bcmolt_epon_ni_rogue_llid_scan, key);
                            *data_size = sizeof(bcmolt_epon_ni_rogue_llid_scan_data);
                            *data_offset = offsetof(bcmolt_epon_ni_rogue_llid_scan, data);
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_NI_OPER_ID_START_ONU_UPGRADE:
                            *key_size = sizeof(bcmolt_epon_ni_key);
                            *key_offset = offsetof(bcmolt_epon_ni_start_onu_upgrade, key);
                            *data_size = sizeof(bcmolt_epon_ni_start_onu_upgrade_data);
                            *data_offset = offsetof(bcmolt_epon_ni_start_onu_upgrade, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_EPON_ONU_10G_US:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_epon_onu_10g_us_key);
                            *key_offset = 0;
                            *data_size = sizeof(bcmolt_epon_onu_10g_us_key);
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_epon_onu_10g_us_key);
                            *key_offset = offsetof(bcmolt_epon_onu_10g_us_cfg, key);
                            *data_size = sizeof(bcmolt_epon_onu_10g_us_cfg_data);
                            *data_offset = offsetof(bcmolt_epon_onu_10g_us_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_epon_onu_10g_us_key);
                            *key_offset = offsetof(bcmolt_epon_onu_10g_us_stat, key);
                            *data_size = sizeof(bcmolt_epon_onu_10g_us_stat_data);
                            *data_offset = offsetof(bcmolt_epon_onu_10g_us_stat, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                        case 1:
                        case 2:
                        case 3:
                            *key_size = sizeof(bcmolt_epon_onu_10g_us_key);
                            *key_offset = offsetof(bcmolt_epon_onu_10g_us_stat_cfg, key);
                            *data_size = sizeof(bcmolt_epon_onu_10g_us_stat_cfg_data);
                            *data_offset = offsetof(bcmolt_epon_onu_10g_us_stat_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_EPON_ONU_10G_US_AUTO_ID_STAT_ALARM_RAISED:
                            *key_size = sizeof(bcmolt_epon_onu_10g_us_key);
                            *key_offset = offsetof(bcmolt_epon_onu_10g_us_stat_alarm_raised, key);
                            *data_size = sizeof(bcmolt_epon_onu_10g_us_stat_alarm_raised_data);
                            *data_offset = offsetof(bcmolt_epon_onu_10g_us_stat_alarm_raised, data);
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_ONU_10G_US_AUTO_ID_STAT_ALARM_CLEARED:
                            *key_size = sizeof(bcmolt_epon_onu_10g_us_key);
                            *key_offset = offsetof(bcmolt_epon_onu_10g_us_stat_alarm_cleared, key);
                            *data_size = sizeof(bcmolt_epon_onu_10g_us_stat_alarm_cleared_data);
                            *data_offset = offsetof(bcmolt_epon_onu_10g_us_stat_alarm_cleared, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_epon_onu_10g_us_key);
                            *key_offset = offsetof(bcmolt_epon_onu_10g_us_auto_cfg, key);
                            *data_size = sizeof(bcmolt_epon_onu_10g_us_auto_cfg_data);
                            *data_offset = offsetof(bcmolt_epon_onu_10g_us_auto_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_EPON_ONU_1G_US:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_epon_onu_1g_us_key);
                            *key_offset = 0;
                            *data_size = sizeof(bcmolt_epon_onu_1g_us_key);
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_epon_onu_1g_us_key);
                            *key_offset = offsetof(bcmolt_epon_onu_1g_us_cfg, key);
                            *data_size = sizeof(bcmolt_epon_onu_1g_us_cfg_data);
                            *data_offset = offsetof(bcmolt_epon_onu_1g_us_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_epon_onu_1g_us_key);
                            *key_offset = offsetof(bcmolt_epon_onu_1g_us_stat, key);
                            *data_size = sizeof(bcmolt_epon_onu_1g_us_stat_data);
                            *data_offset = offsetof(bcmolt_epon_onu_1g_us_stat, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                        case 1:
                        case 2:
                        case 3:
                        case 4:
                        case 5:
                        case 6:
                        case 7:
                        case 8:
                        case 9:
                        case 10:
                        case 11:
                        case 12:
                        case 13:
                        case 14:
                        case 15:
                            *key_size = sizeof(bcmolt_epon_onu_1g_us_key);
                            *key_offset = offsetof(bcmolt_epon_onu_1g_us_stat_cfg, key);
                            *data_size = sizeof(bcmolt_epon_onu_1g_us_stat_cfg_data);
                            *data_offset = offsetof(bcmolt_epon_onu_1g_us_stat_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_EPON_ONU_1G_US_AUTO_ID_STAT_ALARM_RAISED:
                            *key_size = sizeof(bcmolt_epon_onu_1g_us_key);
                            *key_offset = offsetof(bcmolt_epon_onu_1g_us_stat_alarm_raised, key);
                            *data_size = sizeof(bcmolt_epon_onu_1g_us_stat_alarm_raised_data);
                            *data_offset = offsetof(bcmolt_epon_onu_1g_us_stat_alarm_raised, data);
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_ONU_1G_US_AUTO_ID_STAT_ALARM_CLEARED:
                            *key_size = sizeof(bcmolt_epon_onu_1g_us_key);
                            *key_offset = offsetof(bcmolt_epon_onu_1g_us_stat_alarm_cleared, key);
                            *data_size = sizeof(bcmolt_epon_onu_1g_us_stat_alarm_cleared_data);
                            *data_offset = offsetof(bcmolt_epon_onu_1g_us_stat_alarm_cleared, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_epon_onu_1g_us_key);
                            *key_offset = offsetof(bcmolt_epon_onu_1g_us_auto_cfg, key);
                            *data_size = sizeof(bcmolt_epon_onu_1g_us_auto_cfg_data);
                            *data_offset = offsetof(bcmolt_epon_onu_1g_us_auto_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_EPON_PATH_10G_DS:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_epon_path_10g_ds_key);
                            *key_offset = 0;
                            *data_size = sizeof(bcmolt_epon_path_10g_ds_key);
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_epon_path_10g_ds_key);
                            *key_offset = offsetof(bcmolt_epon_path_10g_ds_cfg, key);
                            *data_size = sizeof(bcmolt_epon_path_10g_ds_cfg_data);
                            *data_offset = offsetof(bcmolt_epon_path_10g_ds_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_epon_path_10g_ds_key);
                            *key_offset = offsetof(bcmolt_epon_path_10g_ds_stat, key);
                            *data_size = sizeof(bcmolt_epon_path_10g_ds_stat_data);
                            *data_offset = offsetof(bcmolt_epon_path_10g_ds_stat, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                        case 1:
                        case 2:
                        case 3:
                        case 4:
                        case 5:
                        case 6:
                        case 7:
                        case 8:
                        case 9:
                        case 10:
                        case 11:
                        case 12:
                        case 13:
                        case 14:
                        case 15:
                        case 16:
                        case 17:
                        case 18:
                        case 19:
                        case 20:
                            *key_size = sizeof(bcmolt_epon_path_10g_ds_key);
                            *key_offset = offsetof(bcmolt_epon_path_10g_ds_stat_cfg, key);
                            *data_size = sizeof(bcmolt_epon_path_10g_ds_stat_cfg_data);
                            *data_offset = offsetof(bcmolt_epon_path_10g_ds_stat_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_EPON_PATH_10G_DS_AUTO_ID_STAT_ALARM_RAISED:
                            *key_size = sizeof(bcmolt_epon_path_10g_ds_key);
                            *key_offset = offsetof(bcmolt_epon_path_10g_ds_stat_alarm_raised, key);
                            *data_size = sizeof(bcmolt_epon_path_10g_ds_stat_alarm_raised_data);
                            *data_offset = offsetof(bcmolt_epon_path_10g_ds_stat_alarm_raised, data);
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_PATH_10G_DS_AUTO_ID_STAT_ALARM_CLEARED:
                            *key_size = sizeof(bcmolt_epon_path_10g_ds_key);
                            *key_offset = offsetof(bcmolt_epon_path_10g_ds_stat_alarm_cleared, key);
                            *data_size = sizeof(bcmolt_epon_path_10g_ds_stat_alarm_cleared_data);
                            *data_offset = offsetof(bcmolt_epon_path_10g_ds_stat_alarm_cleared, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_epon_path_10g_ds_key);
                            *key_offset = offsetof(bcmolt_epon_path_10g_ds_auto_cfg, key);
                            *data_size = sizeof(bcmolt_epon_path_10g_ds_auto_cfg_data);
                            *data_offset = offsetof(bcmolt_epon_path_10g_ds_auto_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_EPON_PATH_10G_US:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_epon_path_10g_us_key);
                            *key_offset = 0;
                            *data_size = sizeof(bcmolt_epon_path_10g_us_key);
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_epon_path_10g_us_key);
                            *key_offset = offsetof(bcmolt_epon_path_10g_us_cfg, key);
                            *data_size = sizeof(bcmolt_epon_path_10g_us_cfg_data);
                            *data_offset = offsetof(bcmolt_epon_path_10g_us_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_epon_path_10g_us_key);
                            *key_offset = offsetof(bcmolt_epon_path_10g_us_stat, key);
                            *data_size = sizeof(bcmolt_epon_path_10g_us_stat_data);
                            *data_offset = offsetof(bcmolt_epon_path_10g_us_stat, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                        case 1:
                        case 2:
                        case 3:
                        case 4:
                        case 5:
                        case 6:
                        case 7:
                        case 8:
                        case 9:
                        case 10:
                        case 11:
                        case 12:
                        case 13:
                        case 14:
                        case 15:
                        case 16:
                        case 17:
                        case 18:
                        case 19:
                        case 20:
                        case 21:
                        case 22:
                        case 23:
                        case 24:
                        case 25:
                            *key_size = sizeof(bcmolt_epon_path_10g_us_key);
                            *key_offset = offsetof(bcmolt_epon_path_10g_us_stat_cfg, key);
                            *data_size = sizeof(bcmolt_epon_path_10g_us_stat_cfg_data);
                            *data_offset = offsetof(bcmolt_epon_path_10g_us_stat_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_EPON_PATH_10G_US_AUTO_ID_STAT_ALARM_RAISED:
                            *key_size = sizeof(bcmolt_epon_path_10g_us_key);
                            *key_offset = offsetof(bcmolt_epon_path_10g_us_stat_alarm_raised, key);
                            *data_size = sizeof(bcmolt_epon_path_10g_us_stat_alarm_raised_data);
                            *data_offset = offsetof(bcmolt_epon_path_10g_us_stat_alarm_raised, data);
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_PATH_10G_US_AUTO_ID_STAT_ALARM_CLEARED:
                            *key_size = sizeof(bcmolt_epon_path_10g_us_key);
                            *key_offset = offsetof(bcmolt_epon_path_10g_us_stat_alarm_cleared, key);
                            *data_size = sizeof(bcmolt_epon_path_10g_us_stat_alarm_cleared_data);
                            *data_offset = offsetof(bcmolt_epon_path_10g_us_stat_alarm_cleared, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_epon_path_10g_us_key);
                            *key_offset = offsetof(bcmolt_epon_path_10g_us_auto_cfg, key);
                            *data_size = sizeof(bcmolt_epon_path_10g_us_auto_cfg_data);
                            *data_offset = offsetof(bcmolt_epon_path_10g_us_auto_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_EPON_PATH_1G_DS:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_epon_path_1g_ds_key);
                            *key_offset = 0;
                            *data_size = sizeof(bcmolt_epon_path_1g_ds_key);
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_epon_path_1g_ds_key);
                            *key_offset = offsetof(bcmolt_epon_path_1g_ds_cfg, key);
                            *data_size = sizeof(bcmolt_epon_path_1g_ds_cfg_data);
                            *data_offset = offsetof(bcmolt_epon_path_1g_ds_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_epon_path_1g_ds_key);
                            *key_offset = offsetof(bcmolt_epon_path_1g_ds_stat, key);
                            *data_size = sizeof(bcmolt_epon_path_1g_ds_stat_data);
                            *data_offset = offsetof(bcmolt_epon_path_1g_ds_stat, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                        case 1:
                        case 2:
                        case 3:
                        case 4:
                        case 5:
                        case 6:
                        case 7:
                        case 8:
                        case 9:
                        case 10:
                        case 11:
                        case 12:
                        case 13:
                        case 14:
                        case 15:
                        case 16:
                        case 17:
                        case 18:
                        case 19:
                        case 20:
                            *key_size = sizeof(bcmolt_epon_path_1g_ds_key);
                            *key_offset = offsetof(bcmolt_epon_path_1g_ds_stat_cfg, key);
                            *data_size = sizeof(bcmolt_epon_path_1g_ds_stat_cfg_data);
                            *data_offset = offsetof(bcmolt_epon_path_1g_ds_stat_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_EPON_PATH_1G_DS_AUTO_ID_STAT_ALARM_RAISED:
                            *key_size = sizeof(bcmolt_epon_path_1g_ds_key);
                            *key_offset = offsetof(bcmolt_epon_path_1g_ds_stat_alarm_raised, key);
                            *data_size = sizeof(bcmolt_epon_path_1g_ds_stat_alarm_raised_data);
                            *data_offset = offsetof(bcmolt_epon_path_1g_ds_stat_alarm_raised, data);
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_PATH_1G_DS_AUTO_ID_STAT_ALARM_CLEARED:
                            *key_size = sizeof(bcmolt_epon_path_1g_ds_key);
                            *key_offset = offsetof(bcmolt_epon_path_1g_ds_stat_alarm_cleared, key);
                            *data_size = sizeof(bcmolt_epon_path_1g_ds_stat_alarm_cleared_data);
                            *data_offset = offsetof(bcmolt_epon_path_1g_ds_stat_alarm_cleared, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_epon_path_1g_ds_key);
                            *key_offset = offsetof(bcmolt_epon_path_1g_ds_auto_cfg, key);
                            *data_size = sizeof(bcmolt_epon_path_1g_ds_auto_cfg_data);
                            *data_offset = offsetof(bcmolt_epon_path_1g_ds_auto_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_EPON_PATH_1G_US:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_epon_path_1g_us_key);
                            *key_offset = 0;
                            *data_size = sizeof(bcmolt_epon_path_1g_us_key);
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_epon_path_1g_us_key);
                            *key_offset = offsetof(bcmolt_epon_path_1g_us_cfg, key);
                            *data_size = sizeof(bcmolt_epon_path_1g_us_cfg_data);
                            *data_offset = offsetof(bcmolt_epon_path_1g_us_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_epon_path_1g_us_key);
                            *key_offset = offsetof(bcmolt_epon_path_1g_us_stat, key);
                            *data_size = sizeof(bcmolt_epon_path_1g_us_stat_data);
                            *data_offset = offsetof(bcmolt_epon_path_1g_us_stat, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                        case 1:
                        case 2:
                        case 3:
                        case 4:
                        case 5:
                        case 6:
                        case 7:
                        case 8:
                        case 9:
                        case 10:
                        case 11:
                        case 12:
                        case 13:
                        case 14:
                        case 15:
                        case 16:
                        case 17:
                        case 18:
                        case 19:
                        case 20:
                        case 21:
                        case 22:
                        case 23:
                        case 24:
                        case 25:
                            *key_size = sizeof(bcmolt_epon_path_1g_us_key);
                            *key_offset = offsetof(bcmolt_epon_path_1g_us_stat_cfg, key);
                            *data_size = sizeof(bcmolt_epon_path_1g_us_stat_cfg_data);
                            *data_offset = offsetof(bcmolt_epon_path_1g_us_stat_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_EPON_PATH_1G_US_AUTO_ID_STAT_ALARM_RAISED:
                            *key_size = sizeof(bcmolt_epon_path_1g_us_key);
                            *key_offset = offsetof(bcmolt_epon_path_1g_us_stat_alarm_raised, key);
                            *data_size = sizeof(bcmolt_epon_path_1g_us_stat_alarm_raised_data);
                            *data_offset = offsetof(bcmolt_epon_path_1g_us_stat_alarm_raised, data);
                            return BCM_ERR_OK;
                        case BCMOLT_EPON_PATH_1G_US_AUTO_ID_STAT_ALARM_CLEARED:
                            *key_size = sizeof(bcmolt_epon_path_1g_us_key);
                            *key_offset = offsetof(bcmolt_epon_path_1g_us_stat_alarm_cleared, key);
                            *data_size = sizeof(bcmolt_epon_path_1g_us_stat_alarm_cleared_data);
                            *data_offset = offsetof(bcmolt_epon_path_1g_us_stat_alarm_cleared, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_epon_path_1g_us_key);
                            *key_offset = offsetof(bcmolt_epon_path_1g_us_auto_cfg, key);
                            *data_size = sizeof(bcmolt_epon_path_1g_us_auto_cfg_data);
                            *data_offset = offsetof(bcmolt_epon_path_1g_us_auto_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_EPON_RP:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_epon_rp_key);
                            *key_offset = 0;
                            *data_size = sizeof(bcmolt_epon_rp_key);
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_epon_rp_key);
                            *key_offset = offsetof(bcmolt_epon_rp_cfg, key);
                            *data_size = sizeof(bcmolt_epon_rp_cfg_data);
                            *data_offset = offsetof(bcmolt_epon_rp_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_GPIO:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_gpio_key);
                            *key_offset = 0;
                            *data_size = sizeof(bcmolt_gpio_key);
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_gpio_key);
                            *key_offset = offsetof(bcmolt_gpio_cfg, key);
                            *data_size = sizeof(bcmolt_gpio_cfg_data);
                            *data_offset = offsetof(bcmolt_gpio_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_GPON_ALLOC:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_gpon_alloc_key);
                            *key_offset = 0;
                            *data_size = sizeof(bcmolt_gpon_alloc_key);
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_gpon_alloc_key);
                            *key_offset = offsetof(bcmolt_gpon_alloc_cfg, key);
                            *data_size = sizeof(bcmolt_gpon_alloc_cfg_data);
                            *data_offset = offsetof(bcmolt_gpon_alloc_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_gpon_alloc_key);
                            *key_offset = offsetof(bcmolt_gpon_alloc_stat, key);
                            *data_size = sizeof(bcmolt_gpon_alloc_stat_data);
                            *data_offset = offsetof(bcmolt_gpon_alloc_stat, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_gpon_alloc_key);
                            *key_offset = offsetof(bcmolt_gpon_alloc_stat_cfg, key);
                            *data_size = sizeof(bcmolt_gpon_alloc_stat_cfg_data);
                            *data_offset = offsetof(bcmolt_gpon_alloc_stat_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_GPON_ALLOC_AUTO_ID_CONFIGURATION_COMPLETED:
                            *key_size = sizeof(bcmolt_gpon_alloc_key);
                            *key_offset = offsetof(bcmolt_gpon_alloc_configuration_completed, key);
                            *data_size = sizeof(bcmolt_gpon_alloc_configuration_completed_data);
                            *data_offset = offsetof(bcmolt_gpon_alloc_configuration_completed, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ALLOC_AUTO_ID_GET_ALLOC_STATS_COMPLETED:
                            *key_size = sizeof(bcmolt_gpon_alloc_key);
                            *key_offset = offsetof(bcmolt_gpon_alloc_get_alloc_stats_completed, key);
                            *data_size = sizeof(bcmolt_gpon_alloc_get_alloc_stats_completed_data);
                            *data_offset = offsetof(bcmolt_gpon_alloc_get_alloc_stats_completed, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ALLOC_AUTO_ID_STAT_ALARM_RAISED:
                            *key_size = sizeof(bcmolt_gpon_alloc_key);
                            *key_offset = offsetof(bcmolt_gpon_alloc_stat_alarm_raised, key);
                            *data_size = sizeof(bcmolt_gpon_alloc_stat_alarm_raised_data);
                            *data_offset = offsetof(bcmolt_gpon_alloc_stat_alarm_raised, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ALLOC_AUTO_ID_STAT_ALARM_CLEARED:
                            *key_size = sizeof(bcmolt_gpon_alloc_key);
                            *key_offset = offsetof(bcmolt_gpon_alloc_stat_alarm_cleared, key);
                            *data_size = sizeof(bcmolt_gpon_alloc_stat_alarm_cleared_data);
                            *data_offset = offsetof(bcmolt_gpon_alloc_stat_alarm_cleared, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_gpon_alloc_key);
                            *key_offset = offsetof(bcmolt_gpon_alloc_auto_cfg, key);
                            *data_size = sizeof(bcmolt_gpon_alloc_auto_cfg_data);
                            *data_offset = offsetof(bcmolt_gpon_alloc_auto_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_OPER:
                    switch (subgroup)
                    {
                        case BCMOLT_GPON_ALLOC_OPER_ID_SET_STATE:
                            *key_size = sizeof(bcmolt_gpon_alloc_key);
                            *key_offset = offsetof(bcmolt_gpon_alloc_set_state, key);
                            *data_size = sizeof(bcmolt_gpon_alloc_set_state_data);
                            *data_offset = offsetof(bcmolt_gpon_alloc_set_state, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ALLOC_OPER_ID_GET_STATS:
                            *key_size = sizeof(bcmolt_gpon_alloc_key);
                            *key_offset = offsetof(bcmolt_gpon_alloc_get_stats, key);
                            *data_size = sizeof(bcmolt_gpon_alloc_get_stats_data);
                            *data_offset = offsetof(bcmolt_gpon_alloc_get_stats, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_GPON_GEM_PORT:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_gpon_gem_port_key);
                            *key_offset = 0;
                            *data_size = sizeof(bcmolt_gpon_gem_port_key);
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_gpon_gem_port_key);
                            *key_offset = offsetof(bcmolt_gpon_gem_port_cfg, key);
                            *data_size = sizeof(bcmolt_gpon_gem_port_cfg_data);
                            *data_offset = offsetof(bcmolt_gpon_gem_port_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_gpon_gem_port_key);
                            *key_offset = offsetof(bcmolt_gpon_gem_port_stat, key);
                            *data_size = sizeof(bcmolt_gpon_gem_port_stat_data);
                            *data_offset = offsetof(bcmolt_gpon_gem_port_stat, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                        case 1:
                        case 2:
                        case 3:
                            *key_size = sizeof(bcmolt_gpon_gem_port_key);
                            *key_offset = offsetof(bcmolt_gpon_gem_port_stat_cfg, key);
                            *data_size = sizeof(bcmolt_gpon_gem_port_stat_cfg_data);
                            *data_offset = offsetof(bcmolt_gpon_gem_port_stat_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_GPON_GEM_PORT_AUTO_ID_CONFIGURATION_COMPLETED:
                            *key_size = sizeof(bcmolt_gpon_gem_port_key);
                            *key_offset = offsetof(bcmolt_gpon_gem_port_configuration_completed, key);
                            *data_size = sizeof(bcmolt_gpon_gem_port_configuration_completed_data);
                            *data_offset = offsetof(bcmolt_gpon_gem_port_configuration_completed, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_GEM_PORT_AUTO_ID_STAT_ALARM_RAISED:
                            *key_size = sizeof(bcmolt_gpon_gem_port_key);
                            *key_offset = offsetof(bcmolt_gpon_gem_port_stat_alarm_raised, key);
                            *data_size = sizeof(bcmolt_gpon_gem_port_stat_alarm_raised_data);
                            *data_offset = offsetof(bcmolt_gpon_gem_port_stat_alarm_raised, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_GEM_PORT_AUTO_ID_STAT_ALARM_CLEARED:
                            *key_size = sizeof(bcmolt_gpon_gem_port_key);
                            *key_offset = offsetof(bcmolt_gpon_gem_port_stat_alarm_cleared, key);
                            *data_size = sizeof(bcmolt_gpon_gem_port_stat_alarm_cleared_data);
                            *data_offset = offsetof(bcmolt_gpon_gem_port_stat_alarm_cleared, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_gpon_gem_port_key);
                            *key_offset = offsetof(bcmolt_gpon_gem_port_auto_cfg, key);
                            *data_size = sizeof(bcmolt_gpon_gem_port_auto_cfg_data);
                            *data_offset = offsetof(bcmolt_gpon_gem_port_auto_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_OPER:
                    switch (subgroup)
                    {
                        case BCMOLT_GPON_GEM_PORT_OPER_ID_SET_STATE:
                            *key_size = sizeof(bcmolt_gpon_gem_port_key);
                            *key_offset = offsetof(bcmolt_gpon_gem_port_set_state, key);
                            *data_size = sizeof(bcmolt_gpon_gem_port_set_state_data);
                            *data_offset = offsetof(bcmolt_gpon_gem_port_set_state, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_GPON_IWF:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_gpon_iwf_key);
                            *key_offset = 0;
                            *data_size = sizeof(bcmolt_gpon_iwf_key);
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_gpon_iwf_key);
                            *key_offset = offsetof(bcmolt_gpon_iwf_cfg, key);
                            *data_size = sizeof(bcmolt_gpon_iwf_cfg_data);
                            *data_offset = offsetof(bcmolt_gpon_iwf_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_gpon_iwf_key);
                            *key_offset = offsetof(bcmolt_gpon_iwf_stat, key);
                            *data_size = sizeof(bcmolt_gpon_iwf_stat_data);
                            *data_offset = offsetof(bcmolt_gpon_iwf_stat, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                        case 1:
                        case 2:
                        case 3:
                        case 4:
                        case 5:
                        case 6:
                        case 7:
                            *key_size = sizeof(bcmolt_gpon_iwf_key);
                            *key_offset = offsetof(bcmolt_gpon_iwf_stat_cfg, key);
                            *data_size = sizeof(bcmolt_gpon_iwf_stat_cfg_data);
                            *data_offset = offsetof(bcmolt_gpon_iwf_stat_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_GPON_IWF_AUTO_ID_FLUSH_MAC_TABLE_COMPLETED:
                            *key_size = sizeof(bcmolt_gpon_iwf_key);
                            *key_offset = offsetof(bcmolt_gpon_iwf_flush_mac_table_completed, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_IWF_AUTO_ID_SCAN_MAC_TABLE_COMPLETED:
                            *key_size = sizeof(bcmolt_gpon_iwf_key);
                            *key_offset = offsetof(bcmolt_gpon_iwf_scan_mac_table_completed, key);
                            *data_size = sizeof(bcmolt_gpon_iwf_scan_mac_table_completed_data);
                            *data_offset = offsetof(bcmolt_gpon_iwf_scan_mac_table_completed, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_IWF_AUTO_ID_STAT_ALARM_RAISED:
                            *key_size = sizeof(bcmolt_gpon_iwf_key);
                            *key_offset = offsetof(bcmolt_gpon_iwf_stat_alarm_raised, key);
                            *data_size = sizeof(bcmolt_gpon_iwf_stat_alarm_raised_data);
                            *data_offset = offsetof(bcmolt_gpon_iwf_stat_alarm_raised, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_IWF_AUTO_ID_STAT_ALARM_CLEARED:
                            *key_size = sizeof(bcmolt_gpon_iwf_key);
                            *key_offset = offsetof(bcmolt_gpon_iwf_stat_alarm_cleared, key);
                            *data_size = sizeof(bcmolt_gpon_iwf_stat_alarm_cleared_data);
                            *data_offset = offsetof(bcmolt_gpon_iwf_stat_alarm_cleared, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_gpon_iwf_key);
                            *key_offset = offsetof(bcmolt_gpon_iwf_auto_cfg, key);
                            *data_size = sizeof(bcmolt_gpon_iwf_auto_cfg_data);
                            *data_offset = offsetof(bcmolt_gpon_iwf_auto_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_OPER:
                    switch (subgroup)
                    {
                        case BCMOLT_GPON_IWF_OPER_ID_FLUSH_MAC_TABLE:
                            *key_size = sizeof(bcmolt_gpon_iwf_key);
                            *key_offset = offsetof(bcmolt_gpon_iwf_flush_mac_table, key);
                            *data_size = sizeof(bcmolt_gpon_iwf_flush_mac_table_data);
                            *data_offset = offsetof(bcmolt_gpon_iwf_flush_mac_table, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_IWF_OPER_ID_SCAN_MAC_TABLE:
                            *key_size = sizeof(bcmolt_gpon_iwf_key);
                            *key_offset = offsetof(bcmolt_gpon_iwf_scan_mac_table, key);
                            *data_size = sizeof(bcmolt_gpon_iwf_scan_mac_table_data);
                            *data_offset = offsetof(bcmolt_gpon_iwf_scan_mac_table, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_GPON_IWF_DS_EGRESS_FLOW:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_gpon_iwf_ds_egress_flow_key);
                            *key_offset = 0;
                            *data_size = sizeof(bcmolt_gpon_iwf_ds_egress_flow_key);
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_gpon_iwf_ds_egress_flow_key);
                            *key_offset = offsetof(bcmolt_gpon_iwf_ds_egress_flow_cfg, key);
                            *data_size = sizeof(bcmolt_gpon_iwf_ds_egress_flow_cfg_data);
                            *data_offset = offsetof(bcmolt_gpon_iwf_ds_egress_flow_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_GPON_IWF_DS_INGRESS_FLOW:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_gpon_iwf_ds_ingress_flow_key);
                            *key_offset = 0;
                            *data_size = sizeof(bcmolt_gpon_iwf_ds_ingress_flow_key);
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_gpon_iwf_ds_ingress_flow_key);
                            *key_offset = offsetof(bcmolt_gpon_iwf_ds_ingress_flow_cfg, key);
                            *data_size = sizeof(bcmolt_gpon_iwf_ds_ingress_flow_cfg_data);
                            *data_offset = offsetof(bcmolt_gpon_iwf_ds_ingress_flow_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_GPON_IWF_MAC_TABLE:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_gpon_iwf_mac_table_key);
                            *key_offset = 0;
                            *data_size = sizeof(bcmolt_gpon_iwf_mac_table_key);
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_gpon_iwf_mac_table_key);
                            *key_offset = offsetof(bcmolt_gpon_iwf_mac_table_cfg, key);
                            *data_size = sizeof(bcmolt_gpon_iwf_mac_table_cfg_data);
                            *data_offset = offsetof(bcmolt_gpon_iwf_mac_table_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_GPON_IWF_MAC_TABLE_AUTO_ID_NEW_MAC:
                            *key_size = sizeof(bcmolt_gpon_iwf_mac_table_key);
                            *key_offset = offsetof(bcmolt_gpon_iwf_mac_table_new_mac, key);
                            *data_size = sizeof(bcmolt_gpon_iwf_mac_table_new_mac_data);
                            *data_offset = offsetof(bcmolt_gpon_iwf_mac_table_new_mac, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_IWF_MAC_TABLE_AUTO_ID_MAC_AGED:
                            *key_size = sizeof(bcmolt_gpon_iwf_mac_table_key);
                            *key_offset = offsetof(bcmolt_gpon_iwf_mac_table_mac_aged, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_IWF_MAC_TABLE_AUTO_ID_MAC_MOVE:
                            *key_size = sizeof(bcmolt_gpon_iwf_mac_table_key);
                            *key_offset = offsetof(bcmolt_gpon_iwf_mac_table_mac_move, key);
                            *data_size = sizeof(bcmolt_gpon_iwf_mac_table_mac_move_data);
                            *data_offset = offsetof(bcmolt_gpon_iwf_mac_table_mac_move, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_IWF_MAC_TABLE_AUTO_ID_MAC_DROPPED:
                            *key_size = sizeof(bcmolt_gpon_iwf_mac_table_key);
                            *key_offset = offsetof(bcmolt_gpon_iwf_mac_table_mac_dropped, key);
                            *data_size = sizeof(bcmolt_gpon_iwf_mac_table_mac_dropped_data);
                            *data_offset = offsetof(bcmolt_gpon_iwf_mac_table_mac_dropped, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_gpon_iwf_mac_table_key);
                            *key_offset = offsetof(bcmolt_gpon_iwf_mac_table_auto_cfg, key);
                            *data_size = sizeof(bcmolt_gpon_iwf_mac_table_auto_cfg_data);
                            *data_offset = offsetof(bcmolt_gpon_iwf_mac_table_auto_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_GPON_IWF_US_FLOW:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_gpon_iwf_us_flow_key);
                            *key_offset = 0;
                            *data_size = sizeof(bcmolt_gpon_iwf_us_flow_key);
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_gpon_iwf_us_flow_key);
                            *key_offset = offsetof(bcmolt_gpon_iwf_us_flow_cfg, key);
                            *data_size = sizeof(bcmolt_gpon_iwf_us_flow_cfg_data);
                            *data_offset = offsetof(bcmolt_gpon_iwf_us_flow_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_GPON_NI:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_gpon_ni_key);
                            *key_offset = 0;
                            *data_size = sizeof(bcmolt_gpon_ni_key);
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_gpon_ni_key);
                            *key_offset = offsetof(bcmolt_gpon_ni_cfg, key);
                            *data_size = sizeof(bcmolt_gpon_ni_cfg_data);
                            *data_offset = offsetof(bcmolt_gpon_ni_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_gpon_ni_key);
                            *key_offset = offsetof(bcmolt_gpon_ni_stat, key);
                            *data_size = sizeof(bcmolt_gpon_ni_stat_data);
                            *data_offset = offsetof(bcmolt_gpon_ni_stat, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                        case 1:
                        case 2:
                        case 3:
                        case 4:
                        case 5:
                        case 6:
                        case 7:
                        case 8:
                        case 9:
                        case 10:
                        case 11:
                        case 12:
                        case 13:
                        case 14:
                        case 15:
                        case 16:
                        case 17:
                        case 18:
                        case 19:
                        case 20:
                        case 21:
                        case 22:
                        case 23:
                        case 24:
                        case 25:
                        case 26:
                        case 27:
                        case 28:
                        case 29:
                        case 30:
                        case 31:
                        case 32:
                        case 33:
                            *key_size = sizeof(bcmolt_gpon_ni_key);
                            *key_offset = offsetof(bcmolt_gpon_ni_stat_cfg, key);
                            *data_size = sizeof(bcmolt_gpon_ni_stat_cfg_data);
                            *data_offset = offsetof(bcmolt_gpon_ni_stat_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_GPON_NI_AUTO_ID_STATE_CHANGE_COMPLETED:
                            *key_size = sizeof(bcmolt_gpon_ni_key);
                            *key_offset = offsetof(bcmolt_gpon_ni_state_change_completed, key);
                            *data_size = sizeof(bcmolt_gpon_ni_state_change_completed_data);
                            *data_offset = offsetof(bcmolt_gpon_ni_state_change_completed, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_NI_AUTO_ID_LOS:
                            *key_size = sizeof(bcmolt_gpon_ni_key);
                            *key_offset = offsetof(bcmolt_gpon_ni_los, key);
                            *data_size = sizeof(bcmolt_gpon_ni_los_data);
                            *data_offset = offsetof(bcmolt_gpon_ni_los, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_NI_AUTO_ID_SERIAL_NUMBER_ACQUISITION_CYCLE_START:
                            *key_size = sizeof(bcmolt_gpon_ni_key);
                            *key_offset = offsetof(bcmolt_gpon_ni_serial_number_acquisition_cycle_start, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_NI_AUTO_ID_PROTECTION_SWITCHING_TRAFFIC_RESUME:
                            *key_size = sizeof(bcmolt_gpon_ni_key);
                            *key_offset = offsetof(bcmolt_gpon_ni_protection_switching_traffic_resume, key);
                            *data_size = sizeof(bcmolt_gpon_ni_protection_switching_traffic_resume_data);
                            *data_offset = offsetof(bcmolt_gpon_ni_protection_switching_traffic_resume, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_NI_AUTO_ID_PROTECTION_SWITCHING_ONUS_RANGED:
                            *key_size = sizeof(bcmolt_gpon_ni_key);
                            *key_offset = offsetof(bcmolt_gpon_ni_protection_switching_onus_ranged, key);
                            *data_size = sizeof(bcmolt_gpon_ni_protection_switching_onus_ranged_data);
                            *data_offset = offsetof(bcmolt_gpon_ni_protection_switching_onus_ranged, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_NI_AUTO_ID_PROTECTION_SWITCHING_SWITCHOVER_COMPLETED:
                            *key_size = sizeof(bcmolt_gpon_ni_key);
                            *key_offset = offsetof(bcmolt_gpon_ni_protection_switching_switchover_completed, key);
                            *data_size = sizeof(bcmolt_gpon_ni_protection_switching_switchover_completed_data);
                            *data_offset = offsetof(bcmolt_gpon_ni_protection_switching_switchover_completed, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_NI_AUTO_ID_STANDBY_PON_MONITORING_CYCLE_COMPLETED:
                            *key_size = sizeof(bcmolt_gpon_ni_key);
                            *key_offset = offsetof(bcmolt_gpon_ni_standby_pon_monitoring_cycle_completed, key);
                            *data_size = sizeof(bcmolt_gpon_ni_standby_pon_monitoring_cycle_completed_data);
                            *data_offset = offsetof(bcmolt_gpon_ni_standby_pon_monitoring_cycle_completed, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_NI_AUTO_ID_ONU_DISCOVERED:
                            *key_size = sizeof(bcmolt_gpon_ni_key);
                            *key_offset = offsetof(bcmolt_gpon_ni_onu_discovered, key);
                            *data_size = sizeof(bcmolt_gpon_ni_onu_discovered_data);
                            *data_offset = offsetof(bcmolt_gpon_ni_onu_discovered, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_NI_AUTO_ID_CPU_PACKETS_FAILURE:
                            *key_size = sizeof(bcmolt_gpon_ni_key);
                            *key_offset = offsetof(bcmolt_gpon_ni_cpu_packets_failure, key);
                            *data_size = sizeof(bcmolt_gpon_ni_cpu_packets_failure_data);
                            *data_offset = offsetof(bcmolt_gpon_ni_cpu_packets_failure, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_NI_AUTO_ID_ROGUE_DETECTION_COMPLETED:
                            *key_size = sizeof(bcmolt_gpon_ni_key);
                            *key_offset = offsetof(bcmolt_gpon_ni_rogue_detection_completed, key);
                            *data_size = sizeof(bcmolt_gpon_ni_rogue_detection_completed_data);
                            *data_offset = offsetof(bcmolt_gpon_ni_rogue_detection_completed, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_NI_AUTO_ID_DEACTIVATE_ALL_ONUS_COMPLETED:
                            *key_size = sizeof(bcmolt_gpon_ni_key);
                            *key_offset = offsetof(bcmolt_gpon_ni_deactivate_all_onus_completed, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_NI_AUTO_ID_DISABLE_ALL_ONUS_COMPLETED:
                            *key_size = sizeof(bcmolt_gpon_ni_key);
                            *key_offset = offsetof(bcmolt_gpon_ni_disable_all_onus_completed, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_NI_AUTO_ID_ACTIVATE_ALL_ONUS_COMPLETED:
                            *key_size = sizeof(bcmolt_gpon_ni_key);
                            *key_offset = offsetof(bcmolt_gpon_ni_activate_all_onus_completed, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_NI_AUTO_ID_ENABLE_ALL_ONUS_COMPLETED:
                            *key_size = sizeof(bcmolt_gpon_ni_key);
                            *key_offset = offsetof(bcmolt_gpon_ni_enable_all_onus_completed, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_NI_AUTO_ID_TOD_REQUEST_COMPLETED:
                            *key_size = sizeof(bcmolt_gpon_ni_key);
                            *key_offset = offsetof(bcmolt_gpon_ni_tod_request_completed, key);
                            *data_size = sizeof(bcmolt_gpon_ni_tod_request_completed_data);
                            *data_offset = offsetof(bcmolt_gpon_ni_tod_request_completed, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_NI_AUTO_ID_ONU_UPGRADE_COMPLETE:
                            *key_size = sizeof(bcmolt_gpon_ni_key);
                            *key_offset = offsetof(bcmolt_gpon_ni_onu_upgrade_complete, key);
                            *data_size = sizeof(bcmolt_gpon_ni_onu_upgrade_complete_data);
                            *data_offset = offsetof(bcmolt_gpon_ni_onu_upgrade_complete, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_NI_AUTO_ID_ROGUE_ONU_SPECIAL_MAP_CYCLE_START:
                            *key_size = sizeof(bcmolt_gpon_ni_key);
                            *key_offset = offsetof(bcmolt_gpon_ni_rogue_onu_special_map_cycle_start, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_NI_AUTO_ID_STAT_ALARM_RAISED:
                            *key_size = sizeof(bcmolt_gpon_ni_key);
                            *key_offset = offsetof(bcmolt_gpon_ni_stat_alarm_raised, key);
                            *data_size = sizeof(bcmolt_gpon_ni_stat_alarm_raised_data);
                            *data_offset = offsetof(bcmolt_gpon_ni_stat_alarm_raised, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_NI_AUTO_ID_STAT_ALARM_CLEARED:
                            *key_size = sizeof(bcmolt_gpon_ni_key);
                            *key_offset = offsetof(bcmolt_gpon_ni_stat_alarm_cleared, key);
                            *data_size = sizeof(bcmolt_gpon_ni_stat_alarm_cleared_data);
                            *data_offset = offsetof(bcmolt_gpon_ni_stat_alarm_cleared, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_gpon_ni_key);
                            *key_offset = offsetof(bcmolt_gpon_ni_auto_cfg, key);
                            *data_size = sizeof(bcmolt_gpon_ni_auto_cfg_data);
                            *data_offset = offsetof(bcmolt_gpon_ni_auto_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_OPER:
                    switch (subgroup)
                    {
                        case BCMOLT_GPON_NI_OPER_ID_SET_PON_STATE:
                            *key_size = sizeof(bcmolt_gpon_ni_key);
                            *key_offset = offsetof(bcmolt_gpon_ni_set_pon_state, key);
                            *data_size = sizeof(bcmolt_gpon_ni_set_pon_state_data);
                            *data_offset = offsetof(bcmolt_gpon_ni_set_pon_state, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_NI_OPER_ID_RESET:
                            *key_size = sizeof(bcmolt_gpon_ni_key);
                            *key_offset = offsetof(bcmolt_gpon_ni_reset, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_NI_OPER_ID_DISABLE_SERIAL_NUMBER:
                            *key_size = sizeof(bcmolt_gpon_ni_key);
                            *key_offset = offsetof(bcmolt_gpon_ni_disable_serial_number, key);
                            *data_size = sizeof(bcmolt_gpon_ni_disable_serial_number_data);
                            *data_offset = offsetof(bcmolt_gpon_ni_disable_serial_number, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_NI_OPER_ID_SINGLE_REQUEST_STANDBY_PON_MONITORING:
                            *key_size = sizeof(bcmolt_gpon_ni_key);
                            *key_offset = offsetof(bcmolt_gpon_ni_single_request_standby_pon_monitoring, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_NI_OPER_ID_SET_ONU_STATE:
                            *key_size = sizeof(bcmolt_gpon_ni_key);
                            *key_offset = offsetof(bcmolt_gpon_ni_set_onu_state, key);
                            *data_size = sizeof(bcmolt_gpon_ni_set_onu_state_data);
                            *data_offset = offsetof(bcmolt_gpon_ni_set_onu_state, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_NI_OPER_ID_ROGUE_DETECTION_WINDOW:
                            *key_size = sizeof(bcmolt_gpon_ni_key);
                            *key_offset = offsetof(bcmolt_gpon_ni_rogue_detection_window, key);
                            *data_size = sizeof(bcmolt_gpon_ni_rogue_detection_window_data);
                            *data_offset = offsetof(bcmolt_gpon_ni_rogue_detection_window, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_NI_OPER_ID_TOD_REQUEST:
                            *key_size = sizeof(bcmolt_gpon_ni_key);
                            *key_offset = offsetof(bcmolt_gpon_ni_tod_request, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_NI_OPER_ID_PROTECTION_SWITCHING_TYPE_C_SET_MULTIPLE_ONU_STATE:
                            *key_size = sizeof(bcmolt_gpon_ni_key);
                            *key_offset = offsetof(bcmolt_gpon_ni_protection_switching_type_c_set_multiple_onu_state, key);
                            *data_size = sizeof(bcmolt_gpon_ni_protection_switching_type_c_set_multiple_onu_state_data);
                            *data_offset = offsetof(bcmolt_gpon_ni_protection_switching_type_c_set_multiple_onu_state, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_NI_OPER_ID_START_ONU_UPGRADE:
                            *key_size = sizeof(bcmolt_gpon_ni_key);
                            *key_offset = offsetof(bcmolt_gpon_ni_start_onu_upgrade, key);
                            *data_size = sizeof(bcmolt_gpon_ni_start_onu_upgrade_data);
                            *data_offset = offsetof(bcmolt_gpon_ni_start_onu_upgrade, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_PROXY:
                    switch (subgroup)
                    {
                        case BCMOLT_GPON_NI_PROXY_ID_CPU_PACKETS:
                            *key_size = sizeof(bcmolt_gpon_ni_key);
                            *key_offset = offsetof(bcmolt_gpon_ni_cpu_packets, key);
                            *data_size = sizeof(bcmolt_gpon_ni_cpu_packets_data);
                            *data_offset = offsetof(bcmolt_gpon_ni_cpu_packets, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_NI_PROXY_ID_BROADCAST_PLOAM_PACKET:
                            *key_size = sizeof(bcmolt_gpon_ni_key);
                            *key_offset = offsetof(bcmolt_gpon_ni_broadcast_ploam_packet, key);
                            *data_size = sizeof(bcmolt_gpon_ni_broadcast_ploam_packet_data);
                            *data_offset = offsetof(bcmolt_gpon_ni_broadcast_ploam_packet, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_GPON_ONU:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_gpon_onu_key);
                            *key_offset = 0;
                            *data_size = sizeof(bcmolt_gpon_onu_key);
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_gpon_onu_key);
                            *key_offset = offsetof(bcmolt_gpon_onu_cfg, key);
                            *data_size = sizeof(bcmolt_gpon_onu_cfg_data);
                            *data_offset = offsetof(bcmolt_gpon_onu_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_gpon_onu_key);
                            *key_offset = offsetof(bcmolt_gpon_onu_stat, key);
                            *data_size = sizeof(bcmolt_gpon_onu_stat_data);
                            *data_offset = offsetof(bcmolt_gpon_onu_stat, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                        case 1:
                        case 2:
                        case 3:
                        case 4:
                        case 5:
                        case 6:
                        case 7:
                        case 8:
                        case 9:
                        case 10:
                        case 11:
                        case 12:
                        case 13:
                        case 14:
                        case 15:
                        case 16:
                        case 17:
                        case 18:
                        case 19:
                            *key_size = sizeof(bcmolt_gpon_onu_key);
                            *key_offset = offsetof(bcmolt_gpon_onu_stat_cfg, key);
                            *data_size = sizeof(bcmolt_gpon_onu_stat_cfg_data);
                            *data_offset = offsetof(bcmolt_gpon_onu_stat_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_GPON_ONU_AUTO_ID_ONU_ALARM:
                            *key_size = sizeof(bcmolt_gpon_onu_key);
                            *key_offset = offsetof(bcmolt_gpon_onu_onu_alarm, key);
                            *data_size = sizeof(bcmolt_gpon_onu_onu_alarm_data);
                            *data_offset = offsetof(bcmolt_gpon_onu_onu_alarm, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_DOWI:
                            *key_size = sizeof(bcmolt_gpon_onu_key);
                            *key_offset = offsetof(bcmolt_gpon_onu_dowi, key);
                            *data_size = sizeof(bcmolt_gpon_onu_dowi_data);
                            *data_offset = offsetof(bcmolt_gpon_onu_dowi, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_SFI:
                            *key_size = sizeof(bcmolt_gpon_onu_key);
                            *key_offset = offsetof(bcmolt_gpon_onu_sfi, key);
                            *data_size = sizeof(bcmolt_gpon_onu_sfi_data);
                            *data_offset = offsetof(bcmolt_gpon_onu_sfi, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_SDI:
                            *key_size = sizeof(bcmolt_gpon_onu_key);
                            *key_offset = offsetof(bcmolt_gpon_onu_sdi, key);
                            *data_size = sizeof(bcmolt_gpon_onu_sdi_data);
                            *data_offset = offsetof(bcmolt_gpon_onu_sdi, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_DFI:
                            *key_size = sizeof(bcmolt_gpon_onu_key);
                            *key_offset = offsetof(bcmolt_gpon_onu_dfi, key);
                            *data_size = sizeof(bcmolt_gpon_onu_dfi_data);
                            *data_offset = offsetof(bcmolt_gpon_onu_dfi, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_SUFI:
                            *key_size = sizeof(bcmolt_gpon_onu_key);
                            *key_offset = offsetof(bcmolt_gpon_onu_sufi, key);
                            *data_size = sizeof(bcmolt_gpon_onu_sufi_data);
                            *data_offset = offsetof(bcmolt_gpon_onu_sufi, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_LOAI:
                            *key_size = sizeof(bcmolt_gpon_onu_key);
                            *key_offset = offsetof(bcmolt_gpon_onu_loai, key);
                            *data_size = sizeof(bcmolt_gpon_onu_loai_data);
                            *data_offset = offsetof(bcmolt_gpon_onu_loai, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_DGI:
                            *key_size = sizeof(bcmolt_gpon_onu_key);
                            *key_offset = offsetof(bcmolt_gpon_onu_dgi, key);
                            *data_size = sizeof(bcmolt_gpon_onu_dgi_data);
                            *data_offset = offsetof(bcmolt_gpon_onu_dgi, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_PEE:
                            *key_size = sizeof(bcmolt_gpon_onu_key);
                            *key_offset = offsetof(bcmolt_gpon_onu_pee, key);
                            *data_size = sizeof(bcmolt_gpon_onu_pee_data);
                            *data_offset = offsetof(bcmolt_gpon_onu_pee, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_PST:
                            *key_size = sizeof(bcmolt_gpon_onu_key);
                            *key_offset = offsetof(bcmolt_gpon_onu_pst, key);
                            *data_size = sizeof(bcmolt_gpon_onu_pst_data);
                            *data_offset = offsetof(bcmolt_gpon_onu_pst, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_TIWI:
                            *key_size = sizeof(bcmolt_gpon_onu_key);
                            *key_offset = offsetof(bcmolt_gpon_onu_tiwi, key);
                            *data_size = sizeof(bcmolt_gpon_onu_tiwi_data);
                            *data_offset = offsetof(bcmolt_gpon_onu_tiwi, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_LOKI:
                            *key_size = sizeof(bcmolt_gpon_onu_key);
                            *key_offset = offsetof(bcmolt_gpon_onu_loki, key);
                            *data_size = sizeof(bcmolt_gpon_onu_loki_data);
                            *data_offset = offsetof(bcmolt_gpon_onu_loki, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_MEMI:
                            *key_size = sizeof(bcmolt_gpon_onu_key);
                            *key_offset = offsetof(bcmolt_gpon_onu_memi, key);
                            *data_size = sizeof(bcmolt_gpon_onu_memi_data);
                            *data_offset = offsetof(bcmolt_gpon_onu_memi, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_OMCI_PORT_ID_CONFIGURATION_COMPLETED:
                            *key_size = sizeof(bcmolt_gpon_onu_key);
                            *key_offset = offsetof(bcmolt_gpon_onu_omci_port_id_configuration_completed, key);
                            *data_size = sizeof(bcmolt_gpon_onu_omci_port_id_configuration_completed_data);
                            *data_offset = offsetof(bcmolt_gpon_onu_omci_port_id_configuration_completed, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_BER_INTERVAL_CONFIGURATION_COMPLETED:
                            *key_size = sizeof(bcmolt_gpon_onu_key);
                            *key_offset = offsetof(bcmolt_gpon_onu_ber_interval_configuration_completed, key);
                            *data_size = sizeof(bcmolt_gpon_onu_ber_interval_configuration_completed_data);
                            *data_offset = offsetof(bcmolt_gpon_onu_ber_interval_configuration_completed, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_ERR:
                            *key_size = sizeof(bcmolt_gpon_onu_key);
                            *key_offset = offsetof(bcmolt_gpon_onu_err, key);
                            *data_size = sizeof(bcmolt_gpon_onu_err_data);
                            *data_offset = offsetof(bcmolt_gpon_onu_err, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_REI:
                            *key_size = sizeof(bcmolt_gpon_onu_key);
                            *key_offset = offsetof(bcmolt_gpon_onu_rei, key);
                            *data_size = sizeof(bcmolt_gpon_onu_rei_data);
                            *data_offset = offsetof(bcmolt_gpon_onu_rei, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_RANGING_COMPLETED:
                            *key_size = sizeof(bcmolt_gpon_onu_key);
                            *key_offset = offsetof(bcmolt_gpon_onu_ranging_completed, key);
                            *data_size = sizeof(bcmolt_gpon_onu_ranging_completed_data);
                            *data_offset = offsetof(bcmolt_gpon_onu_ranging_completed, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_PASSWORD_AUTHENTICATION_COMPLETED:
                            *key_size = sizeof(bcmolt_gpon_onu_key);
                            *key_offset = offsetof(bcmolt_gpon_onu_password_authentication_completed, key);
                            *data_size = sizeof(bcmolt_gpon_onu_password_authentication_completed_data);
                            *data_offset = offsetof(bcmolt_gpon_onu_password_authentication_completed, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_ONU_ACTIVATION_COMPLETED:
                            *key_size = sizeof(bcmolt_gpon_onu_key);
                            *key_offset = offsetof(bcmolt_gpon_onu_onu_activation_completed, key);
                            *data_size = sizeof(bcmolt_gpon_onu_onu_activation_completed_data);
                            *data_offset = offsetof(bcmolt_gpon_onu_onu_activation_completed, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_ONU_DEACTIVATION_COMPLETED:
                            *key_size = sizeof(bcmolt_gpon_onu_key);
                            *key_offset = offsetof(bcmolt_gpon_onu_onu_deactivation_completed, key);
                            *data_size = sizeof(bcmolt_gpon_onu_onu_deactivation_completed_data);
                            *data_offset = offsetof(bcmolt_gpon_onu_onu_deactivation_completed, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_ONU_ENABLE_COMPLETED:
                            *key_size = sizeof(bcmolt_gpon_onu_key);
                            *key_offset = offsetof(bcmolt_gpon_onu_onu_enable_completed, key);
                            *data_size = sizeof(bcmolt_gpon_onu_onu_enable_completed_data);
                            *data_offset = offsetof(bcmolt_gpon_onu_onu_enable_completed, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_ONU_DISABLE_COMPLETED:
                            *key_size = sizeof(bcmolt_gpon_onu_key);
                            *key_offset = offsetof(bcmolt_gpon_onu_onu_disable_completed, key);
                            *data_size = sizeof(bcmolt_gpon_onu_onu_disable_completed_data);
                            *data_offset = offsetof(bcmolt_gpon_onu_onu_disable_completed, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_INVALID_DBRU_REPORT:
                            *key_size = sizeof(bcmolt_gpon_onu_key);
                            *key_offset = offsetof(bcmolt_gpon_onu_invalid_dbru_report, key);
                            *data_size = sizeof(bcmolt_gpon_onu_invalid_dbru_report_data);
                            *data_offset = offsetof(bcmolt_gpon_onu_invalid_dbru_report, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_KEY_EXCHANGE_COMPLETED:
                            *key_size = sizeof(bcmolt_gpon_onu_key);
                            *key_offset = offsetof(bcmolt_gpon_onu_key_exchange_completed, key);
                            *data_size = sizeof(bcmolt_gpon_onu_key_exchange_completed_data);
                            *data_offset = offsetof(bcmolt_gpon_onu_key_exchange_completed, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_KEY_EXCHANGE_KEY_REQUEST_TIMEOUT:
                            *key_size = sizeof(bcmolt_gpon_onu_key);
                            *key_offset = offsetof(bcmolt_gpon_onu_key_exchange_key_request_timeout, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_KEY_EXCHANGE_CYCLE_SKIPPED:
                            *key_size = sizeof(bcmolt_gpon_onu_key);
                            *key_offset = offsetof(bcmolt_gpon_onu_key_exchange_cycle_skipped, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_KEY_EXCHANGE_KEY_MISMATCH:
                            *key_size = sizeof(bcmolt_gpon_onu_key);
                            *key_offset = offsetof(bcmolt_gpon_onu_key_exchange_key_mismatch, key);
                            *data_size = sizeof(bcmolt_gpon_onu_key_exchange_key_mismatch_data);
                            *data_offset = offsetof(bcmolt_gpon_onu_key_exchange_key_mismatch, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_KEY_EXCHANGE_UNCONSECUTIVE_INDEX:
                            *key_size = sizeof(bcmolt_gpon_onu_key);
                            *key_offset = offsetof(bcmolt_gpon_onu_key_exchange_unconsecutive_index, key);
                            *data_size = sizeof(bcmolt_gpon_onu_key_exchange_unconsecutive_index_data);
                            *data_offset = offsetof(bcmolt_gpon_onu_key_exchange_unconsecutive_index, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_RSSI_MEASUREMENT_COMPLETED:
                            *key_size = sizeof(bcmolt_gpon_onu_key);
                            *key_offset = offsetof(bcmolt_gpon_onu_rssi_measurement_completed, key);
                            *data_size = sizeof(bcmolt_gpon_onu_rssi_measurement_completed_data);
                            *data_offset = offsetof(bcmolt_gpon_onu_rssi_measurement_completed, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_KEY_EXCHANGE_DECRYPT_REQUIRED:
                            *key_size = sizeof(bcmolt_gpon_onu_key);
                            *key_offset = offsetof(bcmolt_gpon_onu_key_exchange_decrypt_required, key);
                            *data_size = sizeof(bcmolt_gpon_onu_key_exchange_decrypt_required_data);
                            *data_offset = offsetof(bcmolt_gpon_onu_key_exchange_decrypt_required, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_OPTICAL_REFLECTION:
                            *key_size = sizeof(bcmolt_gpon_onu_key);
                            *key_offset = offsetof(bcmolt_gpon_onu_optical_reflection, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_ONU_ACTIVATION_STANDBY_COMPLETED:
                            *key_size = sizeof(bcmolt_gpon_onu_key);
                            *key_offset = offsetof(bcmolt_gpon_onu_onu_activation_standby_completed, key);
                            *data_size = sizeof(bcmolt_gpon_onu_onu_activation_standby_completed_data);
                            *data_offset = offsetof(bcmolt_gpon_onu_onu_activation_standby_completed, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_POWER_MANAGEMENT_STATE_CHANGE:
                            *key_size = sizeof(bcmolt_gpon_onu_key);
                            *key_offset = offsetof(bcmolt_gpon_onu_power_management_state_change, key);
                            *data_size = sizeof(bcmolt_gpon_onu_power_management_state_change_data);
                            *data_offset = offsetof(bcmolt_gpon_onu_power_management_state_change, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_POSSIBLE_DRIFT:
                            *key_size = sizeof(bcmolt_gpon_onu_key);
                            *key_offset = offsetof(bcmolt_gpon_onu_possible_drift, key);
                            *data_size = sizeof(bcmolt_gpon_onu_possible_drift_data);
                            *data_offset = offsetof(bcmolt_gpon_onu_possible_drift, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_STAT_ALARM_RAISED:
                            *key_size = sizeof(bcmolt_gpon_onu_key);
                            *key_offset = offsetof(bcmolt_gpon_onu_stat_alarm_raised, key);
                            *data_size = sizeof(bcmolt_gpon_onu_stat_alarm_raised_data);
                            *data_offset = offsetof(bcmolt_gpon_onu_stat_alarm_raised, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_STAT_ALARM_CLEARED:
                            *key_size = sizeof(bcmolt_gpon_onu_key);
                            *key_offset = offsetof(bcmolt_gpon_onu_stat_alarm_cleared, key);
                            *data_size = sizeof(bcmolt_gpon_onu_stat_alarm_cleared_data);
                            *data_offset = offsetof(bcmolt_gpon_onu_stat_alarm_cleared, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_gpon_onu_key);
                            *key_offset = offsetof(bcmolt_gpon_onu_auto_cfg, key);
                            *data_size = sizeof(bcmolt_gpon_onu_auto_cfg_data);
                            *data_offset = offsetof(bcmolt_gpon_onu_auto_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_OPER:
                    switch (subgroup)
                    {
                        case BCMOLT_GPON_ONU_OPER_ID_SET_ONU_STATE:
                            *key_size = sizeof(bcmolt_gpon_onu_key);
                            *key_offset = offsetof(bcmolt_gpon_onu_set_onu_state, key);
                            *data_size = sizeof(bcmolt_gpon_onu_set_onu_state_data);
                            *data_offset = offsetof(bcmolt_gpon_onu_set_onu_state, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_OPER_ID_RSSI_MEASUREMENT:
                            *key_size = sizeof(bcmolt_gpon_onu_key);
                            *key_offset = offsetof(bcmolt_gpon_onu_rssi_measurement, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_OPER_ID_CHANGE_POWER_LEVEL:
                            *key_size = sizeof(bcmolt_gpon_onu_key);
                            *key_offset = offsetof(bcmolt_gpon_onu_change_power_level, key);
                            *data_size = sizeof(bcmolt_gpon_onu_change_power_level_data);
                            *data_offset = offsetof(bcmolt_gpon_onu_change_power_level, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_PROXY:
                    switch (subgroup)
                    {
                        case BCMOLT_GPON_ONU_PROXY_ID_CPU_PACKETS:
                            *key_size = sizeof(bcmolt_gpon_onu_key);
                            *key_offset = offsetof(bcmolt_gpon_onu_cpu_packets, key);
                            *data_size = sizeof(bcmolt_gpon_onu_cpu_packets_data);
                            *data_offset = offsetof(bcmolt_gpon_onu_cpu_packets, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_PROXY_ID_PLOAM_PACKET:
                            *key_size = sizeof(bcmolt_gpon_onu_key);
                            *key_offset = offsetof(bcmolt_gpon_onu_ploam_packet, key);
                            *data_size = sizeof(bcmolt_gpon_onu_ploam_packet_data);
                            *data_offset = offsetof(bcmolt_gpon_onu_ploam_packet, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_PROXY_RX:
                    switch (subgroup)
                    {
                        case BCMOLT_GPON_ONU_PROXY_RX_ID_CPU_PACKET:
                            *key_size = sizeof(bcmolt_gpon_onu_key);
                            *key_offset = offsetof(bcmolt_gpon_onu_cpu_packet, key);
                            *data_size = sizeof(bcmolt_gpon_onu_cpu_packet_data);
                            *data_offset = offsetof(bcmolt_gpon_onu_cpu_packet, data);
                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_PROXY_RX_ID_OMCI_PACKET:
                            *key_size = sizeof(bcmolt_gpon_onu_key);
                            *key_offset = offsetof(bcmolt_gpon_onu_omci_packet, key);
                            *data_size = sizeof(bcmolt_gpon_onu_omci_packet_data);
                            *data_offset = offsetof(bcmolt_gpon_onu_omci_packet, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_GPON_TRX:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_gpon_trx_key);
                            *key_offset = 0;
                            *data_size = sizeof(bcmolt_gpon_trx_key);
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_gpon_trx_key);
                            *key_offset = offsetof(bcmolt_gpon_trx_cfg, key);
                            *data_size = sizeof(bcmolt_gpon_trx_cfg_data);
                            *data_offset = offsetof(bcmolt_gpon_trx_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_LOG_ENTRY:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_log_entry_key);
                            *key_offset = 0;
                            *data_size = sizeof(bcmolt_log_entry_key);
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_log_entry_key);
                            *key_offset = offsetof(bcmolt_log_entry_cfg, key);
                            *data_size = sizeof(bcmolt_log_entry_cfg_data);
                            *data_offset = offsetof(bcmolt_log_entry_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_log_entry_key);
                            *key_offset = offsetof(bcmolt_log_entry_stat, key);
                            *data_size = sizeof(bcmolt_log_entry_stat_data);
                            *data_offset = offsetof(bcmolt_log_entry_stat, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                        case 1:
                            *key_size = sizeof(bcmolt_log_entry_key);
                            *key_offset = offsetof(bcmolt_log_entry_stat_cfg, key);
                            *data_size = sizeof(bcmolt_log_entry_stat_cfg_data);
                            *data_offset = offsetof(bcmolt_log_entry_stat_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_LOG_ENTRY_AUTO_ID_STAT_ALARM_RAISED:
                            *key_size = sizeof(bcmolt_log_entry_key);
                            *key_offset = offsetof(bcmolt_log_entry_stat_alarm_raised, key);
                            *data_size = sizeof(bcmolt_log_entry_stat_alarm_raised_data);
                            *data_offset = offsetof(bcmolt_log_entry_stat_alarm_raised, data);
                            return BCM_ERR_OK;
                        case BCMOLT_LOG_ENTRY_AUTO_ID_STAT_ALARM_CLEARED:
                            *key_size = sizeof(bcmolt_log_entry_key);
                            *key_offset = offsetof(bcmolt_log_entry_stat_alarm_cleared, key);
                            *data_size = sizeof(bcmolt_log_entry_stat_alarm_cleared_data);
                            *data_offset = offsetof(bcmolt_log_entry_stat_alarm_cleared, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_log_entry_key);
                            *key_offset = offsetof(bcmolt_log_entry_auto_cfg, key);
                            *data_size = sizeof(bcmolt_log_entry_auto_cfg_data);
                            *data_offset = offsetof(bcmolt_log_entry_auto_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_LOGGER:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_logger_key);
                            *key_offset = 0;
                            *data_size = sizeof(bcmolt_logger_key);
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_logger_key);
                            *key_offset = offsetof(bcmolt_logger_cfg, key);
                            *data_size = sizeof(bcmolt_logger_cfg_data);
                            *data_offset = offsetof(bcmolt_logger_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_logger_key);
                            *key_offset = offsetof(bcmolt_logger_stat, key);
                            *data_size = sizeof(bcmolt_logger_stat_data);
                            *data_offset = offsetof(bcmolt_logger_stat, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_logger_key);
                            *key_offset = offsetof(bcmolt_logger_stat_cfg, key);
                            *data_size = sizeof(bcmolt_logger_stat_cfg_data);
                            *data_offset = offsetof(bcmolt_logger_stat_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_LOGGER_AUTO_ID_STAT_ALARM_RAISED:
                            *key_size = sizeof(bcmolt_logger_key);
                            *key_offset = offsetof(bcmolt_logger_stat_alarm_raised, key);
                            *data_size = sizeof(bcmolt_logger_stat_alarm_raised_data);
                            *data_offset = offsetof(bcmolt_logger_stat_alarm_raised, data);
                            return BCM_ERR_OK;
                        case BCMOLT_LOGGER_AUTO_ID_STAT_ALARM_CLEARED:
                            *key_size = sizeof(bcmolt_logger_key);
                            *key_offset = offsetof(bcmolt_logger_stat_alarm_cleared, key);
                            *data_size = sizeof(bcmolt_logger_stat_alarm_cleared_data);
                            *data_offset = offsetof(bcmolt_logger_stat_alarm_cleared, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_logger_key);
                            *key_offset = offsetof(bcmolt_logger_auto_cfg, key);
                            *data_size = sizeof(bcmolt_logger_auto_cfg_data);
                            *data_offset = offsetof(bcmolt_logger_auto_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_OPER:
                    switch (subgroup)
                    {
                        case BCMOLT_LOGGER_OPER_ID_CLEAR_LOG:
                            *key_size = sizeof(bcmolt_logger_key);
                            *key_offset = offsetof(bcmolt_logger_clear_log, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_NNI:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_nni_key);
                            *key_offset = 0;
                            *data_size = sizeof(bcmolt_nni_key);
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_nni_key);
                            *key_offset = offsetof(bcmolt_nni_cfg, key);
                            *data_size = sizeof(bcmolt_nni_cfg_data);
                            *data_offset = offsetof(bcmolt_nni_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_nni_key);
                            *key_offset = offsetof(bcmolt_nni_stat, key);
                            *data_size = sizeof(bcmolt_nni_stat_data);
                            *data_offset = offsetof(bcmolt_nni_stat, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                        case 1:
                        case 2:
                        case 3:
                        case 4:
                        case 5:
                        case 6:
                        case 7:
                        case 8:
                        case 9:
                        case 10:
                        case 11:
                        case 12:
                        case 13:
                        case 14:
                        case 15:
                        case 16:
                        case 17:
                        case 18:
                        case 19:
                        case 20:
                        case 21:
                        case 22:
                        case 23:
                        case 24:
                        case 25:
                        case 26:
                        case 27:
                        case 28:
                        case 29:
                        case 30:
                        case 31:
                        case 32:
                        case 33:
                        case 34:
                        case 35:
                        case 36:
                        case 37:
                        case 38:
                        case 39:
                        case 40:
                        case 41:
                        case 42:
                        case 43:
                        case 44:
                        case 45:
                        case 46:
                        case 47:
                        case 48:
                        case 49:
                        case 50:
                        case 51:
                        case 52:
                        case 53:
                        case 54:
                        case 55:
                        case 56:
                        case 57:
                        case 58:
                        case 59:
                        case 60:
                        case 61:
                        case 62:
                            *key_size = sizeof(bcmolt_nni_key);
                            *key_offset = offsetof(bcmolt_nni_stat_cfg, key);
                            *data_size = sizeof(bcmolt_nni_stat_cfg_data);
                            *data_offset = offsetof(bcmolt_nni_stat_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_NNI_AUTO_ID_STATUS_CHANGED:
                            *key_size = sizeof(bcmolt_nni_key);
                            *key_offset = offsetof(bcmolt_nni_status_changed, key);
                            *data_size = sizeof(bcmolt_nni_status_changed_data);
                            *data_offset = offsetof(bcmolt_nni_status_changed, data);
                            return BCM_ERR_OK;
                        case BCMOLT_NNI_AUTO_ID_STAT_ALARM_RAISED:
                            *key_size = sizeof(bcmolt_nni_key);
                            *key_offset = offsetof(bcmolt_nni_stat_alarm_raised, key);
                            *data_size = sizeof(bcmolt_nni_stat_alarm_raised_data);
                            *data_offset = offsetof(bcmolt_nni_stat_alarm_raised, data);
                            return BCM_ERR_OK;
                        case BCMOLT_NNI_AUTO_ID_STAT_ALARM_CLEARED:
                            *key_size = sizeof(bcmolt_nni_key);
                            *key_offset = offsetof(bcmolt_nni_stat_alarm_cleared, key);
                            *data_size = sizeof(bcmolt_nni_stat_alarm_cleared_data);
                            *data_offset = offsetof(bcmolt_nni_stat_alarm_cleared, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_nni_key);
                            *key_offset = offsetof(bcmolt_nni_auto_cfg, key);
                            *data_size = sizeof(bcmolt_nni_auto_cfg_data);
                            *data_offset = offsetof(bcmolt_nni_auto_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_NNI_SERDES:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_nni_serdes_key);
                            *key_offset = 0;
                            *data_size = sizeof(bcmolt_nni_serdes_key);
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_nni_serdes_key);
                            *key_offset = offsetof(bcmolt_nni_serdes_cfg, key);
                            *data_size = sizeof(bcmolt_nni_serdes_cfg_data);
                            *data_offset = offsetof(bcmolt_nni_serdes_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_SOFTWARE_ERROR:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_software_error_key);
                            *key_offset = 0;
                            *data_size = sizeof(bcmolt_software_error_key);
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_software_error_key);
                            *key_offset = offsetof(bcmolt_software_error_cfg, key);
                            *data_size = sizeof(bcmolt_software_error_cfg_data);
                            *data_offset = offsetof(bcmolt_software_error_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_TRX_CALIBRATION:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_trx_calibration_key);
                            *key_offset = 0;
                            *data_size = sizeof(bcmolt_trx_calibration_key);
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_TRX_CALIBRATION_AUTO_ID_CAPTURE_WINDOW_AND_STATISTIC_COMPLETED:
                            *key_size = sizeof(bcmolt_trx_calibration_key);
                            *key_offset = offsetof(bcmolt_trx_calibration_capture_window_and_statistic_completed, key);
                            *data_size = sizeof(bcmolt_trx_calibration_capture_window_and_statistic_completed_data);
                            *data_offset = offsetof(bcmolt_trx_calibration_capture_window_and_statistic_completed, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_trx_calibration_key);
                            *key_offset = offsetof(bcmolt_trx_calibration_auto_cfg, key);
                            *data_size = sizeof(bcmolt_trx_calibration_auto_cfg_data);
                            *data_offset = offsetof(bcmolt_trx_calibration_auto_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_OPER:
                    switch (subgroup)
                    {
                        case BCMOLT_TRX_CALIBRATION_OPER_ID_START_CAPTURE_WINDOW:
                            *key_size = sizeof(bcmolt_trx_calibration_key);
                            *key_offset = offsetof(bcmolt_trx_calibration_start_capture_window, key);
                            *data_size = sizeof(bcmolt_trx_calibration_start_capture_window_data);
                            *data_offset = offsetof(bcmolt_trx_calibration_start_capture_window, data);
                            return BCM_ERR_OK;
                        case BCMOLT_TRX_CALIBRATION_OPER_ID_STOP_CAPTURE_WINDOW:
                            *key_size = sizeof(bcmolt_trx_calibration_key);
                            *key_offset = offsetof(bcmolt_trx_calibration_stop_capture_window, key);
                            *data_size = sizeof(bcmolt_trx_calibration_stop_capture_window_data);
                            *data_offset = offsetof(bcmolt_trx_calibration_stop_capture_window, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_XGPON_ALLOC:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_xgpon_alloc_key);
                            *key_offset = 0;
                            *data_size = sizeof(bcmolt_xgpon_alloc_key);
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_xgpon_alloc_key);
                            *key_offset = offsetof(bcmolt_xgpon_alloc_cfg, key);
                            *data_size = sizeof(bcmolt_xgpon_alloc_cfg_data);
                            *data_offset = offsetof(bcmolt_xgpon_alloc_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_xgpon_alloc_key);
                            *key_offset = offsetof(bcmolt_xgpon_alloc_stat, key);
                            *data_size = sizeof(bcmolt_xgpon_alloc_stat_data);
                            *data_offset = offsetof(bcmolt_xgpon_alloc_stat, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_xgpon_alloc_key);
                            *key_offset = offsetof(bcmolt_xgpon_alloc_stat_cfg, key);
                            *data_size = sizeof(bcmolt_xgpon_alloc_stat_cfg_data);
                            *data_offset = offsetof(bcmolt_xgpon_alloc_stat_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_XGPON_ALLOC_AUTO_ID_CONFIGURATION_COMPLETED:
                            *key_size = sizeof(bcmolt_xgpon_alloc_key);
                            *key_offset = offsetof(bcmolt_xgpon_alloc_configuration_completed, key);
                            *data_size = sizeof(bcmolt_xgpon_alloc_configuration_completed_data);
                            *data_offset = offsetof(bcmolt_xgpon_alloc_configuration_completed, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ALLOC_AUTO_ID_GET_ALLOC_STATS_COMPLETED:
                            *key_size = sizeof(bcmolt_xgpon_alloc_key);
                            *key_offset = offsetof(bcmolt_xgpon_alloc_get_alloc_stats_completed, key);
                            *data_size = sizeof(bcmolt_xgpon_alloc_get_alloc_stats_completed_data);
                            *data_offset = offsetof(bcmolt_xgpon_alloc_get_alloc_stats_completed, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ALLOC_AUTO_ID_STAT_ALARM_RAISED:
                            *key_size = sizeof(bcmolt_xgpon_alloc_key);
                            *key_offset = offsetof(bcmolt_xgpon_alloc_stat_alarm_raised, key);
                            *data_size = sizeof(bcmolt_xgpon_alloc_stat_alarm_raised_data);
                            *data_offset = offsetof(bcmolt_xgpon_alloc_stat_alarm_raised, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ALLOC_AUTO_ID_STAT_ALARM_CLEARED:
                            *key_size = sizeof(bcmolt_xgpon_alloc_key);
                            *key_offset = offsetof(bcmolt_xgpon_alloc_stat_alarm_cleared, key);
                            *data_size = sizeof(bcmolt_xgpon_alloc_stat_alarm_cleared_data);
                            *data_offset = offsetof(bcmolt_xgpon_alloc_stat_alarm_cleared, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_xgpon_alloc_key);
                            *key_offset = offsetof(bcmolt_xgpon_alloc_auto_cfg, key);
                            *data_size = sizeof(bcmolt_xgpon_alloc_auto_cfg_data);
                            *data_offset = offsetof(bcmolt_xgpon_alloc_auto_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_OPER:
                    switch (subgroup)
                    {
                        case BCMOLT_XGPON_ALLOC_OPER_ID_GET_STATS:
                            *key_size = sizeof(bcmolt_xgpon_alloc_key);
                            *key_offset = offsetof(bcmolt_xgpon_alloc_get_stats, key);
                            *data_size = sizeof(bcmolt_xgpon_alloc_get_stats_data);
                            *data_offset = offsetof(bcmolt_xgpon_alloc_get_stats, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ALLOC_OPER_ID_SET_STATE:
                            *key_size = sizeof(bcmolt_xgpon_alloc_key);
                            *key_offset = offsetof(bcmolt_xgpon_alloc_set_state, key);
                            *data_size = sizeof(bcmolt_xgpon_alloc_set_state_data);
                            *data_offset = offsetof(bcmolt_xgpon_alloc_set_state, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_XGPON_GEM_PORT:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_xgpon_gem_port_key);
                            *key_offset = 0;
                            *data_size = sizeof(bcmolt_xgpon_gem_port_key);
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_xgpon_gem_port_key);
                            *key_offset = offsetof(bcmolt_xgpon_gem_port_cfg, key);
                            *data_size = sizeof(bcmolt_xgpon_gem_port_cfg_data);
                            *data_offset = offsetof(bcmolt_xgpon_gem_port_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_xgpon_gem_port_key);
                            *key_offset = offsetof(bcmolt_xgpon_gem_port_stat, key);
                            *data_size = sizeof(bcmolt_xgpon_gem_port_stat_data);
                            *data_offset = offsetof(bcmolt_xgpon_gem_port_stat, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                        case 1:
                        case 2:
                        case 3:
                            *key_size = sizeof(bcmolt_xgpon_gem_port_key);
                            *key_offset = offsetof(bcmolt_xgpon_gem_port_stat_cfg, key);
                            *data_size = sizeof(bcmolt_xgpon_gem_port_stat_cfg_data);
                            *data_offset = offsetof(bcmolt_xgpon_gem_port_stat_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_XGPON_GEM_PORT_AUTO_ID_STAT_ALARM_RAISED:
                            *key_size = sizeof(bcmolt_xgpon_gem_port_key);
                            *key_offset = offsetof(bcmolt_xgpon_gem_port_stat_alarm_raised, key);
                            *data_size = sizeof(bcmolt_xgpon_gem_port_stat_alarm_raised_data);
                            *data_offset = offsetof(bcmolt_xgpon_gem_port_stat_alarm_raised, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_GEM_PORT_AUTO_ID_STAT_ALARM_CLEARED:
                            *key_size = sizeof(bcmolt_xgpon_gem_port_key);
                            *key_offset = offsetof(bcmolt_xgpon_gem_port_stat_alarm_cleared, key);
                            *data_size = sizeof(bcmolt_xgpon_gem_port_stat_alarm_cleared_data);
                            *data_offset = offsetof(bcmolt_xgpon_gem_port_stat_alarm_cleared, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_xgpon_gem_port_key);
                            *key_offset = offsetof(bcmolt_xgpon_gem_port_auto_cfg, key);
                            *data_size = sizeof(bcmolt_xgpon_gem_port_auto_cfg_data);
                            *data_offset = offsetof(bcmolt_xgpon_gem_port_auto_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_XGPON_IWF:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_xgpon_iwf_key);
                            *key_offset = 0;
                            *data_size = sizeof(bcmolt_xgpon_iwf_key);
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_xgpon_iwf_key);
                            *key_offset = offsetof(bcmolt_xgpon_iwf_cfg, key);
                            *data_size = sizeof(bcmolt_xgpon_iwf_cfg_data);
                            *data_offset = offsetof(bcmolt_xgpon_iwf_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_XGPON_NI:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_xgpon_ni_key);
                            *key_offset = 0;
                            *data_size = sizeof(bcmolt_xgpon_ni_key);
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_xgpon_ni_key);
                            *key_offset = offsetof(bcmolt_xgpon_ni_cfg, key);
                            *data_size = sizeof(bcmolt_xgpon_ni_cfg_data);
                            *data_offset = offsetof(bcmolt_xgpon_ni_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_xgpon_ni_key);
                            *key_offset = offsetof(bcmolt_xgpon_ni_stat, key);
                            *data_size = sizeof(bcmolt_xgpon_ni_stat_data);
                            *data_offset = offsetof(bcmolt_xgpon_ni_stat, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                        case 1:
                        case 2:
                        case 3:
                        case 4:
                        case 5:
                        case 6:
                        case 7:
                        case 8:
                        case 9:
                        case 10:
                        case 11:
                        case 12:
                        case 13:
                        case 14:
                        case 15:
                        case 16:
                        case 17:
                        case 18:
                        case 19:
                        case 20:
                        case 21:
                        case 22:
                        case 23:
                        case 24:
                        case 25:
                        case 26:
                        case 27:
                        case 28:
                        case 29:
                        case 30:
                        case 31:
                        case 32:
                        case 33:
                        case 34:
                            *key_size = sizeof(bcmolt_xgpon_ni_key);
                            *key_offset = offsetof(bcmolt_xgpon_ni_stat_cfg, key);
                            *data_size = sizeof(bcmolt_xgpon_ni_stat_cfg_data);
                            *data_offset = offsetof(bcmolt_xgpon_ni_stat_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_XGPON_NI_AUTO_ID_STATE_CHANGE_COMPLETED:
                            *key_size = sizeof(bcmolt_xgpon_ni_key);
                            *key_offset = offsetof(bcmolt_xgpon_ni_state_change_completed, key);
                            *data_size = sizeof(bcmolt_xgpon_ni_state_change_completed_data);
                            *data_offset = offsetof(bcmolt_xgpon_ni_state_change_completed, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_AUTO_ID_LOS:
                            *key_size = sizeof(bcmolt_xgpon_ni_key);
                            *key_offset = offsetof(bcmolt_xgpon_ni_los, key);
                            *data_size = sizeof(bcmolt_xgpon_ni_los_data);
                            *data_offset = offsetof(bcmolt_xgpon_ni_los, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_AUTO_ID_SERIAL_NUMBER_ACQUISITION_CYCLE_START:
                            *key_size = sizeof(bcmolt_xgpon_ni_key);
                            *key_offset = offsetof(bcmolt_xgpon_ni_serial_number_acquisition_cycle_start, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_AUTO_ID_PROTECTION_SWITCHING_TRAFFIC_RESUME:
                            *key_size = sizeof(bcmolt_xgpon_ni_key);
                            *key_offset = offsetof(bcmolt_xgpon_ni_protection_switching_traffic_resume, key);
                            *data_size = sizeof(bcmolt_xgpon_ni_protection_switching_traffic_resume_data);
                            *data_offset = offsetof(bcmolt_xgpon_ni_protection_switching_traffic_resume, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_AUTO_ID_PROTECTION_SWITCHING_ONUS_RANGED:
                            *key_size = sizeof(bcmolt_xgpon_ni_key);
                            *key_offset = offsetof(bcmolt_xgpon_ni_protection_switching_onus_ranged, key);
                            *data_size = sizeof(bcmolt_xgpon_ni_protection_switching_onus_ranged_data);
                            *data_offset = offsetof(bcmolt_xgpon_ni_protection_switching_onus_ranged, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_AUTO_ID_PROTECTION_SWITCHING_SWITCHOVER_COMPLETED:
                            *key_size = sizeof(bcmolt_xgpon_ni_key);
                            *key_offset = offsetof(bcmolt_xgpon_ni_protection_switching_switchover_completed, key);
                            *data_size = sizeof(bcmolt_xgpon_ni_protection_switching_switchover_completed_data);
                            *data_offset = offsetof(bcmolt_xgpon_ni_protection_switching_switchover_completed, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_AUTO_ID_STANDBY_PON_MONITORING_CYCLE_COMPLETED:
                            *key_size = sizeof(bcmolt_xgpon_ni_key);
                            *key_offset = offsetof(bcmolt_xgpon_ni_standby_pon_monitoring_cycle_completed, key);
                            *data_size = sizeof(bcmolt_xgpon_ni_standby_pon_monitoring_cycle_completed_data);
                            *data_offset = offsetof(bcmolt_xgpon_ni_standby_pon_monitoring_cycle_completed, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_AUTO_ID_ONU_DISCOVERED:
                            *key_size = sizeof(bcmolt_xgpon_ni_key);
                            *key_offset = offsetof(bcmolt_xgpon_ni_onu_discovered, key);
                            *data_size = sizeof(bcmolt_xgpon_ni_onu_discovered_data);
                            *data_offset = offsetof(bcmolt_xgpon_ni_onu_discovered, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_AUTO_ID_CPU_PACKETS_FAILURE:
                            *key_size = sizeof(bcmolt_xgpon_ni_key);
                            *key_offset = offsetof(bcmolt_xgpon_ni_cpu_packets_failure, key);
                            *data_size = sizeof(bcmolt_xgpon_ni_cpu_packets_failure_data);
                            *data_offset = offsetof(bcmolt_xgpon_ni_cpu_packets_failure, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_AUTO_ID_ROGUE_DETECTION_COMPLETED:
                            *key_size = sizeof(bcmolt_xgpon_ni_key);
                            *key_offset = offsetof(bcmolt_xgpon_ni_rogue_detection_completed, key);
                            *data_size = sizeof(bcmolt_xgpon_ni_rogue_detection_completed_data);
                            *data_offset = offsetof(bcmolt_xgpon_ni_rogue_detection_completed, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_AUTO_ID_DEACTIVATE_ALL_ONUS_COMPLETED:
                            *key_size = sizeof(bcmolt_xgpon_ni_key);
                            *key_offset = offsetof(bcmolt_xgpon_ni_deactivate_all_onus_completed, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_AUTO_ID_DISABLE_ALL_ONUS_COMPLETED:
                            *key_size = sizeof(bcmolt_xgpon_ni_key);
                            *key_offset = offsetof(bcmolt_xgpon_ni_disable_all_onus_completed, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_AUTO_ID_ACTIVATE_ALL_ONUS_COMPLETED:
                            *key_size = sizeof(bcmolt_xgpon_ni_key);
                            *key_offset = offsetof(bcmolt_xgpon_ni_activate_all_onus_completed, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_AUTO_ID_ENABLE_ALL_ONUS_COMPLETED:
                            *key_size = sizeof(bcmolt_xgpon_ni_key);
                            *key_offset = offsetof(bcmolt_xgpon_ni_enable_all_onus_completed, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_AUTO_ID_TOD_REQUEST_COMPLETED:
                            *key_size = sizeof(bcmolt_xgpon_ni_key);
                            *key_offset = offsetof(bcmolt_xgpon_ni_tod_request_completed, key);
                            *data_size = sizeof(bcmolt_xgpon_ni_tod_request_completed_data);
                            *data_offset = offsetof(bcmolt_xgpon_ni_tod_request_completed, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_AUTO_ID_ONU_UPGRADE_COMPLETE:
                            *key_size = sizeof(bcmolt_xgpon_ni_key);
                            *key_offset = offsetof(bcmolt_xgpon_ni_onu_upgrade_complete, key);
                            *data_size = sizeof(bcmolt_xgpon_ni_onu_upgrade_complete_data);
                            *data_offset = offsetof(bcmolt_xgpon_ni_onu_upgrade_complete, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_AUTO_ID_ROGUE_ONU_SPECIAL_MAP_CYCLE_START:
                            *key_size = sizeof(bcmolt_xgpon_ni_key);
                            *key_offset = offsetof(bcmolt_xgpon_ni_rogue_onu_special_map_cycle_start, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_AUTO_ID_STAT_ALARM_RAISED:
                            *key_size = sizeof(bcmolt_xgpon_ni_key);
                            *key_offset = offsetof(bcmolt_xgpon_ni_stat_alarm_raised, key);
                            *data_size = sizeof(bcmolt_xgpon_ni_stat_alarm_raised_data);
                            *data_offset = offsetof(bcmolt_xgpon_ni_stat_alarm_raised, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_AUTO_ID_STAT_ALARM_CLEARED:
                            *key_size = sizeof(bcmolt_xgpon_ni_key);
                            *key_offset = offsetof(bcmolt_xgpon_ni_stat_alarm_cleared, key);
                            *data_size = sizeof(bcmolt_xgpon_ni_stat_alarm_cleared_data);
                            *data_offset = offsetof(bcmolt_xgpon_ni_stat_alarm_cleared, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_xgpon_ni_key);
                            *key_offset = offsetof(bcmolt_xgpon_ni_auto_cfg, key);
                            *data_size = sizeof(bcmolt_xgpon_ni_auto_cfg_data);
                            *data_offset = offsetof(bcmolt_xgpon_ni_auto_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_OPER:
                    switch (subgroup)
                    {
                        case BCMOLT_XGPON_NI_OPER_ID_SET_PON_STATE:
                            *key_size = sizeof(bcmolt_xgpon_ni_key);
                            *key_offset = offsetof(bcmolt_xgpon_ni_set_pon_state, key);
                            *data_size = sizeof(bcmolt_xgpon_ni_set_pon_state_data);
                            *data_offset = offsetof(bcmolt_xgpon_ni_set_pon_state, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_OPER_ID_RESET:
                            *key_size = sizeof(bcmolt_xgpon_ni_key);
                            *key_offset = offsetof(bcmolt_xgpon_ni_reset, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_OPER_ID_DISABLE_SERIAL_NUMBER:
                            *key_size = sizeof(bcmolt_xgpon_ni_key);
                            *key_offset = offsetof(bcmolt_xgpon_ni_disable_serial_number, key);
                            *data_size = sizeof(bcmolt_xgpon_ni_disable_serial_number_data);
                            *data_offset = offsetof(bcmolt_xgpon_ni_disable_serial_number, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_OPER_ID_SINGLE_REQUEST_STANDBY_PON_MONITORING:
                            *key_size = sizeof(bcmolt_xgpon_ni_key);
                            *key_offset = offsetof(bcmolt_xgpon_ni_single_request_standby_pon_monitoring, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_OPER_ID_SET_ONU_STATE:
                            *key_size = sizeof(bcmolt_xgpon_ni_key);
                            *key_offset = offsetof(bcmolt_xgpon_ni_set_onu_state, key);
                            *data_size = sizeof(bcmolt_xgpon_ni_set_onu_state_data);
                            *data_offset = offsetof(bcmolt_xgpon_ni_set_onu_state, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_OPER_ID_RUN_SPECIAL_BW_MAP:
                            *key_size = sizeof(bcmolt_xgpon_ni_key);
                            *key_offset = offsetof(bcmolt_xgpon_ni_run_special_bw_map, key);
                            *data_size = sizeof(bcmolt_xgpon_ni_run_special_bw_map_data);
                            *data_offset = offsetof(bcmolt_xgpon_ni_run_special_bw_map, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_OPER_ID_ROGUE_DETECTION_WINDOW:
                            *key_size = sizeof(bcmolt_xgpon_ni_key);
                            *key_offset = offsetof(bcmolt_xgpon_ni_rogue_detection_window, key);
                            *data_size = sizeof(bcmolt_xgpon_ni_rogue_detection_window_data);
                            *data_offset = offsetof(bcmolt_xgpon_ni_rogue_detection_window, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_OPER_ID_TOD_REQUEST:
                            *key_size = sizeof(bcmolt_xgpon_ni_key);
                            *key_offset = offsetof(bcmolt_xgpon_ni_tod_request, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_OPER_ID_START_ONU_UPGRADE:
                            *key_size = sizeof(bcmolt_xgpon_ni_key);
                            *key_offset = offsetof(bcmolt_xgpon_ni_start_onu_upgrade, key);
                            *data_size = sizeof(bcmolt_xgpon_ni_start_onu_upgrade_data);
                            *data_offset = offsetof(bcmolt_xgpon_ni_start_onu_upgrade, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_OPER_ID_ADJUST_TX_WAVELENGTH:
                            *key_size = sizeof(bcmolt_xgpon_ni_key);
                            *key_offset = offsetof(bcmolt_xgpon_ni_adjust_tx_wavelength, key);
                            *data_size = sizeof(bcmolt_xgpon_ni_adjust_tx_wavelength_data);
                            *data_offset = offsetof(bcmolt_xgpon_ni_adjust_tx_wavelength, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_PROXY:
                    switch (subgroup)
                    {
                        case BCMOLT_XGPON_NI_PROXY_ID_CPU_PACKETS:
                            *key_size = sizeof(bcmolt_xgpon_ni_key);
                            *key_offset = offsetof(bcmolt_xgpon_ni_cpu_packets, key);
                            *data_size = sizeof(bcmolt_xgpon_ni_cpu_packets_data);
                            *data_offset = offsetof(bcmolt_xgpon_ni_cpu_packets, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_PROXY_ID_BROADCAST_PLOAM_PACKET:
                            *key_size = sizeof(bcmolt_xgpon_ni_key);
                            *key_offset = offsetof(bcmolt_xgpon_ni_broadcast_ploam_packet, key);
                            *data_size = sizeof(bcmolt_xgpon_ni_broadcast_ploam_packet_data);
                            *data_offset = offsetof(bcmolt_xgpon_ni_broadcast_ploam_packet, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_XGPON_ONU:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_xgpon_onu_key);
                            *key_offset = 0;
                            *data_size = sizeof(bcmolt_xgpon_onu_key);
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_xgpon_onu_key);
                            *key_offset = offsetof(bcmolt_xgpon_onu_cfg, key);
                            *data_size = sizeof(bcmolt_xgpon_onu_cfg_data);
                            *data_offset = offsetof(bcmolt_xgpon_onu_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_xgpon_onu_key);
                            *key_offset = offsetof(bcmolt_xgpon_onu_stat, key);
                            *data_size = sizeof(bcmolt_xgpon_onu_stat_data);
                            *data_offset = offsetof(bcmolt_xgpon_onu_stat, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                        case 1:
                        case 2:
                        case 3:
                        case 4:
                        case 5:
                        case 6:
                        case 7:
                        case 8:
                        case 9:
                        case 10:
                        case 11:
                        case 12:
                        case 13:
                        case 14:
                        case 15:
                        case 16:
                        case 17:
                        case 18:
                        case 19:
                            *key_size = sizeof(bcmolt_xgpon_onu_key);
                            *key_offset = offsetof(bcmolt_xgpon_onu_stat_cfg, key);
                            *data_size = sizeof(bcmolt_xgpon_onu_stat_cfg_data);
                            *data_offset = offsetof(bcmolt_xgpon_onu_stat_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_XGPON_ONU_AUTO_ID_ONU_ALARM:
                            *key_size = sizeof(bcmolt_xgpon_onu_key);
                            *key_offset = offsetof(bcmolt_xgpon_onu_onu_alarm, key);
                            *data_size = sizeof(bcmolt_xgpon_onu_onu_alarm_data);
                            *data_offset = offsetof(bcmolt_xgpon_onu_onu_alarm, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_DOWI:
                            *key_size = sizeof(bcmolt_xgpon_onu_key);
                            *key_offset = offsetof(bcmolt_xgpon_onu_dowi, key);
                            *data_size = sizeof(bcmolt_xgpon_onu_dowi_data);
                            *data_offset = offsetof(bcmolt_xgpon_onu_dowi, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_SFI:
                            *key_size = sizeof(bcmolt_xgpon_onu_key);
                            *key_offset = offsetof(bcmolt_xgpon_onu_sfi, key);
                            *data_size = sizeof(bcmolt_xgpon_onu_sfi_data);
                            *data_offset = offsetof(bcmolt_xgpon_onu_sfi, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_SDI:
                            *key_size = sizeof(bcmolt_xgpon_onu_key);
                            *key_offset = offsetof(bcmolt_xgpon_onu_sdi, key);
                            *data_size = sizeof(bcmolt_xgpon_onu_sdi_data);
                            *data_offset = offsetof(bcmolt_xgpon_onu_sdi, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_DFI:
                            *key_size = sizeof(bcmolt_xgpon_onu_key);
                            *key_offset = offsetof(bcmolt_xgpon_onu_dfi, key);
                            *data_size = sizeof(bcmolt_xgpon_onu_dfi_data);
                            *data_offset = offsetof(bcmolt_xgpon_onu_dfi, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_PQSI:
                            *key_size = sizeof(bcmolt_xgpon_onu_key);
                            *key_offset = offsetof(bcmolt_xgpon_onu_pqsi, key);
                            *data_size = sizeof(bcmolt_xgpon_onu_pqsi_data);
                            *data_offset = offsetof(bcmolt_xgpon_onu_pqsi, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_SUFI:
                            *key_size = sizeof(bcmolt_xgpon_onu_key);
                            *key_offset = offsetof(bcmolt_xgpon_onu_sufi, key);
                            *data_size = sizeof(bcmolt_xgpon_onu_sufi_data);
                            *data_offset = offsetof(bcmolt_xgpon_onu_sufi, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_TIWI:
                            *key_size = sizeof(bcmolt_xgpon_onu_key);
                            *key_offset = offsetof(bcmolt_xgpon_onu_tiwi, key);
                            *data_size = sizeof(bcmolt_xgpon_onu_tiwi_data);
                            *data_offset = offsetof(bcmolt_xgpon_onu_tiwi, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_LOOCI:
                            *key_size = sizeof(bcmolt_xgpon_onu_key);
                            *key_offset = offsetof(bcmolt_xgpon_onu_looci, key);
                            *data_size = sizeof(bcmolt_xgpon_onu_looci_data);
                            *data_offset = offsetof(bcmolt_xgpon_onu_looci, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_RANGING_COMPLETED:
                            *key_size = sizeof(bcmolt_xgpon_onu_key);
                            *key_offset = offsetof(bcmolt_xgpon_onu_ranging_completed, key);
                            *data_size = sizeof(bcmolt_xgpon_onu_ranging_completed_data);
                            *data_offset = offsetof(bcmolt_xgpon_onu_ranging_completed, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_ONU_ACTIVATION_COMPLETED:
                            *key_size = sizeof(bcmolt_xgpon_onu_key);
                            *key_offset = offsetof(bcmolt_xgpon_onu_onu_activation_completed, key);
                            *data_size = sizeof(bcmolt_xgpon_onu_onu_activation_completed_data);
                            *data_offset = offsetof(bcmolt_xgpon_onu_onu_activation_completed, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_ONU_DEACTIVATION_COMPLETED:
                            *key_size = sizeof(bcmolt_xgpon_onu_key);
                            *key_offset = offsetof(bcmolt_xgpon_onu_onu_deactivation_completed, key);
                            *data_size = sizeof(bcmolt_xgpon_onu_onu_deactivation_completed_data);
                            *data_offset = offsetof(bcmolt_xgpon_onu_onu_deactivation_completed, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_ONU_ENABLE_COMPLETED:
                            *key_size = sizeof(bcmolt_xgpon_onu_key);
                            *key_offset = offsetof(bcmolt_xgpon_onu_onu_enable_completed, key);
                            *data_size = sizeof(bcmolt_xgpon_onu_onu_enable_completed_data);
                            *data_offset = offsetof(bcmolt_xgpon_onu_onu_enable_completed, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_ONU_DISABLE_COMPLETED:
                            *key_size = sizeof(bcmolt_xgpon_onu_key);
                            *key_offset = offsetof(bcmolt_xgpon_onu_onu_disable_completed, key);
                            *data_size = sizeof(bcmolt_xgpon_onu_onu_disable_completed_data);
                            *data_offset = offsetof(bcmolt_xgpon_onu_onu_disable_completed, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_RSSI_MEASUREMENT_COMPLETED:
                            *key_size = sizeof(bcmolt_xgpon_onu_key);
                            *key_offset = offsetof(bcmolt_xgpon_onu_rssi_measurement_completed, key);
                            *data_size = sizeof(bcmolt_xgpon_onu_rssi_measurement_completed_data);
                            *data_offset = offsetof(bcmolt_xgpon_onu_rssi_measurement_completed, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_INVALID_DBRU_REPORT:
                            *key_size = sizeof(bcmolt_xgpon_onu_key);
                            *key_offset = offsetof(bcmolt_xgpon_onu_invalid_dbru_report, key);
                            *data_size = sizeof(bcmolt_xgpon_onu_invalid_dbru_report_data);
                            *data_offset = offsetof(bcmolt_xgpon_onu_invalid_dbru_report, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_KEY_EXCHANGE_COMPLETED:
                            *key_size = sizeof(bcmolt_xgpon_onu_key);
                            *key_offset = offsetof(bcmolt_xgpon_onu_key_exchange_completed, key);
                            *data_size = sizeof(bcmolt_xgpon_onu_key_exchange_completed_data);
                            *data_offset = offsetof(bcmolt_xgpon_onu_key_exchange_completed, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_KEY_EXCHANGE_KEY_REQUEST_TIMEOUT:
                            *key_size = sizeof(bcmolt_xgpon_onu_key);
                            *key_offset = offsetof(bcmolt_xgpon_onu_key_exchange_key_request_timeout, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_KEY_EXCHANGE_CYCLE_SKIPPED:
                            *key_size = sizeof(bcmolt_xgpon_onu_key);
                            *key_offset = offsetof(bcmolt_xgpon_onu_key_exchange_cycle_skipped, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_KEY_EXCHANGE_KEY_MISMATCH:
                            *key_size = sizeof(bcmolt_xgpon_onu_key);
                            *key_offset = offsetof(bcmolt_xgpon_onu_key_exchange_key_mismatch, key);
                            *data_size = sizeof(bcmolt_xgpon_onu_key_exchange_key_mismatch_data);
                            *data_offset = offsetof(bcmolt_xgpon_onu_key_exchange_key_mismatch, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_OPTICAL_REFLECTION:
                            *key_size = sizeof(bcmolt_xgpon_onu_key);
                            *key_offset = offsetof(bcmolt_xgpon_onu_optical_reflection, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_DGI:
                            *key_size = sizeof(bcmolt_xgpon_onu_key);
                            *key_offset = offsetof(bcmolt_xgpon_onu_dgi, key);
                            *data_size = sizeof(bcmolt_xgpon_onu_dgi_data);
                            *data_offset = offsetof(bcmolt_xgpon_onu_dgi, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_POWER_MANAGEMENT_STATE_CHANGE:
                            *key_size = sizeof(bcmolt_xgpon_onu_key);
                            *key_offset = offsetof(bcmolt_xgpon_onu_power_management_state_change, key);
                            *data_size = sizeof(bcmolt_xgpon_onu_power_management_state_change_data);
                            *data_offset = offsetof(bcmolt_xgpon_onu_power_management_state_change, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_POSSIBLE_DRIFT:
                            *key_size = sizeof(bcmolt_xgpon_onu_key);
                            *key_offset = offsetof(bcmolt_xgpon_onu_possible_drift, key);
                            *data_size = sizeof(bcmolt_xgpon_onu_possible_drift_data);
                            *data_offset = offsetof(bcmolt_xgpon_onu_possible_drift, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_REGISTRATION_ID:
                            *key_size = sizeof(bcmolt_xgpon_onu_key);
                            *key_offset = offsetof(bcmolt_xgpon_onu_registration_id, key);
                            *data_size = sizeof(bcmolt_xgpon_onu_registration_id_data);
                            *data_offset = offsetof(bcmolt_xgpon_onu_registration_id, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_POWER_LEVEL_REPORT:
                            *key_size = sizeof(bcmolt_xgpon_onu_key);
                            *key_offset = offsetof(bcmolt_xgpon_onu_power_level_report, key);
                            *data_size = sizeof(bcmolt_xgpon_onu_power_level_report_data);
                            *data_offset = offsetof(bcmolt_xgpon_onu_power_level_report, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_POWER_CONSUMPTION_REPORT:
                            *key_size = sizeof(bcmolt_xgpon_onu_key);
                            *key_offset = offsetof(bcmolt_xgpon_onu_power_consumption_report, key);
                            *data_size = sizeof(bcmolt_xgpon_onu_power_consumption_report_data);
                            *data_offset = offsetof(bcmolt_xgpon_onu_power_consumption_report, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_SECURE_MUTUAL_AUTHENTICATION_FAILURE:
                            *key_size = sizeof(bcmolt_xgpon_onu_key);
                            *key_offset = offsetof(bcmolt_xgpon_onu_secure_mutual_authentication_failure, key);
                            *data_size = sizeof(bcmolt_xgpon_onu_secure_mutual_authentication_failure_data);
                            *data_offset = offsetof(bcmolt_xgpon_onu_secure_mutual_authentication_failure, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_ONU_TUNING_OUT_COMPLETED:
                            *key_size = sizeof(bcmolt_xgpon_onu_key);
                            *key_offset = offsetof(bcmolt_xgpon_onu_onu_tuning_out_completed, key);
                            *data_size = sizeof(bcmolt_xgpon_onu_onu_tuning_out_completed_data);
                            *data_offset = offsetof(bcmolt_xgpon_onu_onu_tuning_out_completed, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_ONU_TUNING_IN_COMPLETED:
                            *key_size = sizeof(bcmolt_xgpon_onu_key);
                            *key_offset = offsetof(bcmolt_xgpon_onu_onu_tuning_in_completed, key);
                            *data_size = sizeof(bcmolt_xgpon_onu_onu_tuning_in_completed_data);
                            *data_offset = offsetof(bcmolt_xgpon_onu_onu_tuning_in_completed, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_TUNING_RESPONSE:
                            *key_size = sizeof(bcmolt_xgpon_onu_key);
                            *key_offset = offsetof(bcmolt_xgpon_onu_tuning_response, key);
                            *data_size = sizeof(bcmolt_xgpon_onu_tuning_response_data);
                            *data_offset = offsetof(bcmolt_xgpon_onu_tuning_response, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_STAT_ALARM_RAISED:
                            *key_size = sizeof(bcmolt_xgpon_onu_key);
                            *key_offset = offsetof(bcmolt_xgpon_onu_stat_alarm_raised, key);
                            *data_size = sizeof(bcmolt_xgpon_onu_stat_alarm_raised_data);
                            *data_offset = offsetof(bcmolt_xgpon_onu_stat_alarm_raised, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_STAT_ALARM_CLEARED:
                            *key_size = sizeof(bcmolt_xgpon_onu_key);
                            *key_offset = offsetof(bcmolt_xgpon_onu_stat_alarm_cleared, key);
                            *data_size = sizeof(bcmolt_xgpon_onu_stat_alarm_cleared_data);
                            *data_offset = offsetof(bcmolt_xgpon_onu_stat_alarm_cleared, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_xgpon_onu_key);
                            *key_offset = offsetof(bcmolt_xgpon_onu_auto_cfg, key);
                            *data_size = sizeof(bcmolt_xgpon_onu_auto_cfg_data);
                            *data_offset = offsetof(bcmolt_xgpon_onu_auto_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_OPER:
                    switch (subgroup)
                    {
                        case BCMOLT_XGPON_ONU_OPER_ID_SET_ONU_STATE:
                            *key_size = sizeof(bcmolt_xgpon_onu_key);
                            *key_offset = offsetof(bcmolt_xgpon_onu_set_onu_state, key);
                            *data_size = sizeof(bcmolt_xgpon_onu_set_onu_state_data);
                            *data_offset = offsetof(bcmolt_xgpon_onu_set_onu_state, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_OPER_ID_RSSI_MEASUREMENT:
                            *key_size = sizeof(bcmolt_xgpon_onu_key);
                            *key_offset = offsetof(bcmolt_xgpon_onu_rssi_measurement, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_OPER_ID_REQUEST_REGISTRATION:
                            *key_size = sizeof(bcmolt_xgpon_onu_key);
                            *key_offset = offsetof(bcmolt_xgpon_onu_request_registration, key);
                            *data_size = sizeof(bcmolt_xgpon_onu_request_registration_data);
                            *data_offset = offsetof(bcmolt_xgpon_onu_request_registration, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_OPER_ID_CHANGE_POWER_LEVELLING:
                            *key_size = sizeof(bcmolt_xgpon_onu_key);
                            *key_offset = offsetof(bcmolt_xgpon_onu_change_power_levelling, key);
                            *data_size = sizeof(bcmolt_xgpon_onu_change_power_levelling_data);
                            *data_offset = offsetof(bcmolt_xgpon_onu_change_power_levelling, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_OPER_ID_GET_POWER_LEVEL:
                            *key_size = sizeof(bcmolt_xgpon_onu_key);
                            *key_offset = offsetof(bcmolt_xgpon_onu_get_power_level, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_OPER_ID_GET_POWER_CONSUMPTION:
                            *key_size = sizeof(bcmolt_xgpon_onu_key);
                            *key_offset = offsetof(bcmolt_xgpon_onu_get_power_consumption, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_OPER_ID_ADJUST_TX_WAVELENGTH:
                            *key_size = sizeof(bcmolt_xgpon_onu_key);
                            *key_offset = offsetof(bcmolt_xgpon_onu_adjust_tx_wavelength, key);
                            *data_size = sizeof(bcmolt_xgpon_onu_adjust_tx_wavelength_data);
                            *data_offset = offsetof(bcmolt_xgpon_onu_adjust_tx_wavelength, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_OPER_ID_SECURE_MUTUAL_AUTHENTICATION:
                            *key_size = sizeof(bcmolt_xgpon_onu_key);
                            *key_offset = offsetof(bcmolt_xgpon_onu_secure_mutual_authentication, key);
                            *data_size = sizeof(bcmolt_xgpon_onu_secure_mutual_authentication_data);
                            *data_offset = offsetof(bcmolt_xgpon_onu_secure_mutual_authentication, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_OPER_ID_ONU_TUNING_IN:
                            *key_size = sizeof(bcmolt_xgpon_onu_key);
                            *key_offset = offsetof(bcmolt_xgpon_onu_onu_tuning_in, key);
                            *data_size = 0;
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_OPER_ID_ONU_TUNING_OUT:
                            *key_size = sizeof(bcmolt_xgpon_onu_key);
                            *key_offset = offsetof(bcmolt_xgpon_onu_onu_tuning_out, key);
                            *data_size = sizeof(bcmolt_xgpon_onu_onu_tuning_out_data);
                            *data_offset = offsetof(bcmolt_xgpon_onu_onu_tuning_out, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_PROXY:
                    switch (subgroup)
                    {
                        case BCMOLT_XGPON_ONU_PROXY_ID_PLOAM_PACKET:
                            *key_size = sizeof(bcmolt_xgpon_onu_key);
                            *key_offset = offsetof(bcmolt_xgpon_onu_ploam_packet, key);
                            *data_size = sizeof(bcmolt_xgpon_onu_ploam_packet_data);
                            *data_offset = offsetof(bcmolt_xgpon_onu_ploam_packet, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_PROXY_ID_CPU_PACKETS:
                            *key_size = sizeof(bcmolt_xgpon_onu_key);
                            *key_offset = offsetof(bcmolt_xgpon_onu_cpu_packets, key);
                            *data_size = sizeof(bcmolt_xgpon_onu_cpu_packets_data);
                            *data_offset = offsetof(bcmolt_xgpon_onu_cpu_packets, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_PROXY_RX:
                    switch (subgroup)
                    {
                        case BCMOLT_XGPON_ONU_PROXY_RX_ID_CPU_PACKET:
                            *key_size = sizeof(bcmolt_xgpon_onu_key);
                            *key_offset = offsetof(bcmolt_xgpon_onu_cpu_packet, key);
                            *data_size = sizeof(bcmolt_xgpon_onu_cpu_packet_data);
                            *data_offset = offsetof(bcmolt_xgpon_onu_cpu_packet, data);
                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_PROXY_RX_ID_OMCI_PACKET:
                            *key_size = sizeof(bcmolt_xgpon_onu_key);
                            *key_offset = offsetof(bcmolt_xgpon_onu_omci_packet, key);
                            *data_size = sizeof(bcmolt_xgpon_onu_omci_packet_data);
                            *data_offset = offsetof(bcmolt_xgpon_onu_omci_packet, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_XGPON_TRX:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_xgpon_trx_key);
                            *key_offset = 0;
                            *data_size = sizeof(bcmolt_xgpon_trx_key);
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_xgpon_trx_key);
                            *key_offset = offsetof(bcmolt_xgpon_trx_cfg, key);
                            *data_size = sizeof(bcmolt_xgpon_trx_cfg_data);
                            *data_offset = offsetof(bcmolt_xgpon_trx_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_XPON_SERDES:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_xpon_serdes_key);
                            *key_offset = 0;
                            *data_size = sizeof(bcmolt_xpon_serdes_key);
                            *data_offset = 0;
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *key_size = sizeof(bcmolt_xpon_serdes_key);
                            *key_offset = offsetof(bcmolt_xpon_serdes_cfg, key);
                            *data_size = sizeof(bcmolt_xpon_serdes_cfg_data);
                            *data_offset = offsetof(bcmolt_xpon_serdes_cfg, data);
                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        default:
            return BCM_ERR_RANGE;
    }

    return BCM_ERR_INTERNAL;    /**<  should never happen. */
}

bcmos_errno api_cli_object_subgroup_name(bcmolt_obj_id obj, bcmolt_mgt_group group, uint16_t subgroup, const char **name, const char **descr)
{
    switch (obj)
    {
        case BCMOLT_OBJ_ID_AE_NI:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "key";
                            }

                            if (descr != NULL)
                            {
                                *descr = "key";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "cfg";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_OPER:
                    switch (subgroup)
                    {
                        case BCMOLT_AE_NI_OPER_ID_SET_AE_NI_EN_STATE:
                            if (name != NULL)
                            {
                                *name = "set_ae_ni_en_state";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Set the AE NI enable state.";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_AE_PATH_DS:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "key";
                            }

                            if (descr != NULL)
                            {
                                *descr = "key";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "stat";
                            }

                            if (descr != NULL)
                            {
                                *descr = "stat";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "bytes";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of bytes transmitted on this 10g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 1:
                            if (name != NULL)
                            {
                                *name = "frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of frames transmitted on this 10g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 2:
                            if (name != NULL)
                            {
                                *name = "frames_64";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 64 byte frames transmitted on this 10g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 3:
                            if (name != NULL)
                            {
                                *name = "frames_65_127";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 65 to 127 byte frames transmitted on this 10g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 4:
                            if (name != NULL)
                            {
                                *name = "frames_128_255";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 128 to 255 byte frames transmitted on this 10g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 5:
                            if (name != NULL)
                            {
                                *name = "frames_256_511";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 256 to 511 byte frames transmitted on this 10g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 6:
                            if (name != NULL)
                            {
                                *name = "frames_512_1023";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 512 to 1023 byte frames transmitted on this 10g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 7:
                            if (name != NULL)
                            {
                                *name = "frames_1024_1518";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 1024 to 1518 byte frames transmitted on this 10g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 8:
                            if (name != NULL)
                            {
                                *name = "frames_1519_2047";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 1519 to 2047 byte frames transmitted on this 10g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 9:
                            if (name != NULL)
                            {
                                *name = "frames_2048_4095";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 2048 to 4095 byte frames transmitted on this 10g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 10:
                            if (name != NULL)
                            {
                                *name = "frames_4096_9216";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 4096 to 9216 byte frames transmitted on this 10g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 11:
                            if (name != NULL)
                            {
                                *name = "frames_9217_16383";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 9217 to 16383 byte frames transmitted on this 10g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 12:
                            if (name != NULL)
                            {
                                *name = "broadcast_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of broadcast frames transmitted on this 10g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 13:
                            if (name != NULL)
                            {
                                *name = "data_bytes";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of data bytes transmitted on this 10g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 14:
                            if (name != NULL)
                            {
                                *name = "multicast_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of multicast frames transmitted on this 10g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 15:
                            if (name != NULL)
                            {
                                *name = "unicast_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of unicast frames transmitted on this 10g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 16:
                            if (name != NULL)
                            {
                                *name = "abort_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Number of abort frames transmitted on this 10g downstream path.";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_AE_PATH_DS_AUTO_ID_STAT_ALARM_RAISED:
                            if (name != NULL)
                            {
                                *name = "stat_alarm_raised";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Sent when a configured statistic alarm condition has been met.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_AE_PATH_DS_AUTO_ID_STAT_ALARM_CLEARED:
                            if (name != NULL)
                            {
                                *name = "stat_alarm_cleared";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Sent when a configured statistic alarm condition is no longer met.";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "auto_cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Indication Configuration";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_AE_PATH_US:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "key";
                            }

                            if (descr != NULL)
                            {
                                *descr = "key";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "stat";
                            }

                            if (descr != NULL)
                            {
                                *descr = "stat";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "bytes";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of bytes received on this 10g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 1:
                            if (name != NULL)
                            {
                                *name = "frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of frames received on this 10g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 2:
                            if (name != NULL)
                            {
                                *name = "frames_64";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 64 byte frames received on this 10g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 3:
                            if (name != NULL)
                            {
                                *name = "frames_65_127";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 65 to 127 byte frames received on this 10g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 4:
                            if (name != NULL)
                            {
                                *name = "frames_128_255";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 128 to 255 byte frames received on this 10g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 5:
                            if (name != NULL)
                            {
                                *name = "frames_256_511";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 256 to 511 byte frames received on this 10g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 6:
                            if (name != NULL)
                            {
                                *name = "frames_512_1023";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 512 to 1023 byte frames received on this 10g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 7:
                            if (name != NULL)
                            {
                                *name = "frames_1024_1518";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 1024 to 1518 byte frames received on this 10g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 8:
                            if (name != NULL)
                            {
                                *name = "frames_1519_2047";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 1519 to 2047 byte frames received on this 10g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 9:
                            if (name != NULL)
                            {
                                *name = "frames_2048_4095";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 2048 to 4095 byte frames received on this 10g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 10:
                            if (name != NULL)
                            {
                                *name = "frames_4096_9216";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 4096 to 9216 byte frames received on this 10g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 11:
                            if (name != NULL)
                            {
                                *name = "frames_9217_16383";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 9217 to 16383 byte frames received on this 10g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 12:
                            if (name != NULL)
                            {
                                *name = "broadcast_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of broadcast frames received on this 10g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 13:
                            if (name != NULL)
                            {
                                *name = "data_bytes";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of data bytes received on this 10g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 14:
                            if (name != NULL)
                            {
                                *name = "multicast_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of multicast frames received on this 10g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 15:
                            if (name != NULL)
                            {
                                *name = "unicast_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of unicast frames received on this 10g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 16:
                            if (name != NULL)
                            {
                                *name = "abort_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of abort frames received on this 10g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 17:
                            if (name != NULL)
                            {
                                *name = "fcs_error";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of bad FCS errors received on this 10g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 18:
                            if (name != NULL)
                            {
                                *name = "oversize_error";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of oversize errors received on this 10g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 19:
                            if (name != NULL)
                            {
                                *name = "runt_error";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of runt errors received on this 10g upstream path.";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_AE_PATH_US_AUTO_ID_STAT_ALARM_RAISED:
                            if (name != NULL)
                            {
                                *name = "stat_alarm_raised";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Sent when a configured statistic alarm condition has been met.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_AE_PATH_US_AUTO_ID_STAT_ALARM_CLEARED:
                            if (name != NULL)
                            {
                                *name = "stat_alarm_cleared";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Sent when a configured statistic alarm condition is no longer met.";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "auto_cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Indication Configuration";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_CHANNEL:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "key";
                            }

                            if (descr != NULL)
                            {
                                *descr = "key";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "cfg";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_DEBUG:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "key";
                            }

                            if (descr != NULL)
                            {
                                *descr = "key";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "cfg";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_DEBUG_AUTO_ID_CLI_OUTPUT:
                            if (name != NULL)
                            {
                                *name = "cli_output";
                            }

                            if (descr != NULL)
                            {
                                *descr = "CLI Output String";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_DEBUG_AUTO_ID_FILE_ALMOST_FULL:
                            if (name != NULL)
                            {
                                *name = "file_almost_full";
                            }

                            if (descr != NULL)
                            {
                                *descr = "This indication is sent when DDR log file is 75% full";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "auto_cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Indication Configuration";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_OPER:
                    switch (subgroup)
                    {
                        case BCMOLT_DEBUG_OPER_ID_CLI_INPUT:
                            if (name != NULL)
                            {
                                *name = "cli_input";
                            }

                            if (descr != NULL)
                            {
                                *descr = "CLI Input String";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_DEBUG_OPER_ID_START_API_CAPTURE:
                            if (name != NULL)
                            {
                                *name = "start_api_capture";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Start API Capture";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_DEBUG_OPER_ID_STOP_API_CAPTURE:
                            if (name != NULL)
                            {
                                *name = "stop_api_capture";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Stop API Capture";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_DEBUG_OPER_ID_RESET_API_CAPTURE:
                            if (name != NULL)
                            {
                                *name = "reset_api_capture";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Reset API Capture";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_DEVICE:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "key";
                            }

                            if (descr != NULL)
                            {
                                *descr = "key";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "cfg";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_DEVICE_AUTO_ID_DEVICE_READY:
                            if (name != NULL)
                            {
                                *name = "device_ready";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Device ready indication used by the device control library (not sent to the host application).";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_DEVICE_AUTO_ID_CONNECTION_ESTABLISHED:
                            if (name != NULL)
                            {
                                *name = "connection_established";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Connection established indication used by the device control library (not sent to the host application).";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_DEVICE_AUTO_ID_DEVICE_KEEP_ALIVE:
                            if (name != NULL)
                            {
                                *name = "device_keep_alive";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Keep alive message from the device to the host - used by the device control library (not sent to the host application).";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_DEVICE_AUTO_ID_CONNECTION_FAILURE:
                            if (name != NULL)
                            {
                                *name = "connection_failure";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The host failed to connect to the device.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_DEVICE_AUTO_ID_CONNECTION_COMPLETE:
                            if (name != NULL)
                            {
                                *name = "connection_complete";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The host successfully connected to the device.  The device has either been reprogrammed with new firmware, or a connection was established with an existing device (see the \"standalone\" field).";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_DEVICE_AUTO_ID_DISCONNECTION_COMPLETE:
                            if (name != NULL)
                            {
                                *name = "disconnection_complete";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The host successfully disconnected from the device.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_DEVICE_AUTO_ID_SW_ERROR:
                            if (name != NULL)
                            {
                                *name = "sw_error";
                            }

                            if (descr != NULL)
                            {
                                *descr = "sw error";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_DEVICE_AUTO_ID_SW_EXCEPTION:
                            if (name != NULL)
                            {
                                *name = "sw_exception";
                            }

                            if (descr != NULL)
                            {
                                *descr = "sw exception";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_DEVICE_AUTO_ID_INDICATIONS_DROPPED:
                            if (name != NULL)
                            {
                                *name = "indications_dropped";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Sent when indications are dropped due to congestion / shaping.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_DEVICE_AUTO_ID_IMAGE_TRANSFER_COMPLETE:
                            if (name != NULL)
                            {
                                *name = "image_transfer_complete";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Image Transfer Complete";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_DEVICE_AUTO_ID_DDR_TEST_COMPLETE:
                            if (name != NULL)
                            {
                                *name = "ddr_test_complete";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The DDR Test has completed";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "auto_cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Indication Configuration";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_OPER:
                    switch (subgroup)
                    {
                        case BCMOLT_DEVICE_OPER_ID_CONNECT:
                            if (name != NULL)
                            {
                                *name = "connect";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Start connection process between the host processor and the device";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_DEVICE_OPER_ID_DISCONNECT:
                            if (name != NULL)
                            {
                                *name = "disconnect";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Disconnect the host from the device";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_DEVICE_OPER_ID_RESET:
                            if (name != NULL)
                            {
                                *name = "reset";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Resets the host/device.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_DEVICE_OPER_ID_HOST_KEEP_ALIVE:
                            if (name != NULL)
                            {
                                *name = "host_keep_alive";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Keep alive message from the host to the device - used by the device control library (should not be sent by the host application).";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_DEVICE_OPER_ID_SW_UPGRADE_ACTIVATE:
                            if (name != NULL)
                            {
                                *name = "sw_upgrade_activate";
                            }

                            if (descr != NULL)
                            {
                                *descr = "SW image activation for In-Service SW upgrade";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_DEVICE_OPER_ID_IMAGE_TRANSFER_START:
                            if (name != NULL)
                            {
                                *name = "image_transfer_start";
                            }

                            if (descr != NULL)
                            {
                                *descr = "This API message informs the OLT of the start of image transfer, and provides the information of the file image.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_DEVICE_OPER_ID_IMAGE_TRANSFER_DATA:
                            if (name != NULL)
                            {
                                *name = "image_transfer_data";
                            }

                            if (descr != NULL)
                            {
                                *descr = "used for transferring the actual data from/to the OLT.   not to be directly called by the user.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_DEVICE_OPER_ID_RUN_DDR_TEST:
                            if (name != NULL)
                            {
                                *name = "run_ddr_test";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Run a test on one or more of the DDR components.";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_EPON_DENIED_LINK:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "key";
                            }

                            if (descr != NULL)
                            {
                                *descr = "key";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "cfg";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_EPON_DENIED_LINK_AUTO_ID_UNKNOWN_LINK_VIOLATION:
                            if (name != NULL)
                            {
                                *name = "unknown_link_violation";
                            }

                            if (descr != NULL)
                            {
                                *descr = "A link tried to register while the PON was set to \"notify unknown\" registration behavior and this link was not pre-provisioned.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_DENIED_LINK_AUTO_ID_OVERHEAD_PROFILE_VIOLATION:
                            if (name != NULL)
                            {
                                *name = "overhead_profile_violation";
                            }

                            if (descr != NULL)
                            {
                                *descr = "This is when link tries to register and there are already too many existing laser on/off combinations.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_DENIED_LINK_AUTO_ID_LASER_ON_OFF_VIOLATION:
                            if (name != NULL)
                            {
                                *name = "laser_on_off_violation";
                            }

                            if (descr != NULL)
                            {
                                *descr = "This is when a link tries to reigster with an impossible laser on or off time.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_DENIED_LINK_AUTO_ID_MAX_LINK_VIOLATION:
                            if (name != NULL)
                            {
                                *name = "max_link_violation";
                            }

                            if (descr != NULL)
                            {
                                *descr = "A link tried to register and it would have put us over the provisioned max links for the corresponding EPON NI.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_DENIED_LINK_AUTO_ID_LLID_POOL_EMPTY_VIOLATION:
                            if (name != NULL)
                            {
                                *name = "llid_pool_empty_violation";
                            }

                            if (descr != NULL)
                            {
                                *descr = "A link tried to register and it there are no LLIDs available. If this occurs, it is possible there is an issue with your 'max links' and/or 'Base LLID' fields on your RP.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_DENIED_LINK_AUTO_ID_SYSTEM_RESOURCE_VIOLATION:
                            if (name != NULL)
                            {
                                *name = "system_resource_violation";
                            }

                            if (descr != NULL)
                            {
                                *descr = "A link tried to register and we were unable to allocate system resources for it.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_DENIED_LINK_AUTO_ID_RANGE_VIOLATION:
                            if (name != NULL)
                            {
                                *name = "range_violation";
                            }

                            if (descr != NULL)
                            {
                                *descr = "A link tried to register with a range value that was outside of the min/max fiber length.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_DENIED_LINK_AUTO_ID_TDM_CHANNELS_EXHAUSTED:
                            if (name != NULL)
                            {
                                *name = "tdm_channels_exhausted";
                            }

                            if (descr != NULL)
                            {
                                *descr = "TDM Channels Exhausted";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_DENIED_LINK_AUTO_ID_ROGUE_VIOLATION:
                            if (name != NULL)
                            {
                                *name = "rogue_violation";
                            }

                            if (descr != NULL)
                            {
                                *descr = "A Rogue ONU was detected on this link/LLID. ";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_DENIED_LINK_AUTO_ID_UPSTREAM_BANDWIDTH_VIOLATION:
                            if (name != NULL)
                            {
                                *name = "upstream_bandwidth_violation";
                            }

                            if (descr != NULL)
                            {
                                *descr = "This link failed to register because there was insufficient upstream bandwidth available to provide the default UBD.";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "auto_cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Indication Configuration";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_EPON_LINK:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "key";
                            }

                            if (descr != NULL)
                            {
                                *descr = "key";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "cfg";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "stat";
                            }

                            if (descr != NULL)
                            {
                                *descr = "stat";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "rx_data_bytes";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of data bytes received on this EPON link.";
                            }

                            return BCM_ERR_OK;
                        case 1:
                            if (name != NULL)
                            {
                                *name = "rx_data_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of data frames received on this EPON link.";
                            }

                            return BCM_ERR_OK;
                        case 2:
                            if (name != NULL)
                            {
                                *name = "rx_frames_64";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 64 byte frames received on this EPON Link";
                            }

                            return BCM_ERR_OK;
                        case 3:
                            if (name != NULL)
                            {
                                *name = "rx_frames_65_127";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 65 to 127 byte frames received on this EPON Link";
                            }

                            return BCM_ERR_OK;
                        case 4:
                            if (name != NULL)
                            {
                                *name = "rx_frames_128_255";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 128 to 255 byte frames received on this EPON Link";
                            }

                            return BCM_ERR_OK;
                        case 5:
                            if (name != NULL)
                            {
                                *name = "rx_frames_256_511";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 256 to 511 byte frames received on this EPON Link";
                            }

                            return BCM_ERR_OK;
                        case 6:
                            if (name != NULL)
                            {
                                *name = "rx_frames_512_1023";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 512 to 1023 byte frames received on this EPON Link";
                            }

                            return BCM_ERR_OK;
                        case 7:
                            if (name != NULL)
                            {
                                *name = "rx_frames_1024_1518";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 1024 to 1518 byte frames received on this EPON Link";
                            }

                            return BCM_ERR_OK;
                        case 8:
                            if (name != NULL)
                            {
                                *name = "rx_frames_1519_2047";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 1519 to 2047 byte frames received on this EPON Link";
                            }

                            return BCM_ERR_OK;
                        case 9:
                            if (name != NULL)
                            {
                                *name = "rx_frames_2048_4095";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 2048 to 4095 byte frames received on this EPON Link";
                            }

                            return BCM_ERR_OK;
                        case 10:
                            if (name != NULL)
                            {
                                *name = "rx_frames_4096_9216";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 4096 to 9216 byte frames received on this EPON Link";
                            }

                            return BCM_ERR_OK;
                        case 11:
                            if (name != NULL)
                            {
                                *name = "rx_frames_9217_16383";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 9217 to 16383 byte frames received on this EPON Link";
                            }

                            return BCM_ERR_OK;
                        case 12:
                            if (name != NULL)
                            {
                                *name = "rx_oam_bytes";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of OAM bytes received on this EPON link.";
                            }

                            return BCM_ERR_OK;
                        case 13:
                            if (name != NULL)
                            {
                                *name = "rx_oam_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of OAM frames received on this EPON link.";
                            }

                            return BCM_ERR_OK;
                        case 14:
                            if (name != NULL)
                            {
                                *name = "rx_mpcp_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of MPCP frames received on this EPON link.";
                            }

                            return BCM_ERR_OK;
                        case 15:
                            if (name != NULL)
                            {
                                *name = "rx_broadcast_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of broadcast frames received on this EPON link.";
                            }

                            return BCM_ERR_OK;
                        case 16:
                            if (name != NULL)
                            {
                                *name = "rx_unicast_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of unicast frames received on this EPON link.";
                            }

                            return BCM_ERR_OK;
                        case 17:
                            if (name != NULL)
                            {
                                *name = "rx_multicast_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of multicast frames received on this EPON link.";
                            }

                            return BCM_ERR_OK;
                        case 18:
                            if (name != NULL)
                            {
                                *name = "rx_report_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of report frames received on this EPON link.";
                            }

                            return BCM_ERR_OK;
                        case 19:
                            if (name != NULL)
                            {
                                *name = "rx_fcs_error";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of bad FCS errors received on this EPON Link";
                            }

                            return BCM_ERR_OK;
                        case 20:
                            if (name != NULL)
                            {
                                *name = "rx_oversize_error";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of oversize errors received on this EPON Link";
                            }

                            return BCM_ERR_OK;
                        case 21:
                            if (name != NULL)
                            {
                                *name = "rx_runt_error";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of runt errors received on this EPON Link";
                            }

                            return BCM_ERR_OK;
                        case 22:
                            if (name != NULL)
                            {
                                *name = "rx_line_code_error";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of line code errors received on this EPON Link";
                            }

                            return BCM_ERR_OK;
                        case 23:
                            if (name != NULL)
                            {
                                *name = "rx_line_code_error_max";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of line code errors max received on this EPON Link";
                            }

                            return BCM_ERR_OK;
                        case 24:
                            if (name != NULL)
                            {
                                *name = "tx_data_bytes";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of data bytes transmitted on this EPON link.";
                            }

                            return BCM_ERR_OK;
                        case 25:
                            if (name != NULL)
                            {
                                *name = "tx_data_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of data frames transmitted on this EPON link.";
                            }

                            return BCM_ERR_OK;
                        case 26:
                            if (name != NULL)
                            {
                                *name = "tx_frames_64";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 64 byte frames transmitted on this EPON Link";
                            }

                            return BCM_ERR_OK;
                        case 27:
                            if (name != NULL)
                            {
                                *name = "tx_frames_65_127";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 65 to 127 byte frames transmitted on this EPON Link";
                            }

                            return BCM_ERR_OK;
                        case 28:
                            if (name != NULL)
                            {
                                *name = "tx_frames_128_255";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 128 to 255 byte frames transmitted on this EPON Link";
                            }

                            return BCM_ERR_OK;
                        case 29:
                            if (name != NULL)
                            {
                                *name = "tx_frames_256_511";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 256 to 511 byte frames transmitted on this EPON Link";
                            }

                            return BCM_ERR_OK;
                        case 30:
                            if (name != NULL)
                            {
                                *name = "tx_frames_512_1023";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 512 to 1023 byte frames transmitted on this EPON Link";
                            }

                            return BCM_ERR_OK;
                        case 31:
                            if (name != NULL)
                            {
                                *name = "tx_frames_1024_1518";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 1024 to 1518 byte frames transmitted on this EPON Link";
                            }

                            return BCM_ERR_OK;
                        case 32:
                            if (name != NULL)
                            {
                                *name = "tx_frames_1519_2047";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 1519 to 2047 byte frames transmitted on this EPON Link";
                            }

                            return BCM_ERR_OK;
                        case 33:
                            if (name != NULL)
                            {
                                *name = "tx_frames_2048_4095";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 2048 to 4095 byte frames transmitted on this EPON Link";
                            }

                            return BCM_ERR_OK;
                        case 34:
                            if (name != NULL)
                            {
                                *name = "tx_frames_4096_9216";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 4096 to 9216 byte frames transmitted on this EPON Link";
                            }

                            return BCM_ERR_OK;
                        case 35:
                            if (name != NULL)
                            {
                                *name = "tx_frames_9217_16383";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 9217 to 16383 byte frames transmitted on this EPON Link";
                            }

                            return BCM_ERR_OK;
                        case 36:
                            if (name != NULL)
                            {
                                *name = "tx_oam_bytes";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of OAM bytes transmitted on this EPON link.";
                            }

                            return BCM_ERR_OK;
                        case 37:
                            if (name != NULL)
                            {
                                *name = "tx_oam_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of OAM frames transmitted on this EPON link.";
                            }

                            return BCM_ERR_OK;
                        case 38:
                            if (name != NULL)
                            {
                                *name = "tx_mpcp_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of MPCP frames transmitted on this EPON link.";
                            }

                            return BCM_ERR_OK;
                        case 39:
                            if (name != NULL)
                            {
                                *name = "tx_broadcast_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of broadcast frames transmitted on this EPON link.";
                            }

                            return BCM_ERR_OK;
                        case 40:
                            if (name != NULL)
                            {
                                *name = "tx_unicast_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of unicast frames transmitted on this EPON link.";
                            }

                            return BCM_ERR_OK;
                        case 41:
                            if (name != NULL)
                            {
                                *name = "tx_multicast_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of multicast frames transmitted on this EPON link.";
                            }

                            return BCM_ERR_OK;
                        case 42:
                            if (name != NULL)
                            {
                                *name = "tx_gates";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of gates transmitted on this EPON link.";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_EPON_LINK_AUTO_ID_KEY_EXCHANGE_FAILURE:
                            if (name != NULL)
                            {
                                *name = "key_exchange_failure";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The OLT failed to receive an updated encryption key within the expected time period after encryption key exchange has been initiated.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_LINK_AUTO_ID_ENCRYPTION_ENABLED:
                            if (name != NULL)
                            {
                                *name = "encryption_enabled";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Encryption has been started on the Maple.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_LINK_AUTO_ID_MPCP_REG_ACK_TIMEOUT:
                            if (name != NULL)
                            {
                                *name = "mpcp_reg_ack_timeout";
                            }

                            if (descr != NULL)
                            {
                                *descr = "An MPCP register acknowledgement was not received in the expected time interval for a link that tried to register";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_LINK_AUTO_ID_RANGE_VALUE_CHANGED:
                            if (name != NULL)
                            {
                                *name = "range_value_changed";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Indication sent when a range value has been changed.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_LINK_AUTO_ID_PROTECTION_SWITCH_OCCURRED:
                            if (name != NULL)
                            {
                                *name = "protection_switch_occurred";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The link has undergone a protection switch event.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_LINK_AUTO_ID_DUPLICATE_MPCP_REGISTRATION_REQUEST:
                            if (name != NULL)
                            {
                                *name = "duplicate_mpcp_registration_request";
                            }

                            if (descr != NULL)
                            {
                                *descr = "A register requested was received for a link with the same MAC address as a link that has already registered.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_LINK_AUTO_ID_LINK_SPEED_MISMATCH:
                            if (name != NULL)
                            {
                                *name = "link_speed_mismatch";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Host will receive this indication if a link registers then attempts to register later at a different speed, or if the link registers at a different speed than the speed with which it was pre-provisioned.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_LINK_AUTO_ID_MPCP_REPORT_TIMEOUT:
                            if (name != NULL)
                            {
                                *name = "mpcp_report_timeout";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The provisioned limit between reports for the specified link has been exceeded.  This link will be de-registered, and the alarm_status set when this occurs.  The alarm_status will be cleared when the link attempts to register again.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_LINK_AUTO_ID_OAM_KEEPALIVE_TIMEOUT:
                            if (name != NULL)
                            {
                                *name = "oam_keepalive_timeout";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The provisioned time limit between receiving upstream info frames has been exceeded.  Normally an ONU will reset its OAM state machine when this occurrs and the host must re-negotiate OAM and reprovision the link.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_LINK_AUTO_ID_MPCP_DISCOVERED:
                            if (name != NULL)
                            {
                                *name = "mpcp_discovered";
                            }

                            if (descr != NULL)
                            {
                                *descr = "A link has completed MPCP link registration.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_LINK_AUTO_ID_MPCP_DEREGISTERED:
                            if (name != NULL)
                            {
                                *name = "mpcp_deregistered";
                            }

                            if (descr != NULL)
                            {
                                *descr = "A previously registered link has completed MPCP de-registration.  This could be accompanied by an mpcp_report_timeout alarm if the link just disappeared, or not if this indication is a result of an OLT sending a MPCP deregister to the link.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_LINK_AUTO_ID_PREPROVISIONED_LINK_CREATED:
                            if (name != NULL)
                            {
                                *name = "preprovisioned_link_created";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Raised after an 'add_link' operation on an EPON NI completes successfully";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_LINK_AUTO_ID_OAM_KEEPALIVE_TIMER_STARTED:
                            if (name != NULL)
                            {
                                *name = "oam_keepalive_timer_started";
                            }

                            if (descr != NULL)
                            {
                                *descr = "OAM keepalive timer is started for this link.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_LINK_AUTO_ID_OAM_KEEPALIVE_TIMER_STOPPED:
                            if (name != NULL)
                            {
                                *name = "oam_keepalive_timer_stopped";
                            }

                            if (descr != NULL)
                            {
                                *descr = "OAM keepalive timer is stopped for this link.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_LINK_AUTO_ID_KEY_EXCHANGE_STARTED:
                            if (name != NULL)
                            {
                                *name = "key_exchange_started";
                            }

                            if (descr != NULL)
                            {
                                *descr = "key_exchange_started";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_LINK_AUTO_ID_KEY_EXCHANGE_STOPPED:
                            if (name != NULL)
                            {
                                *name = "key_exchange_stopped";
                            }

                            if (descr != NULL)
                            {
                                *descr = "key_exchange_stopped";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_LINK_AUTO_ID_STATIC_REGISTRATION_DONE:
                            if (name != NULL)
                            {
                                *name = "static_registration_done";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Static registration done";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_LINK_AUTO_ID_RERANGE_FAILURE:
                            if (name != NULL)
                            {
                                *name = "rerange_failure";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Re-range failure";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_LINK_AUTO_ID_LINK_DELETED:
                            if (name != NULL)
                            {
                                *name = "link_deleted";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Link Deleted";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_LINK_AUTO_ID_STAT_ALARM_RAISED:
                            if (name != NULL)
                            {
                                *name = "stat_alarm_raised";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Sent when a configured statistic alarm condition has been met.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_LINK_AUTO_ID_STAT_ALARM_CLEARED:
                            if (name != NULL)
                            {
                                *name = "stat_alarm_cleared";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Sent when a configured statistic alarm condition is no longer met.";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "auto_cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Indication Configuration";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_OPER:
                    switch (subgroup)
                    {
                        case BCMOLT_EPON_LINK_OPER_ID_FORCE_REDISCOVERY:
                            if (name != NULL)
                            {
                                *name = "force_rediscovery";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Deregister the specified EPON link and force it to re-register.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_LINK_OPER_ID_DELETE_LINK:
                            if (name != NULL)
                            {
                                *name = "delete_link";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Remove a logical link from the system entirely. If the link is not registered, it will be removed.  If the link is currently registered, it will  deregistered and removed.  It may immediately re-register with default parameters if the EPON_NI is configured to allow all links to register.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_LINK_OPER_ID_OAM_KEEPALIVE_TIMER_START:
                            if (name != NULL)
                            {
                                *name = "oam_keepalive_timer_start";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Start the OAM keepalive timer against this link.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_LINK_OPER_ID_OAM_KEEPALIVE_TIMER_STOP:
                            if (name != NULL)
                            {
                                *name = "oam_keepalive_timer_stop";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Stop the OAM keepalive timer for this link.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_LINK_OPER_ID_KEY_EXCHANGE_START:
                            if (name != NULL)
                            {
                                *name = "key_exchange_start";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Apply the corresponding provisioning for 'epon_link.key_exchange_config' against this link and then start key exchange timer with the given period.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_LINK_OPER_ID_KEY_EXCHANGE_STOP:
                            if (name != NULL)
                            {
                                *name = "key_exchange_stop";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Stops the key exchange timer for this link. This operation should generally only be called after a successful key_exchange_start.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_LINK_OPER_ID_STATIC_REGISTRATION:
                            if (name != NULL)
                            {
                                *name = "static_registration";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Statically registers the logical link";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_PROXY:
                    switch (subgroup)
                    {
                        case BCMOLT_EPON_LINK_PROXY_ID_INJECT_FRAME:
                            if (name != NULL)
                            {
                                *name = "inject_frame";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Send an arbitrary frame across the specified link.";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_PROXY_RX:
                    switch (subgroup)
                    {
                        case BCMOLT_EPON_LINK_PROXY_RX_ID_FRAME_CAPTURED:
                            if (name != NULL)
                            {
                                *name = "frame_captured";
                            }

                            if (descr != NULL)
                            {
                                *descr = "A frame matching host-specified criteria was received.";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_EPON_NI:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "key";
                            }

                            if (descr != NULL)
                            {
                                *descr = "key";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "cfg";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_EPON_NI_AUTO_ID_NO_REPORTS:
                            if (name != NULL)
                            {
                                *name = "no_reports";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Loss of all reports on all links on the EPON NI";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_NI_AUTO_ID_LLID_QUARANTINED:
                            if (name != NULL)
                            {
                                *name = "llid_quarantined";
                            }

                            if (descr != NULL)
                            {
                                *descr = "LLID Quarantined";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_NI_AUTO_ID_STATE_CHANGE_COMPLETED:
                            if (name != NULL)
                            {
                                *name = "state_change_completed";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Sent after a 'set_epon_ni_en_state' operation has completed.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_NI_AUTO_ID_RERANGE_FAILURE:
                            if (name != NULL)
                            {
                                *name = "rerange_failure";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Indicates the re-ranging process has failed";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_NI_AUTO_ID_RSSI_MEASUREMENT_COMPLETED:
                            if (name != NULL)
                            {
                                *name = "rssi_measurement_completed";
                            }

                            if (descr != NULL)
                            {
                                *descr = "RSSI Measurement Completed";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_NI_AUTO_ID_ONU_UPGRADE_COMPLETE:
                            if (name != NULL)
                            {
                                *name = "onu_upgrade_complete";
                            }

                            if (descr != NULL)
                            {
                                *descr = "ONU Upgrade Complete";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_NI_AUTO_ID_ROGUE_SCAN_COMPLETE:
                            if (name != NULL)
                            {
                                *name = "rogue_scan_complete";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Indciation that a scan is complete, any error is also returned. ";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_NI_AUTO_ID_MPCP_TIMESTAMP_CHANGED:
                            if (name != NULL)
                            {
                                *name = "mpcp_timestamp_changed";
                            }

                            if (descr != NULL)
                            {
                                *descr = "A clock transport pulse was received at the given MPCP timestamp.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_NI_AUTO_ID_AUTO_ROGUE_SCAN_1G_FAILURE:
                            if (name != NULL)
                            {
                                *name = "auto_rogue_scan_1g_failure";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The auto rogue scan found possible rogue onus on the 1G stream.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_NI_AUTO_ID_AUTO_ROGUE_SCAN_10G_FAILURE:
                            if (name != NULL)
                            {
                                *name = "auto_rogue_scan_10g_failure";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The auto rogue scan found possible rogue onus on the 1G stream.";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "auto_cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Indication Configuration";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_OPER:
                    switch (subgroup)
                    {
                        case BCMOLT_EPON_NI_OPER_ID_SET_EPON_NI_EN_STATE:
                            if (name != NULL)
                            {
                                *name = "set_epon_ni_en_state";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Set the EPON NI enable state.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_NI_OPER_ID_ISSUE_RSSI_GRANT:
                            if (name != NULL)
                            {
                                *name = "issue_rssi_grant";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Issues an RSSI grant to read RX Power";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_NI_OPER_ID_ADD_LINK:
                            if (name != NULL)
                            {
                                *name = "add_link";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Pre-provision an EPON link.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_NI_OPER_ID_ADD_MULTICAST_LINK:
                            if (name != NULL)
                            {
                                *name = "add_multicast_link";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Pre-provision an EPON multicast link.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_NI_OPER_ID_ADD_PROTECTED_STANDBY_LINK:
                            if (name != NULL)
                            {
                                *name = "add_protected_standby_link";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Adds a protected standby link.  Once it has been created, the link is considered \"standby\" for the puposes of protection switching.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_NI_OPER_ID_PROTECTION_SWITCHING_APPLY_RERANGE_DELTA:
                            if (name != NULL)
                            {
                                *name = "protection_switching_apply_rerange_delta";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Protection switching apply re-range delta";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_NI_OPER_ID_ROGUE_LLID_SCAN:
                            if (name != NULL)
                            {
                                *name = "rogue_llid_scan";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Issue a request to scan all LLIDs or a specific LLID on a PON";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_NI_OPER_ID_START_ONU_UPGRADE:
                            if (name != NULL)
                            {
                                *name = "start_onu_upgrade";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Start ONU Firmware Upgrade";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_EPON_ONU_10G_US:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "key";
                            }

                            if (descr != NULL)
                            {
                                *descr = "key";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "cfg";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "stat";
                            }

                            if (descr != NULL)
                            {
                                *descr = "stat";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "fec_code_words_total";
                            }

                            if (descr != NULL)
                            {
                                *descr = "FEC stats code words total";
                            }

                            return BCM_ERR_OK;
                        case 1:
                            if (name != NULL)
                            {
                                *name = "fec_code_words_decode_fails";
                            }

                            if (descr != NULL)
                            {
                                *descr = "FEC stats code words decode fails";
                            }

                            return BCM_ERR_OK;
                        case 2:
                            if (name != NULL)
                            {
                                *name = "fec_zeroes_corrected";
                            }

                            if (descr != NULL)
                            {
                                *descr = "FEC stats zeros corrected";
                            }

                            return BCM_ERR_OK;
                        case 3:
                            if (name != NULL)
                            {
                                *name = "fec_ones_corrected";
                            }

                            if (descr != NULL)
                            {
                                *descr = "FEC stats ones corected";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_EPON_ONU_10G_US_AUTO_ID_STAT_ALARM_RAISED:
                            if (name != NULL)
                            {
                                *name = "stat_alarm_raised";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Sent when a configured statistic alarm condition has been met.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_ONU_10G_US_AUTO_ID_STAT_ALARM_CLEARED:
                            if (name != NULL)
                            {
                                *name = "stat_alarm_cleared";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Sent when a configured statistic alarm condition is no longer met.";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "auto_cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Indication Configuration";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_EPON_ONU_1G_US:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "key";
                            }

                            if (descr != NULL)
                            {
                                *descr = "key";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "cfg";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "stat";
                            }

                            if (descr != NULL)
                            {
                                *descr = "stat";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "good_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Good Frame Count, including nonFEC and FEC";
                            }

                            return BCM_ERR_OK;
                        case 1:
                            if (name != NULL)
                            {
                                *name = "good_bytes";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Good Byte Count, including nonFEC and FEC";
                            }

                            return BCM_ERR_OK;
                        case 2:
                            if (name != NULL)
                            {
                                *name = "oversz_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Oversized frame count (frames larger than 2000 bytes)";
                            }

                            return BCM_ERR_OK;
                        case 3:
                            if (name != NULL)
                            {
                                *name = "non_fec_good_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Non FEC Good Frame Count";
                            }

                            return BCM_ERR_OK;
                        case 4:
                            if (name != NULL)
                            {
                                *name = "non_fec_good_bytes";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Non FEC Good Byte Count";
                            }

                            return BCM_ERR_OK;
                        case 5:
                            if (name != NULL)
                            {
                                *name = "fec_good_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "FEC Good Frame Count";
                            }

                            return BCM_ERR_OK;
                        case 6:
                            if (name != NULL)
                            {
                                *name = "fec_good_bytes";
                            }

                            if (descr != NULL)
                            {
                                *descr = "FEC Good Byte Count";
                            }

                            return BCM_ERR_OK;
                        case 7:
                            if (name != NULL)
                            {
                                *name = "fec_frames_exc_errs";
                            }

                            if (descr != NULL)
                            {
                                *descr = "FEC Frames which exceeded 8 symbol errors";
                            }

                            return BCM_ERR_OK;
                        case 8:
                            if (name != NULL)
                            {
                                *name = "fec_blks_no_errs";
                            }

                            if (descr != NULL)
                            {
                                *descr = "FEC Blocks with no errors";
                            }

                            return BCM_ERR_OK;
                        case 9:
                            if (name != NULL)
                            {
                                *name = "fec_blks_corr_errs";
                            }

                            if (descr != NULL)
                            {
                                *descr = "FEC Blocks with correctable errors";
                            }

                            return BCM_ERR_OK;
                        case 10:
                            if (name != NULL)
                            {
                                *name = "fec_blks_uncorr_errs";
                            }

                            if (descr != NULL)
                            {
                                *descr = "FEC Blocks with uncorrectable errors";
                            }

                            return BCM_ERR_OK;
                        case 11:
                            if (name != NULL)
                            {
                                *name = "fec_corr_bytes";
                            }

                            if (descr != NULL)
                            {
                                *descr = "FEC Corrected Bytes/Symbols";
                            }

                            return BCM_ERR_OK;
                        case 12:
                            if (name != NULL)
                            {
                                *name = "fec_corr_zeroes";
                            }

                            if (descr != NULL)
                            {
                                *descr = "FEC Corrected Zeroes, 8b domain";
                            }

                            return BCM_ERR_OK;
                        case 13:
                            if (name != NULL)
                            {
                                *name = "fec_corr_ones";
                            }

                            if (descr != NULL)
                            {
                                *descr = "FEC Corrected Ones, 8b domain";
                            }

                            return BCM_ERR_OK;
                        case 14:
                            if (name != NULL)
                            {
                                *name = "undersz_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Undersize frame count (frames less than 64 bytes)";
                            }

                            return BCM_ERR_OK;
                        case 15:
                            if (name != NULL)
                            {
                                *name = "errorsz_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Errored frame ";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_EPON_ONU_1G_US_AUTO_ID_STAT_ALARM_RAISED:
                            if (name != NULL)
                            {
                                *name = "stat_alarm_raised";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Sent when a configured statistic alarm condition has been met.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_ONU_1G_US_AUTO_ID_STAT_ALARM_CLEARED:
                            if (name != NULL)
                            {
                                *name = "stat_alarm_cleared";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Sent when a configured statistic alarm condition is no longer met.";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "auto_cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Indication Configuration";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_EPON_PATH_10G_DS:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "key";
                            }

                            if (descr != NULL)
                            {
                                *descr = "key";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "cfg";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "stat";
                            }

                            if (descr != NULL)
                            {
                                *descr = "stat";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "bytes";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of bytes transmitted on this 10g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 1:
                            if (name != NULL)
                            {
                                *name = "frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of frames transmitted on this 10g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 2:
                            if (name != NULL)
                            {
                                *name = "frames_64";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 64 byte frames transmitted on this 10g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 3:
                            if (name != NULL)
                            {
                                *name = "frames_65_127";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 65 to 127 byte frames transmitted on this 10g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 4:
                            if (name != NULL)
                            {
                                *name = "frames_128_255";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 128 to 255 byte frames transmitted on this 10g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 5:
                            if (name != NULL)
                            {
                                *name = "frames_256_511";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 256 to 511 byte frames transmitted on this 10g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 6:
                            if (name != NULL)
                            {
                                *name = "frames_512_1023";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 512 to 1023 byte frames transmitted on this 10g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 7:
                            if (name != NULL)
                            {
                                *name = "frames_1024_1518";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 1024 to 1518 byte frames transmitted on this 10g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 8:
                            if (name != NULL)
                            {
                                *name = "frames_1519_2047";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 1519 to 2047 byte frames transmitted on this 10g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 9:
                            if (name != NULL)
                            {
                                *name = "frames_2048_4095";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 2048 to 4095 byte frames transmitted on this 10g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 10:
                            if (name != NULL)
                            {
                                *name = "frames_4096_9216";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 4096 to 9216 byte frames transmitted on this 10g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 11:
                            if (name != NULL)
                            {
                                *name = "frames_9217_16383";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 9217 to 16383 byte frames transmitted on this 10g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 12:
                            if (name != NULL)
                            {
                                *name = "broadcast_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of broadcast frames transmitted on this 10g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 13:
                            if (name != NULL)
                            {
                                *name = "data_bytes";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of data bytes transmitted on this 10g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 14:
                            if (name != NULL)
                            {
                                *name = "multicast_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of multicast frames transmitted on this 10g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 15:
                            if (name != NULL)
                            {
                                *name = "unicast_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of unicast frames transmitted on this 10g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 16:
                            if (name != NULL)
                            {
                                *name = "oam_bytes";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Number of OAM bytes transmitted on this 10g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 17:
                            if (name != NULL)
                            {
                                *name = "oam_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Number of OAM frames transmitted on this 10g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 18:
                            if (name != NULL)
                            {
                                *name = "gate_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Number of gate frames transmitted on this 10g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 19:
                            if (name != NULL)
                            {
                                *name = "mpcp_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Number of MPCP frames transmitted on this 10g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 20:
                            if (name != NULL)
                            {
                                *name = "abort_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Number of abort frames transmitted on this 10g downstream path.";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_EPON_PATH_10G_DS_AUTO_ID_STAT_ALARM_RAISED:
                            if (name != NULL)
                            {
                                *name = "stat_alarm_raised";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Sent when a configured statistic alarm condition has been met.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_PATH_10G_DS_AUTO_ID_STAT_ALARM_CLEARED:
                            if (name != NULL)
                            {
                                *name = "stat_alarm_cleared";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Sent when a configured statistic alarm condition is no longer met.";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "auto_cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Indication Configuration";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_EPON_PATH_10G_US:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "key";
                            }

                            if (descr != NULL)
                            {
                                *descr = "key";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "cfg";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "stat";
                            }

                            if (descr != NULL)
                            {
                                *descr = "stat";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "bytes";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of bytes received on this 10g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 1:
                            if (name != NULL)
                            {
                                *name = "frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of frames received on this 10g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 2:
                            if (name != NULL)
                            {
                                *name = "frames_64";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 64 byte frames received on this 10g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 3:
                            if (name != NULL)
                            {
                                *name = "frames_65_127";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 65 to 127 byte frames received on this 10g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 4:
                            if (name != NULL)
                            {
                                *name = "frames_128_255";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 128 to 255 byte frames received on this 10g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 5:
                            if (name != NULL)
                            {
                                *name = "frames_256_511";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 256 to 511 byte frames received on this 10g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 6:
                            if (name != NULL)
                            {
                                *name = "frames_512_1023";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 512 to 1023 byte frames received on this 10g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 7:
                            if (name != NULL)
                            {
                                *name = "frames_1024_1518";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 1024 to 1518 byte frames received on this 10g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 8:
                            if (name != NULL)
                            {
                                *name = "frames_1519_2047";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 1519 to 2047 byte frames received on this 10g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 9:
                            if (name != NULL)
                            {
                                *name = "frames_2048_4095";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 2048 to 4095 byte frames received on this 10g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 10:
                            if (name != NULL)
                            {
                                *name = "frames_4096_9216";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 4096 to 9216 byte frames received on this 10g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 11:
                            if (name != NULL)
                            {
                                *name = "frames_9217_16383";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 9217 to 16383 byte frames received on this 10g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 12:
                            if (name != NULL)
                            {
                                *name = "broadcast_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of broadcast frames received on this 10g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 13:
                            if (name != NULL)
                            {
                                *name = "data_bytes";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of data bytes received on this 10g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 14:
                            if (name != NULL)
                            {
                                *name = "multicast_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of multicast frames received on this 10g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 15:
                            if (name != NULL)
                            {
                                *name = "unicast_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of unicast frames received on this 10g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 16:
                            if (name != NULL)
                            {
                                *name = "mpcp_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of MPCP frames received on this 10g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 17:
                            if (name != NULL)
                            {
                                *name = "oam_bytes";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of OAM bytes received on this 10g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 18:
                            if (name != NULL)
                            {
                                *name = "oam_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of OAM frames received on this 10g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 19:
                            if (name != NULL)
                            {
                                *name = "report_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of report frames received on this 10g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 20:
                            if (name != NULL)
                            {
                                *name = "abort_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of abort frames received on this 10g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 21:
                            if (name != NULL)
                            {
                                *name = "fcs_error";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of bad FCS errors received on this 10g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 22:
                            if (name != NULL)
                            {
                                *name = "crc_8_error";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of CRC8 errors received on this 10g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 23:
                            if (name != NULL)
                            {
                                *name = "out_of_slot";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of out of slot errors received on this 10g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 24:
                            if (name != NULL)
                            {
                                *name = "oversize_error";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of oversize errors received on this 10g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 25:
                            if (name != NULL)
                            {
                                *name = "runt_error";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of runt errors received on this 10g upstream path.";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_EPON_PATH_10G_US_AUTO_ID_STAT_ALARM_RAISED:
                            if (name != NULL)
                            {
                                *name = "stat_alarm_raised";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Sent when a configured statistic alarm condition has been met.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_PATH_10G_US_AUTO_ID_STAT_ALARM_CLEARED:
                            if (name != NULL)
                            {
                                *name = "stat_alarm_cleared";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Sent when a configured statistic alarm condition is no longer met.";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "auto_cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Indication Configuration";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_EPON_PATH_1G_DS:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "key";
                            }

                            if (descr != NULL)
                            {
                                *descr = "key";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "cfg";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "stat";
                            }

                            if (descr != NULL)
                            {
                                *descr = "stat";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "bytes";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of bytes transmitted on this 1g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 1:
                            if (name != NULL)
                            {
                                *name = "frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of frames transmitted on this 1g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 2:
                            if (name != NULL)
                            {
                                *name = "frames_64";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 64 byte frames transmitted on this 1g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 3:
                            if (name != NULL)
                            {
                                *name = "frames_65_127";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 65 to 127 byte frames transmitted on this 1g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 4:
                            if (name != NULL)
                            {
                                *name = "frames_128_255";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 128 to 255 byte frames transmitted on this 1g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 5:
                            if (name != NULL)
                            {
                                *name = "frames_256_511";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 256 to 511 byte frames transmitted on this 1g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 6:
                            if (name != NULL)
                            {
                                *name = "frames_512_1023";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 512 to 1023 byte frames transmitted on this 1g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 7:
                            if (name != NULL)
                            {
                                *name = "frames_1024_1518";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 1024 to 1518 byte frames transmitted on this 1g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 8:
                            if (name != NULL)
                            {
                                *name = "frames_1519_2047";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 1519 to 2047 byte frames transmitted on this 1g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 9:
                            if (name != NULL)
                            {
                                *name = "frames_2048_4095";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 2048 to 4095 byte frames transmitted on this 1g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 10:
                            if (name != NULL)
                            {
                                *name = "frames_4096_9216";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 4096 to 9216 byte frames transmitted on this 1g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 11:
                            if (name != NULL)
                            {
                                *name = "frames_9217_16383";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 9217 to 16383 byte frames transmitted on this 1g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 12:
                            if (name != NULL)
                            {
                                *name = "broadcast_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of broadcast frames transmitted on this 1g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 13:
                            if (name != NULL)
                            {
                                *name = "data_bytes";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of data bytes transmitted on this 1g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 14:
                            if (name != NULL)
                            {
                                *name = "multicast_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of multicast frames transmitted on this 1g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 15:
                            if (name != NULL)
                            {
                                *name = "unicast_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of unicast frames transmitted on this 1g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 16:
                            if (name != NULL)
                            {
                                *name = "oam_bytes";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Number of OAM bytes transmitted on this 1g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 17:
                            if (name != NULL)
                            {
                                *name = "oam_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Number of OAM frames transmitted on this 1g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 18:
                            if (name != NULL)
                            {
                                *name = "gate_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Number of gate frames transmitted on this 1g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 19:
                            if (name != NULL)
                            {
                                *name = "mpcp_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Number of MPCP frames transmitted on this 1g downstream path.";
                            }

                            return BCM_ERR_OK;
                        case 20:
                            if (name != NULL)
                            {
                                *name = "abort_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Number of abort frames transmitted on this 1g downstream path.";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_EPON_PATH_1G_DS_AUTO_ID_STAT_ALARM_RAISED:
                            if (name != NULL)
                            {
                                *name = "stat_alarm_raised";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Sent when a configured statistic alarm condition has been met.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_PATH_1G_DS_AUTO_ID_STAT_ALARM_CLEARED:
                            if (name != NULL)
                            {
                                *name = "stat_alarm_cleared";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Sent when a configured statistic alarm condition is no longer met.";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "auto_cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Indication Configuration";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_EPON_PATH_1G_US:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "key";
                            }

                            if (descr != NULL)
                            {
                                *descr = "key";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "cfg";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "stat";
                            }

                            if (descr != NULL)
                            {
                                *descr = "stat";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "bytes";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of bytes received on this 1g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 1:
                            if (name != NULL)
                            {
                                *name = "frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of frames received on this 1g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 2:
                            if (name != NULL)
                            {
                                *name = "frames_64";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 64 byte frames received on this 1g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 3:
                            if (name != NULL)
                            {
                                *name = "frames_65_127";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 65 to 127 byte frames received on this 1g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 4:
                            if (name != NULL)
                            {
                                *name = "frames_128_255";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 128 to 255 byte frames received on this 1g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 5:
                            if (name != NULL)
                            {
                                *name = "frames_256_511";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 256 to 511 byte frames received on this 1g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 6:
                            if (name != NULL)
                            {
                                *name = "frames_512_1023";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 512 to 1023 byte frames received on this 1g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 7:
                            if (name != NULL)
                            {
                                *name = "frames_1024_1518";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 1024 to 1518 byte frames received on this 1g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 8:
                            if (name != NULL)
                            {
                                *name = "frames_1519_2047";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 1519 to 2047 byte frames received on this 1g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 9:
                            if (name != NULL)
                            {
                                *name = "frames_2048_4095";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 2048 to 4095 byte frames received on this 1g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 10:
                            if (name != NULL)
                            {
                                *name = "frames_4096_9216";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 4096 to 9216 byte frames received on this 1g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 11:
                            if (name != NULL)
                            {
                                *name = "frames_9217_16383";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of 9217 to 16383 byte frames received on this 1g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 12:
                            if (name != NULL)
                            {
                                *name = "broadcast_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of broadcast frames received on this 1g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 13:
                            if (name != NULL)
                            {
                                *name = "data_bytes";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of data bytes received on this 1g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 14:
                            if (name != NULL)
                            {
                                *name = "multicast_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of multicast frames received on this 1g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 15:
                            if (name != NULL)
                            {
                                *name = "unicast_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of unicast frames received on this 1g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 16:
                            if (name != NULL)
                            {
                                *name = "mpcp_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of MPCP frames received on this 1g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 17:
                            if (name != NULL)
                            {
                                *name = "oam_bytes";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of OAM bytes received on this 1g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 18:
                            if (name != NULL)
                            {
                                *name = "oam_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of OAM frames received on this 1g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 19:
                            if (name != NULL)
                            {
                                *name = "report_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of report frames received on this 1g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 20:
                            if (name != NULL)
                            {
                                *name = "abort_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of abort frames received on this 1g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 21:
                            if (name != NULL)
                            {
                                *name = "fcs_error";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of bad FCS errors received on this 1g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 22:
                            if (name != NULL)
                            {
                                *name = "crc_8_error";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of CRC8 errors received on this 1g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 23:
                            if (name != NULL)
                            {
                                *name = "out_of_slot";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of out of slot errors received on this 1g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 24:
                            if (name != NULL)
                            {
                                *name = "oversize_error";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of oversize errors received on this 1g upstream path.";
                            }

                            return BCM_ERR_OK;
                        case 25:
                            if (name != NULL)
                            {
                                *name = "runt_error";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of runt errors received on this 1g upstream path.";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_EPON_PATH_1G_US_AUTO_ID_STAT_ALARM_RAISED:
                            if (name != NULL)
                            {
                                *name = "stat_alarm_raised";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Sent when a configured statistic alarm condition has been met.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_EPON_PATH_1G_US_AUTO_ID_STAT_ALARM_CLEARED:
                            if (name != NULL)
                            {
                                *name = "stat_alarm_cleared";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Sent when a configured statistic alarm condition is no longer met.";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "auto_cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Indication Configuration";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_EPON_RP:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "key";
                            }

                            if (descr != NULL)
                            {
                                *descr = "key";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "cfg";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_GPIO:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "key";
                            }

                            if (descr != NULL)
                            {
                                *descr = "key";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "cfg";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_GPON_ALLOC:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "key";
                            }

                            if (descr != NULL)
                            {
                                *descr = "key";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "cfg";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "stat";
                            }

                            if (descr != NULL)
                            {
                                *descr = "stat";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "rx_bytes";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received Bytes";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_GPON_ALLOC_AUTO_ID_CONFIGURATION_COMPLETED:
                            if (name != NULL)
                            {
                                *name = "configuration_completed";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Configuration Completed";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ALLOC_AUTO_ID_GET_ALLOC_STATS_COMPLETED:
                            if (name != NULL)
                            {
                                *name = "get_alloc_stats_completed";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Collected alloc ID statistics from get_stats operation";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ALLOC_AUTO_ID_STAT_ALARM_RAISED:
                            if (name != NULL)
                            {
                                *name = "stat_alarm_raised";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Sent when a configured statistic alarm condition has been met.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ALLOC_AUTO_ID_STAT_ALARM_CLEARED:
                            if (name != NULL)
                            {
                                *name = "stat_alarm_cleared";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Sent when a configured statistic alarm condition is no longer met.";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "auto_cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Indication Configuration";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_OPER:
                    switch (subgroup)
                    {
                        case BCMOLT_GPON_ALLOC_OPER_ID_SET_STATE:
                            if (name != NULL)
                            {
                                *name = "set_state";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Sets the alloc's activation state.  This is only used for protection switching on an active-standby PON.  In normal operation, this isn't necessary since allocs are activated/deactivated automatically along with the ONU.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ALLOC_OPER_ID_GET_STATS:
                            if (name != NULL)
                            {
                                *name = "get_stats";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Run statistics collection for a given period of time";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_GPON_GEM_PORT:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "key";
                            }

                            if (descr != NULL)
                            {
                                *descr = "key";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "cfg";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "stat";
                            }

                            if (descr != NULL)
                            {
                                *descr = "stat";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "rx_packets";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received GEM frames";
                            }

                            return BCM_ERR_OK;
                        case 1:
                            if (name != NULL)
                            {
                                *name = "rx_bytes";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received bytes";
                            }

                            return BCM_ERR_OK;
                        case 2:
                            if (name != NULL)
                            {
                                *name = "tx_packets";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Transmitted GEM frames";
                            }

                            return BCM_ERR_OK;
                        case 3:
                            if (name != NULL)
                            {
                                *name = "tx_bytes";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Transmitted bytes";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_GPON_GEM_PORT_AUTO_ID_CONFIGURATION_COMPLETED:
                            if (name != NULL)
                            {
                                *name = "configuration_completed";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Configuration Completed";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_GEM_PORT_AUTO_ID_STAT_ALARM_RAISED:
                            if (name != NULL)
                            {
                                *name = "stat_alarm_raised";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Sent when a configured statistic alarm condition has been met.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_GEM_PORT_AUTO_ID_STAT_ALARM_CLEARED:
                            if (name != NULL)
                            {
                                *name = "stat_alarm_cleared";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Sent when a configured statistic alarm condition is no longer met.";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "auto_cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Indication Configuration";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_OPER:
                    switch (subgroup)
                    {
                        case BCMOLT_GPON_GEM_PORT_OPER_ID_SET_STATE:
                            if (name != NULL)
                            {
                                *name = "set_state";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Sets the GEM port's activation state.  This is only used for protection switching on an active-standby PON.  In normal operation, this isn't necessary since GEM ports are activated/deactivated automatically along with the ONU.";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_GPON_IWF:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "key";
                            }

                            if (descr != NULL)
                            {
                                *descr = "key";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "cfg";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "stat";
                            }

                            if (descr != NULL)
                            {
                                *descr = "stat";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "ds_hit_event";
                            }

                            if (descr != NULL)
                            {
                                *descr = "DS hit event";
                            }

                            return BCM_ERR_OK;
                        case 1:
                            if (name != NULL)
                            {
                                *name = "ds_miss_event";
                            }

                            if (descr != NULL)
                            {
                                *descr = "DS miss event";
                            }

                            return BCM_ERR_OK;
                        case 2:
                            if (name != NULL)
                            {
                                *name = "ds_drop_due_to_miss_event";
                            }

                            if (descr != NULL)
                            {
                                *descr = "DS drop due to miss event";
                            }

                            return BCM_ERR_OK;
                        case 3:
                            if (name != NULL)
                            {
                                *name = "ds_drop_due_to_hit_event";
                            }

                            if (descr != NULL)
                            {
                                *descr = "DS drop due to hit event";
                            }

                            return BCM_ERR_OK;
                        case 4:
                            if (name != NULL)
                            {
                                *name = "ds_drop_to_disabled_gem";
                            }

                            if (descr != NULL)
                            {
                                *descr = "DS drop to disabled GEM";
                            }

                            return BCM_ERR_OK;
                        case 5:
                            if (name != NULL)
                            {
                                *name = "new_mac_discovered";
                            }

                            if (descr != NULL)
                            {
                                *descr = "New MAC discovered";
                            }

                            return BCM_ERR_OK;
                        case 6:
                            if (name != NULL)
                            {
                                *name = "move_event";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Move event";
                            }

                            return BCM_ERR_OK;
                        case 7:
                            if (name != NULL)
                            {
                                *name = "new_mac_drop_due_to_fifo_full";
                            }

                            if (descr != NULL)
                            {
                                *descr = "New MAC drop due to fifo full";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_GPON_IWF_AUTO_ID_FLUSH_MAC_TABLE_COMPLETED:
                            if (name != NULL)
                            {
                                *name = "flush_mac_table_completed";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Flush MAC Table Completed";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_IWF_AUTO_ID_SCAN_MAC_TABLE_COMPLETED:
                            if (name != NULL)
                            {
                                *name = "scan_mac_table_completed";
                            }

                            if (descr != NULL)
                            {
                                *descr = "A MAC table scan initiated using the \"scan_mac_table\" operation is complete.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_IWF_AUTO_ID_STAT_ALARM_RAISED:
                            if (name != NULL)
                            {
                                *name = "stat_alarm_raised";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Sent when a configured statistic alarm condition has been met.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_IWF_AUTO_ID_STAT_ALARM_CLEARED:
                            if (name != NULL)
                            {
                                *name = "stat_alarm_cleared";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Sent when a configured statistic alarm condition is no longer met.";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "auto_cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Indication Configuration";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_OPER:
                    switch (subgroup)
                    {
                        case BCMOLT_GPON_IWF_OPER_ID_FLUSH_MAC_TABLE:
                            if (name != NULL)
                            {
                                *name = "flush_mac_table";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Flush MAC Table";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_IWF_OPER_ID_SCAN_MAC_TABLE:
                            if (name != NULL)
                            {
                                *name = "scan_mac_table";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Scans MAC table for a given MAC address then returns the associated information";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_GPON_IWF_DS_EGRESS_FLOW:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "key";
                            }

                            if (descr != NULL)
                            {
                                *descr = "key";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "cfg";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_GPON_IWF_DS_INGRESS_FLOW:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "key";
                            }

                            if (descr != NULL)
                            {
                                *descr = "key";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "cfg";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_GPON_IWF_MAC_TABLE:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "key";
                            }

                            if (descr != NULL)
                            {
                                *descr = "key";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "cfg";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_GPON_IWF_MAC_TABLE_AUTO_ID_NEW_MAC:
                            if (name != NULL)
                            {
                                *name = "new_mac";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Sent when a new MAC address / VID combination is seen in the upstream traffic stream.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_IWF_MAC_TABLE_AUTO_ID_MAC_AGED:
                            if (name != NULL)
                            {
                                *name = "mac_aged";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Sent when a MAC table entry ages.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_IWF_MAC_TABLE_AUTO_ID_MAC_MOVE:
                            if (name != NULL)
                            {
                                *name = "mac_move";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Sent when the MAC table is in move mode and a packet is seen that matches on MAC address / VID but doesn't match on flow ID.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_IWF_MAC_TABLE_AUTO_ID_MAC_DROPPED:
                            if (name != NULL)
                            {
                                *name = "mac_dropped";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Sent when an entry cannot be learned since the MAC table is full.";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "auto_cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Indication Configuration";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_GPON_IWF_US_FLOW:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "key";
                            }

                            if (descr != NULL)
                            {
                                *descr = "key";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "cfg";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_GPON_NI:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "key";
                            }

                            if (descr != NULL)
                            {
                                *descr = "key";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "cfg";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "stat";
                            }

                            if (descr != NULL)
                            {
                                *descr = "stat";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "fec_codewords";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received FEC codewords";
                            }

                            return BCM_ERR_OK;
                        case 1:
                            if (name != NULL)
                            {
                                *name = "fec_codewords_uncorrected";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received uncorrected FEC codewords";
                            }

                            return BCM_ERR_OK;
                        case 2:
                            if (name != NULL)
                            {
                                *name = "bip8_bytes";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received bytes protected by bip8";
                            }

                            return BCM_ERR_OK;
                        case 3:
                            if (name != NULL)
                            {
                                *name = "bip8_errors";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received bip8 errors";
                            }

                            return BCM_ERR_OK;
                        case 4:
                            if (name != NULL)
                            {
                                *name = "rx_gem_packets";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received GEM frames";
                            }

                            return BCM_ERR_OK;
                        case 5:
                            if (name != NULL)
                            {
                                *name = "rx_gem_dropped";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received dropped GEM ID packets";
                            }

                            return BCM_ERR_OK;
                        case 6:
                            if (name != NULL)
                            {
                                *name = "rx_gem_idle";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received idle GEM frames";
                            }

                            return BCM_ERR_OK;
                        case 7:
                            if (name != NULL)
                            {
                                *name = "rx_gem_corrected";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received corrected GEM frames";
                            }

                            return BCM_ERR_OK;
                        case 8:
                            if (name != NULL)
                            {
                                *name = "rx_gem_illegal";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received illegal GEM frames";
                            }

                            return BCM_ERR_OK;
                        case 9:
                            if (name != NULL)
                            {
                                *name = "rx_allocations_valid";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received valid allocations";
                            }

                            return BCM_ERR_OK;
                        case 10:
                            if (name != NULL)
                            {
                                *name = "rx_allocations_invalid";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received invalid allocations";
                            }

                            return BCM_ERR_OK;
                        case 11:
                            if (name != NULL)
                            {
                                *name = "rx_allocations_disabled";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received disabled allocations";
                            }

                            return BCM_ERR_OK;
                        case 12:
                            if (name != NULL)
                            {
                                *name = "rx_ploams";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received Ploams";
                            }

                            return BCM_ERR_OK;
                        case 13:
                            if (name != NULL)
                            {
                                *name = "rx_ploams_non_idle";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received non idle Ploams";
                            }

                            return BCM_ERR_OK;
                        case 14:
                            if (name != NULL)
                            {
                                *name = "rx_ploams_error";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received error Ploams";
                            }

                            return BCM_ERR_OK;
                        case 15:
                            if (name != NULL)
                            {
                                *name = "rx_ploams_dropped";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received dropped Ploams";
                            }

                            return BCM_ERR_OK;
                        case 16:
                            if (name != NULL)
                            {
                                *name = "rx_cpu";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received CPU packets";
                            }

                            return BCM_ERR_OK;
                        case 17:
                            if (name != NULL)
                            {
                                *name = "rx_omci";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received OMCI packets";
                            }

                            return BCM_ERR_OK;
                        case 18:
                            if (name != NULL)
                            {
                                *name = "rx_omci_packets_crc_error";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received OMCI packets with CRC errors";
                            }

                            return BCM_ERR_OK;
                        case 19:
                            if (name != NULL)
                            {
                                *name = "rx_dropped_too_short";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received packets dropped due to length too short";
                            }

                            return BCM_ERR_OK;
                        case 20:
                            if (name != NULL)
                            {
                                *name = "rx_dropped_too_long";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received packet dropped due to length too long";
                            }

                            return BCM_ERR_OK;
                        case 21:
                            if (name != NULL)
                            {
                                *name = "rx_crc_errors";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received packet dropped due to crc error";
                            }

                            return BCM_ERR_OK;
                        case 22:
                            if (name != NULL)
                            {
                                *name = "rx_key_errors";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received packet dropped due to key error";
                            }

                            return BCM_ERR_OK;
                        case 23:
                            if (name != NULL)
                            {
                                *name = "rx_fragments_errors";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received packet dropped due to fragmentation error";
                            }

                            return BCM_ERR_OK;
                        case 24:
                            if (name != NULL)
                            {
                                *name = "rx_packets_dropped";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Global dropped packets";
                            }

                            return BCM_ERR_OK;
                        case 25:
                            if (name != NULL)
                            {
                                *name = "tx_gem";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Transmitted GEM frames";
                            }

                            return BCM_ERR_OK;
                        case 26:
                            if (name != NULL)
                            {
                                *name = "tx_ploams";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Transmitted Ploams";
                            }

                            return BCM_ERR_OK;
                        case 27:
                            if (name != NULL)
                            {
                                *name = "tx_gem_fragments";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Transmitted GEM fragments";
                            }

                            return BCM_ERR_OK;
                        case 28:
                            if (name != NULL)
                            {
                                *name = "tx_cpu";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Transmitted CPU packets";
                            }

                            return BCM_ERR_OK;
                        case 29:
                            if (name != NULL)
                            {
                                *name = "tx_omci";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Transmitted OMCI packets";
                            }

                            return BCM_ERR_OK;
                        case 30:
                            if (name != NULL)
                            {
                                *name = "tx_cpu_omci_packets_dropped";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Transmit packets dropped due to illegal length";
                            }

                            return BCM_ERR_OK;
                        case 31:
                            if (name != NULL)
                            {
                                *name = "tx_dropped_illegal_length";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Transmitted packet dropped due to illegal length";
                            }

                            return BCM_ERR_OK;
                        case 32:
                            if (name != NULL)
                            {
                                *name = "tx_dropped_tpid_miss";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Dropped because of TPID miss";
                            }

                            return BCM_ERR_OK;
                        case 33:
                            if (name != NULL)
                            {
                                *name = "tx_dropped_vid_miss";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Dropped because of VID miss";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_GPON_NI_AUTO_ID_STATE_CHANGE_COMPLETED:
                            if (name != NULL)
                            {
                                *name = "state_change_completed";
                            }

                            if (descr != NULL)
                            {
                                *descr = "State Change Completed";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_NI_AUTO_ID_LOS:
                            if (name != NULL)
                            {
                                *name = "los";
                            }

                            if (descr != NULL)
                            {
                                *descr = "LOS";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_NI_AUTO_ID_SERIAL_NUMBER_ACQUISITION_CYCLE_START:
                            if (name != NULL)
                            {
                                *name = "serial_number_acquisition_cycle_start";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Serial Number Acquisition Cycle Start";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_NI_AUTO_ID_PROTECTION_SWITCHING_TRAFFIC_RESUME:
                            if (name != NULL)
                            {
                                *name = "protection_switching_traffic_resume";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Protection Switching Traffic Resume";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_NI_AUTO_ID_PROTECTION_SWITCHING_ONUS_RANGED:
                            if (name != NULL)
                            {
                                *name = "protection_switching_onus_ranged";
                            }

                            if (descr != NULL)
                            {
                                *descr = "After a switchover is complete and all ONU ranging times have stabilized, this indication is sent to inform the host of all new ONU EQDs.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_NI_AUTO_ID_PROTECTION_SWITCHING_SWITCHOVER_COMPLETED:
                            if (name != NULL)
                            {
                                *name = "protection_switching_switchover_completed";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Protection Switching Switchover Completed";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_NI_AUTO_ID_STANDBY_PON_MONITORING_CYCLE_COMPLETED:
                            if (name != NULL)
                            {
                                *name = "standby_pon_monitoring_cycle_completed";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Standby PON Monitoring Cycle Completed";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_NI_AUTO_ID_ONU_DISCOVERED:
                            if (name != NULL)
                            {
                                *name = "onu_discovered";
                            }

                            if (descr != NULL)
                            {
                                *descr = "ONU Discovered";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_NI_AUTO_ID_CPU_PACKETS_FAILURE:
                            if (name != NULL)
                            {
                                *name = "cpu_packets_failure";
                            }

                            if (descr != NULL)
                            {
                                *descr = "A failure was encountered during the \"cpu_packets\" proxy operation.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_NI_AUTO_ID_ROGUE_DETECTION_COMPLETED:
                            if (name != NULL)
                            {
                                *name = "rogue_detection_completed";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Rogue detection completed";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_NI_AUTO_ID_DEACTIVATE_ALL_ONUS_COMPLETED:
                            if (name != NULL)
                            {
                                *name = "deactivate_all_onus_completed";
                            }

                            if (descr != NULL)
                            {
                                *descr = "deactivate all onus completed";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_NI_AUTO_ID_DISABLE_ALL_ONUS_COMPLETED:
                            if (name != NULL)
                            {
                                *name = "disable_all_onus_completed";
                            }

                            if (descr != NULL)
                            {
                                *descr = "disable all onus completed";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_NI_AUTO_ID_ACTIVATE_ALL_ONUS_COMPLETED:
                            if (name != NULL)
                            {
                                *name = "activate_all_onus_completed";
                            }

                            if (descr != NULL)
                            {
                                *descr = "activate all onus completed";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_NI_AUTO_ID_ENABLE_ALL_ONUS_COMPLETED:
                            if (name != NULL)
                            {
                                *name = "enable_all_onus_completed";
                            }

                            if (descr != NULL)
                            {
                                *descr = "enable all onus completed";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_NI_AUTO_ID_TOD_REQUEST_COMPLETED:
                            if (name != NULL)
                            {
                                *name = "tod_request_completed";
                            }

                            if (descr != NULL)
                            {
                                *descr = "TOD request completed";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_NI_AUTO_ID_ONU_UPGRADE_COMPLETE:
                            if (name != NULL)
                            {
                                *name = "onu_upgrade_complete";
                            }

                            if (descr != NULL)
                            {
                                *descr = "ONU Upgrade Complete";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_NI_AUTO_ID_ROGUE_ONU_SPECIAL_MAP_CYCLE_START:
                            if (name != NULL)
                            {
                                *name = "rogue_onu_special_map_cycle_start";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Rogue ONU special map cycle start";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_NI_AUTO_ID_STAT_ALARM_RAISED:
                            if (name != NULL)
                            {
                                *name = "stat_alarm_raised";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Sent when a configured statistic alarm condition has been met.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_NI_AUTO_ID_STAT_ALARM_CLEARED:
                            if (name != NULL)
                            {
                                *name = "stat_alarm_cleared";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Sent when a configured statistic alarm condition is no longer met.";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "auto_cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Indication Configuration";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_OPER:
                    switch (subgroup)
                    {
                        case BCMOLT_GPON_NI_OPER_ID_SET_PON_STATE:
                            if (name != NULL)
                            {
                                *name = "set_pon_state";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Set PON State";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_NI_OPER_ID_RESET:
                            if (name != NULL)
                            {
                                *name = "reset";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Reset";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_NI_OPER_ID_DISABLE_SERIAL_NUMBER:
                            if (name != NULL)
                            {
                                *name = "disable_serial_number";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Disable Serial Number";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_NI_OPER_ID_SINGLE_REQUEST_STANDBY_PON_MONITORING:
                            if (name != NULL)
                            {
                                *name = "single_request_standby_pon_monitoring";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Single request for PON monitoring";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_NI_OPER_ID_SET_ONU_STATE:
                            if (name != NULL)
                            {
                                *name = "set_onu_state";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Set the operation state of all ONUs.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_NI_OPER_ID_ROGUE_DETECTION_WINDOW:
                            if (name != NULL)
                            {
                                *name = "rogue_detection_window";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Rogue Detection Window";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_NI_OPER_ID_TOD_REQUEST:
                            if (name != NULL)
                            {
                                *name = "tod_request";
                            }

                            if (descr != NULL)
                            {
                                *descr = "TOD request";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_NI_OPER_ID_PROTECTION_SWITCHING_TYPE_C_SET_MULTIPLE_ONU_STATE:
                            if (name != NULL)
                            {
                                *name = "protection_switching_type_c_set_multiple_onu_state";
                            }

                            if (descr != NULL)
                            {
                                *descr = "protection switching type c set multiple onu state";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_NI_OPER_ID_START_ONU_UPGRADE:
                            if (name != NULL)
                            {
                                *name = "start_onu_upgrade";
                            }

                            if (descr != NULL)
                            {
                                *descr = "OLT to ONU firmware transfer";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_PROXY:
                    switch (subgroup)
                    {
                        case BCMOLT_GPON_NI_PROXY_ID_CPU_PACKETS:
                            if (name != NULL)
                            {
                                *name = "cpu_packets";
                            }

                            if (descr != NULL)
                            {
                                *descr = "GPON CPU Packets";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_NI_PROXY_ID_BROADCAST_PLOAM_PACKET:
                            if (name != NULL)
                            {
                                *name = "broadcast_ploam_packet";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Broadcast PLOAM Packet";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_GPON_ONU:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "key";
                            }

                            if (descr != NULL)
                            {
                                *descr = "key";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "cfg";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "stat";
                            }

                            if (descr != NULL)
                            {
                                *descr = "stat";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "fec_codewords";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Total received FEC codewords";
                            }

                            return BCM_ERR_OK;
                        case 1:
                            if (name != NULL)
                            {
                                *name = "fec_bytes_corrected";
                            }

                            if (descr != NULL)
                            {
                                *descr = "FEC codewords corrected bytes";
                            }

                            return BCM_ERR_OK;
                        case 2:
                            if (name != NULL)
                            {
                                *name = "fec_codewords_corrected";
                            }

                            if (descr != NULL)
                            {
                                *descr = "FEC corrected codewords error ";
                            }

                            return BCM_ERR_OK;
                        case 3:
                            if (name != NULL)
                            {
                                *name = "fec_codewords_uncorrected";
                            }

                            if (descr != NULL)
                            {
                                *descr = "FEC not corrected codewords error";
                            }

                            return BCM_ERR_OK;
                        case 4:
                            if (name != NULL)
                            {
                                *name = "bip8_bytes";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received bytes for BIP8";
                            }

                            return BCM_ERR_OK;
                        case 5:
                            if (name != NULL)
                            {
                                *name = "bip8_errors";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Bit error according to BIP8";
                            }

                            return BCM_ERR_OK;
                        case 6:
                            if (name != NULL)
                            {
                                *name = "rx_ploams_crc_error";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received PLOAMs with CRC error";
                            }

                            return BCM_ERR_OK;
                        case 7:
                            if (name != NULL)
                            {
                                *name = "rx_ploams_non_idle";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received non idle PLOAMs";
                            }

                            return BCM_ERR_OK;
                        case 8:
                            if (name != NULL)
                            {
                                *name = "positive_drift";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Positive drift";
                            }

                            return BCM_ERR_OK;
                        case 9:
                            if (name != NULL)
                            {
                                *name = "negative_drift";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Negative drift";
                            }

                            return BCM_ERR_OK;
                        case 10:
                            if (name != NULL)
                            {
                                *name = "rx_omci";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received OMCI packets";
                            }

                            return BCM_ERR_OK;
                        case 11:
                            if (name != NULL)
                            {
                                *name = "rx_omci_packets_crc_error";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received OMCI packets with CRC errors";
                            }

                            return BCM_ERR_OK;
                        case 12:
                            if (name != NULL)
                            {
                                *name = "ber_reported";
                            }

                            if (descr != NULL)
                            {
                                *descr = "BER reported";
                            }

                            return BCM_ERR_OK;
                        case 13:
                            if (name != NULL)
                            {
                                *name = "unreceived_burst";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Unreceived burst";
                            }

                            return BCM_ERR_OK;
                        case 14:
                            if (name != NULL)
                            {
                                *name = "lcdg_errors";
                            }

                            if (descr != NULL)
                            {
                                *descr = "LCDG errors";
                            }

                            return BCM_ERR_OK;
                        case 15:
                            if (name != NULL)
                            {
                                *name = "rdi_errors";
                            }

                            if (descr != NULL)
                            {
                                *descr = "RDI errors";
                            }

                            return BCM_ERR_OK;
                        case 16:
                            if (name != NULL)
                            {
                                *name = "rx_bytes";
                            }

                            if (descr != NULL)
                            {
                                *descr = "rx bytes";
                            }

                            return BCM_ERR_OK;
                        case 17:
                            if (name != NULL)
                            {
                                *name = "rx_packets";
                            }

                            if (descr != NULL)
                            {
                                *descr = "rx packets";
                            }

                            return BCM_ERR_OK;
                        case 18:
                            if (name != NULL)
                            {
                                *name = "tx_bytes";
                            }

                            if (descr != NULL)
                            {
                                *descr = "tx bytes";
                            }

                            return BCM_ERR_OK;
                        case 19:
                            if (name != NULL)
                            {
                                *name = "tx_packets";
                            }

                            if (descr != NULL)
                            {
                                *descr = "tx packets";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_GPON_ONU_AUTO_ID_ONU_ALARM:
                            if (name != NULL)
                            {
                                *name = "onu_alarm";
                            }

                            if (descr != NULL)
                            {
                                *descr = "ONU Alarm";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_DOWI:
                            if (name != NULL)
                            {
                                *name = "dowi";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Drift of Window of ONUi";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_SFI:
                            if (name != NULL)
                            {
                                *name = "sfi";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Signal Fail of ONUi";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_SDI:
                            if (name != NULL)
                            {
                                *name = "sdi";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Signal Degraded of ONUi";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_DFI:
                            if (name != NULL)
                            {
                                *name = "dfi";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Receive Dying-Gasp of ONUi";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_SUFI:
                            if (name != NULL)
                            {
                                *name = "sufi";
                            }

                            if (descr != NULL)
                            {
                                *descr = "SUFi";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_LOAI:
                            if (name != NULL)
                            {
                                *name = "loai";
                            }

                            if (descr != NULL)
                            {
                                *descr = "LOAi";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_DGI:
                            if (name != NULL)
                            {
                                *name = "dgi";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Receive Dying-Gasp of ONUi";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_PEE:
                            if (name != NULL)
                            {
                                *name = "pee";
                            }

                            if (descr != NULL)
                            {
                                *descr = "PEE";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_PST:
                            if (name != NULL)
                            {
                                *name = "pst";
                            }

                            if (descr != NULL)
                            {
                                *descr = "PST";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_TIWI:
                            if (name != NULL)
                            {
                                *name = "tiwi";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Transmission Interference Warning";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_LOKI:
                            if (name != NULL)
                            {
                                *name = "loki";
                            }

                            if (descr != NULL)
                            {
                                *descr = "LOki";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_MEMI:
                            if (name != NULL)
                            {
                                *name = "memi";
                            }

                            if (descr != NULL)
                            {
                                *descr = "MEMi";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_OMCI_PORT_ID_CONFIGURATION_COMPLETED:
                            if (name != NULL)
                            {
                                *name = "omci_port_id_configuration_completed";
                            }

                            if (descr != NULL)
                            {
                                *descr = "OMCI PORT ID Configuration Completed";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_BER_INTERVAL_CONFIGURATION_COMPLETED:
                            if (name != NULL)
                            {
                                *name = "ber_interval_configuration_completed";
                            }

                            if (descr != NULL)
                            {
                                *descr = "BER Interval Configuration Completed";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_ERR:
                            if (name != NULL)
                            {
                                *name = "err";
                            }

                            if (descr != NULL)
                            {
                                *descr = "ERR";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_REI:
                            if (name != NULL)
                            {
                                *name = "rei";
                            }

                            if (descr != NULL)
                            {
                                *descr = "REI";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_RANGING_COMPLETED:
                            if (name != NULL)
                            {
                                *name = "ranging_completed";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Ranging Completed";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_PASSWORD_AUTHENTICATION_COMPLETED:
                            if (name != NULL)
                            {
                                *name = "password_authentication_completed";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Password Authentication Completed";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_ONU_ACTIVATION_COMPLETED:
                            if (name != NULL)
                            {
                                *name = "onu_activation_completed";
                            }

                            if (descr != NULL)
                            {
                                *descr = "ONU Activation Completed";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_ONU_DEACTIVATION_COMPLETED:
                            if (name != NULL)
                            {
                                *name = "onu_deactivation_completed";
                            }

                            if (descr != NULL)
                            {
                                *descr = "ONU Deactivation Completed";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_ONU_ENABLE_COMPLETED:
                            if (name != NULL)
                            {
                                *name = "onu_enable_completed";
                            }

                            if (descr != NULL)
                            {
                                *descr = "ONU Enable Completed";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_ONU_DISABLE_COMPLETED:
                            if (name != NULL)
                            {
                                *name = "onu_disable_completed";
                            }

                            if (descr != NULL)
                            {
                                *descr = "ONU Disable Completed";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_INVALID_DBRU_REPORT:
                            if (name != NULL)
                            {
                                *name = "invalid_dbru_report";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Invalid DBRu Report";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_KEY_EXCHANGE_COMPLETED:
                            if (name != NULL)
                            {
                                *name = "key_exchange_completed";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Key Exchange Completed";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_KEY_EXCHANGE_KEY_REQUEST_TIMEOUT:
                            if (name != NULL)
                            {
                                *name = "key_exchange_key_request_timeout";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Key Exchange Key Request Timeout";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_KEY_EXCHANGE_CYCLE_SKIPPED:
                            if (name != NULL)
                            {
                                *name = "key_exchange_cycle_skipped";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Key Exchange Cycle Skipped";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_KEY_EXCHANGE_KEY_MISMATCH:
                            if (name != NULL)
                            {
                                *name = "key_exchange_key_mismatch";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Key Exchange Key Mismatch";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_KEY_EXCHANGE_UNCONSECUTIVE_INDEX:
                            if (name != NULL)
                            {
                                *name = "key_exchange_unconsecutive_index";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Key Exchange Unconsecutive Index";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_RSSI_MEASUREMENT_COMPLETED:
                            if (name != NULL)
                            {
                                *name = "rssi_measurement_completed";
                            }

                            if (descr != NULL)
                            {
                                *descr = "RSSI Measurement Completed";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_KEY_EXCHANGE_DECRYPT_REQUIRED:
                            if (name != NULL)
                            {
                                *name = "key_exchange_decrypt_required";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Key Exchange Decrypt Required";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_OPTICAL_REFLECTION:
                            if (name != NULL)
                            {
                                *name = "optical_reflection";
                            }

                            if (descr != NULL)
                            {
                                *descr = "An optical reflection condition was detected.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_ONU_ACTIVATION_STANDBY_COMPLETED:
                            if (name != NULL)
                            {
                                *name = "onu_activation_standby_completed";
                            }

                            if (descr != NULL)
                            {
                                *descr = "onu activation standby completed";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_POWER_MANAGEMENT_STATE_CHANGE:
                            if (name != NULL)
                            {
                                *name = "power_management_state_change";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Notification that an ONUs power management state has changed.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_POSSIBLE_DRIFT:
                            if (name != NULL)
                            {
                                *name = "possible_drift";
                            }

                            if (descr != NULL)
                            {
                                *descr = "An ONU in a low power state may be experiencing drift beyond the configured threshold. The estimate may be inaccurate depending on ONU behavior. Actual drift may be less than estimated.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_STAT_ALARM_RAISED:
                            if (name != NULL)
                            {
                                *name = "stat_alarm_raised";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Sent when a configured statistic alarm condition has been met.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_AUTO_ID_STAT_ALARM_CLEARED:
                            if (name != NULL)
                            {
                                *name = "stat_alarm_cleared";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Sent when a configured statistic alarm condition is no longer met.";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "auto_cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Indication Configuration";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_OPER:
                    switch (subgroup)
                    {
                        case BCMOLT_GPON_ONU_OPER_ID_SET_ONU_STATE:
                            if (name != NULL)
                            {
                                *name = "set_onu_state";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Set ONU State";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_OPER_ID_RSSI_MEASUREMENT:
                            if (name != NULL)
                            {
                                *name = "rssi_measurement";
                            }

                            if (descr != NULL)
                            {
                                *descr = "RSSI Measurement";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_OPER_ID_CHANGE_POWER_LEVEL:
                            if (name != NULL)
                            {
                                *name = "change_power_level";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Change Power Level";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_PROXY:
                    switch (subgroup)
                    {
                        case BCMOLT_GPON_ONU_PROXY_ID_CPU_PACKETS:
                            if (name != NULL)
                            {
                                *name = "cpu_packets";
                            }

                            if (descr != NULL)
                            {
                                *descr = "GPON CPU Packets";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_PROXY_ID_PLOAM_PACKET:
                            if (name != NULL)
                            {
                                *name = "ploam_packet";
                            }

                            if (descr != NULL)
                            {
                                *descr = "PLOAM Packet";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_PROXY_RX:
                    switch (subgroup)
                    {
                        case BCMOLT_GPON_ONU_PROXY_RX_ID_CPU_PACKET:
                            if (name != NULL)
                            {
                                *name = "cpu_packet";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Indicates CPU packet was received on the US from this ONU id";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_GPON_ONU_PROXY_RX_ID_OMCI_PACKET:
                            if (name != NULL)
                            {
                                *name = "omci_packet";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Indicates OMCI packet was received on the US from this ONU id";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_GPON_TRX:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "key";
                            }

                            if (descr != NULL)
                            {
                                *descr = "key";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "cfg";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_LOG_ENTRY:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "key";
                            }

                            if (descr != NULL)
                            {
                                *descr = "key";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "cfg";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "stat";
                            }

                            if (descr != NULL)
                            {
                                *descr = "stat";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "msg_count";
                            }

                            if (descr != NULL)
                            {
                                *descr = "msg count";
                            }

                            return BCM_ERR_OK;
                        case 1:
                            if (name != NULL)
                            {
                                *name = "lost_msg_count";
                            }

                            if (descr != NULL)
                            {
                                *descr = "lost msg count";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_LOG_ENTRY_AUTO_ID_STAT_ALARM_RAISED:
                            if (name != NULL)
                            {
                                *name = "stat_alarm_raised";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Sent when a configured statistic alarm condition has been met.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_LOG_ENTRY_AUTO_ID_STAT_ALARM_CLEARED:
                            if (name != NULL)
                            {
                                *name = "stat_alarm_cleared";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Sent when a configured statistic alarm condition is no longer met.";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "auto_cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Indication Configuration";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_LOGGER:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "key";
                            }

                            if (descr != NULL)
                            {
                                *descr = "key";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "cfg";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "stat";
                            }

                            if (descr != NULL)
                            {
                                *descr = "stat";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "lines_in_log";
                            }

                            if (descr != NULL)
                            {
                                *descr = "lines in log";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_LOGGER_AUTO_ID_STAT_ALARM_RAISED:
                            if (name != NULL)
                            {
                                *name = "stat_alarm_raised";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Sent when a configured statistic alarm condition has been met.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_LOGGER_AUTO_ID_STAT_ALARM_CLEARED:
                            if (name != NULL)
                            {
                                *name = "stat_alarm_cleared";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Sent when a configured statistic alarm condition is no longer met.";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "auto_cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Indication Configuration";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_OPER:
                    switch (subgroup)
                    {
                        case BCMOLT_LOGGER_OPER_ID_CLEAR_LOG:
                            if (name != NULL)
                            {
                                *name = "clear_log";
                            }

                            if (descr != NULL)
                            {
                                *descr = "clear log";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_NNI:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "key";
                            }

                            if (descr != NULL)
                            {
                                *descr = "key";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "cfg";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "stat";
                            }

                            if (descr != NULL)
                            {
                                *descr = "stat";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "rx_frames_64";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The count of RX 64 byte frames on this NNI.";
                            }

                            return BCM_ERR_OK;
                        case 1:
                            if (name != NULL)
                            {
                                *name = "rx_frames_65_127";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The count of RX 65 to 127 byte frames on this NNI.";
                            }

                            return BCM_ERR_OK;
                        case 2:
                            if (name != NULL)
                            {
                                *name = "rx_frames_128_255";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The count of RX 128 to 255 byte frames on this NNI.";
                            }

                            return BCM_ERR_OK;
                        case 3:
                            if (name != NULL)
                            {
                                *name = "rx_frames_256_511";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The count of RX 256 to 511 byte frames on this NNI.";
                            }

                            return BCM_ERR_OK;
                        case 4:
                            if (name != NULL)
                            {
                                *name = "rx_frames_512_1023";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The count of RX 512 to 1023 byte frames on this NNI.";
                            }

                            return BCM_ERR_OK;
                        case 5:
                            if (name != NULL)
                            {
                                *name = "rx_frames_1024_1518";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The count of RX 1024 to 1518 byte frames on this NNI.";
                            }

                            return BCM_ERR_OK;
                        case 6:
                            if (name != NULL)
                            {
                                *name = "rx_frames_1519_2047";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The count of RX 1519 to 2047 byte frames on this NNI.";
                            }

                            return BCM_ERR_OK;
                        case 7:
                            if (name != NULL)
                            {
                                *name = "rx_frames_2048_4095";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The count of RX 2048 to 4095 byte frames on this NNI.";
                            }

                            return BCM_ERR_OK;
                        case 8:
                            if (name != NULL)
                            {
                                *name = "rx_frames_4096_9216";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The count of RX 4096 to 9216 byte frames on this NNI.";
                            }

                            return BCM_ERR_OK;
                        case 9:
                            if (name != NULL)
                            {
                                *name = "rx_frames_9217_16383";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The count of RX 9217 to 16383 byte frames on this NNI.";
                            }

                            return BCM_ERR_OK;
                        case 10:
                            if (name != NULL)
                            {
                                *name = "rx_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of received frames on this NNI. This includes all errored frames as well.";
                            }

                            return BCM_ERR_OK;
                        case 11:
                            if (name != NULL)
                            {
                                *name = "rx_bytes";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of received bytes on this NNI. This includes all errored frames as well.";
                            }

                            return BCM_ERR_OK;
                        case 12:
                            if (name != NULL)
                            {
                                *name = "rx_good_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of received good frames on this NNI.";
                            }

                            return BCM_ERR_OK;
                        case 13:
                            if (name != NULL)
                            {
                                *name = "rx_unicast_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of received unicast frames on this NNI.";
                            }

                            return BCM_ERR_OK;
                        case 14:
                            if (name != NULL)
                            {
                                *name = "rx_multicast_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of received multicast frames on this NNI.";
                            }

                            return BCM_ERR_OK;
                        case 15:
                            if (name != NULL)
                            {
                                *name = "rx_broadcast_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of received broadcast frames on this NNI.";
                            }

                            return BCM_ERR_OK;
                        case 16:
                            if (name != NULL)
                            {
                                *name = "rx_fcs_errors";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of received FCS errors on this NNI.";
                            }

                            return BCM_ERR_OK;
                        case 17:
                            if (name != NULL)
                            {
                                *name = "rx_control_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of received control frames on this NNI.";
                            }

                            return BCM_ERR_OK;
                        case 18:
                            if (name != NULL)
                            {
                                *name = "rx_pause_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of received pause frames on this NNI.";
                            }

                            return BCM_ERR_OK;
                        case 19:
                            if (name != NULL)
                            {
                                *name = "rx_pfc_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of received PFC frames on this NNI.";
                            }

                            return BCM_ERR_OK;
                        case 20:
                            if (name != NULL)
                            {
                                *name = "rx_unsupported_opcode";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of received Unsupported Opcode frames on this NNI.";
                            }

                            return BCM_ERR_OK;
                        case 21:
                            if (name != NULL)
                            {
                                *name = "rx_unsupported_da";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of received unsupported DA frames on this NNI.";
                            }

                            return BCM_ERR_OK;
                        case 22:
                            if (name != NULL)
                            {
                                *name = "rx_alignment_errors";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of received alignment errors on this NNI.";
                            }

                            return BCM_ERR_OK;
                        case 23:
                            if (name != NULL)
                            {
                                *name = "rx_length_out_of_range";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of received length out of range errors on this NNI.";
                            }

                            return BCM_ERR_OK;
                        case 24:
                            if (name != NULL)
                            {
                                *name = "rx_code_errors";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of received code errors on this NNI.";
                            }

                            return BCM_ERR_OK;
                        case 25:
                            if (name != NULL)
                            {
                                *name = "rx_oversized_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of received oversized frames on this NNI.";
                            }

                            return BCM_ERR_OK;
                        case 26:
                            if (name != NULL)
                            {
                                *name = "rx_jabber_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of received jabber frames on this NNI. these are oversized frames that also contain an invalid CRC, code error, or IEEE length check error.";
                            }

                            return BCM_ERR_OK;
                        case 27:
                            if (name != NULL)
                            {
                                *name = "rx_mtu_check_errors";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of received MTU Check Errors on this NNI.";
                            }

                            return BCM_ERR_OK;
                        case 28:
                            if (name != NULL)
                            {
                                *name = "rx_promiscuous_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of received frames on this NNI that are not control packets and have a DA that is not matching with the RX SA.";
                            }

                            return BCM_ERR_OK;
                        case 29:
                            if (name != NULL)
                            {
                                *name = "rx_vlan_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of received VLAN tagged frames on this NNI (with TPID 8100). This counts both single and double tagged frames.";
                            }

                            return BCM_ERR_OK;
                        case 30:
                            if (name != NULL)
                            {
                                *name = "rx_double_vlan_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of received double VLAN tagged frames on this NNI (with TPID 8100). ";
                            }

                            return BCM_ERR_OK;
                        case 31:
                            if (name != NULL)
                            {
                                *name = "rx_truncated_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of received truncated frames on this NNI. This is likely due to RX FIFO Full. ";
                            }

                            return BCM_ERR_OK;
                        case 32:
                            if (name != NULL)
                            {
                                *name = "rx_undersize_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of received undersized frames on this NNI.";
                            }

                            return BCM_ERR_OK;
                        case 33:
                            if (name != NULL)
                            {
                                *name = "rx_fragmented_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of received fragmented frames on this NNI.";
                            }

                            return BCM_ERR_OK;
                        case 34:
                            if (name != NULL)
                            {
                                *name = "rx_runt_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of received runt frames on this NNI.";
                            }

                            return BCM_ERR_OK;
                        case 35:
                            if (name != NULL)
                            {
                                *name = "tx_frames_64";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The count of TX 64 byte frames on this NNI.";
                            }

                            return BCM_ERR_OK;
                        case 36:
                            if (name != NULL)
                            {
                                *name = "tx_frames_65_127";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The count of TX 65 to 127 byte frames on this NNI.";
                            }

                            return BCM_ERR_OK;
                        case 37:
                            if (name != NULL)
                            {
                                *name = "tx_frames_128_255";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The count of TX 128 to 255 byte frames on this NNI.";
                            }

                            return BCM_ERR_OK;
                        case 38:
                            if (name != NULL)
                            {
                                *name = "tx_frames_256_511";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The count of TX 256 to 511 byte frames on this NNI.";
                            }

                            return BCM_ERR_OK;
                        case 39:
                            if (name != NULL)
                            {
                                *name = "tx_frames_512_1023";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The count of TX 512 to 1023 byte frames on this NNI.";
                            }

                            return BCM_ERR_OK;
                        case 40:
                            if (name != NULL)
                            {
                                *name = "tx_frames_1024_1518";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The count of TX 1024 to 1518 byte frames on this NNI.";
                            }

                            return BCM_ERR_OK;
                        case 41:
                            if (name != NULL)
                            {
                                *name = "tx_frames_1519_2047";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The count of TX 1519 to 2047 byte frames on this NNI.";
                            }

                            return BCM_ERR_OK;
                        case 42:
                            if (name != NULL)
                            {
                                *name = "tx_frames_2048_4095";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The count of TX 2048 to 4095 byte frames on this NNI.";
                            }

                            return BCM_ERR_OK;
                        case 43:
                            if (name != NULL)
                            {
                                *name = "tx_frames_4096_9216";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The count of TX 4096 to 9216 byte frames on this NNI.";
                            }

                            return BCM_ERR_OK;
                        case 44:
                            if (name != NULL)
                            {
                                *name = "tx_frames_9217_16383";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The count of TX 9217 to 16383 byte frames on this NNI.";
                            }

                            return BCM_ERR_OK;
                        case 45:
                            if (name != NULL)
                            {
                                *name = "tx_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of transmitted frames on this NNI. This includes all errored frames as well.";
                            }

                            return BCM_ERR_OK;
                        case 46:
                            if (name != NULL)
                            {
                                *name = "tx_bytes";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of transmitted bytes on this NNI. This includes all errored frames as well.";
                            }

                            return BCM_ERR_OK;
                        case 47:
                            if (name != NULL)
                            {
                                *name = "tx_good_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of transmitted good frames on this NNI.";
                            }

                            return BCM_ERR_OK;
                        case 48:
                            if (name != NULL)
                            {
                                *name = "tx_unicast_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of transmitted unicast frames on this NNI.";
                            }

                            return BCM_ERR_OK;
                        case 49:
                            if (name != NULL)
                            {
                                *name = "tx_multicast_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of transmitted multicast frames on this NNI.";
                            }

                            return BCM_ERR_OK;
                        case 50:
                            if (name != NULL)
                            {
                                *name = "tx_broadcast_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of transmitted broadcast frames on this NNI.";
                            }

                            return BCM_ERR_OK;
                        case 51:
                            if (name != NULL)
                            {
                                *name = "tx_pause_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of transmitted pause frames on this NNI.";
                            }

                            return BCM_ERR_OK;
                        case 52:
                            if (name != NULL)
                            {
                                *name = "tx_pfc_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of transmitted PFC frames on this NNI.";
                            }

                            return BCM_ERR_OK;
                        case 53:
                            if (name != NULL)
                            {
                                *name = "tx_jabber_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of transmitted jabber frames on this NNI. These are oversized frames that also contain an invalid FCS.";
                            }

                            return BCM_ERR_OK;
                        case 54:
                            if (name != NULL)
                            {
                                *name = "tx_fcs_errors";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of transmitted FCS errors on this NNI. ";
                            }

                            return BCM_ERR_OK;
                        case 55:
                            if (name != NULL)
                            {
                                *name = "tx_control_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of transmitted control frames on this NNI. ";
                            }

                            return BCM_ERR_OK;
                        case 56:
                            if (name != NULL)
                            {
                                *name = "tx_oversize_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of transmitted oversized frames on this NNI. ";
                            }

                            return BCM_ERR_OK;
                        case 57:
                            if (name != NULL)
                            {
                                *name = "tx_fragmented_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of transmitted fragmented frames on this NNI. ";
                            }

                            return BCM_ERR_OK;
                        case 58:
                            if (name != NULL)
                            {
                                *name = "tx_error_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of transmitted errored frames on this NNI. ";
                            }

                            return BCM_ERR_OK;
                        case 59:
                            if (name != NULL)
                            {
                                *name = "tx_vlan_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of transmitted VLAN tagged frames on this NNI (with TPID 8100). This counts both single and double tagged frames.";
                            }

                            return BCM_ERR_OK;
                        case 60:
                            if (name != NULL)
                            {
                                *name = "tx_double_vlan_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of transmitted double VLAN tagged frames on this NNI (with TPID 8100). ";
                            }

                            return BCM_ERR_OK;
                        case 61:
                            if (name != NULL)
                            {
                                *name = "tx_runt_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of transmitted runt frames on this NNI. ";
                            }

                            return BCM_ERR_OK;
                        case 62:
                            if (name != NULL)
                            {
                                *name = "tx_underrun_frames";
                            }

                            if (descr != NULL)
                            {
                                *descr = "The number of transmitted underrun frames on this NNI. Thus happens when a frame encounters a MAC underrun (Tx Sync FIFO runs out of data before the end of packet).";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_NNI_AUTO_ID_STATUS_CHANGED:
                            if (name != NULL)
                            {
                                *name = "status_changed";
                            }

                            if (descr != NULL)
                            {
                                *descr = "NNI Link status changed";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_NNI_AUTO_ID_STAT_ALARM_RAISED:
                            if (name != NULL)
                            {
                                *name = "stat_alarm_raised";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Sent when a configured statistic alarm condition has been met.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_NNI_AUTO_ID_STAT_ALARM_CLEARED:
                            if (name != NULL)
                            {
                                *name = "stat_alarm_cleared";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Sent when a configured statistic alarm condition is no longer met.";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "auto_cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Indication Configuration";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_NNI_SERDES:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "key";
                            }

                            if (descr != NULL)
                            {
                                *descr = "key";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "cfg";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_SOFTWARE_ERROR:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "key";
                            }

                            if (descr != NULL)
                            {
                                *descr = "key";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "cfg";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_TRX_CALIBRATION:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "key";
                            }

                            if (descr != NULL)
                            {
                                *descr = "key";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_TRX_CALIBRATION_AUTO_ID_CAPTURE_WINDOW_AND_STATISTIC_COMPLETED:
                            if (name != NULL)
                            {
                                *name = "capture_window_and_statistic_completed";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Capture window and statistic completed";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "auto_cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Indication Configuration";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_OPER:
                    switch (subgroup)
                    {
                        case BCMOLT_TRX_CALIBRATION_OPER_ID_START_CAPTURE_WINDOW:
                            if (name != NULL)
                            {
                                *name = "start_capture_window";
                            }

                            if (descr != NULL)
                            {
                                *descr = "start capture window";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_TRX_CALIBRATION_OPER_ID_STOP_CAPTURE_WINDOW:
                            if (name != NULL)
                            {
                                *name = "stop_capture_window";
                            }

                            if (descr != NULL)
                            {
                                *descr = "stop capture window";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_XGPON_ALLOC:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "key";
                            }

                            if (descr != NULL)
                            {
                                *descr = "key";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "cfg";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "stat";
                            }

                            if (descr != NULL)
                            {
                                *descr = "stat";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "rx_bytes";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Number of alloc ID received bytes.";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_XGPON_ALLOC_AUTO_ID_CONFIGURATION_COMPLETED:
                            if (name != NULL)
                            {
                                *name = "configuration_completed";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Configuration Completed";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ALLOC_AUTO_ID_GET_ALLOC_STATS_COMPLETED:
                            if (name != NULL)
                            {
                                *name = "get_alloc_stats_completed";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Collected alloc ID statistics from get_stats operation";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ALLOC_AUTO_ID_STAT_ALARM_RAISED:
                            if (name != NULL)
                            {
                                *name = "stat_alarm_raised";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Sent when a configured statistic alarm condition has been met.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ALLOC_AUTO_ID_STAT_ALARM_CLEARED:
                            if (name != NULL)
                            {
                                *name = "stat_alarm_cleared";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Sent when a configured statistic alarm condition is no longer met.";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "auto_cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Indication Configuration";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_OPER:
                    switch (subgroup)
                    {
                        case BCMOLT_XGPON_ALLOC_OPER_ID_GET_STATS:
                            if (name != NULL)
                            {
                                *name = "get_stats";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Run statistics collection for a given period of time";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ALLOC_OPER_ID_SET_STATE:
                            if (name != NULL)
                            {
                                *name = "set_state";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Sets the alloc's activation state.  This is only used for protection switching on an active-standby PON.  In normal operation, this isn't necessary since allocs are activated/deactivated automatically along with the ONU.";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_XGPON_GEM_PORT:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "key";
                            }

                            if (descr != NULL)
                            {
                                *descr = "key";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "cfg";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "stat";
                            }

                            if (descr != NULL)
                            {
                                *descr = "stat";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "tx_bytes";
                            }

                            if (descr != NULL)
                            {
                                *descr = "TX bytes";
                            }

                            return BCM_ERR_OK;
                        case 1:
                            if (name != NULL)
                            {
                                *name = "tx_packets";
                            }

                            if (descr != NULL)
                            {
                                *descr = "TX packets";
                            }

                            return BCM_ERR_OK;
                        case 2:
                            if (name != NULL)
                            {
                                *name = "rx_packets";
                            }

                            if (descr != NULL)
                            {
                                *descr = "RX packets";
                            }

                            return BCM_ERR_OK;
                        case 3:
                            if (name != NULL)
                            {
                                *name = "rx_bytes";
                            }

                            if (descr != NULL)
                            {
                                *descr = "RX bytes";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_XGPON_GEM_PORT_AUTO_ID_STAT_ALARM_RAISED:
                            if (name != NULL)
                            {
                                *name = "stat_alarm_raised";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Sent when a configured statistic alarm condition has been met.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_GEM_PORT_AUTO_ID_STAT_ALARM_CLEARED:
                            if (name != NULL)
                            {
                                *name = "stat_alarm_cleared";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Sent when a configured statistic alarm condition is no longer met.";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "auto_cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Indication Configuration";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_XGPON_IWF:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "key";
                            }

                            if (descr != NULL)
                            {
                                *descr = "key";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "cfg";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_XGPON_NI:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "key";
                            }

                            if (descr != NULL)
                            {
                                *descr = "key";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "cfg";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "stat";
                            }

                            if (descr != NULL)
                            {
                                *descr = "stat";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "fec_codewords";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Receive FEC codewords";
                            }

                            return BCM_ERR_OK;
                        case 1:
                            if (name != NULL)
                            {
                                *name = "bip32_bytes";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received bytes protected by bip32";
                            }

                            return BCM_ERR_OK;
                        case 2:
                            if (name != NULL)
                            {
                                *name = "bip32_errors";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received bip32 errors";
                            }

                            return BCM_ERR_OK;
                        case 3:
                            if (name != NULL)
                            {
                                *name = "rx_xgtc_headers";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received valid XGTC headers";
                            }

                            return BCM_ERR_OK;
                        case 4:
                            if (name != NULL)
                            {
                                *name = "rx_xgtc_corrected";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received corrected XGTC headers";
                            }

                            return BCM_ERR_OK;
                        case 5:
                            if (name != NULL)
                            {
                                *name = "rx_xgtc_uncorrected";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received uncorrected XGTC headers";
                            }

                            return BCM_ERR_OK;
                        case 6:
                            if (name != NULL)
                            {
                                *name = "rx_xgem";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received valid XGEM frames";
                            }

                            return BCM_ERR_OK;
                        case 7:
                            if (name != NULL)
                            {
                                *name = "rx_xgem_dropped";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received dropped XGEM ID frames";
                            }

                            return BCM_ERR_OK;
                        case 8:
                            if (name != NULL)
                            {
                                *name = "rx_xgem_idle";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received idle XGEM frames";
                            }

                            return BCM_ERR_OK;
                        case 9:
                            if (name != NULL)
                            {
                                *name = "rx_xgem_corrected";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received corrected XGEM frames";
                            }

                            return BCM_ERR_OK;
                        case 10:
                            if (name != NULL)
                            {
                                *name = "rx_crc_error";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received packets with CRC error";
                            }

                            return BCM_ERR_OK;
                        case 11:
                            if (name != NULL)
                            {
                                *name = "rx_fragment_error";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received fragment errors";
                            }

                            return BCM_ERR_OK;
                        case 12:
                            if (name != NULL)
                            {
                                *name = "rx_packets_dropped";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Global dropped packets";
                            }

                            return BCM_ERR_OK;
                        case 13:
                            if (name != NULL)
                            {
                                *name = "rx_dropped_too_short";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received packets dropped due to length too short";
                            }

                            return BCM_ERR_OK;
                        case 14:
                            if (name != NULL)
                            {
                                *name = "rx_dropped_too_long";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received packet dropped due to length too long";
                            }

                            return BCM_ERR_OK;
                        case 15:
                            if (name != NULL)
                            {
                                *name = "rx_key_error";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received key errors";
                            }

                            return BCM_ERR_OK;
                        case 16:
                            if (name != NULL)
                            {
                                *name = "tx_ploams";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Transmitted Ploams";
                            }

                            return BCM_ERR_OK;
                        case 17:
                            if (name != NULL)
                            {
                                *name = "rx_ploams_dropped";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received dropped Ploams";
                            }

                            return BCM_ERR_OK;
                        case 18:
                            if (name != NULL)
                            {
                                *name = "rx_allocations_valid";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received valid allocations";
                            }

                            return BCM_ERR_OK;
                        case 19:
                            if (name != NULL)
                            {
                                *name = "rx_allocations_invalid";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received invalid allocations";
                            }

                            return BCM_ERR_OK;
                        case 20:
                            if (name != NULL)
                            {
                                *name = "rx_allocations_disabled";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received disabled allocations";
                            }

                            return BCM_ERR_OK;
                        case 21:
                            if (name != NULL)
                            {
                                *name = "rx_ploams";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received Ploams";
                            }

                            return BCM_ERR_OK;
                        case 22:
                            if (name != NULL)
                            {
                                *name = "rx_ploams_non_idle";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received non idle Ploams";
                            }

                            return BCM_ERR_OK;
                        case 23:
                            if (name != NULL)
                            {
                                *name = "rx_ploams_error";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received error Ploams";
                            }

                            return BCM_ERR_OK;
                        case 24:
                            if (name != NULL)
                            {
                                *name = "rx_cpu";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received CPU packets";
                            }

                            return BCM_ERR_OK;
                        case 25:
                            if (name != NULL)
                            {
                                *name = "rx_omci";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received OMCI packets";
                            }

                            return BCM_ERR_OK;
                        case 26:
                            if (name != NULL)
                            {
                                *name = "rx_omci_packets_crc_error";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received OMCI packets with CRC errors";
                            }

                            return BCM_ERR_OK;
                        case 27:
                            if (name != NULL)
                            {
                                *name = "tx_packets";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Transmitted packets";
                            }

                            return BCM_ERR_OK;
                        case 28:
                            if (name != NULL)
                            {
                                *name = "tx_xgem";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Transmitted XGEM fragments";
                            }

                            return BCM_ERR_OK;
                        case 29:
                            if (name != NULL)
                            {
                                *name = "tx_cpu";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Transmitted CPU packets";
                            }

                            return BCM_ERR_OK;
                        case 30:
                            if (name != NULL)
                            {
                                *name = "tx_omci";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Transmitted OMCI packets";
                            }

                            return BCM_ERR_OK;
                        case 31:
                            if (name != NULL)
                            {
                                *name = "tx_cpu_omci_packets_dropped";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Transmit packets dropped due to illegal length";
                            }

                            return BCM_ERR_OK;
                        case 32:
                            if (name != NULL)
                            {
                                *name = "tx_dropped_illegal_length";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Transmit packets dropped due to illegal length";
                            }

                            return BCM_ERR_OK;
                        case 33:
                            if (name != NULL)
                            {
                                *name = "tx_dropped_tpid_miss";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Transmit packets dropped due to TPID miss";
                            }

                            return BCM_ERR_OK;
                        case 34:
                            if (name != NULL)
                            {
                                *name = "tx_dropped_vid_miss";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Transmit packets droped due to VID miss";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_XGPON_NI_AUTO_ID_STATE_CHANGE_COMPLETED:
                            if (name != NULL)
                            {
                                *name = "state_change_completed";
                            }

                            if (descr != NULL)
                            {
                                *descr = "State Change Completed";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_AUTO_ID_LOS:
                            if (name != NULL)
                            {
                                *name = "los";
                            }

                            if (descr != NULL)
                            {
                                *descr = "LOS";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_AUTO_ID_SERIAL_NUMBER_ACQUISITION_CYCLE_START:
                            if (name != NULL)
                            {
                                *name = "serial_number_acquisition_cycle_start";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Serial Number Acquisition Cycle Start";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_AUTO_ID_PROTECTION_SWITCHING_TRAFFIC_RESUME:
                            if (name != NULL)
                            {
                                *name = "protection_switching_traffic_resume";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Protection Switching Traffic Resume";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_AUTO_ID_PROTECTION_SWITCHING_ONUS_RANGED:
                            if (name != NULL)
                            {
                                *name = "protection_switching_onus_ranged";
                            }

                            if (descr != NULL)
                            {
                                *descr = "After a switchover is complete and all ONU ranging times have stabilized, this indication is sent to inform the host of all new ONU EQDs.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_AUTO_ID_PROTECTION_SWITCHING_SWITCHOVER_COMPLETED:
                            if (name != NULL)
                            {
                                *name = "protection_switching_switchover_completed";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Protection Switching Switchover Completed";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_AUTO_ID_STANDBY_PON_MONITORING_CYCLE_COMPLETED:
                            if (name != NULL)
                            {
                                *name = "standby_pon_monitoring_cycle_completed";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Standby PON Monitoring Cycle Completed";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_AUTO_ID_ONU_DISCOVERED:
                            if (name != NULL)
                            {
                                *name = "onu_discovered";
                            }

                            if (descr != NULL)
                            {
                                *descr = "ONU Discovered";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_AUTO_ID_CPU_PACKETS_FAILURE:
                            if (name != NULL)
                            {
                                *name = "cpu_packets_failure";
                            }

                            if (descr != NULL)
                            {
                                *descr = "A failure was encountered during the \"cpu_packets\" proxy operation.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_AUTO_ID_ROGUE_DETECTION_COMPLETED:
                            if (name != NULL)
                            {
                                *name = "rogue_detection_completed";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Rogue detection completed";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_AUTO_ID_DEACTIVATE_ALL_ONUS_COMPLETED:
                            if (name != NULL)
                            {
                                *name = "deactivate_all_onus_completed";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Indicate the deactivation of all ONUs are completed, in response to 'set_onu_state' operation.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_AUTO_ID_DISABLE_ALL_ONUS_COMPLETED:
                            if (name != NULL)
                            {
                                *name = "disable_all_onus_completed";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Indicate the disabling all ONUs are completed, in response to 'set_onu_state' operation.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_AUTO_ID_ACTIVATE_ALL_ONUS_COMPLETED:
                            if (name != NULL)
                            {
                                *name = "activate_all_onus_completed";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Indicate the activation of all ONUs are completed, in response to 'set_onu_state' operation.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_AUTO_ID_ENABLE_ALL_ONUS_COMPLETED:
                            if (name != NULL)
                            {
                                *name = "enable_all_onus_completed";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Indicate the enabling all ONUs are completed, in response to 'set_onu_state' operation.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_AUTO_ID_TOD_REQUEST_COMPLETED:
                            if (name != NULL)
                            {
                                *name = "tod_request_completed";
                            }

                            if (descr != NULL)
                            {
                                *descr = "TOD request completed";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_AUTO_ID_ONU_UPGRADE_COMPLETE:
                            if (name != NULL)
                            {
                                *name = "onu_upgrade_complete";
                            }

                            if (descr != NULL)
                            {
                                *descr = "ONU Upgrade Complete";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_AUTO_ID_ROGUE_ONU_SPECIAL_MAP_CYCLE_START:
                            if (name != NULL)
                            {
                                *name = "rogue_onu_special_map_cycle_start";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Rogue ONU special map cycle start";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_AUTO_ID_STAT_ALARM_RAISED:
                            if (name != NULL)
                            {
                                *name = "stat_alarm_raised";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Sent when a configured statistic alarm condition has been met.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_AUTO_ID_STAT_ALARM_CLEARED:
                            if (name != NULL)
                            {
                                *name = "stat_alarm_cleared";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Sent when a configured statistic alarm condition is no longer met.";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "auto_cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Indication Configuration";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_OPER:
                    switch (subgroup)
                    {
                        case BCMOLT_XGPON_NI_OPER_ID_SET_PON_STATE:
                            if (name != NULL)
                            {
                                *name = "set_pon_state";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Set PON State";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_OPER_ID_RESET:
                            if (name != NULL)
                            {
                                *name = "reset";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Reset";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_OPER_ID_DISABLE_SERIAL_NUMBER:
                            if (name != NULL)
                            {
                                *name = "disable_serial_number";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Disable Serial Number";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_OPER_ID_SINGLE_REQUEST_STANDBY_PON_MONITORING:
                            if (name != NULL)
                            {
                                *name = "single_request_standby_pon_monitoring";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Single request standby PON Monitoring";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_OPER_ID_SET_ONU_STATE:
                            if (name != NULL)
                            {
                                *name = "set_onu_state";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Set the operation state of all ONUs.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_OPER_ID_RUN_SPECIAL_BW_MAP:
                            if (name != NULL)
                            {
                                *name = "run_special_bw_map";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Run Special BW Map";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_OPER_ID_ROGUE_DETECTION_WINDOW:
                            if (name != NULL)
                            {
                                *name = "rogue_detection_window";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Rogue Detection Window";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_OPER_ID_TOD_REQUEST:
                            if (name != NULL)
                            {
                                *name = "tod_request";
                            }

                            if (descr != NULL)
                            {
                                *descr = "TOD request";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_OPER_ID_START_ONU_UPGRADE:
                            if (name != NULL)
                            {
                                *name = "start_onu_upgrade";
                            }

                            if (descr != NULL)
                            {
                                *descr = "OLT to ONU firmware transfer";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_OPER_ID_ADJUST_TX_WAVELENGTH:
                            if (name != NULL)
                            {
                                *name = "adjust_tx_wavelength";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Instruct an unassigned ONU to adjust its upstream transmitter wavelength";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_PROXY:
                    switch (subgroup)
                    {
                        case BCMOLT_XGPON_NI_PROXY_ID_CPU_PACKETS:
                            if (name != NULL)
                            {
                                *name = "cpu_packets";
                            }

                            if (descr != NULL)
                            {
                                *descr = "XGPON CPU packets";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_NI_PROXY_ID_BROADCAST_PLOAM_PACKET:
                            if (name != NULL)
                            {
                                *name = "broadcast_ploam_packet";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Broadcast PLOAM Packet";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_XGPON_ONU:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "key";
                            }

                            if (descr != NULL)
                            {
                                *descr = "key";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "cfg";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "stat";
                            }

                            if (descr != NULL)
                            {
                                *descr = "stat";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "positive_drift";
                            }

                            if (descr != NULL)
                            {
                                *descr = "positive drift";
                            }

                            return BCM_ERR_OK;
                        case 1:
                            if (name != NULL)
                            {
                                *name = "negative_drift";
                            }

                            if (descr != NULL)
                            {
                                *descr = "negative drift";
                            }

                            return BCM_ERR_OK;
                        case 2:
                            if (name != NULL)
                            {
                                *name = "delimiter_miss_detection";
                            }

                            if (descr != NULL)
                            {
                                *descr = "delimiter miss detection";
                            }

                            return BCM_ERR_OK;
                        case 3:
                            if (name != NULL)
                            {
                                *name = "bip32_errors";
                            }

                            if (descr != NULL)
                            {
                                *descr = "bip32 errors";
                            }

                            return BCM_ERR_OK;
                        case 4:
                            if (name != NULL)
                            {
                                *name = "rx_words";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Number of 4-byte words received (word size is 4 bytes regardless of upstream data rate).";
                            }

                            return BCM_ERR_OK;
                        case 5:
                            if (name != NULL)
                            {
                                *name = "fec_corrected_symbols";
                            }

                            if (descr != NULL)
                            {
                                *descr = "fec corrected symbols";
                            }

                            return BCM_ERR_OK;
                        case 6:
                            if (name != NULL)
                            {
                                *name = "fec_corrected_codewords";
                            }

                            if (descr != NULL)
                            {
                                *descr = "fec corrected codewords";
                            }

                            return BCM_ERR_OK;
                        case 7:
                            if (name != NULL)
                            {
                                *name = "fec_uncorrectable_codewords";
                            }

                            if (descr != NULL)
                            {
                                *descr = "fec uncorrectable codewords";
                            }

                            return BCM_ERR_OK;
                        case 8:
                            if (name != NULL)
                            {
                                *name = "fec_codewords";
                            }

                            if (descr != NULL)
                            {
                                *descr = "fec total codewords";
                            }

                            return BCM_ERR_OK;
                        case 9:
                            if (name != NULL)
                            {
                                *name = "fec_corrected_bits";
                            }

                            if (descr != NULL)
                            {
                                *descr = "fec corrected bits";
                            }

                            return BCM_ERR_OK;
                        case 10:
                            if (name != NULL)
                            {
                                *name = "xgem_key_errors";
                            }

                            if (descr != NULL)
                            {
                                *descr = "xgem key error";
                            }

                            return BCM_ERR_OK;
                        case 11:
                            if (name != NULL)
                            {
                                *name = "xgem_loss";
                            }

                            if (descr != NULL)
                            {
                                *descr = "xgem loss ";
                            }

                            return BCM_ERR_OK;
                        case 12:
                            if (name != NULL)
                            {
                                *name = "rx_ploams_mic_error";
                            }

                            if (descr != NULL)
                            {
                                *descr = "mic error ploam";
                            }

                            return BCM_ERR_OK;
                        case 13:
                            if (name != NULL)
                            {
                                *name = "rx_ploams_non_idle";
                            }

                            if (descr != NULL)
                            {
                                *descr = "non idle ploam";
                            }

                            return BCM_ERR_OK;
                        case 14:
                            if (name != NULL)
                            {
                                *name = "rx_omci";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received OMCI packets";
                            }

                            return BCM_ERR_OK;
                        case 15:
                            if (name != NULL)
                            {
                                *name = "rx_omci_packets_crc_error";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Received OMCI packets with CRC errors";
                            }

                            return BCM_ERR_OK;
                        case 16:
                            if (name != NULL)
                            {
                                *name = "rx_bytes";
                            }

                            if (descr != NULL)
                            {
                                *descr = "rx bytes";
                            }

                            return BCM_ERR_OK;
                        case 17:
                            if (name != NULL)
                            {
                                *name = "rx_packets";
                            }

                            if (descr != NULL)
                            {
                                *descr = "rx packets";
                            }

                            return BCM_ERR_OK;
                        case 18:
                            if (name != NULL)
                            {
                                *name = "tx_bytes";
                            }

                            if (descr != NULL)
                            {
                                *descr = "tx bytes";
                            }

                            return BCM_ERR_OK;
                        case 19:
                            if (name != NULL)
                            {
                                *name = "tx_packets";
                            }

                            if (descr != NULL)
                            {
                                *descr = "tx packets";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_XGPON_ONU_AUTO_ID_ONU_ALARM:
                            if (name != NULL)
                            {
                                *name = "onu_alarm";
                            }

                            if (descr != NULL)
                            {
                                *descr = "ONU Alarm";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_DOWI:
                            if (name != NULL)
                            {
                                *name = "dowi";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Drift of Window of ONUi";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_SFI:
                            if (name != NULL)
                            {
                                *name = "sfi";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Signal Fail of ONUi";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_SDI:
                            if (name != NULL)
                            {
                                *name = "sdi";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Signal Degraded of ONUi";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_DFI:
                            if (name != NULL)
                            {
                                *name = "dfi";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Receive Dying-Gasp of ONUi";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_PQSI:
                            if (name != NULL)
                            {
                                *name = "pqsi";
                            }

                            if (descr != NULL)
                            {
                                *descr = "ploam queue status";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_SUFI:
                            if (name != NULL)
                            {
                                *name = "sufi";
                            }

                            if (descr != NULL)
                            {
                                *descr = "SUFi";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_TIWI:
                            if (name != NULL)
                            {
                                *name = "tiwi";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Transmission Interference Warning";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_LOOCI:
                            if (name != NULL)
                            {
                                *name = "looci";
                            }

                            if (descr != NULL)
                            {
                                *descr = "LOOCi";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_RANGING_COMPLETED:
                            if (name != NULL)
                            {
                                *name = "ranging_completed";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Ranging Completed";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_ONU_ACTIVATION_COMPLETED:
                            if (name != NULL)
                            {
                                *name = "onu_activation_completed";
                            }

                            if (descr != NULL)
                            {
                                *descr = "ONU Activation Completed";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_ONU_DEACTIVATION_COMPLETED:
                            if (name != NULL)
                            {
                                *name = "onu_deactivation_completed";
                            }

                            if (descr != NULL)
                            {
                                *descr = "ONU Deactivation Completed";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_ONU_ENABLE_COMPLETED:
                            if (name != NULL)
                            {
                                *name = "onu_enable_completed";
                            }

                            if (descr != NULL)
                            {
                                *descr = "ONU Enable Completed";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_ONU_DISABLE_COMPLETED:
                            if (name != NULL)
                            {
                                *name = "onu_disable_completed";
                            }

                            if (descr != NULL)
                            {
                                *descr = "ONU Disable Completed";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_RSSI_MEASUREMENT_COMPLETED:
                            if (name != NULL)
                            {
                                *name = "rssi_measurement_completed";
                            }

                            if (descr != NULL)
                            {
                                *descr = "RSSI Measurement Completed";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_INVALID_DBRU_REPORT:
                            if (name != NULL)
                            {
                                *name = "invalid_dbru_report";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Invalid DBRu Report";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_KEY_EXCHANGE_COMPLETED:
                            if (name != NULL)
                            {
                                *name = "key_exchange_completed";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Key Exchange Completed";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_KEY_EXCHANGE_KEY_REQUEST_TIMEOUT:
                            if (name != NULL)
                            {
                                *name = "key_exchange_key_request_timeout";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Key Exchange Key Request Timeout";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_KEY_EXCHANGE_CYCLE_SKIPPED:
                            if (name != NULL)
                            {
                                *name = "key_exchange_cycle_skipped";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Key Exchange Cycle Skipped";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_KEY_EXCHANGE_KEY_MISMATCH:
                            if (name != NULL)
                            {
                                *name = "key_exchange_key_mismatch";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Key Exchange Key Mismatch";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_OPTICAL_REFLECTION:
                            if (name != NULL)
                            {
                                *name = "optical_reflection";
                            }

                            if (descr != NULL)
                            {
                                *descr = "An optical reflection condition was detected.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_DGI:
                            if (name != NULL)
                            {
                                *name = "dgi";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Receive Dying-Gasp of ONUi";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_POWER_MANAGEMENT_STATE_CHANGE:
                            if (name != NULL)
                            {
                                *name = "power_management_state_change";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Notification that an ONUs power management state has changed.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_POSSIBLE_DRIFT:
                            if (name != NULL)
                            {
                                *name = "possible_drift";
                            }

                            if (descr != NULL)
                            {
                                *descr = "An ONU in a low power state may be experiencing drift beyond the configured threshold. The estimate may be inaccurate depending on ONU behavior. Actual drift may be less than estimated.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_REGISTRATION_ID:
                            if (name != NULL)
                            {
                                *name = "registration_id";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Registration ID";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_POWER_LEVEL_REPORT:
                            if (name != NULL)
                            {
                                *name = "power_level_report";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Power level report";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_POWER_CONSUMPTION_REPORT:
                            if (name != NULL)
                            {
                                *name = "power_consumption_report";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Power consumption report";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_SECURE_MUTUAL_AUTHENTICATION_FAILURE:
                            if (name != NULL)
                            {
                                *name = "secure_mutual_authentication_failure";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Failure of secure mutual authentication due to MIC error";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_ONU_TUNING_OUT_COMPLETED:
                            if (name != NULL)
                            {
                                *name = "onu_tuning_out_completed";
                            }

                            if (descr != NULL)
                            {
                                *descr = "ONU Tuning out completed";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_ONU_TUNING_IN_COMPLETED:
                            if (name != NULL)
                            {
                                *name = "onu_tuning_in_completed";
                            }

                            if (descr != NULL)
                            {
                                *descr = "ONU Tuning in completed";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_TUNING_RESPONSE:
                            if (name != NULL)
                            {
                                *name = "tuning_response";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Tuning response";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_STAT_ALARM_RAISED:
                            if (name != NULL)
                            {
                                *name = "stat_alarm_raised";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Sent when a configured statistic alarm condition has been met.";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_AUTO_ID_STAT_ALARM_CLEARED:
                            if (name != NULL)
                            {
                                *name = "stat_alarm_cleared";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Sent when a configured statistic alarm condition is no longer met.";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "auto_cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Indication Configuration";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_OPER:
                    switch (subgroup)
                    {
                        case BCMOLT_XGPON_ONU_OPER_ID_SET_ONU_STATE:
                            if (name != NULL)
                            {
                                *name = "set_onu_state";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Set ONU State";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_OPER_ID_RSSI_MEASUREMENT:
                            if (name != NULL)
                            {
                                *name = "rssi_measurement";
                            }

                            if (descr != NULL)
                            {
                                *descr = "RSSI Measurement";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_OPER_ID_REQUEST_REGISTRATION:
                            if (name != NULL)
                            {
                                *name = "request_registration";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Request the ONU to send its Registration ID";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_OPER_ID_CHANGE_POWER_LEVELLING:
                            if (name != NULL)
                            {
                                *name = "change_power_levelling";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Change power levelling";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_OPER_ID_GET_POWER_LEVEL:
                            if (name != NULL)
                            {
                                *name = "get_power_level";
                            }

                            if (descr != NULL)
                            {
                                *descr = "ONU should report its launch optical power level as part of the Acknowledgment Ploam message";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_OPER_ID_GET_POWER_CONSUMPTION:
                            if (name != NULL)
                            {
                                *name = "get_power_consumption";
                            }

                            if (descr != NULL)
                            {
                                *descr = "ONU should report its power consumption information via the Power Consumption Report Ploam message";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_OPER_ID_ADJUST_TX_WAVELENGTH:
                            if (name != NULL)
                            {
                                *name = "adjust_tx_wavelength";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Instruct the ONU to adjust its upstream transmitter wavelength";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_OPER_ID_SECURE_MUTUAL_AUTHENTICATION:
                            if (name != NULL)
                            {
                                *name = "secure_mutual_authentication";
                            }

                            if (descr != NULL)
                            {
                                *descr = "OMCI base secure mutual authentication";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_OPER_ID_ONU_TUNING_IN:
                            if (name != NULL)
                            {
                                *name = "onu_tuning_in";
                            }

                            if (descr != NULL)
                            {
                                *descr = "ONU Tuning in";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_OPER_ID_ONU_TUNING_OUT:
                            if (name != NULL)
                            {
                                *name = "onu_tuning_out";
                            }

                            if (descr != NULL)
                            {
                                *descr = "ONU Tuning out";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_PROXY:
                    switch (subgroup)
                    {
                        case BCMOLT_XGPON_ONU_PROXY_ID_PLOAM_PACKET:
                            if (name != NULL)
                            {
                                *name = "ploam_packet";
                            }

                            if (descr != NULL)
                            {
                                *descr = "PLOAM Packet";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_PROXY_ID_CPU_PACKETS:
                            if (name != NULL)
                            {
                                *name = "cpu_packets";
                            }

                            if (descr != NULL)
                            {
                                *descr = "XGPON CPU packets";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_PROXY_RX:
                    switch (subgroup)
                    {
                        case BCMOLT_XGPON_ONU_PROXY_RX_ID_CPU_PACKET:
                            if (name != NULL)
                            {
                                *name = "cpu_packet";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Indicates CPU packet was received on the US from this ONU id";
                            }

                            return BCM_ERR_OK;
                        case BCMOLT_XGPON_ONU_PROXY_RX_ID_OMCI_PACKET:
                            if (name != NULL)
                            {
                                *name = "omci_packet";
                            }

                            if (descr != NULL)
                            {
                                *descr = "Indicates OMCI packet was received on the US from this ONU id";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_XGPON_TRX:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "key";
                            }

                            if (descr != NULL)
                            {
                                *descr = "key";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "cfg";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        case BCMOLT_OBJ_ID_XPON_SERDES:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "key";
                            }

                            if (descr != NULL)
                            {
                                *descr = "key";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            if (name != NULL)
                            {
                                *name = "cfg";
                            }

                            if (descr != NULL)
                            {
                                *descr = "cfg";
                            }

                            return BCM_ERR_OK;
                        default:
                            return BCM_ERR_RANGE;
                    }

                default:
                    return BCM_ERR_RANGE;
            }

        default:
            return BCM_ERR_RANGE;
    }

    return BCM_ERR_INTERNAL;    /**<  should never happen. */
}

static bcmcli_prop_descr **obj_get_prop_array(bcmolt_obj_id obj, bcmolt_mgt_group group, uint16_t subgroup, uint32_t *size)
{
    switch (obj)
    {
        case BCMOLT_OBJ_ID_AE_NI:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(ae_ni_key_prop_array) / sizeof(bcmcli_prop_descr *);
                            return ae_ni_key_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(ae_ni_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return ae_ni_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_OPER:
                    switch (subgroup)
                    {
                        case BCMOLT_AE_NI_OPER_ID_SET_AE_NI_EN_STATE:
                            *size = sizeof(ae_ni_set_ae_ni_en_state_prop_array) / sizeof(bcmcli_prop_descr *);
                            return ae_ni_set_ae_ni_en_state_prop_array;
                        default:
                            break;
                    }

                default:
                    break;
            }

        case BCMOLT_OBJ_ID_AE_PATH_DS:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(ae_path_ds_key_prop_array) / sizeof(bcmcli_prop_descr *);
                            return ae_path_ds_key_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(ae_path_ds_stat_prop_array) / sizeof(bcmcli_prop_descr *);
                            return ae_path_ds_stat_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                        case 1:
                        case 2:
                        case 3:
                        case 4:
                        case 5:
                        case 6:
                        case 7:
                        case 8:
                        case 9:
                        case 10:
                        case 11:
                        case 12:
                        case 13:
                        case 14:
                        case 15:
                        case 16:
                            *size = sizeof(ae_path_ds_stat_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return ae_path_ds_stat_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_AE_PATH_DS_AUTO_ID_STAT_ALARM_RAISED:
                            *size = sizeof(ae_path_ds_stat_alarm_raised_prop_array) / sizeof(bcmcli_prop_descr *);
                            return ae_path_ds_stat_alarm_raised_prop_array;
                        case BCMOLT_AE_PATH_DS_AUTO_ID_STAT_ALARM_CLEARED:
                            *size = sizeof(ae_path_ds_stat_alarm_cleared_prop_array) / sizeof(bcmcli_prop_descr *);
                            return ae_path_ds_stat_alarm_cleared_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(ae_path_ds_auto_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return ae_path_ds_auto_cfg_prop_array;
                        default:
                            break;
                    }

                default:
                    break;
            }

        case BCMOLT_OBJ_ID_AE_PATH_US:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(ae_path_us_key_prop_array) / sizeof(bcmcli_prop_descr *);
                            return ae_path_us_key_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(ae_path_us_stat_prop_array) / sizeof(bcmcli_prop_descr *);
                            return ae_path_us_stat_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                        case 1:
                        case 2:
                        case 3:
                        case 4:
                        case 5:
                        case 6:
                        case 7:
                        case 8:
                        case 9:
                        case 10:
                        case 11:
                        case 12:
                        case 13:
                        case 14:
                        case 15:
                        case 16:
                        case 17:
                        case 18:
                        case 19:
                            *size = sizeof(ae_path_us_stat_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return ae_path_us_stat_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_AE_PATH_US_AUTO_ID_STAT_ALARM_RAISED:
                            *size = sizeof(ae_path_us_stat_alarm_raised_prop_array) / sizeof(bcmcli_prop_descr *);
                            return ae_path_us_stat_alarm_raised_prop_array;
                        case BCMOLT_AE_PATH_US_AUTO_ID_STAT_ALARM_CLEARED:
                            *size = sizeof(ae_path_us_stat_alarm_cleared_prop_array) / sizeof(bcmcli_prop_descr *);
                            return ae_path_us_stat_alarm_cleared_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(ae_path_us_auto_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return ae_path_us_auto_cfg_prop_array;
                        default:
                            break;
                    }

                default:
                    break;
            }

        case BCMOLT_OBJ_ID_CHANNEL:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(channel_key_prop_array) / sizeof(bcmcli_prop_descr *);
                            return channel_key_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(channel_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return channel_cfg_prop_array;
                        default:
                            break;
                    }

                default:
                    break;
            }

        case BCMOLT_OBJ_ID_DEBUG:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(debug_key_prop_array) / sizeof(bcmcli_prop_descr *);
                            return debug_key_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(debug_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return debug_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_DEBUG_AUTO_ID_CLI_OUTPUT:
                            *size = sizeof(debug_cli_output_prop_array) / sizeof(bcmcli_prop_descr *);
                            return debug_cli_output_prop_array;
                        case BCMOLT_DEBUG_AUTO_ID_FILE_ALMOST_FULL:
                            *size = sizeof(debug_file_almost_full_prop_array) / sizeof(bcmcli_prop_descr *);
                            return debug_file_almost_full_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(debug_auto_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return debug_auto_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_OPER:
                    switch (subgroup)
                    {
                        case BCMOLT_DEBUG_OPER_ID_CLI_INPUT:
                            *size = sizeof(debug_cli_input_prop_array) / sizeof(bcmcli_prop_descr *);
                            return debug_cli_input_prop_array;
                        case BCMOLT_DEBUG_OPER_ID_START_API_CAPTURE:
                            *size = sizeof(debug_start_api_capture_prop_array) / sizeof(bcmcli_prop_descr *);
                            return debug_start_api_capture_prop_array;
                        case BCMOLT_DEBUG_OPER_ID_STOP_API_CAPTURE:
                            *size = sizeof(debug_stop_api_capture_prop_array) / sizeof(bcmcli_prop_descr *);
                            return debug_stop_api_capture_prop_array;
                        case BCMOLT_DEBUG_OPER_ID_RESET_API_CAPTURE:
                            *size = sizeof(debug_reset_api_capture_prop_array) / sizeof(bcmcli_prop_descr *);
                            return debug_reset_api_capture_prop_array;
                        default:
                            break;
                    }

                default:
                    break;
            }

        case BCMOLT_OBJ_ID_DEVICE:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(device_key_prop_array) / sizeof(bcmcli_prop_descr *);
                            return device_key_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(device_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return device_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_DEVICE_AUTO_ID_DEVICE_READY:
                            *size = sizeof(device_device_ready_prop_array) / sizeof(bcmcli_prop_descr *);
                            return device_device_ready_prop_array;
                        case BCMOLT_DEVICE_AUTO_ID_CONNECTION_ESTABLISHED:
                            *size = sizeof(device_connection_established_prop_array) / sizeof(bcmcli_prop_descr *);
                            return device_connection_established_prop_array;
                        case BCMOLT_DEVICE_AUTO_ID_DEVICE_KEEP_ALIVE:
                            *size = sizeof(device_device_keep_alive_prop_array) / sizeof(bcmcli_prop_descr *);
                            return device_device_keep_alive_prop_array;
                        case BCMOLT_DEVICE_AUTO_ID_CONNECTION_FAILURE:
                            *size = sizeof(device_connection_failure_prop_array) / sizeof(bcmcli_prop_descr *);
                            return device_connection_failure_prop_array;
                        case BCMOLT_DEVICE_AUTO_ID_CONNECTION_COMPLETE:
                            *size = sizeof(device_connection_complete_prop_array) / sizeof(bcmcli_prop_descr *);
                            return device_connection_complete_prop_array;
                        case BCMOLT_DEVICE_AUTO_ID_DISCONNECTION_COMPLETE:
                            *size = sizeof(device_disconnection_complete_prop_array) / sizeof(bcmcli_prop_descr *);
                            return device_disconnection_complete_prop_array;
                        case BCMOLT_DEVICE_AUTO_ID_SW_ERROR:
                            *size = sizeof(device_sw_error_prop_array) / sizeof(bcmcli_prop_descr *);
                            return device_sw_error_prop_array;
                        case BCMOLT_DEVICE_AUTO_ID_SW_EXCEPTION:
                            *size = sizeof(device_sw_exception_prop_array) / sizeof(bcmcli_prop_descr *);
                            return device_sw_exception_prop_array;
                        case BCMOLT_DEVICE_AUTO_ID_INDICATIONS_DROPPED:
                            *size = sizeof(device_indications_dropped_prop_array) / sizeof(bcmcli_prop_descr *);
                            return device_indications_dropped_prop_array;
                        case BCMOLT_DEVICE_AUTO_ID_IMAGE_TRANSFER_COMPLETE:
                            *size = sizeof(device_image_transfer_complete_prop_array) / sizeof(bcmcli_prop_descr *);
                            return device_image_transfer_complete_prop_array;
                        case BCMOLT_DEVICE_AUTO_ID_DDR_TEST_COMPLETE:
                            *size = sizeof(device_ddr_test_complete_prop_array) / sizeof(bcmcli_prop_descr *);
                            return device_ddr_test_complete_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(device_auto_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return device_auto_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_OPER:
                    switch (subgroup)
                    {
                        case BCMOLT_DEVICE_OPER_ID_CONNECT:
                            *size = sizeof(device_connect_prop_array) / sizeof(bcmcli_prop_descr *);
                            return device_connect_prop_array;
                        case BCMOLT_DEVICE_OPER_ID_DISCONNECT:
                            *size = sizeof(device_disconnect_prop_array) / sizeof(bcmcli_prop_descr *);
                            return device_disconnect_prop_array;
                        case BCMOLT_DEVICE_OPER_ID_RESET:
                            *size = sizeof(device_reset_prop_array) / sizeof(bcmcli_prop_descr *);
                            return device_reset_prop_array;
                        case BCMOLT_DEVICE_OPER_ID_HOST_KEEP_ALIVE:
                            *size = sizeof(device_host_keep_alive_prop_array) / sizeof(bcmcli_prop_descr *);
                            return device_host_keep_alive_prop_array;
                        case BCMOLT_DEVICE_OPER_ID_SW_UPGRADE_ACTIVATE:
                            *size = sizeof(device_sw_upgrade_activate_prop_array) / sizeof(bcmcli_prop_descr *);
                            return device_sw_upgrade_activate_prop_array;
                        case BCMOLT_DEVICE_OPER_ID_IMAGE_TRANSFER_START:
                            *size = sizeof(device_image_transfer_start_prop_array) / sizeof(bcmcli_prop_descr *);
                            return device_image_transfer_start_prop_array;
                        case BCMOLT_DEVICE_OPER_ID_IMAGE_TRANSFER_DATA:
                            *size = sizeof(device_image_transfer_data_prop_array) / sizeof(bcmcli_prop_descr *);
                            return device_image_transfer_data_prop_array;
                        case BCMOLT_DEVICE_OPER_ID_RUN_DDR_TEST:
                            *size = sizeof(device_run_ddr_test_prop_array) / sizeof(bcmcli_prop_descr *);
                            return device_run_ddr_test_prop_array;
                        default:
                            break;
                    }

                default:
                    break;
            }

        case BCMOLT_OBJ_ID_EPON_DENIED_LINK:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(epon_denied_link_key_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_denied_link_key_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(epon_denied_link_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_denied_link_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_EPON_DENIED_LINK_AUTO_ID_UNKNOWN_LINK_VIOLATION:
                            *size = sizeof(epon_denied_link_unknown_link_violation_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_denied_link_unknown_link_violation_prop_array;
                        case BCMOLT_EPON_DENIED_LINK_AUTO_ID_OVERHEAD_PROFILE_VIOLATION:
                            *size = sizeof(epon_denied_link_overhead_profile_violation_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_denied_link_overhead_profile_violation_prop_array;
                        case BCMOLT_EPON_DENIED_LINK_AUTO_ID_LASER_ON_OFF_VIOLATION:
                            *size = sizeof(epon_denied_link_laser_on_off_violation_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_denied_link_laser_on_off_violation_prop_array;
                        case BCMOLT_EPON_DENIED_LINK_AUTO_ID_MAX_LINK_VIOLATION:
                            *size = sizeof(epon_denied_link_max_link_violation_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_denied_link_max_link_violation_prop_array;
                        case BCMOLT_EPON_DENIED_LINK_AUTO_ID_LLID_POOL_EMPTY_VIOLATION:
                            *size = sizeof(epon_denied_link_llid_pool_empty_violation_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_denied_link_llid_pool_empty_violation_prop_array;
                        case BCMOLT_EPON_DENIED_LINK_AUTO_ID_SYSTEM_RESOURCE_VIOLATION:
                            *size = sizeof(epon_denied_link_system_resource_violation_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_denied_link_system_resource_violation_prop_array;
                        case BCMOLT_EPON_DENIED_LINK_AUTO_ID_RANGE_VIOLATION:
                            *size = sizeof(epon_denied_link_range_violation_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_denied_link_range_violation_prop_array;
                        case BCMOLT_EPON_DENIED_LINK_AUTO_ID_TDM_CHANNELS_EXHAUSTED:
                            *size = sizeof(epon_denied_link_tdm_channels_exhausted_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_denied_link_tdm_channels_exhausted_prop_array;
                        case BCMOLT_EPON_DENIED_LINK_AUTO_ID_ROGUE_VIOLATION:
                            *size = sizeof(epon_denied_link_rogue_violation_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_denied_link_rogue_violation_prop_array;
                        case BCMOLT_EPON_DENIED_LINK_AUTO_ID_UPSTREAM_BANDWIDTH_VIOLATION:
                            *size = sizeof(epon_denied_link_upstream_bandwidth_violation_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_denied_link_upstream_bandwidth_violation_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(epon_denied_link_auto_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_denied_link_auto_cfg_prop_array;
                        default:
                            break;
                    }

                default:
                    break;
            }

        case BCMOLT_OBJ_ID_EPON_LINK:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(epon_link_key_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_link_key_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(epon_link_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_link_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(epon_link_stat_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_link_stat_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                        case 1:
                        case 2:
                        case 3:
                        case 4:
                        case 5:
                        case 6:
                        case 7:
                        case 8:
                        case 9:
                        case 10:
                        case 11:
                        case 12:
                        case 13:
                        case 14:
                        case 15:
                        case 16:
                        case 17:
                        case 18:
                        case 19:
                        case 20:
                        case 21:
                        case 22:
                        case 23:
                        case 24:
                        case 25:
                        case 26:
                        case 27:
                        case 28:
                        case 29:
                        case 30:
                        case 31:
                        case 32:
                        case 33:
                        case 34:
                        case 35:
                        case 36:
                        case 37:
                        case 38:
                        case 39:
                        case 40:
                        case 41:
                        case 42:
                            *size = sizeof(epon_link_stat_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_link_stat_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_EPON_LINK_AUTO_ID_KEY_EXCHANGE_FAILURE:
                            *size = sizeof(epon_link_key_exchange_failure_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_link_key_exchange_failure_prop_array;
                        case BCMOLT_EPON_LINK_AUTO_ID_ENCRYPTION_ENABLED:
                            *size = sizeof(epon_link_encryption_enabled_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_link_encryption_enabled_prop_array;
                        case BCMOLT_EPON_LINK_AUTO_ID_MPCP_REG_ACK_TIMEOUT:
                            *size = sizeof(epon_link_mpcp_reg_ack_timeout_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_link_mpcp_reg_ack_timeout_prop_array;
                        case BCMOLT_EPON_LINK_AUTO_ID_RANGE_VALUE_CHANGED:
                            *size = sizeof(epon_link_range_value_changed_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_link_range_value_changed_prop_array;
                        case BCMOLT_EPON_LINK_AUTO_ID_PROTECTION_SWITCH_OCCURRED:
                            *size = sizeof(epon_link_protection_switch_occurred_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_link_protection_switch_occurred_prop_array;
                        case BCMOLT_EPON_LINK_AUTO_ID_DUPLICATE_MPCP_REGISTRATION_REQUEST:
                            *size = sizeof(epon_link_duplicate_mpcp_registration_request_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_link_duplicate_mpcp_registration_request_prop_array;
                        case BCMOLT_EPON_LINK_AUTO_ID_LINK_SPEED_MISMATCH:
                            *size = sizeof(epon_link_link_speed_mismatch_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_link_link_speed_mismatch_prop_array;
                        case BCMOLT_EPON_LINK_AUTO_ID_MPCP_REPORT_TIMEOUT:
                            *size = sizeof(epon_link_mpcp_report_timeout_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_link_mpcp_report_timeout_prop_array;
                        case BCMOLT_EPON_LINK_AUTO_ID_OAM_KEEPALIVE_TIMEOUT:
                            *size = sizeof(epon_link_oam_keepalive_timeout_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_link_oam_keepalive_timeout_prop_array;
                        case BCMOLT_EPON_LINK_AUTO_ID_MPCP_DISCOVERED:
                            *size = sizeof(epon_link_mpcp_discovered_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_link_mpcp_discovered_prop_array;
                        case BCMOLT_EPON_LINK_AUTO_ID_MPCP_DEREGISTERED:
                            *size = sizeof(epon_link_mpcp_deregistered_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_link_mpcp_deregistered_prop_array;
                        case BCMOLT_EPON_LINK_AUTO_ID_PREPROVISIONED_LINK_CREATED:
                            *size = sizeof(epon_link_preprovisioned_link_created_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_link_preprovisioned_link_created_prop_array;
                        case BCMOLT_EPON_LINK_AUTO_ID_OAM_KEEPALIVE_TIMER_STARTED:
                            *size = sizeof(epon_link_oam_keepalive_timer_started_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_link_oam_keepalive_timer_started_prop_array;
                        case BCMOLT_EPON_LINK_AUTO_ID_OAM_KEEPALIVE_TIMER_STOPPED:
                            *size = sizeof(epon_link_oam_keepalive_timer_stopped_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_link_oam_keepalive_timer_stopped_prop_array;
                        case BCMOLT_EPON_LINK_AUTO_ID_KEY_EXCHANGE_STARTED:
                            *size = sizeof(epon_link_key_exchange_started_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_link_key_exchange_started_prop_array;
                        case BCMOLT_EPON_LINK_AUTO_ID_KEY_EXCHANGE_STOPPED:
                            *size = sizeof(epon_link_key_exchange_stopped_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_link_key_exchange_stopped_prop_array;
                        case BCMOLT_EPON_LINK_AUTO_ID_STATIC_REGISTRATION_DONE:
                            *size = sizeof(epon_link_static_registration_done_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_link_static_registration_done_prop_array;
                        case BCMOLT_EPON_LINK_AUTO_ID_RERANGE_FAILURE:
                            *size = sizeof(epon_link_rerange_failure_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_link_rerange_failure_prop_array;
                        case BCMOLT_EPON_LINK_AUTO_ID_LINK_DELETED:
                            *size = sizeof(epon_link_link_deleted_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_link_link_deleted_prop_array;
                        case BCMOLT_EPON_LINK_AUTO_ID_STAT_ALARM_RAISED:
                            *size = sizeof(epon_link_stat_alarm_raised_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_link_stat_alarm_raised_prop_array;
                        case BCMOLT_EPON_LINK_AUTO_ID_STAT_ALARM_CLEARED:
                            *size = sizeof(epon_link_stat_alarm_cleared_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_link_stat_alarm_cleared_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(epon_link_auto_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_link_auto_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_OPER:
                    switch (subgroup)
                    {
                        case BCMOLT_EPON_LINK_OPER_ID_FORCE_REDISCOVERY:
                            *size = sizeof(epon_link_force_rediscovery_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_link_force_rediscovery_prop_array;
                        case BCMOLT_EPON_LINK_OPER_ID_DELETE_LINK:
                            *size = sizeof(epon_link_delete_link_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_link_delete_link_prop_array;
                        case BCMOLT_EPON_LINK_OPER_ID_OAM_KEEPALIVE_TIMER_START:
                            *size = sizeof(epon_link_oam_keepalive_timer_start_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_link_oam_keepalive_timer_start_prop_array;
                        case BCMOLT_EPON_LINK_OPER_ID_OAM_KEEPALIVE_TIMER_STOP:
                            *size = sizeof(epon_link_oam_keepalive_timer_stop_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_link_oam_keepalive_timer_stop_prop_array;
                        case BCMOLT_EPON_LINK_OPER_ID_KEY_EXCHANGE_START:
                            *size = sizeof(epon_link_key_exchange_start_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_link_key_exchange_start_prop_array;
                        case BCMOLT_EPON_LINK_OPER_ID_KEY_EXCHANGE_STOP:
                            *size = sizeof(epon_link_key_exchange_stop_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_link_key_exchange_stop_prop_array;
                        case BCMOLT_EPON_LINK_OPER_ID_STATIC_REGISTRATION:
                            *size = sizeof(epon_link_static_registration_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_link_static_registration_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_PROXY:
                    switch (subgroup)
                    {
                        case BCMOLT_EPON_LINK_PROXY_ID_INJECT_FRAME:
                            *size = sizeof(epon_link_inject_frame_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_link_inject_frame_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_PROXY_RX:
                    switch (subgroup)
                    {
                        case BCMOLT_EPON_LINK_PROXY_RX_ID_FRAME_CAPTURED:
                            *size = sizeof(epon_link_frame_captured_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_link_frame_captured_prop_array;
                        default:
                            break;
                    }

                default:
                    break;
            }

        case BCMOLT_OBJ_ID_EPON_NI:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(epon_ni_key_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_ni_key_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(epon_ni_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_ni_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_EPON_NI_AUTO_ID_NO_REPORTS:
                            *size = sizeof(epon_ni_no_reports_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_ni_no_reports_prop_array;
                        case BCMOLT_EPON_NI_AUTO_ID_LLID_QUARANTINED:
                            *size = sizeof(epon_ni_llid_quarantined_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_ni_llid_quarantined_prop_array;
                        case BCMOLT_EPON_NI_AUTO_ID_STATE_CHANGE_COMPLETED:
                            *size = sizeof(epon_ni_state_change_completed_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_ni_state_change_completed_prop_array;
                        case BCMOLT_EPON_NI_AUTO_ID_RERANGE_FAILURE:
                            *size = sizeof(epon_ni_rerange_failure_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_ni_rerange_failure_prop_array;
                        case BCMOLT_EPON_NI_AUTO_ID_RSSI_MEASUREMENT_COMPLETED:
                            *size = sizeof(epon_ni_rssi_measurement_completed_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_ni_rssi_measurement_completed_prop_array;
                        case BCMOLT_EPON_NI_AUTO_ID_ONU_UPGRADE_COMPLETE:
                            *size = sizeof(epon_ni_onu_upgrade_complete_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_ni_onu_upgrade_complete_prop_array;
                        case BCMOLT_EPON_NI_AUTO_ID_ROGUE_SCAN_COMPLETE:
                            *size = sizeof(epon_ni_rogue_scan_complete_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_ni_rogue_scan_complete_prop_array;
                        case BCMOLT_EPON_NI_AUTO_ID_MPCP_TIMESTAMP_CHANGED:
                            *size = sizeof(epon_ni_mpcp_timestamp_changed_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_ni_mpcp_timestamp_changed_prop_array;
                        case BCMOLT_EPON_NI_AUTO_ID_AUTO_ROGUE_SCAN_1G_FAILURE:
                            *size = sizeof(epon_ni_auto_rogue_scan_1g_failure_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_ni_auto_rogue_scan_1g_failure_prop_array;
                        case BCMOLT_EPON_NI_AUTO_ID_AUTO_ROGUE_SCAN_10G_FAILURE:
                            *size = sizeof(epon_ni_auto_rogue_scan_10g_failure_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_ni_auto_rogue_scan_10g_failure_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(epon_ni_auto_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_ni_auto_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_OPER:
                    switch (subgroup)
                    {
                        case BCMOLT_EPON_NI_OPER_ID_SET_EPON_NI_EN_STATE:
                            *size = sizeof(epon_ni_set_epon_ni_en_state_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_ni_set_epon_ni_en_state_prop_array;
                        case BCMOLT_EPON_NI_OPER_ID_ISSUE_RSSI_GRANT:
                            *size = sizeof(epon_ni_issue_rssi_grant_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_ni_issue_rssi_grant_prop_array;
                        case BCMOLT_EPON_NI_OPER_ID_ADD_LINK:
                            *size = sizeof(epon_ni_add_link_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_ni_add_link_prop_array;
                        case BCMOLT_EPON_NI_OPER_ID_ADD_MULTICAST_LINK:
                            *size = sizeof(epon_ni_add_multicast_link_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_ni_add_multicast_link_prop_array;
                        case BCMOLT_EPON_NI_OPER_ID_ADD_PROTECTED_STANDBY_LINK:
                            *size = sizeof(epon_ni_add_protected_standby_link_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_ni_add_protected_standby_link_prop_array;
                        case BCMOLT_EPON_NI_OPER_ID_PROTECTION_SWITCHING_APPLY_RERANGE_DELTA:
                            *size = sizeof(epon_ni_protection_switching_apply_rerange_delta_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_ni_protection_switching_apply_rerange_delta_prop_array;
                        case BCMOLT_EPON_NI_OPER_ID_ROGUE_LLID_SCAN:
                            *size = sizeof(epon_ni_rogue_llid_scan_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_ni_rogue_llid_scan_prop_array;
                        case BCMOLT_EPON_NI_OPER_ID_START_ONU_UPGRADE:
                            *size = sizeof(epon_ni_start_onu_upgrade_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_ni_start_onu_upgrade_prop_array;
                        default:
                            break;
                    }

                default:
                    break;
            }

        case BCMOLT_OBJ_ID_EPON_ONU_10G_US:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(epon_onu_10g_us_key_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_onu_10g_us_key_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(epon_onu_10g_us_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_onu_10g_us_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(epon_onu_10g_us_stat_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_onu_10g_us_stat_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                        case 1:
                        case 2:
                        case 3:
                            *size = sizeof(epon_onu_10g_us_stat_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_onu_10g_us_stat_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_EPON_ONU_10G_US_AUTO_ID_STAT_ALARM_RAISED:
                            *size = sizeof(epon_onu_10g_us_stat_alarm_raised_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_onu_10g_us_stat_alarm_raised_prop_array;
                        case BCMOLT_EPON_ONU_10G_US_AUTO_ID_STAT_ALARM_CLEARED:
                            *size = sizeof(epon_onu_10g_us_stat_alarm_cleared_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_onu_10g_us_stat_alarm_cleared_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(epon_onu_10g_us_auto_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_onu_10g_us_auto_cfg_prop_array;
                        default:
                            break;
                    }

                default:
                    break;
            }

        case BCMOLT_OBJ_ID_EPON_ONU_1G_US:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(epon_onu_1g_us_key_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_onu_1g_us_key_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(epon_onu_1g_us_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_onu_1g_us_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(epon_onu_1g_us_stat_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_onu_1g_us_stat_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                        case 1:
                        case 2:
                        case 3:
                        case 4:
                        case 5:
                        case 6:
                        case 7:
                        case 8:
                        case 9:
                        case 10:
                        case 11:
                        case 12:
                        case 13:
                        case 14:
                        case 15:
                            *size = sizeof(epon_onu_1g_us_stat_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_onu_1g_us_stat_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_EPON_ONU_1G_US_AUTO_ID_STAT_ALARM_RAISED:
                            *size = sizeof(epon_onu_1g_us_stat_alarm_raised_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_onu_1g_us_stat_alarm_raised_prop_array;
                        case BCMOLT_EPON_ONU_1G_US_AUTO_ID_STAT_ALARM_CLEARED:
                            *size = sizeof(epon_onu_1g_us_stat_alarm_cleared_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_onu_1g_us_stat_alarm_cleared_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(epon_onu_1g_us_auto_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_onu_1g_us_auto_cfg_prop_array;
                        default:
                            break;
                    }

                default:
                    break;
            }

        case BCMOLT_OBJ_ID_EPON_PATH_10G_DS:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(epon_path_10g_ds_key_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_path_10g_ds_key_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(epon_path_10g_ds_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_path_10g_ds_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(epon_path_10g_ds_stat_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_path_10g_ds_stat_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                        case 1:
                        case 2:
                        case 3:
                        case 4:
                        case 5:
                        case 6:
                        case 7:
                        case 8:
                        case 9:
                        case 10:
                        case 11:
                        case 12:
                        case 13:
                        case 14:
                        case 15:
                        case 16:
                        case 17:
                        case 18:
                        case 19:
                        case 20:
                            *size = sizeof(epon_path_10g_ds_stat_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_path_10g_ds_stat_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_EPON_PATH_10G_DS_AUTO_ID_STAT_ALARM_RAISED:
                            *size = sizeof(epon_path_10g_ds_stat_alarm_raised_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_path_10g_ds_stat_alarm_raised_prop_array;
                        case BCMOLT_EPON_PATH_10G_DS_AUTO_ID_STAT_ALARM_CLEARED:
                            *size = sizeof(epon_path_10g_ds_stat_alarm_cleared_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_path_10g_ds_stat_alarm_cleared_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(epon_path_10g_ds_auto_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_path_10g_ds_auto_cfg_prop_array;
                        default:
                            break;
                    }

                default:
                    break;
            }

        case BCMOLT_OBJ_ID_EPON_PATH_10G_US:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(epon_path_10g_us_key_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_path_10g_us_key_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(epon_path_10g_us_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_path_10g_us_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(epon_path_10g_us_stat_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_path_10g_us_stat_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                        case 1:
                        case 2:
                        case 3:
                        case 4:
                        case 5:
                        case 6:
                        case 7:
                        case 8:
                        case 9:
                        case 10:
                        case 11:
                        case 12:
                        case 13:
                        case 14:
                        case 15:
                        case 16:
                        case 17:
                        case 18:
                        case 19:
                        case 20:
                        case 21:
                        case 22:
                        case 23:
                        case 24:
                        case 25:
                            *size = sizeof(epon_path_10g_us_stat_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_path_10g_us_stat_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_EPON_PATH_10G_US_AUTO_ID_STAT_ALARM_RAISED:
                            *size = sizeof(epon_path_10g_us_stat_alarm_raised_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_path_10g_us_stat_alarm_raised_prop_array;
                        case BCMOLT_EPON_PATH_10G_US_AUTO_ID_STAT_ALARM_CLEARED:
                            *size = sizeof(epon_path_10g_us_stat_alarm_cleared_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_path_10g_us_stat_alarm_cleared_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(epon_path_10g_us_auto_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_path_10g_us_auto_cfg_prop_array;
                        default:
                            break;
                    }

                default:
                    break;
            }

        case BCMOLT_OBJ_ID_EPON_PATH_1G_DS:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(epon_path_1g_ds_key_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_path_1g_ds_key_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(epon_path_1g_ds_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_path_1g_ds_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(epon_path_1g_ds_stat_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_path_1g_ds_stat_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                        case 1:
                        case 2:
                        case 3:
                        case 4:
                        case 5:
                        case 6:
                        case 7:
                        case 8:
                        case 9:
                        case 10:
                        case 11:
                        case 12:
                        case 13:
                        case 14:
                        case 15:
                        case 16:
                        case 17:
                        case 18:
                        case 19:
                        case 20:
                            *size = sizeof(epon_path_1g_ds_stat_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_path_1g_ds_stat_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_EPON_PATH_1G_DS_AUTO_ID_STAT_ALARM_RAISED:
                            *size = sizeof(epon_path_1g_ds_stat_alarm_raised_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_path_1g_ds_stat_alarm_raised_prop_array;
                        case BCMOLT_EPON_PATH_1G_DS_AUTO_ID_STAT_ALARM_CLEARED:
                            *size = sizeof(epon_path_1g_ds_stat_alarm_cleared_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_path_1g_ds_stat_alarm_cleared_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(epon_path_1g_ds_auto_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_path_1g_ds_auto_cfg_prop_array;
                        default:
                            break;
                    }

                default:
                    break;
            }

        case BCMOLT_OBJ_ID_EPON_PATH_1G_US:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(epon_path_1g_us_key_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_path_1g_us_key_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(epon_path_1g_us_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_path_1g_us_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(epon_path_1g_us_stat_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_path_1g_us_stat_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                        case 1:
                        case 2:
                        case 3:
                        case 4:
                        case 5:
                        case 6:
                        case 7:
                        case 8:
                        case 9:
                        case 10:
                        case 11:
                        case 12:
                        case 13:
                        case 14:
                        case 15:
                        case 16:
                        case 17:
                        case 18:
                        case 19:
                        case 20:
                        case 21:
                        case 22:
                        case 23:
                        case 24:
                        case 25:
                            *size = sizeof(epon_path_1g_us_stat_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_path_1g_us_stat_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_EPON_PATH_1G_US_AUTO_ID_STAT_ALARM_RAISED:
                            *size = sizeof(epon_path_1g_us_stat_alarm_raised_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_path_1g_us_stat_alarm_raised_prop_array;
                        case BCMOLT_EPON_PATH_1G_US_AUTO_ID_STAT_ALARM_CLEARED:
                            *size = sizeof(epon_path_1g_us_stat_alarm_cleared_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_path_1g_us_stat_alarm_cleared_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(epon_path_1g_us_auto_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_path_1g_us_auto_cfg_prop_array;
                        default:
                            break;
                    }

                default:
                    break;
            }

        case BCMOLT_OBJ_ID_EPON_RP:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(epon_rp_key_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_rp_key_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(epon_rp_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return epon_rp_cfg_prop_array;
                        default:
                            break;
                    }

                default:
                    break;
            }

        case BCMOLT_OBJ_ID_GPIO:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(gpio_key_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpio_key_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(gpio_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpio_cfg_prop_array;
                        default:
                            break;
                    }

                default:
                    break;
            }

        case BCMOLT_OBJ_ID_GPON_ALLOC:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(gpon_alloc_key_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_alloc_key_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(gpon_alloc_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_alloc_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(gpon_alloc_stat_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_alloc_stat_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(gpon_alloc_stat_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_alloc_stat_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_GPON_ALLOC_AUTO_ID_CONFIGURATION_COMPLETED:
                            *size = sizeof(gpon_alloc_configuration_completed_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_alloc_configuration_completed_prop_array;
                        case BCMOLT_GPON_ALLOC_AUTO_ID_GET_ALLOC_STATS_COMPLETED:
                            *size = sizeof(gpon_alloc_get_alloc_stats_completed_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_alloc_get_alloc_stats_completed_prop_array;
                        case BCMOLT_GPON_ALLOC_AUTO_ID_STAT_ALARM_RAISED:
                            *size = sizeof(gpon_alloc_stat_alarm_raised_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_alloc_stat_alarm_raised_prop_array;
                        case BCMOLT_GPON_ALLOC_AUTO_ID_STAT_ALARM_CLEARED:
                            *size = sizeof(gpon_alloc_stat_alarm_cleared_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_alloc_stat_alarm_cleared_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(gpon_alloc_auto_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_alloc_auto_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_OPER:
                    switch (subgroup)
                    {
                        case BCMOLT_GPON_ALLOC_OPER_ID_SET_STATE:
                            *size = sizeof(gpon_alloc_set_state_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_alloc_set_state_prop_array;
                        case BCMOLT_GPON_ALLOC_OPER_ID_GET_STATS:
                            *size = sizeof(gpon_alloc_get_stats_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_alloc_get_stats_prop_array;
                        default:
                            break;
                    }

                default:
                    break;
            }

        case BCMOLT_OBJ_ID_GPON_GEM_PORT:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(gpon_gem_port_key_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_gem_port_key_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(gpon_gem_port_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_gem_port_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(gpon_gem_port_stat_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_gem_port_stat_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                        case 1:
                        case 2:
                        case 3:
                            *size = sizeof(gpon_gem_port_stat_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_gem_port_stat_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_GPON_GEM_PORT_AUTO_ID_CONFIGURATION_COMPLETED:
                            *size = sizeof(gpon_gem_port_configuration_completed_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_gem_port_configuration_completed_prop_array;
                        case BCMOLT_GPON_GEM_PORT_AUTO_ID_STAT_ALARM_RAISED:
                            *size = sizeof(gpon_gem_port_stat_alarm_raised_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_gem_port_stat_alarm_raised_prop_array;
                        case BCMOLT_GPON_GEM_PORT_AUTO_ID_STAT_ALARM_CLEARED:
                            *size = sizeof(gpon_gem_port_stat_alarm_cleared_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_gem_port_stat_alarm_cleared_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(gpon_gem_port_auto_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_gem_port_auto_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_OPER:
                    switch (subgroup)
                    {
                        case BCMOLT_GPON_GEM_PORT_OPER_ID_SET_STATE:
                            *size = sizeof(gpon_gem_port_set_state_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_gem_port_set_state_prop_array;
                        default:
                            break;
                    }

                default:
                    break;
            }

        case BCMOLT_OBJ_ID_GPON_IWF:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(gpon_iwf_key_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_iwf_key_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(gpon_iwf_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_iwf_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(gpon_iwf_stat_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_iwf_stat_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                        case 1:
                        case 2:
                        case 3:
                        case 4:
                        case 5:
                        case 6:
                        case 7:
                            *size = sizeof(gpon_iwf_stat_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_iwf_stat_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_GPON_IWF_AUTO_ID_FLUSH_MAC_TABLE_COMPLETED:
                            *size = sizeof(gpon_iwf_flush_mac_table_completed_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_iwf_flush_mac_table_completed_prop_array;
                        case BCMOLT_GPON_IWF_AUTO_ID_SCAN_MAC_TABLE_COMPLETED:
                            *size = sizeof(gpon_iwf_scan_mac_table_completed_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_iwf_scan_mac_table_completed_prop_array;
                        case BCMOLT_GPON_IWF_AUTO_ID_STAT_ALARM_RAISED:
                            *size = sizeof(gpon_iwf_stat_alarm_raised_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_iwf_stat_alarm_raised_prop_array;
                        case BCMOLT_GPON_IWF_AUTO_ID_STAT_ALARM_CLEARED:
                            *size = sizeof(gpon_iwf_stat_alarm_cleared_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_iwf_stat_alarm_cleared_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(gpon_iwf_auto_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_iwf_auto_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_OPER:
                    switch (subgroup)
                    {
                        case BCMOLT_GPON_IWF_OPER_ID_FLUSH_MAC_TABLE:
                            *size = sizeof(gpon_iwf_flush_mac_table_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_iwf_flush_mac_table_prop_array;
                        case BCMOLT_GPON_IWF_OPER_ID_SCAN_MAC_TABLE:
                            *size = sizeof(gpon_iwf_scan_mac_table_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_iwf_scan_mac_table_prop_array;
                        default:
                            break;
                    }

                default:
                    break;
            }

        case BCMOLT_OBJ_ID_GPON_IWF_DS_EGRESS_FLOW:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(gpon_iwf_ds_egress_flow_key_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_iwf_ds_egress_flow_key_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(gpon_iwf_ds_egress_flow_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_iwf_ds_egress_flow_cfg_prop_array;
                        default:
                            break;
                    }

                default:
                    break;
            }

        case BCMOLT_OBJ_ID_GPON_IWF_DS_INGRESS_FLOW:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(gpon_iwf_ds_ingress_flow_key_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_iwf_ds_ingress_flow_key_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(gpon_iwf_ds_ingress_flow_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_iwf_ds_ingress_flow_cfg_prop_array;
                        default:
                            break;
                    }

                default:
                    break;
            }

        case BCMOLT_OBJ_ID_GPON_IWF_MAC_TABLE:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(gpon_iwf_mac_table_key_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_iwf_mac_table_key_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(gpon_iwf_mac_table_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_iwf_mac_table_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_GPON_IWF_MAC_TABLE_AUTO_ID_NEW_MAC:
                            *size = sizeof(gpon_iwf_mac_table_new_mac_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_iwf_mac_table_new_mac_prop_array;
                        case BCMOLT_GPON_IWF_MAC_TABLE_AUTO_ID_MAC_AGED:
                            *size = sizeof(gpon_iwf_mac_table_mac_aged_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_iwf_mac_table_mac_aged_prop_array;
                        case BCMOLT_GPON_IWF_MAC_TABLE_AUTO_ID_MAC_MOVE:
                            *size = sizeof(gpon_iwf_mac_table_mac_move_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_iwf_mac_table_mac_move_prop_array;
                        case BCMOLT_GPON_IWF_MAC_TABLE_AUTO_ID_MAC_DROPPED:
                            *size = sizeof(gpon_iwf_mac_table_mac_dropped_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_iwf_mac_table_mac_dropped_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(gpon_iwf_mac_table_auto_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_iwf_mac_table_auto_cfg_prop_array;
                        default:
                            break;
                    }

                default:
                    break;
            }

        case BCMOLT_OBJ_ID_GPON_IWF_US_FLOW:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(gpon_iwf_us_flow_key_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_iwf_us_flow_key_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(gpon_iwf_us_flow_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_iwf_us_flow_cfg_prop_array;
                        default:
                            break;
                    }

                default:
                    break;
            }

        case BCMOLT_OBJ_ID_GPON_NI:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(gpon_ni_key_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_ni_key_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(gpon_ni_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_ni_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(gpon_ni_stat_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_ni_stat_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                        case 1:
                        case 2:
                        case 3:
                        case 4:
                        case 5:
                        case 6:
                        case 7:
                        case 8:
                        case 9:
                        case 10:
                        case 11:
                        case 12:
                        case 13:
                        case 14:
                        case 15:
                        case 16:
                        case 17:
                        case 18:
                        case 19:
                        case 20:
                        case 21:
                        case 22:
                        case 23:
                        case 24:
                        case 25:
                        case 26:
                        case 27:
                        case 28:
                        case 29:
                        case 30:
                        case 31:
                        case 32:
                        case 33:
                            *size = sizeof(gpon_ni_stat_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_ni_stat_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_GPON_NI_AUTO_ID_STATE_CHANGE_COMPLETED:
                            *size = sizeof(gpon_ni_state_change_completed_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_ni_state_change_completed_prop_array;
                        case BCMOLT_GPON_NI_AUTO_ID_LOS:
                            *size = sizeof(gpon_ni_los_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_ni_los_prop_array;
                        case BCMOLT_GPON_NI_AUTO_ID_SERIAL_NUMBER_ACQUISITION_CYCLE_START:
                            *size = sizeof(gpon_ni_serial_number_acquisition_cycle_start_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_ni_serial_number_acquisition_cycle_start_prop_array;
                        case BCMOLT_GPON_NI_AUTO_ID_PROTECTION_SWITCHING_TRAFFIC_RESUME:
                            *size = sizeof(gpon_ni_protection_switching_traffic_resume_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_ni_protection_switching_traffic_resume_prop_array;
                        case BCMOLT_GPON_NI_AUTO_ID_PROTECTION_SWITCHING_ONUS_RANGED:
                            *size = sizeof(gpon_ni_protection_switching_onus_ranged_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_ni_protection_switching_onus_ranged_prop_array;
                        case BCMOLT_GPON_NI_AUTO_ID_PROTECTION_SWITCHING_SWITCHOVER_COMPLETED:
                            *size = sizeof(gpon_ni_protection_switching_switchover_completed_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_ni_protection_switching_switchover_completed_prop_array;
                        case BCMOLT_GPON_NI_AUTO_ID_STANDBY_PON_MONITORING_CYCLE_COMPLETED:
                            *size = sizeof(gpon_ni_standby_pon_monitoring_cycle_completed_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_ni_standby_pon_monitoring_cycle_completed_prop_array;
                        case BCMOLT_GPON_NI_AUTO_ID_ONU_DISCOVERED:
                            *size = sizeof(gpon_ni_onu_discovered_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_ni_onu_discovered_prop_array;
                        case BCMOLT_GPON_NI_AUTO_ID_CPU_PACKETS_FAILURE:
                            *size = sizeof(gpon_ni_cpu_packets_failure_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_ni_cpu_packets_failure_prop_array;
                        case BCMOLT_GPON_NI_AUTO_ID_ROGUE_DETECTION_COMPLETED:
                            *size = sizeof(gpon_ni_rogue_detection_completed_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_ni_rogue_detection_completed_prop_array;
                        case BCMOLT_GPON_NI_AUTO_ID_DEACTIVATE_ALL_ONUS_COMPLETED:
                            *size = sizeof(gpon_ni_deactivate_all_onus_completed_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_ni_deactivate_all_onus_completed_prop_array;
                        case BCMOLT_GPON_NI_AUTO_ID_DISABLE_ALL_ONUS_COMPLETED:
                            *size = sizeof(gpon_ni_disable_all_onus_completed_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_ni_disable_all_onus_completed_prop_array;
                        case BCMOLT_GPON_NI_AUTO_ID_ACTIVATE_ALL_ONUS_COMPLETED:
                            *size = sizeof(gpon_ni_activate_all_onus_completed_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_ni_activate_all_onus_completed_prop_array;
                        case BCMOLT_GPON_NI_AUTO_ID_ENABLE_ALL_ONUS_COMPLETED:
                            *size = sizeof(gpon_ni_enable_all_onus_completed_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_ni_enable_all_onus_completed_prop_array;
                        case BCMOLT_GPON_NI_AUTO_ID_TOD_REQUEST_COMPLETED:
                            *size = sizeof(gpon_ni_tod_request_completed_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_ni_tod_request_completed_prop_array;
                        case BCMOLT_GPON_NI_AUTO_ID_ONU_UPGRADE_COMPLETE:
                            *size = sizeof(gpon_ni_onu_upgrade_complete_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_ni_onu_upgrade_complete_prop_array;
                        case BCMOLT_GPON_NI_AUTO_ID_ROGUE_ONU_SPECIAL_MAP_CYCLE_START:
                            *size = sizeof(gpon_ni_rogue_onu_special_map_cycle_start_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_ni_rogue_onu_special_map_cycle_start_prop_array;
                        case BCMOLT_GPON_NI_AUTO_ID_STAT_ALARM_RAISED:
                            *size = sizeof(gpon_ni_stat_alarm_raised_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_ni_stat_alarm_raised_prop_array;
                        case BCMOLT_GPON_NI_AUTO_ID_STAT_ALARM_CLEARED:
                            *size = sizeof(gpon_ni_stat_alarm_cleared_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_ni_stat_alarm_cleared_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(gpon_ni_auto_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_ni_auto_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_OPER:
                    switch (subgroup)
                    {
                        case BCMOLT_GPON_NI_OPER_ID_SET_PON_STATE:
                            *size = sizeof(gpon_ni_set_pon_state_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_ni_set_pon_state_prop_array;
                        case BCMOLT_GPON_NI_OPER_ID_RESET:
                            *size = sizeof(gpon_ni_reset_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_ni_reset_prop_array;
                        case BCMOLT_GPON_NI_OPER_ID_DISABLE_SERIAL_NUMBER:
                            *size = sizeof(gpon_ni_disable_serial_number_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_ni_disable_serial_number_prop_array;
                        case BCMOLT_GPON_NI_OPER_ID_SINGLE_REQUEST_STANDBY_PON_MONITORING:
                            *size = sizeof(gpon_ni_single_request_standby_pon_monitoring_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_ni_single_request_standby_pon_monitoring_prop_array;
                        case BCMOLT_GPON_NI_OPER_ID_SET_ONU_STATE:
                            *size = sizeof(gpon_ni_set_onu_state_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_ni_set_onu_state_prop_array;
                        case BCMOLT_GPON_NI_OPER_ID_ROGUE_DETECTION_WINDOW:
                            *size = sizeof(gpon_ni_rogue_detection_window_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_ni_rogue_detection_window_prop_array;
                        case BCMOLT_GPON_NI_OPER_ID_TOD_REQUEST:
                            *size = sizeof(gpon_ni_tod_request_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_ni_tod_request_prop_array;
                        case BCMOLT_GPON_NI_OPER_ID_PROTECTION_SWITCHING_TYPE_C_SET_MULTIPLE_ONU_STATE:
                            *size = sizeof(gpon_ni_protection_switching_type_c_set_multiple_onu_state_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_ni_protection_switching_type_c_set_multiple_onu_state_prop_array;
                        case BCMOLT_GPON_NI_OPER_ID_START_ONU_UPGRADE:
                            *size = sizeof(gpon_ni_start_onu_upgrade_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_ni_start_onu_upgrade_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_PROXY:
                    switch (subgroup)
                    {
                        case BCMOLT_GPON_NI_PROXY_ID_CPU_PACKETS:
                            *size = sizeof(gpon_ni_cpu_packets_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_ni_cpu_packets_prop_array;
                        case BCMOLT_GPON_NI_PROXY_ID_BROADCAST_PLOAM_PACKET:
                            *size = sizeof(gpon_ni_broadcast_ploam_packet_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_ni_broadcast_ploam_packet_prop_array;
                        default:
                            break;
                    }

                default:
                    break;
            }

        case BCMOLT_OBJ_ID_GPON_ONU:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(gpon_onu_key_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_onu_key_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(gpon_onu_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_onu_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(gpon_onu_stat_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_onu_stat_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                        case 1:
                        case 2:
                        case 3:
                        case 4:
                        case 5:
                        case 6:
                        case 7:
                        case 8:
                        case 9:
                        case 10:
                        case 11:
                        case 12:
                        case 13:
                        case 14:
                        case 15:
                        case 16:
                        case 17:
                        case 18:
                        case 19:
                            *size = sizeof(gpon_onu_stat_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_onu_stat_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_GPON_ONU_AUTO_ID_ONU_ALARM:
                            *size = sizeof(gpon_onu_onu_alarm_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_onu_onu_alarm_prop_array;
                        case BCMOLT_GPON_ONU_AUTO_ID_DOWI:
                            *size = sizeof(gpon_onu_dowi_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_onu_dowi_prop_array;
                        case BCMOLT_GPON_ONU_AUTO_ID_SFI:
                            *size = sizeof(gpon_onu_sfi_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_onu_sfi_prop_array;
                        case BCMOLT_GPON_ONU_AUTO_ID_SDI:
                            *size = sizeof(gpon_onu_sdi_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_onu_sdi_prop_array;
                        case BCMOLT_GPON_ONU_AUTO_ID_DFI:
                            *size = sizeof(gpon_onu_dfi_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_onu_dfi_prop_array;
                        case BCMOLT_GPON_ONU_AUTO_ID_SUFI:
                            *size = sizeof(gpon_onu_sufi_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_onu_sufi_prop_array;
                        case BCMOLT_GPON_ONU_AUTO_ID_LOAI:
                            *size = sizeof(gpon_onu_loai_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_onu_loai_prop_array;
                        case BCMOLT_GPON_ONU_AUTO_ID_DGI:
                            *size = sizeof(gpon_onu_dgi_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_onu_dgi_prop_array;
                        case BCMOLT_GPON_ONU_AUTO_ID_PEE:
                            *size = sizeof(gpon_onu_pee_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_onu_pee_prop_array;
                        case BCMOLT_GPON_ONU_AUTO_ID_PST:
                            *size = sizeof(gpon_onu_pst_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_onu_pst_prop_array;
                        case BCMOLT_GPON_ONU_AUTO_ID_TIWI:
                            *size = sizeof(gpon_onu_tiwi_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_onu_tiwi_prop_array;
                        case BCMOLT_GPON_ONU_AUTO_ID_LOKI:
                            *size = sizeof(gpon_onu_loki_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_onu_loki_prop_array;
                        case BCMOLT_GPON_ONU_AUTO_ID_MEMI:
                            *size = sizeof(gpon_onu_memi_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_onu_memi_prop_array;
                        case BCMOLT_GPON_ONU_AUTO_ID_OMCI_PORT_ID_CONFIGURATION_COMPLETED:
                            *size = sizeof(gpon_onu_omci_port_id_configuration_completed_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_onu_omci_port_id_configuration_completed_prop_array;
                        case BCMOLT_GPON_ONU_AUTO_ID_BER_INTERVAL_CONFIGURATION_COMPLETED:
                            *size = sizeof(gpon_onu_ber_interval_configuration_completed_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_onu_ber_interval_configuration_completed_prop_array;
                        case BCMOLT_GPON_ONU_AUTO_ID_ERR:
                            *size = sizeof(gpon_onu_err_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_onu_err_prop_array;
                        case BCMOLT_GPON_ONU_AUTO_ID_REI:
                            *size = sizeof(gpon_onu_rei_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_onu_rei_prop_array;
                        case BCMOLT_GPON_ONU_AUTO_ID_RANGING_COMPLETED:
                            *size = sizeof(gpon_onu_ranging_completed_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_onu_ranging_completed_prop_array;
                        case BCMOLT_GPON_ONU_AUTO_ID_PASSWORD_AUTHENTICATION_COMPLETED:
                            *size = sizeof(gpon_onu_password_authentication_completed_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_onu_password_authentication_completed_prop_array;
                        case BCMOLT_GPON_ONU_AUTO_ID_ONU_ACTIVATION_COMPLETED:
                            *size = sizeof(gpon_onu_onu_activation_completed_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_onu_onu_activation_completed_prop_array;
                        case BCMOLT_GPON_ONU_AUTO_ID_ONU_DEACTIVATION_COMPLETED:
                            *size = sizeof(gpon_onu_onu_deactivation_completed_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_onu_onu_deactivation_completed_prop_array;
                        case BCMOLT_GPON_ONU_AUTO_ID_ONU_ENABLE_COMPLETED:
                            *size = sizeof(gpon_onu_onu_enable_completed_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_onu_onu_enable_completed_prop_array;
                        case BCMOLT_GPON_ONU_AUTO_ID_ONU_DISABLE_COMPLETED:
                            *size = sizeof(gpon_onu_onu_disable_completed_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_onu_onu_disable_completed_prop_array;
                        case BCMOLT_GPON_ONU_AUTO_ID_INVALID_DBRU_REPORT:
                            *size = sizeof(gpon_onu_invalid_dbru_report_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_onu_invalid_dbru_report_prop_array;
                        case BCMOLT_GPON_ONU_AUTO_ID_KEY_EXCHANGE_COMPLETED:
                            *size = sizeof(gpon_onu_key_exchange_completed_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_onu_key_exchange_completed_prop_array;
                        case BCMOLT_GPON_ONU_AUTO_ID_KEY_EXCHANGE_KEY_REQUEST_TIMEOUT:
                            *size = sizeof(gpon_onu_key_exchange_key_request_timeout_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_onu_key_exchange_key_request_timeout_prop_array;
                        case BCMOLT_GPON_ONU_AUTO_ID_KEY_EXCHANGE_CYCLE_SKIPPED:
                            *size = sizeof(gpon_onu_key_exchange_cycle_skipped_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_onu_key_exchange_cycle_skipped_prop_array;
                        case BCMOLT_GPON_ONU_AUTO_ID_KEY_EXCHANGE_KEY_MISMATCH:
                            *size = sizeof(gpon_onu_key_exchange_key_mismatch_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_onu_key_exchange_key_mismatch_prop_array;
                        case BCMOLT_GPON_ONU_AUTO_ID_KEY_EXCHANGE_UNCONSECUTIVE_INDEX:
                            *size = sizeof(gpon_onu_key_exchange_unconsecutive_index_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_onu_key_exchange_unconsecutive_index_prop_array;
                        case BCMOLT_GPON_ONU_AUTO_ID_RSSI_MEASUREMENT_COMPLETED:
                            *size = sizeof(gpon_onu_rssi_measurement_completed_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_onu_rssi_measurement_completed_prop_array;
                        case BCMOLT_GPON_ONU_AUTO_ID_KEY_EXCHANGE_DECRYPT_REQUIRED:
                            *size = sizeof(gpon_onu_key_exchange_decrypt_required_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_onu_key_exchange_decrypt_required_prop_array;
                        case BCMOLT_GPON_ONU_AUTO_ID_OPTICAL_REFLECTION:
                            *size = sizeof(gpon_onu_optical_reflection_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_onu_optical_reflection_prop_array;
                        case BCMOLT_GPON_ONU_AUTO_ID_ONU_ACTIVATION_STANDBY_COMPLETED:
                            *size = sizeof(gpon_onu_onu_activation_standby_completed_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_onu_onu_activation_standby_completed_prop_array;
                        case BCMOLT_GPON_ONU_AUTO_ID_POWER_MANAGEMENT_STATE_CHANGE:
                            *size = sizeof(gpon_onu_power_management_state_change_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_onu_power_management_state_change_prop_array;
                        case BCMOLT_GPON_ONU_AUTO_ID_POSSIBLE_DRIFT:
                            *size = sizeof(gpon_onu_possible_drift_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_onu_possible_drift_prop_array;
                        case BCMOLT_GPON_ONU_AUTO_ID_STAT_ALARM_RAISED:
                            *size = sizeof(gpon_onu_stat_alarm_raised_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_onu_stat_alarm_raised_prop_array;
                        case BCMOLT_GPON_ONU_AUTO_ID_STAT_ALARM_CLEARED:
                            *size = sizeof(gpon_onu_stat_alarm_cleared_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_onu_stat_alarm_cleared_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(gpon_onu_auto_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_onu_auto_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_OPER:
                    switch (subgroup)
                    {
                        case BCMOLT_GPON_ONU_OPER_ID_SET_ONU_STATE:
                            *size = sizeof(gpon_onu_set_onu_state_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_onu_set_onu_state_prop_array;
                        case BCMOLT_GPON_ONU_OPER_ID_RSSI_MEASUREMENT:
                            *size = sizeof(gpon_onu_rssi_measurement_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_onu_rssi_measurement_prop_array;
                        case BCMOLT_GPON_ONU_OPER_ID_CHANGE_POWER_LEVEL:
                            *size = sizeof(gpon_onu_change_power_level_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_onu_change_power_level_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_PROXY:
                    switch (subgroup)
                    {
                        case BCMOLT_GPON_ONU_PROXY_ID_CPU_PACKETS:
                            *size = sizeof(gpon_onu_cpu_packets_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_onu_cpu_packets_prop_array;
                        case BCMOLT_GPON_ONU_PROXY_ID_PLOAM_PACKET:
                            *size = sizeof(gpon_onu_ploam_packet_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_onu_ploam_packet_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_PROXY_RX:
                    switch (subgroup)
                    {
                        case BCMOLT_GPON_ONU_PROXY_RX_ID_CPU_PACKET:
                            *size = sizeof(gpon_onu_cpu_packet_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_onu_cpu_packet_prop_array;
                        case BCMOLT_GPON_ONU_PROXY_RX_ID_OMCI_PACKET:
                            *size = sizeof(gpon_onu_omci_packet_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_onu_omci_packet_prop_array;
                        default:
                            break;
                    }

                default:
                    break;
            }

        case BCMOLT_OBJ_ID_GPON_TRX:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(gpon_trx_key_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_trx_key_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(gpon_trx_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return gpon_trx_cfg_prop_array;
                        default:
                            break;
                    }

                default:
                    break;
            }

        case BCMOLT_OBJ_ID_LOG_ENTRY:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(log_entry_key_prop_array) / sizeof(bcmcli_prop_descr *);
                            return log_entry_key_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(log_entry_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return log_entry_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(log_entry_stat_prop_array) / sizeof(bcmcli_prop_descr *);
                            return log_entry_stat_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                        case 1:
                            *size = sizeof(log_entry_stat_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return log_entry_stat_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_LOG_ENTRY_AUTO_ID_STAT_ALARM_RAISED:
                            *size = sizeof(log_entry_stat_alarm_raised_prop_array) / sizeof(bcmcli_prop_descr *);
                            return log_entry_stat_alarm_raised_prop_array;
                        case BCMOLT_LOG_ENTRY_AUTO_ID_STAT_ALARM_CLEARED:
                            *size = sizeof(log_entry_stat_alarm_cleared_prop_array) / sizeof(bcmcli_prop_descr *);
                            return log_entry_stat_alarm_cleared_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(log_entry_auto_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return log_entry_auto_cfg_prop_array;
                        default:
                            break;
                    }

                default:
                    break;
            }

        case BCMOLT_OBJ_ID_LOGGER:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(logger_key_prop_array) / sizeof(bcmcli_prop_descr *);
                            return logger_key_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(logger_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return logger_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(logger_stat_prop_array) / sizeof(bcmcli_prop_descr *);
                            return logger_stat_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(logger_stat_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return logger_stat_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_LOGGER_AUTO_ID_STAT_ALARM_RAISED:
                            *size = sizeof(logger_stat_alarm_raised_prop_array) / sizeof(bcmcli_prop_descr *);
                            return logger_stat_alarm_raised_prop_array;
                        case BCMOLT_LOGGER_AUTO_ID_STAT_ALARM_CLEARED:
                            *size = sizeof(logger_stat_alarm_cleared_prop_array) / sizeof(bcmcli_prop_descr *);
                            return logger_stat_alarm_cleared_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(logger_auto_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return logger_auto_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_OPER:
                    switch (subgroup)
                    {
                        case BCMOLT_LOGGER_OPER_ID_CLEAR_LOG:
                            *size = sizeof(logger_clear_log_prop_array) / sizeof(bcmcli_prop_descr *);
                            return logger_clear_log_prop_array;
                        default:
                            break;
                    }

                default:
                    break;
            }

        case BCMOLT_OBJ_ID_NNI:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(nni_key_prop_array) / sizeof(bcmcli_prop_descr *);
                            return nni_key_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(nni_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return nni_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(nni_stat_prop_array) / sizeof(bcmcli_prop_descr *);
                            return nni_stat_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                        case 1:
                        case 2:
                        case 3:
                        case 4:
                        case 5:
                        case 6:
                        case 7:
                        case 8:
                        case 9:
                        case 10:
                        case 11:
                        case 12:
                        case 13:
                        case 14:
                        case 15:
                        case 16:
                        case 17:
                        case 18:
                        case 19:
                        case 20:
                        case 21:
                        case 22:
                        case 23:
                        case 24:
                        case 25:
                        case 26:
                        case 27:
                        case 28:
                        case 29:
                        case 30:
                        case 31:
                        case 32:
                        case 33:
                        case 34:
                        case 35:
                        case 36:
                        case 37:
                        case 38:
                        case 39:
                        case 40:
                        case 41:
                        case 42:
                        case 43:
                        case 44:
                        case 45:
                        case 46:
                        case 47:
                        case 48:
                        case 49:
                        case 50:
                        case 51:
                        case 52:
                        case 53:
                        case 54:
                        case 55:
                        case 56:
                        case 57:
                        case 58:
                        case 59:
                        case 60:
                        case 61:
                        case 62:
                            *size = sizeof(nni_stat_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return nni_stat_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_NNI_AUTO_ID_STATUS_CHANGED:
                            *size = sizeof(nni_status_changed_prop_array) / sizeof(bcmcli_prop_descr *);
                            return nni_status_changed_prop_array;
                        case BCMOLT_NNI_AUTO_ID_STAT_ALARM_RAISED:
                            *size = sizeof(nni_stat_alarm_raised_prop_array) / sizeof(bcmcli_prop_descr *);
                            return nni_stat_alarm_raised_prop_array;
                        case BCMOLT_NNI_AUTO_ID_STAT_ALARM_CLEARED:
                            *size = sizeof(nni_stat_alarm_cleared_prop_array) / sizeof(bcmcli_prop_descr *);
                            return nni_stat_alarm_cleared_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(nni_auto_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return nni_auto_cfg_prop_array;
                        default:
                            break;
                    }

                default:
                    break;
            }

        case BCMOLT_OBJ_ID_NNI_SERDES:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(nni_serdes_key_prop_array) / sizeof(bcmcli_prop_descr *);
                            return nni_serdes_key_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(nni_serdes_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return nni_serdes_cfg_prop_array;
                        default:
                            break;
                    }

                default:
                    break;
            }

        case BCMOLT_OBJ_ID_SOFTWARE_ERROR:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(software_error_key_prop_array) / sizeof(bcmcli_prop_descr *);
                            return software_error_key_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(software_error_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return software_error_cfg_prop_array;
                        default:
                            break;
                    }

                default:
                    break;
            }

        case BCMOLT_OBJ_ID_TRX_CALIBRATION:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(trx_calibration_key_prop_array) / sizeof(bcmcli_prop_descr *);
                            return trx_calibration_key_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_TRX_CALIBRATION_AUTO_ID_CAPTURE_WINDOW_AND_STATISTIC_COMPLETED:
                            *size = sizeof(trx_calibration_capture_window_and_statistic_completed_prop_array) / sizeof(bcmcli_prop_descr *);
                            return trx_calibration_capture_window_and_statistic_completed_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(trx_calibration_auto_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return trx_calibration_auto_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_OPER:
                    switch (subgroup)
                    {
                        case BCMOLT_TRX_CALIBRATION_OPER_ID_START_CAPTURE_WINDOW:
                            *size = sizeof(trx_calibration_start_capture_window_prop_array) / sizeof(bcmcli_prop_descr *);
                            return trx_calibration_start_capture_window_prop_array;
                        case BCMOLT_TRX_CALIBRATION_OPER_ID_STOP_CAPTURE_WINDOW:
                            *size = sizeof(trx_calibration_stop_capture_window_prop_array) / sizeof(bcmcli_prop_descr *);
                            return trx_calibration_stop_capture_window_prop_array;
                        default:
                            break;
                    }

                default:
                    break;
            }

        case BCMOLT_OBJ_ID_XGPON_ALLOC:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(xgpon_alloc_key_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_alloc_key_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(xgpon_alloc_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_alloc_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(xgpon_alloc_stat_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_alloc_stat_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(xgpon_alloc_stat_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_alloc_stat_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_XGPON_ALLOC_AUTO_ID_CONFIGURATION_COMPLETED:
                            *size = sizeof(xgpon_alloc_configuration_completed_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_alloc_configuration_completed_prop_array;
                        case BCMOLT_XGPON_ALLOC_AUTO_ID_GET_ALLOC_STATS_COMPLETED:
                            *size = sizeof(xgpon_alloc_get_alloc_stats_completed_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_alloc_get_alloc_stats_completed_prop_array;
                        case BCMOLT_XGPON_ALLOC_AUTO_ID_STAT_ALARM_RAISED:
                            *size = sizeof(xgpon_alloc_stat_alarm_raised_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_alloc_stat_alarm_raised_prop_array;
                        case BCMOLT_XGPON_ALLOC_AUTO_ID_STAT_ALARM_CLEARED:
                            *size = sizeof(xgpon_alloc_stat_alarm_cleared_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_alloc_stat_alarm_cleared_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(xgpon_alloc_auto_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_alloc_auto_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_OPER:
                    switch (subgroup)
                    {
                        case BCMOLT_XGPON_ALLOC_OPER_ID_GET_STATS:
                            *size = sizeof(xgpon_alloc_get_stats_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_alloc_get_stats_prop_array;
                        case BCMOLT_XGPON_ALLOC_OPER_ID_SET_STATE:
                            *size = sizeof(xgpon_alloc_set_state_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_alloc_set_state_prop_array;
                        default:
                            break;
                    }

                default:
                    break;
            }

        case BCMOLT_OBJ_ID_XGPON_GEM_PORT:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(xgpon_gem_port_key_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_gem_port_key_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(xgpon_gem_port_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_gem_port_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(xgpon_gem_port_stat_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_gem_port_stat_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                        case 1:
                        case 2:
                        case 3:
                            *size = sizeof(xgpon_gem_port_stat_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_gem_port_stat_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_XGPON_GEM_PORT_AUTO_ID_STAT_ALARM_RAISED:
                            *size = sizeof(xgpon_gem_port_stat_alarm_raised_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_gem_port_stat_alarm_raised_prop_array;
                        case BCMOLT_XGPON_GEM_PORT_AUTO_ID_STAT_ALARM_CLEARED:
                            *size = sizeof(xgpon_gem_port_stat_alarm_cleared_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_gem_port_stat_alarm_cleared_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(xgpon_gem_port_auto_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_gem_port_auto_cfg_prop_array;
                        default:
                            break;
                    }

                default:
                    break;
            }

        case BCMOLT_OBJ_ID_XGPON_IWF:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(xgpon_iwf_key_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_iwf_key_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(xgpon_iwf_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_iwf_cfg_prop_array;
                        default:
                            break;
                    }

                default:
                    break;
            }

        case BCMOLT_OBJ_ID_XGPON_NI:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(xgpon_ni_key_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_ni_key_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(xgpon_ni_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_ni_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(xgpon_ni_stat_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_ni_stat_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                        case 1:
                        case 2:
                        case 3:
                        case 4:
                        case 5:
                        case 6:
                        case 7:
                        case 8:
                        case 9:
                        case 10:
                        case 11:
                        case 12:
                        case 13:
                        case 14:
                        case 15:
                        case 16:
                        case 17:
                        case 18:
                        case 19:
                        case 20:
                        case 21:
                        case 22:
                        case 23:
                        case 24:
                        case 25:
                        case 26:
                        case 27:
                        case 28:
                        case 29:
                        case 30:
                        case 31:
                        case 32:
                        case 33:
                        case 34:
                            *size = sizeof(xgpon_ni_stat_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_ni_stat_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_XGPON_NI_AUTO_ID_STATE_CHANGE_COMPLETED:
                            *size = sizeof(xgpon_ni_state_change_completed_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_ni_state_change_completed_prop_array;
                        case BCMOLT_XGPON_NI_AUTO_ID_LOS:
                            *size = sizeof(xgpon_ni_los_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_ni_los_prop_array;
                        case BCMOLT_XGPON_NI_AUTO_ID_SERIAL_NUMBER_ACQUISITION_CYCLE_START:
                            *size = sizeof(xgpon_ni_serial_number_acquisition_cycle_start_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_ni_serial_number_acquisition_cycle_start_prop_array;
                        case BCMOLT_XGPON_NI_AUTO_ID_PROTECTION_SWITCHING_TRAFFIC_RESUME:
                            *size = sizeof(xgpon_ni_protection_switching_traffic_resume_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_ni_protection_switching_traffic_resume_prop_array;
                        case BCMOLT_XGPON_NI_AUTO_ID_PROTECTION_SWITCHING_ONUS_RANGED:
                            *size = sizeof(xgpon_ni_protection_switching_onus_ranged_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_ni_protection_switching_onus_ranged_prop_array;
                        case BCMOLT_XGPON_NI_AUTO_ID_PROTECTION_SWITCHING_SWITCHOVER_COMPLETED:
                            *size = sizeof(xgpon_ni_protection_switching_switchover_completed_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_ni_protection_switching_switchover_completed_prop_array;
                        case BCMOLT_XGPON_NI_AUTO_ID_STANDBY_PON_MONITORING_CYCLE_COMPLETED:
                            *size = sizeof(xgpon_ni_standby_pon_monitoring_cycle_completed_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_ni_standby_pon_monitoring_cycle_completed_prop_array;
                        case BCMOLT_XGPON_NI_AUTO_ID_ONU_DISCOVERED:
                            *size = sizeof(xgpon_ni_onu_discovered_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_ni_onu_discovered_prop_array;
                        case BCMOLT_XGPON_NI_AUTO_ID_CPU_PACKETS_FAILURE:
                            *size = sizeof(xgpon_ni_cpu_packets_failure_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_ni_cpu_packets_failure_prop_array;
                        case BCMOLT_XGPON_NI_AUTO_ID_ROGUE_DETECTION_COMPLETED:
                            *size = sizeof(xgpon_ni_rogue_detection_completed_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_ni_rogue_detection_completed_prop_array;
                        case BCMOLT_XGPON_NI_AUTO_ID_DEACTIVATE_ALL_ONUS_COMPLETED:
                            *size = sizeof(xgpon_ni_deactivate_all_onus_completed_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_ni_deactivate_all_onus_completed_prop_array;
                        case BCMOLT_XGPON_NI_AUTO_ID_DISABLE_ALL_ONUS_COMPLETED:
                            *size = sizeof(xgpon_ni_disable_all_onus_completed_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_ni_disable_all_onus_completed_prop_array;
                        case BCMOLT_XGPON_NI_AUTO_ID_ACTIVATE_ALL_ONUS_COMPLETED:
                            *size = sizeof(xgpon_ni_activate_all_onus_completed_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_ni_activate_all_onus_completed_prop_array;
                        case BCMOLT_XGPON_NI_AUTO_ID_ENABLE_ALL_ONUS_COMPLETED:
                            *size = sizeof(xgpon_ni_enable_all_onus_completed_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_ni_enable_all_onus_completed_prop_array;
                        case BCMOLT_XGPON_NI_AUTO_ID_TOD_REQUEST_COMPLETED:
                            *size = sizeof(xgpon_ni_tod_request_completed_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_ni_tod_request_completed_prop_array;
                        case BCMOLT_XGPON_NI_AUTO_ID_ONU_UPGRADE_COMPLETE:
                            *size = sizeof(xgpon_ni_onu_upgrade_complete_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_ni_onu_upgrade_complete_prop_array;
                        case BCMOLT_XGPON_NI_AUTO_ID_ROGUE_ONU_SPECIAL_MAP_CYCLE_START:
                            *size = sizeof(xgpon_ni_rogue_onu_special_map_cycle_start_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_ni_rogue_onu_special_map_cycle_start_prop_array;
                        case BCMOLT_XGPON_NI_AUTO_ID_STAT_ALARM_RAISED:
                            *size = sizeof(xgpon_ni_stat_alarm_raised_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_ni_stat_alarm_raised_prop_array;
                        case BCMOLT_XGPON_NI_AUTO_ID_STAT_ALARM_CLEARED:
                            *size = sizeof(xgpon_ni_stat_alarm_cleared_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_ni_stat_alarm_cleared_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(xgpon_ni_auto_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_ni_auto_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_OPER:
                    switch (subgroup)
                    {
                        case BCMOLT_XGPON_NI_OPER_ID_SET_PON_STATE:
                            *size = sizeof(xgpon_ni_set_pon_state_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_ni_set_pon_state_prop_array;
                        case BCMOLT_XGPON_NI_OPER_ID_RESET:
                            *size = sizeof(xgpon_ni_reset_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_ni_reset_prop_array;
                        case BCMOLT_XGPON_NI_OPER_ID_DISABLE_SERIAL_NUMBER:
                            *size = sizeof(xgpon_ni_disable_serial_number_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_ni_disable_serial_number_prop_array;
                        case BCMOLT_XGPON_NI_OPER_ID_SINGLE_REQUEST_STANDBY_PON_MONITORING:
                            *size = sizeof(xgpon_ni_single_request_standby_pon_monitoring_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_ni_single_request_standby_pon_monitoring_prop_array;
                        case BCMOLT_XGPON_NI_OPER_ID_SET_ONU_STATE:
                            *size = sizeof(xgpon_ni_set_onu_state_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_ni_set_onu_state_prop_array;
                        case BCMOLT_XGPON_NI_OPER_ID_RUN_SPECIAL_BW_MAP:
                            *size = sizeof(xgpon_ni_run_special_bw_map_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_ni_run_special_bw_map_prop_array;
                        case BCMOLT_XGPON_NI_OPER_ID_ROGUE_DETECTION_WINDOW:
                            *size = sizeof(xgpon_ni_rogue_detection_window_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_ni_rogue_detection_window_prop_array;
                        case BCMOLT_XGPON_NI_OPER_ID_TOD_REQUEST:
                            *size = sizeof(xgpon_ni_tod_request_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_ni_tod_request_prop_array;
                        case BCMOLT_XGPON_NI_OPER_ID_START_ONU_UPGRADE:
                            *size = sizeof(xgpon_ni_start_onu_upgrade_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_ni_start_onu_upgrade_prop_array;
                        case BCMOLT_XGPON_NI_OPER_ID_ADJUST_TX_WAVELENGTH:
                            *size = sizeof(xgpon_ni_adjust_tx_wavelength_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_ni_adjust_tx_wavelength_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_PROXY:
                    switch (subgroup)
                    {
                        case BCMOLT_XGPON_NI_PROXY_ID_CPU_PACKETS:
                            *size = sizeof(xgpon_ni_cpu_packets_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_ni_cpu_packets_prop_array;
                        case BCMOLT_XGPON_NI_PROXY_ID_BROADCAST_PLOAM_PACKET:
                            *size = sizeof(xgpon_ni_broadcast_ploam_packet_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_ni_broadcast_ploam_packet_prop_array;
                        default:
                            break;
                    }

                default:
                    break;
            }

        case BCMOLT_OBJ_ID_XGPON_ONU:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(xgpon_onu_key_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_onu_key_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(xgpon_onu_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_onu_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_STAT:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(xgpon_onu_stat_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_onu_stat_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_STAT_CFG:
                    switch (subgroup)
                    {
                        case 0:
                        case 1:
                        case 2:
                        case 3:
                        case 4:
                        case 5:
                        case 6:
                        case 7:
                        case 8:
                        case 9:
                        case 10:
                        case 11:
                        case 12:
                        case 13:
                        case 14:
                        case 15:
                        case 16:
                        case 17:
                        case 18:
                        case 19:
                            *size = sizeof(xgpon_onu_stat_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_onu_stat_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_AUTO:
                    switch (subgroup)
                    {
                        case BCMOLT_XGPON_ONU_AUTO_ID_ONU_ALARM:
                            *size = sizeof(xgpon_onu_onu_alarm_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_onu_onu_alarm_prop_array;
                        case BCMOLT_XGPON_ONU_AUTO_ID_DOWI:
                            *size = sizeof(xgpon_onu_dowi_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_onu_dowi_prop_array;
                        case BCMOLT_XGPON_ONU_AUTO_ID_SFI:
                            *size = sizeof(xgpon_onu_sfi_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_onu_sfi_prop_array;
                        case BCMOLT_XGPON_ONU_AUTO_ID_SDI:
                            *size = sizeof(xgpon_onu_sdi_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_onu_sdi_prop_array;
                        case BCMOLT_XGPON_ONU_AUTO_ID_DFI:
                            *size = sizeof(xgpon_onu_dfi_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_onu_dfi_prop_array;
                        case BCMOLT_XGPON_ONU_AUTO_ID_PQSI:
                            *size = sizeof(xgpon_onu_pqsi_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_onu_pqsi_prop_array;
                        case BCMOLT_XGPON_ONU_AUTO_ID_SUFI:
                            *size = sizeof(xgpon_onu_sufi_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_onu_sufi_prop_array;
                        case BCMOLT_XGPON_ONU_AUTO_ID_TIWI:
                            *size = sizeof(xgpon_onu_tiwi_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_onu_tiwi_prop_array;
                        case BCMOLT_XGPON_ONU_AUTO_ID_LOOCI:
                            *size = sizeof(xgpon_onu_looci_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_onu_looci_prop_array;
                        case BCMOLT_XGPON_ONU_AUTO_ID_RANGING_COMPLETED:
                            *size = sizeof(xgpon_onu_ranging_completed_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_onu_ranging_completed_prop_array;
                        case BCMOLT_XGPON_ONU_AUTO_ID_ONU_ACTIVATION_COMPLETED:
                            *size = sizeof(xgpon_onu_onu_activation_completed_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_onu_onu_activation_completed_prop_array;
                        case BCMOLT_XGPON_ONU_AUTO_ID_ONU_DEACTIVATION_COMPLETED:
                            *size = sizeof(xgpon_onu_onu_deactivation_completed_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_onu_onu_deactivation_completed_prop_array;
                        case BCMOLT_XGPON_ONU_AUTO_ID_ONU_ENABLE_COMPLETED:
                            *size = sizeof(xgpon_onu_onu_enable_completed_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_onu_onu_enable_completed_prop_array;
                        case BCMOLT_XGPON_ONU_AUTO_ID_ONU_DISABLE_COMPLETED:
                            *size = sizeof(xgpon_onu_onu_disable_completed_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_onu_onu_disable_completed_prop_array;
                        case BCMOLT_XGPON_ONU_AUTO_ID_RSSI_MEASUREMENT_COMPLETED:
                            *size = sizeof(xgpon_onu_rssi_measurement_completed_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_onu_rssi_measurement_completed_prop_array;
                        case BCMOLT_XGPON_ONU_AUTO_ID_INVALID_DBRU_REPORT:
                            *size = sizeof(xgpon_onu_invalid_dbru_report_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_onu_invalid_dbru_report_prop_array;
                        case BCMOLT_XGPON_ONU_AUTO_ID_KEY_EXCHANGE_COMPLETED:
                            *size = sizeof(xgpon_onu_key_exchange_completed_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_onu_key_exchange_completed_prop_array;
                        case BCMOLT_XGPON_ONU_AUTO_ID_KEY_EXCHANGE_KEY_REQUEST_TIMEOUT:
                            *size = sizeof(xgpon_onu_key_exchange_key_request_timeout_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_onu_key_exchange_key_request_timeout_prop_array;
                        case BCMOLT_XGPON_ONU_AUTO_ID_KEY_EXCHANGE_CYCLE_SKIPPED:
                            *size = sizeof(xgpon_onu_key_exchange_cycle_skipped_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_onu_key_exchange_cycle_skipped_prop_array;
                        case BCMOLT_XGPON_ONU_AUTO_ID_KEY_EXCHANGE_KEY_MISMATCH:
                            *size = sizeof(xgpon_onu_key_exchange_key_mismatch_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_onu_key_exchange_key_mismatch_prop_array;
                        case BCMOLT_XGPON_ONU_AUTO_ID_OPTICAL_REFLECTION:
                            *size = sizeof(xgpon_onu_optical_reflection_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_onu_optical_reflection_prop_array;
                        case BCMOLT_XGPON_ONU_AUTO_ID_DGI:
                            *size = sizeof(xgpon_onu_dgi_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_onu_dgi_prop_array;
                        case BCMOLT_XGPON_ONU_AUTO_ID_POWER_MANAGEMENT_STATE_CHANGE:
                            *size = sizeof(xgpon_onu_power_management_state_change_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_onu_power_management_state_change_prop_array;
                        case BCMOLT_XGPON_ONU_AUTO_ID_POSSIBLE_DRIFT:
                            *size = sizeof(xgpon_onu_possible_drift_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_onu_possible_drift_prop_array;
                        case BCMOLT_XGPON_ONU_AUTO_ID_REGISTRATION_ID:
                            *size = sizeof(xgpon_onu_registration_id_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_onu_registration_id_prop_array;
                        case BCMOLT_XGPON_ONU_AUTO_ID_POWER_LEVEL_REPORT:
                            *size = sizeof(xgpon_onu_power_level_report_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_onu_power_level_report_prop_array;
                        case BCMOLT_XGPON_ONU_AUTO_ID_POWER_CONSUMPTION_REPORT:
                            *size = sizeof(xgpon_onu_power_consumption_report_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_onu_power_consumption_report_prop_array;
                        case BCMOLT_XGPON_ONU_AUTO_ID_SECURE_MUTUAL_AUTHENTICATION_FAILURE:
                            *size = sizeof(xgpon_onu_secure_mutual_authentication_failure_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_onu_secure_mutual_authentication_failure_prop_array;
                        case BCMOLT_XGPON_ONU_AUTO_ID_ONU_TUNING_OUT_COMPLETED:
                            *size = sizeof(xgpon_onu_onu_tuning_out_completed_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_onu_onu_tuning_out_completed_prop_array;
                        case BCMOLT_XGPON_ONU_AUTO_ID_ONU_TUNING_IN_COMPLETED:
                            *size = sizeof(xgpon_onu_onu_tuning_in_completed_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_onu_onu_tuning_in_completed_prop_array;
                        case BCMOLT_XGPON_ONU_AUTO_ID_TUNING_RESPONSE:
                            *size = sizeof(xgpon_onu_tuning_response_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_onu_tuning_response_prop_array;
                        case BCMOLT_XGPON_ONU_AUTO_ID_STAT_ALARM_RAISED:
                            *size = sizeof(xgpon_onu_stat_alarm_raised_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_onu_stat_alarm_raised_prop_array;
                        case BCMOLT_XGPON_ONU_AUTO_ID_STAT_ALARM_CLEARED:
                            *size = sizeof(xgpon_onu_stat_alarm_cleared_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_onu_stat_alarm_cleared_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_AUTO_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(xgpon_onu_auto_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_onu_auto_cfg_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_OPER:
                    switch (subgroup)
                    {
                        case BCMOLT_XGPON_ONU_OPER_ID_SET_ONU_STATE:
                            *size = sizeof(xgpon_onu_set_onu_state_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_onu_set_onu_state_prop_array;
                        case BCMOLT_XGPON_ONU_OPER_ID_RSSI_MEASUREMENT:
                            *size = sizeof(xgpon_onu_rssi_measurement_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_onu_rssi_measurement_prop_array;
                        case BCMOLT_XGPON_ONU_OPER_ID_REQUEST_REGISTRATION:
                            *size = sizeof(xgpon_onu_request_registration_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_onu_request_registration_prop_array;
                        case BCMOLT_XGPON_ONU_OPER_ID_CHANGE_POWER_LEVELLING:
                            *size = sizeof(xgpon_onu_change_power_levelling_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_onu_change_power_levelling_prop_array;
                        case BCMOLT_XGPON_ONU_OPER_ID_GET_POWER_LEVEL:
                            *size = sizeof(xgpon_onu_get_power_level_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_onu_get_power_level_prop_array;
                        case BCMOLT_XGPON_ONU_OPER_ID_GET_POWER_CONSUMPTION:
                            *size = sizeof(xgpon_onu_get_power_consumption_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_onu_get_power_consumption_prop_array;
                        case BCMOLT_XGPON_ONU_OPER_ID_ADJUST_TX_WAVELENGTH:
                            *size = sizeof(xgpon_onu_adjust_tx_wavelength_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_onu_adjust_tx_wavelength_prop_array;
                        case BCMOLT_XGPON_ONU_OPER_ID_SECURE_MUTUAL_AUTHENTICATION:
                            *size = sizeof(xgpon_onu_secure_mutual_authentication_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_onu_secure_mutual_authentication_prop_array;
                        case BCMOLT_XGPON_ONU_OPER_ID_ONU_TUNING_IN:
                            *size = sizeof(xgpon_onu_onu_tuning_in_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_onu_onu_tuning_in_prop_array;
                        case BCMOLT_XGPON_ONU_OPER_ID_ONU_TUNING_OUT:
                            *size = sizeof(xgpon_onu_onu_tuning_out_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_onu_onu_tuning_out_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_PROXY:
                    switch (subgroup)
                    {
                        case BCMOLT_XGPON_ONU_PROXY_ID_PLOAM_PACKET:
                            *size = sizeof(xgpon_onu_ploam_packet_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_onu_ploam_packet_prop_array;
                        case BCMOLT_XGPON_ONU_PROXY_ID_CPU_PACKETS:
                            *size = sizeof(xgpon_onu_cpu_packets_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_onu_cpu_packets_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_PROXY_RX:
                    switch (subgroup)
                    {
                        case BCMOLT_XGPON_ONU_PROXY_RX_ID_CPU_PACKET:
                            *size = sizeof(xgpon_onu_cpu_packet_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_onu_cpu_packet_prop_array;
                        case BCMOLT_XGPON_ONU_PROXY_RX_ID_OMCI_PACKET:
                            *size = sizeof(xgpon_onu_omci_packet_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_onu_omci_packet_prop_array;
                        default:
                            break;
                    }

                default:
                    break;
            }

        case BCMOLT_OBJ_ID_XGPON_TRX:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(xgpon_trx_key_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_trx_key_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(xgpon_trx_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xgpon_trx_cfg_prop_array;
                        default:
                            break;
                    }

                default:
                    break;
            }

        case BCMOLT_OBJ_ID_XPON_SERDES:
            switch (group)
            {
                case BCMOLT_MGT_GROUP_KEY:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(xpon_serdes_key_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xpon_serdes_key_prop_array;
                        default:
                            break;
                    }

                case BCMOLT_MGT_GROUP_CFG:
                    switch (subgroup)
                    {
                        case 0:
                            *size = sizeof(xpon_serdes_cfg_prop_array) / sizeof(bcmcli_prop_descr *);
                            return xpon_serdes_cfg_prop_array;
                        default:
                            break;
                    }

                default:
                    break;
            }

        default:
            break;
    }

    return NULL;
}

bcmos_errno api_cli_object_name(bcmolt_obj_id obj, const char **name, const char **descr)
{
    if (obj >= BCMOLT_OBJ_ID__NUM_OF)
    {
        return BCM_ERR_RANGE;
    }

    if (object_name[obj] == NULL)
    {
        return BCM_ERR_NOENT;
    }

    if (name != NULL)
    {
        *name = object_name[obj];
    }

    if (descr != NULL)
    {
        *descr = object_descr[obj];
    }

    return BCM_ERR_OK;
}

bcmos_errno api_cli_object_property(bcmolt_obj_id obj, bcmolt_mgt_group group, uint16_t subgroup, uint16_t prop, const bcmcli_prop_descr **descr)
{
    bcmcli_prop_descr **prop_array = NULL;
    uint32_t prop_array_size = 0;
    if (descr == NULL)
    {
        return BCM_ERR_PARM;
    }

    prop_array = obj_get_prop_array(obj, group, subgroup, &prop_array_size);
    if ((prop_array == NULL) || (prop >= prop_array_size))
    {
        return BCM_ERR_RANGE;
    }

    if (prop_array[prop] == NULL)
    {
        return BCM_ERR_NOENT;
    }

    *descr = prop_array[prop];
    return BCM_ERR_OK;
}
