BAL and Maple Release 2.2

Signed-off-by: Shad Ansari <developer@Carbon.local>
diff --git a/bcm68620_release/release/host_reference/api_cli/Makefile b/bcm68620_release/release/host_reference/api_cli/Makefile
new file mode 100644
index 0000000..4a08628
--- /dev/null
+++ b/bcm68620_release/release/host_reference/api_cli/Makefile
@@ -0,0 +1,9 @@
+# Maple API CLI
+#
+ifeq ($(ENABLE_CLI), y)
+    MOD_NAME = api_cli
+    MOD_TYPE = lib
+    MOD_DEPS = common_api model device_selector
+    
+    srcs = bcm_api_cli.c bcm_api_cli_dump.c bcm_api_cli_handlers.c bcm_api_cli_helpers.c 
+endif
diff --git a/bcm68620_release/release/host_reference/api_cli/bcm_api_cli.c b/bcm68620_release/release/host_reference/api_cli/bcm_api_cli.c
new file mode 100644
index 0000000..2e2666f
--- /dev/null
+++ b/bcm68620_release/release/host_reference/api_cli/bcm_api_cli.c
@@ -0,0 +1,1211 @@
+/*
+<:copyright-BRCM:2016:DUAL/GPL:standard
+
+   Broadcom Proprietary and Confidential.(c) 2016 Broadcom
+   All Rights Reserved
+
+Unless you and Broadcom execute a separate written software license
+agreement governing use of this software, this software is licensed
+to you under the terms of the GNU General Public License version 2
+(the "GPL"), available at http://www.broadcom.com/licenses/GPLv2.php,
+with the following added to such license:
+
+   As a special exception, the copyright holders of this software give
+   you permission to link this software with independent modules, and
+   to copy and distribute the resulting executable under terms of your
+   choice, provided that you also meet, for each linked independent
+   module, the terms and conditions of the license of that module.
+   An independent module is a module which is not derived from this
+   software.  The special exception does not apply to any modifications
+   of the software.
+
+Not withstanding the above, under no circumstances may you combine
+this software in any way with any other Broadcom software provided
+under a license other than the GPL, without Broadcom's express prior
+written consent.
+
+:>
+ */
+
+#include <bcmos_system.h>
+#include <bcmcli.h>
+#include <bcmolt_api.h>
+#include <bcmolt_model_types.h>
+#include <bcmos_types.h>
+
+#include "bcm_api_cli.h"
+#include "bcm_api_cli_helpers.h"
+#include "bcm_api_cli_handlers.h"
+#ifdef BCM_SUBSYSTEM_HOST
+#include <bcmolt_dev_selector.h>
+#endif
+
+#define APICLI_CAST_DISCARD_CONST(p, type)       (type)((long)(p))
+
+/* bool enum table */
+static bcmcli_enum_val bool_enum[] =
+{
+    { .name = "yes", .val = 1 },
+    { .name = "no", .val = 0 },
+    BCMCLI_ENUM_LAST
+};
+
+static bcmcli_type_descr bool_type_descr = {
+    .name = "bool",
+    .descr = "Boolean",
+    .base_type = BCMOLT_BASE_TYPE_ID_ENUM,
+    .size = sizeof(bcmos_bool),
+    .x = {.e = bool_enum}
+};
+
+/* parameter data */
+typedef struct
+{
+    const bcmcli_prop_descr *prop;      /* property */
+    const bcmcli_field_descr *field;    /* field or NULL */
+    const bcmcli_field_descr *array_fd; /* array field descriptor or NULL */
+    uint16_t offset;                    /* offset from the beginning of the property */
+    uint16_t array_fd_offset;           /* offset of array_fd from the beginning of the property */
+    bcmolt_mgt_group group;             /* management group */
+} apicli_parm_data;
+
+typedef enum
+{
+    API_CLI_FLAGS_NONE = 0,
+    API_CLI_FLAGS_IGNORE_FIELDS = 1 << 0,
+    API_CLI_FLAGS_MULTI = 1 << 1
+} api_cli_flags;
+
+/* Operation: set, get, modify */
+typedef enum
+{
+    API_CLI_OPER_SET,
+    API_CLI_OPER_GET,
+    API_CLI_OPER_MODIFY,
+} api_cli_oper;
+
+/* Current session */
+static bcmcli_session *current_session;
+
+/* Current system mode */
+static bcmolt_system_mode current_system_mode;
+
+/* Parent directory */
+static bcmcli_entry *api_parent_dir;
+
+/*
+ * helpers
+ */
+
+/* calculate number of fields in type */
+static uint32_t _api_cli_get_num_fields_in_type(const bcmcli_type_descr *td)
+{
+    uint16_t f;
+    uint32_t nf = 0;
+
+
+    switch (td->base_type)
+    {
+        case BCMOLT_BASE_TYPE_ID_STRUCT:
+        {
+            if (!td->x.s.num_fields)
+                return 0;
+            BUG_ON(!td->x.s.fields);
+            for (f = 0; f < td->x.s.num_fields; f++)
+            {
+                nf +=  _api_cli_get_num_fields_in_type(td->x.s.fields[f].type);
+            }
+            break;
+        }
+
+        case BCMOLT_BASE_TYPE_ID_UNION:
+        {
+            /* Union. Count only common fields */
+            nf = td->x.u.num_common_fields;
+            break;
+        }
+
+        case BCMOLT_BASE_TYPE_ID_ARR_FIXED:
+        {
+            nf = _api_cli_get_num_fields_in_type(td->x.arr_fixed.elem_type);
+            break;
+        }
+
+        case BCMOLT_BASE_TYPE_ID_ARR_DYN:
+        {
+            nf = _api_cli_get_num_fields_in_type(td->x.arr_dyn.elem_type);
+            break;
+        }
+
+        default:
+        {
+            nf = 1;
+            break;
+        }
+    }
+
+    return nf;
+}
+
+/* calculate number of property fields for given object+group+subgroup+access. simple property=single field */
+static bcmos_errno _api_cli_get_num_fields_in_group(bcmolt_obj_id o, bcmolt_mgt_group group, uint16_t subgroup,
+    bcmolt_prop_access_id access_level, uint32_t *nfields)
+{
+    uint32_t nf = 0;
+    int i;
+    bcmos_errno rc = BCM_ERR_OK;
+
+    for (i = 0; rc != BCM_ERR_RANGE; i++)
+    {
+        const bcmcli_prop_descr *pd;
+        rc = api_cli_object_property(o, group, subgroup, i, &pd);
+        if (rc == BCM_ERR_OK && (pd->access & access_level))
+        {
+            /* Calculate number of fields if write access. Count only properties for read access */
+            if ((access_level & BCMOLT_PROP_ACCESS_ID_W) != 0)
+            {
+                BUG_ON(!pd->type);
+                nf += _api_cli_get_num_fields_in_type(pd->type);
+            }
+            else
+            {
+                ++nf;
+            }
+        }
+    }
+    *nfields = nf;
+
+    return BCM_ERR_OK;
+}
+
+/*
+ * Command handlers
+ */
+
+static bcmos_errno _apicli_objects_handler(bcmcli_session *session, const bcmcli_cmd_parm parm[], uint16_t nparms)
+{
+    int rc;
+    bcmolt_obj_id o;
+    const char *name, *descr;
+
+    bcmcli_print(session, "System Object Types:\n");
+    bcmcli_print(session, "=======================================\n");
+    bcmcli_print(session, "Id   Name                   Description\n");
+    bcmcli_print(session, "=======================================\n");
+    for (o = 0; o < BCMOLT_OBJ_ID__NUM_OF; o++)
+    {
+
+        if (current_system_mode < BCMOLT_SYSTEM_MODE__NUM_OF && !bcmolt_object_is_supported(current_system_mode, o))
+            continue;
+
+        rc = api_cli_object_name(o, &name, &descr);
+        if (!rc)
+            bcmcli_print(session, "%.4d %-22s %s\n", o, name, descr);
+    }
+
+    return 0;
+}
+
+static bcmos_errno _apicli_set_handler(bcmcli_session *session, const bcmcli_cmd_parm parm[], uint16_t nparms)
+{
+    return bcmolt_cli_api_call(current_device, BCMOLT_MGT_GROUP_CFG, BCMOLT_MSG_TYPE_SET, session);
+}
+
+static bcmos_errno _apicli_get_handler(bcmcli_session *session, const bcmcli_cmd_parm parm[], uint16_t nparms)
+{
+    return bcmolt_cli_api_call(current_device, BCMOLT_MGT_GROUP_CFG, BCMOLT_MSG_TYPE_GET, session);
+}
+
+static bcmos_errno _apicli_clear_handler(bcmcli_session *session, const bcmcli_cmd_parm parm[], uint16_t nparms)
+{
+    return bcmolt_cli_api_call(current_device, BCMOLT_MGT_GROUP_CFG, BCMOLT_MSG_TYPE_CLEAR, session);
+}
+
+static bcmos_errno _apicli_stat_handler(bcmcli_session *session, const bcmcli_cmd_parm parm[], uint16_t nparms)
+{
+    return bcmolt_cli_api_call(current_device, BCMOLT_MGT_GROUP_STAT, BCMOLT_MSG_TYPE_GET, session);
+}
+
+static bcmos_errno _apicli_oper_handler(bcmcli_session *session, const bcmcli_cmd_parm parm[], uint16_t nparms)
+{
+    return bcmolt_cli_api_call(current_device, BCMOLT_MGT_GROUP_OPER, BCMOLT_MSG_TYPE_SET, session);
+}
+
+static bcmos_errno _apicli_send_handler(bcmcli_session *session, const bcmcli_cmd_parm parm[], uint16_t nparms)
+{
+    return bcmolt_cli_api_call(current_device, BCMOLT_MGT_GROUP_PROXY, BCMOLT_MSG_TYPE_SET, session);
+}
+
+static bcmos_errno _apicli_stat_cfg_set_handler(bcmcli_session *session, const bcmcli_cmd_parm parm[], uint16_t nparms)
+{
+    return bcmolt_cli_api_call(current_device, BCMOLT_MGT_GROUP_STAT_CFG, BCMOLT_MSG_TYPE_SET, session);
+}
+
+static bcmos_errno _apicli_stat_cfg_get_handler(bcmcli_session *session, const bcmcli_cmd_parm parm[], uint16_t nparms)
+{
+    return bcmolt_cli_api_call(current_device, BCMOLT_MGT_GROUP_STAT_CFG, BCMOLT_MSG_TYPE_GET, session);
+}
+
+static bcmos_errno _apicli_auto_cfg_set_handler(bcmcli_session *session, const bcmcli_cmd_parm parm[], uint16_t nparms)
+{
+    return bcmolt_cli_api_call(current_device, BCMOLT_MGT_GROUP_AUTO_CFG, BCMOLT_MSG_TYPE_SET, session);
+}
+
+static bcmos_errno _apicli_auto_cfg_get_handler(bcmcli_session *session, const bcmcli_cmd_parm parm[], uint16_t nparms)
+{
+    return bcmolt_cli_api_call(current_device, BCMOLT_MGT_GROUP_AUTO_CFG, BCMOLT_MSG_TYPE_GET, session);
+}
+
+static bcmos_errno _apicli_auto_cfg_get_multi_handler(
+    bcmcli_session *session,
+    const bcmcli_cmd_parm parm[],
+    uint16_t nparms)
+{
+    return bcmolt_cli_api_call(current_device, BCMOLT_MGT_GROUP_CFG, BCMOLT_MSG_TYPE_GET_MULTI, session);
+}
+
+/*
+ * Init-time helpers
+ */
+
+/* map to CLI type */
+static bcmos_errno _api_cli_map_type(const bcmcli_type_descr *td, const bcmcli_type_descr *array_td, bcmcli_cmd_parm *cmd_parm)
+{
+    apicli_parm_data *parm_data = cmd_parm->user_data;
+    bcmos_errno rc = BCM_ERR_OK;
+
+    /* Map type */
+    switch(td->base_type)
+    {
+    case BCMOLT_BASE_TYPE_ID_SNUM:
+        cmd_parm->type = BCMCLI_PARM_NUMBER;
+        break;
+    case BCMOLT_BASE_TYPE_ID_UNUM:
+        cmd_parm->type = BCMCLI_PARM_UNUMBER;
+        break;
+    case BCMOLT_BASE_TYPE_ID_UNUM_HEX:
+        cmd_parm->type = BCMCLI_PARM_HEX;
+        break;
+    case BCMOLT_BASE_TYPE_ID_BOOL:
+        cmd_parm->type = BCMCLI_PARM_ENUM;
+        cmd_parm->enum_table = bool_enum;
+        break;
+    case BCMOLT_BASE_TYPE_ID_FLOAT:
+        cmd_parm->type = td->size == sizeof(double) ? BCMCLI_PARM_DOUBLE : BCMCLI_PARM_FLOAT;
+        break;
+    case BCMOLT_BASE_TYPE_ID_STRING:
+        cmd_parm->type = BCMCLI_PARM_STRING;
+        break;
+    case BCMOLT_BASE_TYPE_ID_IPV4:
+        cmd_parm->type = BCMCLI_PARM_IP;
+        break;
+    case BCMOLT_BASE_TYPE_ID_MAC:
+        cmd_parm->type = BCMCLI_PARM_MAC;
+        break;
+    case BCMOLT_BASE_TYPE_ID_ENUM:
+        cmd_parm->type = BCMCLI_PARM_ENUM;
+        cmd_parm->enum_table = td->x.e;
+        break;
+    case BCMOLT_BASE_TYPE_ID_ENUM_MASK:
+        cmd_parm->type = BCMCLI_PARM_ENUM_MASK;
+        cmd_parm->enum_table = td->x.e;
+        break;
+    default:
+        bcmcli_print(current_session, "*** can't map type %s (%d)\n", td->name, (int)td->base_type);
+        rc = BCM_ERR_NOT_SUPPORTED;
+        break;
+    }
+
+    /* Map uint8_t array to buffer if it is independent (not structure field) */
+    if (array_td &&
+        td->size == 1 &&
+        (td->base_type == BCMOLT_BASE_TYPE_ID_UNUM || td->base_type == BCMOLT_BASE_TYPE_ID_UNUM_HEX) &&
+        (parm_data->array_fd == parm_data->field || !parm_data->field))
+    {
+        cmd_parm->type = BCMCLI_PARM_BUFFER;
+    }
+
+    return rc;
+}
+
+/* allocate memory for name and description and copy to to parm */
+static bcmos_errno _api_cli_copy_parm_name(bcmcli_cmd_parm *parm, const char *name, const char *descr)
+{
+    parm->name = bcmos_alloc(strlen(name) + 1);
+    parm->description = bcmos_alloc(strlen(descr) + 1);
+    if ((parm->name == NULL) || (parm->description == NULL))
+    {
+        /* Successful allocation if any will be released by common cleanup
+         * along with the rest of dynamic parameter fields */
+        return BCM_ERR_NOMEM;
+    }
+    strcpy(APICLI_CAST_DISCARD_CONST(parm->name, void *), name);
+    strcpy(APICLI_CAST_DISCARD_CONST(parm->description, void *), descr);
+    return BCM_ERR_OK;
+}
+
+/* populate single parameter */
+static int _api_cli_populate_parm1(const bcmcli_prop_descr *pd, const bcmcli_field_descr *fd, const bcmcli_type_descr *td,
+    const bcmcli_field_descr *array_fd, uint32_t offset, uint32_t array_fd_offset,
+    bcmcli_cmd_parm *cmd_parm, uint32_t cmd_flags, char *name, char *help)
+{
+    apicli_parm_data *parm_data = cmd_parm->user_data;
+    int rc;
+
+    parm_data->prop = pd;
+    parm_data->field = fd;
+    parm_data->offset = offset;
+    parm_data->array_fd = array_fd;
+    parm_data->array_fd_offset = array_fd_offset;
+
+    rc = _api_cli_copy_parm_name(cmd_parm, name, help);
+    if (rc)
+    {
+        return rc;
+    }
+    cmd_parm->flags = cmd_flags;
+    if (td->min_val != td->max_val || td->min_val)
+    {
+        cmd_parm->flags |= BCMCLI_PARM_FLAG_RANGE;
+        cmd_parm->low_val = td->min_val;
+        cmd_parm->hi_val = td->max_val;
+    }
+    rc = _api_cli_map_type(td, array_fd ? array_fd->type : NULL, cmd_parm);
+    if (rc < 0)
+    {
+        return rc;
+    }
+
+    /* Arrays require more work.
+     * - Calculate size. Known for fixed arrays, hard-coded max for dynamic
+     * - Allocate either buffer or array of values based on CLI parameter type
+     * - Calculate offset from the beginning of array entry
+     */
+    if (array_fd)
+    {
+        uint32_t array_size;
+
+        if (array_fd->type->base_type == BCMOLT_BASE_TYPE_ID_ARR_FIXED)
+        {
+            array_size = array_fd->type->x.arr_fixed.size;
+        }
+        else
+        {
+            array_size = array_fd->type->x.arr_dyn.max_size;
+        }
+        if (!array_size)
+        {
+            bcmcli_print(current_session, "*** Error in %s array descriptor. Size is not set.\n", array_fd->name);
+            return BCM_ERR_INTERNAL;
+        }
+        if (cmd_parm->type == BCMCLI_PARM_BUFFER)
+        {
+            rc = bcmolt_buf_alloc(&cmd_parm->value.buffer, array_size, BCMOLT_BUF_ENDIAN_FIXED);
+            if (rc)
+            {
+                return rc;
+            }
+        }
+        else
+        {
+            cmd_parm->values = bcmos_calloc(sizeof(bcmcli_parm_value) * array_size);
+            if (!cmd_parm->values)
+            {
+                return BCM_ERR_NOMEM;
+            }
+            cmd_parm->max_array_size = array_size;
+        }
+    }
+
+    return 1;
+}
+
+
+/* populate name buf and help buf */
+static void _api_cli_populate_name_help(const bcmcli_field_descr *fld, char *name_buf0, char *help_buf0,
+    char *name_buf, char *help_buf)
+{
+    name_buf[0] = 0;
+    help_buf[0] = 0;
+    bcmcli_strncpy(name_buf, name_buf0, APICLI_MAX_PARM_NAME_LENGTH);
+    if (strlen(name_buf))
+        bcmcli_strncat(name_buf, ".", APICLI_MAX_PARM_NAME_LENGTH);
+    bcmcli_strncat(name_buf, fld->cli_name ? fld->cli_name : fld->name, APICLI_MAX_PARM_NAME_LENGTH);
+    bcmcli_strncpy(help_buf, help_buf0, APICLI_MAX_PARM_HELP_LENGTH);
+    bcmcli_strncat(help_buf, " - ", APICLI_MAX_PARM_HELP_LENGTH);
+    bcmcli_strncat(help_buf, fld->descr ? fld->descr : fld->name, APICLI_MAX_PARM_HELP_LENGTH);
+}
+
+/* Allocate CLI parameter array. Set up parm->data */
+static bcmcli_cmd_parm *_api_cli_parm_alloc(int nparms)
+{
+    uint32_t size;
+    bcmcli_cmd_parm *parms;
+    apicli_parm_data *parm_data;
+    int i;
+
+    /* Allocate parameter table and populate it */
+    size = (sizeof(bcmcli_cmd_parm) + sizeof(apicli_parm_data)) * (nparms + 1);
+    parms = bcmos_calloc(size);
+    if (!parms)
+        return NULL;
+
+    /* Associate parameter_data structs with parameters */
+    parm_data = (apicli_parm_data *)(parms + nparms + 1);
+    for (i = 0; i < nparms; i++)
+    {
+        parms[i].user_data = &parm_data[i];
+    }
+    return parms;
+}
+
+/* clone enum table */
+static bcmcli_enum_val *_api_cli_clone_enum_table(bcmcli_cmd_parm *parm)
+{
+    bcmcli_enum_val *org_table = parm->enum_table;
+    bcmcli_enum_val *val = org_table;
+    bcmcli_enum_val *clone_table = org_table;
+    int i, n;
+
+    BUG_ON(parm->type != BCMCLI_PARM_ENUM);
+    while (val && val->name)
+    {
+        ++val;
+    }
+    n = val - org_table;
+
+    clone_table = bcmos_calloc(sizeof(bcmcli_enum_val) * (n + 1));
+    if (!clone_table)
+    {
+        return NULL;
+    }
+    for (i = 0; i < n; i++)
+    {
+        clone_table[i].name = org_table[i].name;
+        clone_table[i].val = org_table[i].val;
+    }
+    return clone_table;
+}
+
+
+/* populate CLI parameter(s) from a single property. Can be multiple parameters
+ * if property contains multiple fields.
+ * Returns number of parameters populated >= 0 or error < 0
+ */
+static int _api_cli_populate_parms_from_property(const bcmcli_prop_descr *pd, const bcmcli_field_descr *fd,
+    const bcmcli_field_descr *array_fd, uint32_t offset, uint32_t array_fd_offset, bcmcli_cmd_parm *parms,
+    bcmolt_prop_access_id access_level, uint32_t cmd_flags, char *name_buf0, char *help_buf0)
+{
+    const bcmcli_type_descr *td = fd ? fd->type : pd->type;
+    uint32_t nf = 0;
+    char name_buf[APICLI_MAX_PARM_NAME_LENGTH];
+    char help_buf[APICLI_MAX_PARM_HELP_LENGTH];
+    int rc = 0;
+
+    /* At top level take name from property */
+    if (td == pd->type)
+    {
+        /* In case there's a global prefix */
+        char *top_name_buf = name_buf0;
+        uint32_t top_name_buf_len = APICLI_MAX_PARM_NAME_LENGTH;
+        uint32_t prefix_len = strlen(name_buf0);
+        if (prefix_len > 0)
+        {
+            top_name_buf += prefix_len;
+            top_name_buf_len -= prefix_len;
+        }
+
+        bcmcli_strncpy(top_name_buf, pd->cli_name ? pd->cli_name : pd->name, top_name_buf_len);
+        bcmcli_strncpy(help_buf0, pd->descr ? pd->descr : pd->name, APICLI_MAX_PARM_HELP_LENGTH);
+    }
+
+    /* For read access we only mark whether read property or not. It is not field-by-field operation */
+    if (access_level == BCMOLT_PROP_ACCESS_ID_R)
+    {
+        td = &bool_type_descr;
+    }
+
+    /* In case of arrays we should
+     * - check that there is no array in array. It is not supported
+     * - store array type descriptor FFU and replace the "current" type descriptor with element type
+     * - reset offset because for array fields it should be calculated from array base rather than property
+     */
+    if (td->base_type == BCMOLT_BASE_TYPE_ID_ARR_DYN || td->base_type == BCMOLT_BASE_TYPE_ID_ARR_FIXED)
+    {
+        if (array_fd)
+        {
+            bcmcli_print(current_session, "*** %s in %s: arrays-in-arrays are not supported\n", pd->name, array_fd->name);
+            return BCM_ERR_NOT_SUPPORTED;
+        }
+        /* store array type and fetch element type */
+        array_fd = fd ? fd : (const bcmcli_field_descr *)pd;
+        if (td->base_type == BCMOLT_BASE_TYPE_ID_ARR_DYN)
+        {
+            td = td->x.arr_dyn.elem_type;
+        }
+        else
+        {
+            td = td->x.arr_fixed.elem_type;
+        }
+        array_fd_offset = offset;
+        offset = 0;
+    }
+
+    if (td->base_type == BCMOLT_BASE_TYPE_ID_STRUCT)
+    {
+        uint16_t f;
+        if (!td->x.s.num_fields)
+            return 0;
+        BUG_ON(!td->x.s.fields);
+        for (f = 0; f < td->x.s.num_fields; f++)
+        {
+            const bcmcli_field_descr *fld = &td->x.s.fields[f];
+            _api_cli_populate_name_help(fld, name_buf0, help_buf0, name_buf, help_buf);
+            rc = _api_cli_populate_parms_from_property(pd, fld, array_fd, offset+fld->offset,
+                array_fd_offset, &parms[nf], access_level, cmd_flags, name_buf, help_buf);
+            if (rc > 0)
+                nf +=  rc;
+        }
+    }
+    else if (td->base_type == BCMOLT_BASE_TYPE_ID_UNION)
+    {
+        /* Union */
+        uint16_t f;
+        const bcmcli_field_descr *fld;
+        bcmcli_cmd_parm *sel_parm;
+        apicli_parm_data *sel_data;
+        bcmcli_enum_val *e;
+
+        if (!td->x.u.num_common_fields)
+            return 0;
+        BUG_ON(!td->x.u.common_fields);
+
+        /* Populate parameters preceding the union selector */
+        for (f = 0; f < td->x.u.classifier_idx; f++)
+        {
+            fld = &td->x.u.common_fields[f];
+            _api_cli_populate_name_help(fld, name_buf0, help_buf0, name_buf, help_buf);
+            rc =  _api_cli_populate_parms_from_property(pd, fld, array_fd,
+                offset+fld->offset, array_fd_offset, &parms[nf], access_level, cmd_flags, name_buf, help_buf);
+            if (rc > 0)
+                nf += rc;
+        }
+
+        /* Now populate parameter for selector */
+        sel_parm = &parms[nf];
+        fld = &td->x.u.common_fields[f];
+        _api_cli_populate_name_help(fld, name_buf0, help_buf0, name_buf, help_buf);
+        rc = _api_cli_populate_parms_from_property(pd, fld, array_fd,
+            offset+fld->offset, array_fd_offset, sel_parm, access_level, cmd_flags, name_buf, help_buf);
+        if (rc > 0)
+            nf += rc;
+        /* Clone enum table in order to allow modifying it */
+        if (rc >= 1)
+        {
+            sel_parm->enum_table = _api_cli_clone_enum_table(sel_parm);
+            if (!sel_parm->enum_table)
+            {
+                rc = BCM_ERR_NOMEM;
+            }
+        }
+
+        /* Now set-up selector */
+        sel_parm->flags |= BCMCLI_PARM_FLAG_SELECTOR;
+        sel_data = sel_parm->user_data;
+        e = sel_parm->enum_table;
+        while (e && e->name && rc >= 0)
+        {
+            fld = &td->x.u.union_fields[e - sel_parm->enum_table];
+            if (fld->type)
+            {
+                int np = _api_cli_get_num_fields_in_type(fld->type);
+                int i;
+
+                e->parms = _api_cli_parm_alloc(np);
+                if (!e->parms)
+                {
+                    rc = BCM_ERR_NOMEM;
+                    break;
+                }
+                for (i = 0; i < np; i++)
+                {
+                    apicli_parm_data *data = e->parms[i].user_data;
+                    data->group = sel_data->group;
+                }
+                /* Collapse substructure name */
+                if (fld->type->base_type == BCMOLT_BASE_TYPE_ID_STRUCT ||
+                    fld->type->base_type == BCMOLT_BASE_TYPE_ID_UNION)
+                {
+                    bcmcli_strncpy(name_buf, name_buf0, sizeof(name_buf));
+                    bcmcli_strncpy(help_buf, help_buf0, sizeof(help_buf));
+                }
+                else
+                {
+                    _api_cli_populate_name_help(fld, name_buf0, help_buf0, name_buf, help_buf);
+                }
+                rc = _api_cli_populate_parms_from_property(pd, fld, array_fd,
+                    offset+fld->offset, array_fd_offset, e->parms, access_level, cmd_flags, name_buf, help_buf);
+            }
+            ++e;
+        }
+
+        /* Finally populate parameters following the selector parameter */
+        for (f = td->x.u.classifier_idx + 1; f < td->x.u.num_common_fields && rc >= 0; f++)
+        {
+            fld = &td->x.u.common_fields[f];
+            _api_cli_populate_name_help(fld, name_buf0, help_buf0, name_buf, help_buf);
+            rc = _api_cli_populate_parms_from_property(pd, fld, array_fd,
+                offset+fld->offset, array_fd_offset, &parms[nf], access_level, cmd_flags, name_buf, help_buf);
+            if (rc > 0)
+                nf += rc;
+        }
+    }
+    else
+    {
+        /* Finally! Simple type that maps to a single CLI parameter */
+        nf = _api_cli_populate_parm1(pd, fd, td, array_fd, offset, array_fd_offset,
+            &parms[0], cmd_flags, name_buf0, help_buf0);
+    }
+    return (rc >= 0) ? nf : rc;
+}
+
+/* populate CLI parameter table */
+static int _api_cli_populate_parms(
+    bcmolt_obj_id o,
+    bcmolt_mgt_group group,
+    uint16_t subgroup,
+    bcmolt_prop_access_id access_level,
+    bcmcli_cmd_parm *parms,
+    uint32_t cmd_flags,
+    const char *prefix)
+{
+    int nf = 0;
+    int i;
+    bcmos_errno rc = BCM_ERR_OK;
+
+    for (i = 0; rc != BCM_ERR_RANGE; i++)
+    {
+        const bcmcli_prop_descr *pd;
+        char name_buf[APICLI_MAX_PARM_NAME_LENGTH] = "";
+        char help_buf[APICLI_MAX_PARM_HELP_LENGTH] = "";
+
+        strncpy(name_buf, prefix, APICLI_MAX_PARM_NAME_LENGTH-1);
+        name_buf[APICLI_MAX_PARM_NAME_LENGTH-1] = 0;
+
+        rc = api_cli_object_property(o, group, subgroup, i, &pd);
+        if (rc == BCM_ERR_OK && (pd->access & access_level))
+        {
+            rc = _api_cli_populate_parms_from_property(pd, NULL, NULL, 0, 0, &parms[nf],
+                access_level, cmd_flags, name_buf, help_buf);
+            if (rc > 0)
+                nf += rc;
+        }
+    }
+    return nf;
+}
+
+
+/* compact selector table. squeeze out values that don't have parameter table attached */
+static void _api_cli_compact_selector(bcmcli_enum_val *selector, int size)
+{
+    int i, j;
+
+    for (i = 0; i < size; i++)
+    {
+        if (!selector[i].parms)
+        {
+            for ( j = i + 1; j < size && !selector[j].parms; j ++)
+                ;
+            if (j < size)
+            {
+                memcpy(&selector[i], &selector[j], sizeof(bcmcli_enum_val));
+                memset(&selector[j], 0, sizeof(bcmcli_enum_val));
+            }
+            else
+            {
+                memset(&selector[i], 0, sizeof(bcmcli_enum_val));
+            }
+        }
+    }
+}
+
+/* Free CLI parameters. both name and description are allocated dynamically */
+static void _api_cli_free_parms(bcmcli_cmd_parm *parms)
+{
+    bcmcli_cmd_parm *p = parms;
+
+    while (p->name)
+    {
+        if ((p->flags & BCMCLI_PARM_FLAG_SELECTOR))
+        {
+            /* Remove selector table */
+            bcmcli_enum_val *sel = p->enum_table;
+            if (sel)
+            {
+                bcmcli_enum_val *e = sel;
+                while(e->name)
+                {
+                    if (e->parms)
+                    {
+                        _api_cli_free_parms(e->parms);
+                    }
+                    ++e;
+                }
+                bcmos_free(sel);
+            }
+        }
+        if (p->description)
+            bcmos_free(APICLI_CAST_DISCARD_CONST(p->description, void *));
+        if (p->name)
+            bcmos_free(APICLI_CAST_DISCARD_CONST(p->name, void *));
+        if (p->max_array_size && p->values)
+            bcmos_free(p->values);
+        if (p->value.buffer.start)
+            bcmolt_buf_free(&p->value.buffer);
+
+        ++p;
+    }
+    bcmos_free(parms);
+}
+
+static uint8_t _apicli_get_num_cmd_parms(bcmolt_mgt_group group, api_cli_flags flags)
+{
+    if (group == BCMOLT_MGT_GROUP_STAT)
+        return 2; /* object + stat ID */
+    else if (group == BCMOLT_MGT_GROUP_CFG && (flags & API_CLI_FLAGS_MULTI) != API_CLI_FLAGS_NONE)
+        return 3; /* object + max msgs + invert flag */
+    else
+        return 1; /* object */
+}
+
+/* Read generated info and add CLI command */
+static bcmos_errno _api_cli_add(bcmcli_entry *dir, const char *cmd_name, const char *cmd_descr,
+    bcmolt_mgt_group group, bcmolt_prop_access_id access_level, bcmcli_cmd_cb cmd_handler, api_cli_flags flags)
+{
+    bcmcli_cmd_extra_parm cmd_extras = { .free_parms = _api_cli_free_parms };
+    bcmcli_cmd_parm *cmd_parms;
+    bcmcli_enum_val *obj_selector;
+    bcmolt_obj_id o;
+    bcmos_errno rc = BCM_ERR_OK;
+    uint32_t cmd_flags = 0;
+    uint8_t num_cmd_parms = _apicli_get_num_cmd_parms(group, flags);
+    int n_obj;
+    int i;
+
+    /* Command flags: parameters in the following groups are optional */
+    if (group == BCMOLT_MGT_GROUP_CFG || group == BCMOLT_MGT_GROUP_STAT || group == BCMOLT_MGT_GROUP_AUTO_CFG)
+        cmd_flags = BCMCLI_PARM_FLAG_OPTIONAL;
+
+    /* command parameters are:
+     * - object_name (selector)
+     * - object_key_fields
+     * - object_per_group_fields filtered by access
+     * Therefore, there is 1 top-level enum parameter (object type) with per-value parameter tables
+     * In the case of operations or proxy messages, there is also a top-level enum parameter for the oper/proxy name
+     */
+
+    /* Allocate enum table based on max number of objects. Will be compacted in the end */
+    cmd_parms = bcmos_calloc(sizeof(bcmcli_cmd_parm) * (num_cmd_parms + 1));
+    if (!cmd_parms)
+        return BCM_ERR_NOMEM;
+
+    /* Allocate enough space for all object entries as well as a terminator entry (which is left NULL) */
+    obj_selector = bcmos_calloc(sizeof(bcmcli_enum_val) * (BCMOLT_OBJ_ID__NUM_OF + 1));
+    if (!obj_selector)
+        goto nomem_cleanup;
+
+    /* Allocate parameter table */
+    n_obj = 0;
+    for (o = 0; o < BCMOLT_OBJ_ID__NUM_OF; o++)
+    {
+        uint32_t nkeyfields = 0;
+        uint32_t nfields = 0;
+        uint32_t nfilterfields = 0;
+        uint32_t size;
+        uint16_t s;
+        uint16_t subgroup_count = api_cli_get_subgroup_count(o, group);
+        bcmcli_enum_val *sub_selector;
+
+        if (!bcmolt_object_is_supported(current_system_mode, o) && o != BCMOLT_OBJ_ID_DEVICE)
+            continue;
+
+        if (subgroup_count == 0)
+            continue;
+
+        obj_selector[n_obj].val = o;
+        rc = api_cli_object_name(o, &obj_selector[n_obj].name, NULL);
+        if (rc)
+            continue;
+
+        /* Get number of key fields and save it */
+        if (group == BCMOLT_MGT_GROUP_AUTO_CFG)
+        {
+            nkeyfields = 0;
+        }
+        else
+        {
+            _api_cli_get_num_fields_in_group(o, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_PROP_ACCESS_ID_W, &nkeyfields);
+        }
+
+        /* Allocate subgroup enum table */
+        sub_selector = bcmos_calloc(sizeof(bcmcli_enum_val) * (subgroup_count + 1));
+        if (!sub_selector)
+            goto nomem_cleanup;
+
+        /* Allocate single subgroup command parameter */
+        size = sizeof(bcmcli_cmd_parm) * 2;
+        obj_selector[n_obj].parms = bcmos_calloc(size);
+        if (!obj_selector[n_obj].parms)
+        {
+            bcmos_free(sub_selector);
+            goto nomem_cleanup;
+        }
+
+        /* Setup single subgroup command parameter */
+        obj_selector[n_obj].parms[0].type = BCMCLI_PARM_ENUM;
+        obj_selector[n_obj].parms[0].flags = BCMCLI_PARM_FLAG_SELECTOR;
+        obj_selector[n_obj].parms[0].enum_table = sub_selector;
+        rc = _api_cli_copy_parm_name(&obj_selector[n_obj].parms[0],
+                                 "sub",
+                                 "Subgroup (specific operation / proxy msg)");
+        if (rc)
+            goto nomem_cleanup;
+
+        for (s = 0; s < subgroup_count; ++s)
+        {
+            const char *sub_name;
+            bcmcli_cmd_parm *parm_ptr;
+
+            /* Get name of specific subgroup */
+            rc = api_cli_object_subgroup_name(o, group, s, &sub_name, NULL);
+            if (rc)
+                continue;
+
+            /* Setup entry in subgroup enum table */
+            sub_selector[s].name = sub_name;
+            sub_selector[s].val = s;
+
+            /* Get number of group fields */
+            rc = _api_cli_get_num_fields_in_group(o, group, s, access_level, &nfields);
+            if (rc)
+                continue;
+
+            /* For multi-object GET messages, populate the filter fields just like a SET (except that all read-only
+               fields are also settable) */
+            if ((flags & API_CLI_FLAGS_MULTI) != API_CLI_FLAGS_NONE)
+            {
+                rc = _api_cli_get_num_fields_in_group(o, group, s, BCMOLT_PROP_ACCESS_ID_RW, &nfilterfields);
+                if (rc)
+                    continue;
+            }
+
+
+            if ((flags & API_CLI_FLAGS_IGNORE_FIELDS) != API_CLI_FLAGS_NONE)
+            {
+                nfilterfields = 0;
+                nfields = 0;
+            }
+
+
+            /* Allocate parameter table and populate it */
+            sub_selector[s].parms = _api_cli_parm_alloc(nfields + nkeyfields + nfilterfields);
+            if (!sub_selector[s].parms)
+            {
+                rc = BCM_ERR_NOMEM;
+                goto nomem_cleanup;
+            }
+            for (i = 0; i < nkeyfields + nfields + nfilterfields; i++)
+            {
+                apicli_parm_data *parm_data = sub_selector[s].parms[i].user_data;
+                parm_data->group = (i < nkeyfields) ? BCMOLT_MGT_GROUP_KEY : group;
+            }
+
+            parm_ptr = sub_selector[s].parms;
+            if (nkeyfields)
+            {
+                rc = _api_cli_populate_parms(o, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_PROP_ACCESS_ID_W, parm_ptr, 0, "");
+                if (rc < 0)
+                    goto nomem_cleanup;
+                parm_ptr += rc;
+            }
+            if (nfilterfields)
+            {
+                rc = _api_cli_populate_parms(o, group, s, BCMOLT_PROP_ACCESS_ID_RW, parm_ptr, cmd_flags, "filter.");
+                if (rc < 0)
+                    goto nomem_cleanup;
+                parm_ptr += rc;
+            }
+            if (nfields)
+            {
+                rc = _api_cli_populate_parms(o, group, s, access_level, parm_ptr, cmd_flags, "");
+                if (rc < 0)
+                    goto nomem_cleanup;
+                parm_ptr += rc;
+            }
+        }
+
+        /* Compact sub_selector enum. Removes holes (values without parameter table) */
+        _api_cli_compact_selector(sub_selector, subgroup_count);
+
+        /* If the group type doesn't support subgroups, remove the subgroup param entry */
+        if (group == BCMOLT_MGT_GROUP_CFG || group == BCMOLT_MGT_GROUP_STAT || group == BCMOLT_MGT_GROUP_AUTO_CFG)
+        {
+            /* Free the memory associated with the (single) subgroup param */
+            bcmos_free(APICLI_CAST_DISCARD_CONST(obj_selector[n_obj].parms[0].name, void *));
+            bcmos_free(APICLI_CAST_DISCARD_CONST(obj_selector[n_obj].parms[0].description, void *));
+            bcmos_free(obj_selector[n_obj].parms);
+            /* Assign the subgroup params to the root object params */
+            obj_selector[n_obj].parms = sub_selector[0].parms;
+            bcmos_free(sub_selector);
+        }
+
+        ++n_obj; /* number of configured objects */
+    }
+
+    /* Compact obj_selector enum. Removes holes (values without parameter table) */
+    _api_cli_compact_selector(obj_selector, BCMOLT_OBJ_ID__NUM_OF);
+
+    /* Add a 'clear on read' to stats group */
+    if (group == BCMOLT_MGT_GROUP_STAT)
+    {
+        cmd_parms[0].type = BCMCLI_PARM_ENUM;
+        cmd_parms[0].enum_table = bool_enum;
+        rc = _api_cli_copy_parm_name(&cmd_parms[0], "clear", "clear on read");
+        if (rc)
+            goto nomem_cleanup;
+    }
+
+    /* Add 'max number of messages to read' and 'invert filter' to cfg get_multi msgs */
+    if (group == BCMOLT_MGT_GROUP_CFG && (flags & API_CLI_FLAGS_MULTI) != API_CLI_FLAGS_NONE)
+    {
+        cmd_parms[0].type = BCMCLI_PARM_UNUMBER;
+        rc = _api_cli_copy_parm_name(&cmd_parms[0], "max_msgs", "max number of API GET messages to receive per call");
+        if (rc)
+            goto nomem_cleanup;
+
+        cmd_parms[1].type = BCMCLI_PARM_ENUM;
+        cmd_parms[1].enum_table = bool_enum;
+        rc = _api_cli_copy_parm_name(&cmd_parms[1], "filter_invert", "invert filter (select objects that don't match)");
+        if (rc)
+            goto nomem_cleanup;
+    }
+
+    /* We are ready to add this command */
+    cmd_parms[num_cmd_parms - 1].type = BCMCLI_PARM_ENUM;
+    cmd_parms[num_cmd_parms - 1].flags = BCMCLI_PARM_FLAG_SELECTOR;
+    cmd_parms[num_cmd_parms - 1].enum_table = obj_selector;
+    rc = _api_cli_copy_parm_name(&cmd_parms[num_cmd_parms - 1], "object", "Object Type");
+    if (rc)
+        goto nomem_cleanup;
+    rc = bcmcli_cmd_add(dir, cmd_name, cmd_handler, cmd_descr,
+        (access_level == BCMOLT_PROP_ACCESS_ID_W) ? BCMCLI_ACCESS_ADMIN : BCMCLI_ACCESS_GUEST,
+        &cmd_extras, cmd_parms);
+    if (rc)
+        goto nomem_cleanup;
+    return 0;
+
+nomem_cleanup:
+    if (obj_selector)
+    {
+        for (o = 0; o < BCMOLT_OBJ_ID__NUM_OF; o++)
+        {
+            if (obj_selector[o].parms)
+                _api_cli_free_parms(obj_selector[o].parms);
+        }
+        bcmos_free(obj_selector);
+    }
+    bcmos_free(cmd_parms);
+    return rc;
+}
+
+#ifdef BCM_SUBSYSTEM_HOST
+
+/* Current device change indication */
+static void _api_cli_device_change_ind(bcmcli_session *session, bcmolt_devid dev)
+{
+    api_cli_set_commands(session);
+}
+
+#ifdef LINUX_USER_SPACE
+
+static bcmcli_session *_apicli_log;
+static FILE *_apicli_log_file;
+
+static int _apicli_log_write_cb(bcmcli_session *session, const char *buf, uint32_t size)
+{
+    if (_apicli_log_file == NULL || buf == NULL)
+        return BCM_ERR_INTERNAL;
+    fwrite(buf, 1, size, _apicli_log_file);
+    fflush(_apicli_log_file);
+    return BCM_ERR_OK;
+}
+
+/* Enable/disable API logging
+ *       BCMCLI_MAKE_PARM("file", "Log file. Use \"-\" to disable logging", BCMCLI_PARM_STRING, 0));
+ */
+static bcmos_errno _apicli_log_handler(bcmcli_session *session, const bcmcli_cmd_parm parm[], uint16_t nparms)
+{
+    const char *fname = parm[0].value.string;
+    bcmcli_session_parm session_params =
+    {
+        .write = _apicli_log_write_cb,
+        .name = "api_log"
+    };
+    bcmos_errno rc;
+    time_t start_time;
+
+    /* Close existing log session if any */
+    if (_apicli_log)
+    {
+        bcmcli_log_set(BCMCLI_LOG_NONE, NULL);
+        bcmcli_session_close(_apicli_log);
+        fclose(_apicli_log_file);
+        _apicli_log = NULL;
+        _apicli_log_file = NULL;
+    }
+
+    if (!strcmp(fname, "-"))
+        return BCM_ERR_OK;
+
+    /* Starting a new log session */
+    _apicli_log_file = fopen(fname, "a");
+    if (_apicli_log_file == NULL)
+    {
+        bcmcli_print(session, "Can't open file %s for logging\n", fname);
+        return BCM_ERR_PARM;
+    }
+    rc = bcmcli_session_open_user(&session_params, &_apicli_log);
+    if (rc)
+    {
+        fclose(_apicli_log_file);
+        _apicli_log_file = NULL;
+        bcmcli_print(session, "Can't open log session. Error %s\n", bcmos_strerror(rc));
+        return rc;
+    }
+    time(&start_time);
+    bcmcli_log_set(BCMCLI_LOG_C_COMMENT, _apicli_log);
+    bcmcli_log("/* API logging session started. %s */\n", ctime(&start_time));
+    return BCM_ERR_OK;
+}
+#endif /* #ifdef LINUX_USER_SPACE */
+
+#endif /* #ifdef BCM_SUBSYSTEM_HOST */
+
+static void api_cli_find_del_cmd(bcmcli_entry *dir, const char *cmd_name)
+{
+    bcmcli_entry *cmd;
+    cmd = bcmcli_cmd_find(dir, cmd_name);
+    if (cmd)
+    {
+        bcmcli_token_destroy(cmd);
+    }
+}
+
+/* Unregisters commands and directories */
+static void api_cli_del_commands(bcmcli_session *session)
+{
+    bcmcli_entry *dir;
+
+    dir = bcmcli_dir_find(api_parent_dir, "api");
+    if (!dir)
+    {
+        return;
+    }
+    api_cli_find_del_cmd(dir, "set");
+    api_cli_find_del_cmd(dir, "get");
+    api_cli_find_del_cmd(dir, "multiget");
+    api_cli_find_del_cmd(dir, "clear");
+    api_cli_find_del_cmd(dir, "modify");
+    api_cli_find_del_cmd(dir, "stat");
+    api_cli_find_del_cmd(dir, "oper");
+    api_cli_find_del_cmd(dir, "send");
+    api_cli_find_del_cmd(dir, "saset");
+    api_cli_find_del_cmd(dir, "saget");
+    api_cli_find_del_cmd(dir, "acset");
+    api_cli_find_del_cmd(dir, "acget");
+    api_cli_find_del_cmd(dir, "objects");
+#ifdef BCM_SUBSYSTEM_HOST
+    api_cli_find_del_cmd(dir, "log");
+#endif
+}
+
+/* Registers commands and directories */
+static bcmos_errno api_cli_add_commands(bcmcli_session *session)
+{
+    bcmcli_entry *api_dir;
+    bcmos_errno rc;
+
+    if ((api_dir = bcmcli_dir_find(api_parent_dir, "api")) == NULL)
+    {
+        api_dir = bcmcli_dir_add(api_parent_dir, "api", "Maple API", BCMCLI_ACCESS_GUEST, NULL);
+        if (api_dir == NULL)
+        {
+            bcmcli_session_print(session, "Can't create api directory\n");
+            return BCM_ERR_INTERNAL;
+        }
+    }
+
+    current_session = session;
+    bcmolt_system_mode_get(current_device, &current_system_mode);
+
+    /* Now generate and add commands */
+    rc = _api_cli_add(api_dir, "set", "Set object configuration", BCMOLT_MGT_GROUP_CFG,
+        BCMOLT_PROP_ACCESS_ID_W, _apicli_set_handler, API_CLI_FLAGS_NONE);
+    rc = rc ? rc : _api_cli_add(api_dir, "get", "Get object configuration", BCMOLT_MGT_GROUP_CFG,
+        BCMOLT_PROP_ACCESS_ID_R, _apicli_get_handler, API_CLI_FLAGS_NONE);
+    rc = rc ? rc : _api_cli_add(api_dir, "clear", "Clear object configuration", BCMOLT_MGT_GROUP_CFG,
+        BCMOLT_PROP_ACCESS_ID_R, _apicli_clear_handler, API_CLI_FLAGS_IGNORE_FIELDS);
+    rc = rc ? rc : _api_cli_add(api_dir, "stat", "Get statistics", BCMOLT_MGT_GROUP_STAT, BCMOLT_PROP_ACCESS_ID_R,
+        _apicli_stat_handler, API_CLI_FLAGS_NONE);
+    rc = rc ? rc : _api_cli_add(api_dir, "oper", "Initiate Operation", BCMOLT_MGT_GROUP_OPER,
+        BCMOLT_PROP_ACCESS_ID_W, _apicli_oper_handler, API_CLI_FLAGS_NONE);
+    rc = rc ? rc : _api_cli_add(api_dir, "send", "Send message to ONU", BCMOLT_MGT_GROUP_PROXY,
+        BCMOLT_PROP_ACCESS_ID_W, _apicli_send_handler, API_CLI_FLAGS_NONE);
+    rc = rc ? rc : _api_cli_add(api_dir, "saset", "Set statistic alarm configuration",
+        BCMOLT_MGT_GROUP_STAT_CFG, BCMOLT_PROP_ACCESS_ID_W, _apicli_stat_cfg_set_handler, API_CLI_FLAGS_NONE);
+    rc = rc ? rc : _api_cli_add(api_dir, "saget", "Get statistic alarm configuration",
+        BCMOLT_MGT_GROUP_STAT_CFG, BCMOLT_PROP_ACCESS_ID_R, _apicli_stat_cfg_get_handler, API_CLI_FLAGS_IGNORE_FIELDS);
+    rc = rc ? rc : _api_cli_add(api_dir, "acset", "Set autonomous message configuration",
+        BCMOLT_MGT_GROUP_AUTO_CFG, BCMOLT_PROP_ACCESS_ID_W, _apicli_auto_cfg_set_handler, API_CLI_FLAGS_NONE);
+    rc = rc ? rc : _api_cli_add(api_dir, "acget", "Get autonomous message configuration",
+        BCMOLT_MGT_GROUP_AUTO_CFG, BCMOLT_PROP_ACCESS_ID_R, _apicli_auto_cfg_get_handler, API_CLI_FLAGS_NONE);
+    rc = rc ? rc : _api_cli_add(api_dir, "multiget", "Get configuration for multiple objects",
+        BCMOLT_MGT_GROUP_CFG, BCMOLT_PROP_ACCESS_ID_R, _apicli_auto_cfg_get_multi_handler, API_CLI_FLAGS_MULTI);
+
+    /* List all system objects */
+    rc = rc ? rc : bcmcli_cmd_add(api_dir, "objects", _apicli_objects_handler,
+        "Object Types", BCMCLI_ACCESS_GUEST, NULL, NULL);
+
+#if defined(BCM_SUBSYSTEM_HOST) && defined(LINUX_USER_SPACE)
+    BCMCLI_MAKE_CMD(api_dir, "log", "Log API calls", _apicli_log_handler,
+        BCMCLI_MAKE_PARM("file", "Log file. Use \"-\" to disable logging", BCMCLI_PARM_STRING, 0));
+#endif
+
+    return rc;
+}
+
+/* Update API CLI commands for the current device */
+bcmos_errno api_cli_set_commands(bcmcli_session *session)
+{
+    bcmos_errno rc;
+    api_cli_del_commands(session);
+    rc = api_cli_add_commands(session);
+    return rc;
+}
+
+/* Init API CLI commands for the current device */
+bcmos_errno api_cli_init(bcmcli_entry *parent_dir, bcmcli_session *session)
+{
+    bcmos_errno rc;
+
+    api_parent_dir = parent_dir;
+
+    rc = api_cli_set_commands(session);
+
+#ifdef BCM_SUBSYSTEM_HOST
+    /* Subscribe for device change indication */
+    rc = rc ? rc : bcmolt_dev_sel_ind_register(_api_cli_device_change_ind);
+#endif
+
+    return rc;
+}
diff --git a/bcm68620_release/release/host_reference/api_cli/bcm_api_cli.h b/bcm68620_release/release/host_reference/api_cli/bcm_api_cli.h
new file mode 100644
index 0000000..e29df57
--- /dev/null
+++ b/bcm68620_release/release/host_reference/api_cli/bcm_api_cli.h
@@ -0,0 +1,49 @@
+/*
+<:copyright-BRCM:2016:DUAL/GPL:standard
+
+   Broadcom Proprietary and Confidential.(c) 2016 Broadcom
+   All Rights Reserved
+
+Unless you and Broadcom execute a separate written software license
+agreement governing use of this software, this software is licensed
+to you under the terms of the GNU General Public License version 2
+(the "GPL"), available at http://www.broadcom.com/licenses/GPLv2.php,
+with the following added to such license:
+
+   As a special exception, the copyright holders of this software give
+   you permission to link this software with independent modules, and
+   to copy and distribute the resulting executable under terms of your
+   choice, provided that you also meet, for each linked independent
+   module, the terms and conditions of the license of that module.
+   An independent module is a module which is not derived from this
+   software.  The special exception does not apply to any modifications
+   of the software.
+
+Not withstanding the above, under no circumstances may you combine
+this software in any way with any other Broadcom software provided
+under a license other than the GPL, without Broadcom's express prior
+written consent.
+
+:>
+ */
+
+#ifndef MAPLE_CLI_API_H_
+#define MAPLE_CLI_API_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <bcmolt_msg.h>
+
+/* Initialize API CLI */
+bcmos_errno api_cli_init(bcmcli_entry *parent_dir, bcmcli_session *session);
+
+/* Update API CLI commands for the current device */
+bcmos_errno api_cli_set_commands(bcmcli_session *session);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* MAPLE_CLI_API_H_ */
diff --git a/bcm68620_release/release/host_reference/api_cli/bcm_api_cli_dump.c b/bcm68620_release/release/host_reference/api_cli/bcm_api_cli_dump.c
new file mode 100644
index 0000000..a96db26
--- /dev/null
+++ b/bcm68620_release/release/host_reference/api_cli/bcm_api_cli_dump.c
@@ -0,0 +1,954 @@
+/*
+<:copyright-BRCM:2016:DUAL/GPL:standard
+
+   Broadcom Proprietary and Confidential.(c) 2016 Broadcom
+   All Rights Reserved
+
+Unless you and Broadcom execute a separate written software license
+agreement governing use of this software, this software is licensed
+to you under the terms of the GNU General Public License version 2
+(the "GPL"), available at http://www.broadcom.com/licenses/GPLv2.php,
+with the following added to such license:
+
+   As a special exception, the copyright holders of this software give
+   you permission to link this software with independent modules, and
+   to copy and distribute the resulting executable under terms of your
+   choice, provided that you also meet, for each linked independent
+   module, the terms and conditions of the license of that module.
+   An independent module is a module which is not derived from this
+   software.  The special exception does not apply to any modifications
+   of the software.
+
+Not withstanding the above, under no circumstances may you combine
+this software in any way with any other Broadcom software provided
+under a license other than the GPL, without Broadcom's express prior
+written consent.
+
+:>
+ */
+
+#include <bcmos_system.h>
+#include <bcmolt_msg.h>
+#include <bcmcli.h>
+
+#include "bcm_api_cli_helpers.h"
+
+typedef enum
+{
+    APICLI_OUTPUT_STYLE_STD,
+    APICLI_OUTPUT_STYLE_C_INIT
+} apicli_output_style;
+
+typedef struct
+{
+    const bcmcli_type_descr *type;
+    void *data;
+    uint8_t bit;
+} apicli_presence_mask_info;
+
+static bcmos_errno _apicli_dump_array(
+    bcmcli_session *session,
+    const bcmcli_type_descr *td,
+    void *data,
+    uint32_t size,
+    const char *name,
+    apicli_output_style style,
+    const apicli_presence_mask_info *presence_mask,
+    const char *prefix,
+    const char *suffix);
+
+static bcmos_errno _apicli_read_snum(bcmcli_session *session, const bcmcli_type_descr *td, void *data, int64_t *n)
+{
+    switch (td->size)
+    {
+    case 1:
+    {
+        int8_t n1 = *(int8_t *)data;
+        *n = n1;
+        break;
+    }
+    case 2:
+    {
+        int16_t n2 = *(int16_t *)data;
+        *n = n2;
+        break;
+    }
+    case 4:
+    {
+        int32_t n4 = *(int32_t *)data;
+        *n = n4;
+        break;
+    }
+    case 8:
+    {
+        memcpy(n, data, sizeof(*n));
+        break;
+    }
+    default:
+        bcmcli_print(session, "*** number size %u is not supported\n", td->size);
+        return BCM_ERR_NOT_SUPPORTED;
+    }
+    return BCM_ERR_OK;
+}
+
+static bcmos_errno _apicli_read_unum(bcmcli_session *session, const bcmcli_type_descr *td, void *data, uint64_t *n)
+{
+    switch (td->size)
+    {
+    case 1:
+    {
+        uint8_t n1 = *(uint8_t *)data;
+        *n = n1;
+        break;
+    }
+    case 2:
+    {
+        uint16_t n2 = *(uint16_t *)data;
+        *n = n2;
+        break;
+    }
+    case 4:
+    {
+        uint32_t n4 = *(uint32_t *)data;
+        *n = n4;
+        break;
+    }
+    case 8:
+    {
+        memcpy(n, data, sizeof(*n));
+        break;
+    }
+    default:
+        bcmcli_print(session, "*** number size %u is not supported\n", td->size);
+        return BCM_ERR_NOT_SUPPORTED;
+    }
+    return BCM_ERR_OK;
+}
+
+static void _apicli_strcat_upper(char *dest, uint32_t dest_len, const char *src, uint32_t src_len)
+{
+    uint32_t src_idx;
+    uint32_t dest_idx;
+
+    for (dest_idx = 0; dest_idx < dest_len - 1; ++dest_idx)
+    {
+        if (dest[dest_idx] == '\0')
+        {
+            break;
+        }
+    }
+
+    for (src_idx = 0; src_idx < src_len && dest_idx < dest_len - 1; ++src_idx, ++dest_idx)
+    {
+        dest[dest_idx] = src[src_idx];
+        if (dest[dest_idx] >= 'a' && dest[dest_idx] <= 'z')
+        {
+            dest[dest_idx] = 'A' + (dest[dest_idx] - 'a');
+        }
+    }
+
+    dest[dest_idx] = '\0';
+}
+
+static const char *_apicli_get_c_enum_id(const bcmcli_type_descr *td, const char *name)
+{
+    static char full_name_buf[256];
+    full_name_buf[0] = '\0';
+    _apicli_strcat_upper(full_name_buf, sizeof(full_name_buf), td->name, strlen(td->name));
+    _apicli_strcat_upper(full_name_buf, sizeof(full_name_buf), "_", 1);
+    _apicli_strcat_upper(full_name_buf, sizeof(full_name_buf), name, strlen(name));
+    return full_name_buf;
+}
+
+static bcmos_errno _apicli_dump_simple_data_type(
+    bcmcli_session *session,
+    const bcmcli_type_descr *td,
+    void *data,
+    const char *name,
+    apicli_output_style style)
+{
+    bcmos_errno rc = BCM_ERR_OK;
+
+    switch (td->base_type)
+    {
+    case BCMOLT_BASE_TYPE_ID_SNUM:       /* signed number */
+    {
+        int64_t n = 0;
+        rc = _apicli_read_snum(session, td, data, &n);
+        bcmcli_print(session, "%lld", (long long)n);
+        break;
+    }
+
+    case BCMOLT_BASE_TYPE_ID_UNUM:       /* unsigned number */
+    {
+        uint64_t n = 0;
+        rc = _apicli_read_unum(session, td, data, &n);
+        bcmcli_print(session, "%llu", (unsigned long long)n);
+        break;
+    }
+
+    case BCMOLT_BASE_TYPE_ID_UNUM_HEX:   /* unsigned number printed in hex */
+    {
+        uint64_t n = 0;
+        rc = _apicli_read_unum(session, td, data, &n);
+        bcmcli_print(session, "0x%llx", (unsigned long long)n);
+        break;
+    }
+
+    case BCMOLT_BASE_TYPE_ID_FLOAT:      /* floating-point number */
+    {
+        if (td->size == sizeof(float))
+        {
+            bcmcli_print(session, "%f", *(float *)data);
+        }
+        else if (td->size == sizeof(double))
+        {
+            bcmcli_print(session, "%f", *(double *)data);
+        }
+        else
+        {
+            bcmcli_print(session, "*** floating-point number of width %u is not supported\n", td->size);
+            rc = BCM_ERR_NOT_SUPPORTED;
+        }
+        break;
+    }
+
+    case BCMOLT_BASE_TYPE_ID_BOOL:
+    {
+        const char *no_str = style == APICLI_OUTPUT_STYLE_C_INIT ? "BCMOS_FALSE" : "no";
+        const char *yes_str = style == APICLI_OUTPUT_STYLE_C_INIT ? "BCMOS_TRUE" : "yes";
+        uint64_t n = 0;
+        rc = _apicli_read_unum(session, td, data, &n);
+        bcmcli_print(session, "%s", n == 0 ? no_str : yes_str);
+        break;
+    }
+
+    case BCMOLT_BASE_TYPE_ID_STRING:     /* string */
+    {
+        if (td->size == 0)
+        {
+            bcmcli_print(session, "\"%s\"", (char *)data);
+        }
+        else
+        {
+            /* we know the size of the buffer */
+            bcmcli_print(session, "\"%.*s\"", td->size, (char *)data);
+        }
+        break;
+    }
+
+    case BCMOLT_BASE_TYPE_ID_IPV4:       /* IPv4 address */
+    {
+        uint32_t ip;
+        memcpy(&ip, data, sizeof(ip));
+        bcmcli_print(
+            session,
+            style == APICLI_OUTPUT_STYLE_C_INIT ? "{ %d,%d,%d,%d }" : "%d.%d.%d.%d",
+            (ip >> 24) & 0xff, (ip >> 16) & 0xff, (ip >> 8) & 0xff, ip & 0xff);
+        break;
+    }
+
+    case BCMOLT_BASE_TYPE_ID_MAC:        /* MAC address */
+    {
+        bcmos_mac_address mac;
+        memcpy(mac.u8, data, sizeof(mac.u8));
+        bcmcli_print(
+            session,
+            style == APICLI_OUTPUT_STYLE_C_INIT ?
+                "{{ 0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x }}" :
+                "%02x:%02x:%02x:%02x:%02x:%02x",
+            mac.u8[0], mac.u8[1], mac.u8[2], mac.u8[3], mac.u8[4], mac.u8[5]);
+        break;
+    }
+
+    case BCMOLT_BASE_TYPE_ID_ENUM:       /* enum */
+    {
+        uint64_t n = 0;
+        const char *s;
+        rc = _apicli_read_unum(session, td, data, &n);
+        BUG_ON(td->x.e == NULL);
+        s = bcmcli_enum_stringval(td->x.e, (long)n);
+        if (style == APICLI_OUTPUT_STYLE_C_INIT)
+        {
+            s = _apicli_get_c_enum_id(td, s);
+        }
+        bcmcli_print(session, "%s", s);
+        break;
+    }
+
+    case BCMOLT_BASE_TYPE_ID_ENUM_MASK:
+    {
+        uint64_t n = 0;
+        const char *s;
+        const char *none = NULL;
+        bcmcli_enum_val *value = td->x.e;
+        bcmos_bool first = BCMOS_TRUE;
+        BUG_ON(value == NULL);
+        rc = _apicli_read_unum(session, td, data, &n);
+        while (value->name != NULL)
+        {
+            if (value->val == 0)
+            {
+                none = value->name;
+            }
+            if ((value->val & n) != 0)
+            {
+                s = value->name;
+                if (style == APICLI_OUTPUT_STYLE_C_INIT)
+                {
+                    s = _apicli_get_c_enum_id(td, s);
+                }
+                bcmcli_print(session, "%s%s", first ? "" : (style == APICLI_OUTPUT_STYLE_C_INIT ? "|" : BCMCLI_ENUM_MASK_DEL_STR), s);
+                first = BCMOS_FALSE;
+                n -= value->val;
+            }
+            ++value;
+        }
+        if (first)
+        {
+            bcmcli_print(session, "%s", (style == APICLI_OUTPUT_STYLE_C_INIT) || (NULL == none) ? "0" : none);
+        }
+        break;
+    }
+
+    default:
+        bcmcli_print(session, "*** type %d is not supported\n", (int)td->base_type);
+        rc = BCM_ERR_NOT_SUPPORTED;
+        break;
+    }
+    return rc;
+}
+
+
+/* calculate number of enum values */
+static int _api_cli_get_num_enum_vals(const bcmcli_enum_val *vals)
+{
+    const bcmcli_enum_val *v = vals;
+    while (v && v->name)
+    {
+        ++v;
+    }
+    return (v - vals);
+}
+
+/* helper function to skip the "u." in front of union field names */
+static inline const char *_apicli_skip_union_prefix(const char *name)
+{
+    if (name[0] == 'u' && name[1] == '.')
+    {
+        name += 2;
+    }
+    return name;
+}
+
+static bcmos_bool _apicli_is_value_set(bcmcli_session *session, const apicli_presence_mask_info *presence_mask)
+{
+    uint64_t pm_value_num = 0;
+    if (!presence_mask || !presence_mask->type)
+    {
+        /* no presence mask - all values are implicitly set */
+        return BCMOS_TRUE;
+    }
+    _apicli_read_unum(session, presence_mask->type, presence_mask->data, &pm_value_num);
+    return ((pm_value_num >> presence_mask->bit) & 1) != 0;
+}
+
+static bcmos_errno _apicli_arr_dyn_len_get(const bcmcli_type_descr *td, void *data, uint32_t *array_size)
+{
+    switch (td->x.arr_dyn.len_size)
+    {
+    case 1: *array_size = *(uint8_t *)data; break;
+    case 2: *array_size = *(uint16_t *)data; break;
+    case 4: *array_size = *(uint32_t *)data; break;
+    default: return BCM_ERR_NOT_SUPPORTED;
+    }
+
+    return BCM_ERR_OK;
+}
+
+static void *_apicli_arr_dyn_data_get(const bcmcli_type_descr *td, void *data)
+{
+    return *(void**)BCMOS_ROUND_UP((long)data + td->x.arr_dyn.len_size, sizeof(void *));
+}
+
+/* Dump data type */
+static bcmos_errno _apicli_dump_data_type(
+    bcmcli_session *session,
+    const bcmcli_type_descr *td,
+    void *data,
+    const char *name,
+    uint32_t num_entries,
+    uint32_t entry_size,
+    apicli_output_style style,
+    const apicli_presence_mask_info *presence_mask,
+    const char *prefix,
+    const char *suffix)
+{
+    bcmos_errno rc = BCM_ERR_OK;
+
+    switch (td->base_type)
+    {
+        case BCMOLT_BASE_TYPE_ID_STRUCT:
+        {
+            uint16_t f;
+            char full_name[APICLI_MAX_PARM_NAME_LENGTH];
+            if (!td->x.s.num_fields)
+                return 0;
+            BUG_ON(!td->x.s.fields);
+            if (style == APICLI_OUTPUT_STYLE_C_INIT)
+            {
+                bcmcli_print(session, "{ ");
+            }
+            for (f = 0; f < td->x.s.num_fields; f++)
+            {
+                const bcmcli_field_descr *fld = &td->x.s.fields[f];
+                void *fdata = (void *)((long)data + fld->offset);
+                apicli_presence_mask_info field_pm = {};
+                if (((td->x.s.fields[0].flags & BCMCLI_FIELD_DESCR_FLAGS_PRESENCE_MASK) != 0) &&
+                    style != APICLI_OUTPUT_STYLE_C_INIT)
+                {
+                    /* If the struct has a presence mask, skip the presence mask field itself, then record the position
+                     * of the presence mask so we can check it later for each entry. */
+                    if (f == 0)
+                    {
+                        continue;
+                    }
+
+                    field_pm.type = td->x.s.fields[0].type;
+                    field_pm.data = (uint8_t *)data + td->x.s.fields[0].offset;
+                    field_pm.bit = (uint8_t)(f - 1);
+                }
+                if (style == APICLI_OUTPUT_STYLE_C_INIT && f > 0)
+                {
+                    bcmcli_print(session, ", ");
+                }
+                bcmcli_strncpy(full_name, name, sizeof(full_name));
+                bcmcli_strncat(full_name, ".", sizeof(full_name));
+                bcmcli_strncat(full_name, fld->name, sizeof(full_name));
+                rc = _apicli_dump_data_type(session, fld->type, fdata, full_name, num_entries, entry_size, style, &field_pm, prefix, suffix);
+            }
+            if (style == APICLI_OUTPUT_STYLE_C_INIT)
+            {
+                bcmcli_print(session, " }");
+            }
+            break;
+        }
+
+        case BCMOLT_BASE_TYPE_ID_UNION:
+        {
+            /* Print fields up to selector, then selector, then selected sub-structure */
+            uint16_t f;
+            char full_name[APICLI_MAX_PARM_NAME_LENGTH];
+            const bcmcli_field_descr *fld;
+            void *fdata;
+            int64_t selector_val = 0;
+            int num_union_vals;
+
+            if (!td->x.u.num_common_fields)
+                return 0;
+            BUG_ON(!td->x.u.common_fields);
+            if (style == APICLI_OUTPUT_STYLE_C_INIT)
+            {
+                bcmcli_print(session, "{ ");
+            }
+            /* Common fields, including selector */
+            for (f = 0; f <= td->x.u.classifier_idx && !rc; f++)
+            {
+                fld = &td->x.u.common_fields[f];
+                fdata = (void *)((long)data + fld->offset);
+
+                bcmcli_strncpy(full_name, name, sizeof(full_name));
+                if (fld->name && strlen(fld->name))
+                {
+                    bcmcli_strncat(full_name, ".", sizeof(full_name));
+                    bcmcli_strncat(full_name, fld->name, sizeof(full_name));
+                }
+                rc = _apicli_dump_data_type(session, fld->type, fdata, full_name, num_entries, entry_size, style, presence_mask, prefix, suffix);
+                if (f == td->x.u.classifier_idx)
+                {
+                    rc = rc ? rc : _apicli_read_snum(session, fld->type, fdata, &selector_val);
+                }
+                if (style == APICLI_OUTPUT_STYLE_C_INIT)
+                {
+                    bcmcli_print(session, ", ");
+                }
+            }
+            if (rc)
+            {
+                bcmcli_print(session, "***internal error when dumping field %s\n",
+                    td->x.u.common_fields[f].name);
+                return rc;
+            }
+
+            num_union_vals = _api_cli_get_num_enum_vals(td->x.u.common_fields[td->x.u.classifier_idx].type->x.e);
+            if ((unsigned)selector_val >= num_union_vals)
+            {
+                bcmcli_print(session, "***invalid union selector value %lld\n", (long long)selector_val);
+                return BCM_ERR_INTERNAL;
+            }
+
+            /* Common fields following selector */
+            for (; f < td->x.u.num_common_fields; f++)
+            {
+                fld = &td->x.u.common_fields[f];
+                fdata = (void *)((long)data + fld->offset);
+
+                if (style == APICLI_OUTPUT_STYLE_C_INIT)
+                {
+                    bcmcli_print(session, ", ");
+                }
+                bcmcli_strncpy(full_name, name, sizeof(full_name));
+                if (fld->name && strlen(fld->name))
+                {
+                    bcmcli_strncat(full_name, ".", sizeof(full_name));
+                    bcmcli_strncat(full_name, fld->name, sizeof(full_name));
+                }
+                rc = _apicli_dump_data_type(session, fld->type, fdata, full_name, num_entries, entry_size, style, presence_mask, prefix, suffix);
+            }
+
+            /* Selected field */
+            fld = &td->x.u.union_fields[selector_val];
+            if (fld->type)
+            {
+                if (style == APICLI_OUTPUT_STYLE_C_INIT)
+                {
+                    bcmcli_print(session, "{ .%s = ", _apicli_skip_union_prefix(fld->name));
+                }
+                fdata = (void *)((long)data + fld->offset);
+
+                bcmcli_strncpy(full_name, name, sizeof(full_name));
+                if (fld->name && strlen(fld->name))
+                {
+                    bcmcli_strncat(full_name, ".", sizeof(full_name));
+                    bcmcli_strncat(full_name, fld->name, sizeof(full_name));
+                }
+                rc = _apicli_dump_data_type(session, fld->type, fdata, full_name, num_entries, entry_size, style, presence_mask, prefix, suffix);
+                if (style == APICLI_OUTPUT_STYLE_C_INIT)
+                {
+                    bcmcli_print(session, " }");
+                }
+            }
+            if (style == APICLI_OUTPUT_STYLE_C_INIT)
+            {
+                bcmcli_print(session, " }");
+            }
+            break;
+        }
+
+        case BCMOLT_BASE_TYPE_ID_ARR_FIXED: /* fixed array */
+        {
+            rc = _apicli_dump_array(session, td->x.arr_fixed.elem_type, data, td->x.arr_fixed.size, name, style, presence_mask, prefix, suffix);
+            break;
+        }
+
+        case BCMOLT_BASE_TYPE_ID_ARR_DYN:   /* dynamic array that should be printed as buffer */
+        {
+            /* Read length */
+            uint32_t array_size;
+
+            rc = _apicli_arr_dyn_len_get(td, data, &array_size);
+            if (BCM_ERR_OK != rc)
+            {
+                    bcmcli_print(session, "*** %s: dyn array len_size %u is not supported\n", name, td->x.arr_dyn.len_size);
+                return rc;
+            }
+
+            if (style == APICLI_OUTPUT_STYLE_C_INIT)
+            {
+                const char *field_name = strrchr(name, '.');
+                if (field_name == NULL)
+                {
+                    field_name = name;
+                }
+                else
+                {
+                    ++field_name;
+                }
+                bcmcli_print(session, "{ %u, %s }", array_size, field_name);
+            }
+            else
+            {
+            data = _apicli_arr_dyn_data_get(td, data);
+            rc = _apicli_dump_array(session, td->x.arr_dyn.elem_type, data, array_size, name, style, presence_mask, prefix, suffix);
+            }
+            break;
+        }
+
+        default:
+        {
+            /* Finally! Simple type that maps to a single CLI parameter */
+            int n;
+            apicli_presence_mask_info local_pm;
+
+            /* If we have a single value and that value is not included in the presence mask, just skip it entirely */
+            if (num_entries == 1 && !_apicli_is_value_set(session, presence_mask))
+            {
+                break;
+            }
+
+            if (style != APICLI_OUTPUT_STYLE_C_INIT)
+            {
+                if (name)
+                {
+                    bcmcli_print(session, "%s%s=", prefix, name);
+                }
+                if (!num_entries)
+                {
+                    bcmcli_print(session, BCMCLI_ARRAY_EMPTY);
+                }
+            }
+
+            /* Dump simple value or array of simple values */
+            local_pm = presence_mask ? *presence_mask : (apicli_presence_mask_info){};
+            for (n = 0; n < num_entries; n++)
+            {
+                if (n)
+                {
+                    bcmcli_print(session, ",");
+                }
+
+                /* If we have a presence mask, make sure to print a special token if the value is unset */
+                if (_apicli_is_value_set(session, &local_pm))
+                {
+                    rc = _apicli_dump_simple_data_type(session, td, data, name, style);
+                }
+                else
+                {
+                    bcmcli_print(session, BCMCLI_PARM_NO_VALUE);
+                }
+
+                data = (void *)((long)data + entry_size);
+                local_pm.data = (void *)((long)local_pm.data + entry_size);
+            }
+            bcmcli_print(session, "%s", suffix);
+            break;
+        }
+    }
+    return rc;
+}
+
+/* Dump array */
+static bcmos_errno _apicli_dump_array(
+    bcmcli_session *session,
+    const bcmcli_type_descr *td,
+    void *data,
+    uint32_t size,
+    const char *name,
+    apicli_output_style style,
+    const apicli_presence_mask_info *presence_mask,
+    const char *prefix,
+    const char *suffix)
+{
+    bcmos_errno rc = BCM_ERR_OK;
+
+    /* Print as buffer or element by element ? */
+    if (style == APICLI_OUTPUT_STYLE_C_INIT)
+    {
+        bcmcli_print(session, "{ ");
+        rc = _apicli_dump_data_type(session, td, data, name, size, td->size, style, presence_mask, prefix, suffix);
+        bcmcli_print(session, " }");
+    }
+    else if ((td->base_type == BCMOLT_BASE_TYPE_ID_UNUM || td->base_type == BCMOLT_BASE_TYPE_ID_UNUM_HEX) && td->size == 1)
+    {
+        if (_apicli_is_value_set(session, presence_mask))
+        {
+            uint32_t i;
+
+            bcmcli_print(session, "%s%s=", prefix, name);
+            for (i = 0; i < size; ++i)
+            {
+                bcmcli_print(session, "%02x", ((uint8_t*)data)[i]);
+            }
+            bcmcli_print(session, "%s", suffix);
+        }
+    }
+    else
+    {
+        rc = _apicli_dump_data_type(session, td, data, name, size, td->size, style, presence_mask, prefix, suffix);
+    }
+    return rc;
+}
+
+/* Dump property */
+bcmos_errno apicli_dump_prop(bcmcli_session *session, const bcmcli_prop_descr *pd, void *prop_data)
+{
+    return _apicli_dump_data_type(session, pd->type, prop_data, pd->name, 1, 0, APICLI_OUTPUT_STYLE_STD, NULL, "   ", "\n");
+}
+
+/* Dump a single property value in C initializer format */
+bcmos_errno apicli_dump_prop_initializer(bcmcli_session *session, const bcmcli_prop_descr *pd, void *prop_data)
+{
+    return _apicli_dump_data_type(session, pd->type, prop_data, pd->name, 1, 0, APICLI_OUTPUT_STYLE_C_INIT, NULL, "", "");
+}
+
+bcmos_errno apicli_dump_dyn_array(
+    bcmcli_session *session,
+    const bcmcli_type_descr *td,
+    void *data,
+    const char *name)
+{
+    bcmos_errno rc;
+    uint32_t array_size;
+
+    rc = _apicli_arr_dyn_len_get(td, data, &array_size);
+    BCMOS_RETURN_IF_ERROR(rc);
+    return _apicli_dump_array(
+        session,
+        td->x.arr_dyn.elem_type,
+        _apicli_arr_dyn_data_get(td, data),
+        array_size,
+        name,
+        APICLI_OUTPUT_STYLE_C_INIT,
+        NULL,
+        "",
+        "");
+}
+
+/* Dump property as CLI parameters */
+bcmos_errno apicli_dump_prop_param(bcmcli_session *session, const bcmcli_prop_descr *pd, void *prop_data, const char *prefix)
+{
+    return _apicli_dump_data_type(session, pd->type, prop_data, pd->name, 1, 0, APICLI_OUTPUT_STYLE_STD, NULL, prefix, "");
+}
+
+/* Calculate property pointer given the group data pointer and property description */
+static inline void *_apicli_prop_data_ptr(void *group_ptr, const bcmcli_prop_descr *pd)
+{
+    return (void *)((long)group_ptr + pd->offset);
+}
+
+/* Dump object data */
+static bcmos_errno _apicli_dump_data(bcmcli_session *session, bcmolt_msg *msg, void *data, uint32_t data_size)
+{
+    uint16_t prop;
+    bcmos_errno rc = BCM_ERR_OK;
+    const bcmcli_prop_descr *pd;
+
+    bcmcli_print(session, "data:\n");
+    for (prop = 0;
+         api_cli_object_property(msg->obj_type, msg->group, msg->subgroup, prop, &pd) == BCM_ERR_OK;
+         ++prop)
+    {
+        void *prop_data = _apicli_prop_data_ptr(data, pd);
+        if (!(msg->presence_mask & (1LL << prop)))
+            continue;
+        if (!prop_data)
+        {
+            continue;
+        }
+        BUG_ON(pd->offset > data_size);
+        rc = apicli_dump_prop(session, pd, prop_data);
+        if (rc != BCM_ERR_OK)
+        {
+            break;
+        }
+    }
+    return rc;
+}
+
+/* Dump object key */
+static bcmos_errno _apicli_dump_key(bcmcli_session *session, bcmolt_msg *msg, void *key, uint32_t key_size)
+{
+    uint16_t prop;
+    bcmos_errno rc = BCM_ERR_OK;
+    const bcmcli_prop_descr *pd;
+
+    bcmcli_print(session, "key:\n");
+    for (prop = 0;
+         api_cli_object_property(msg->obj_type, BCMOLT_MGT_GROUP_KEY, 0, prop, &pd) == BCM_ERR_OK;
+         ++prop)
+    {
+        void *prop_data = _apicli_prop_data_ptr(key, pd);
+        if (!prop_data)
+        {
+            continue;
+        }
+        BUG_ON(pd->offset > key_size);
+        rc = apicli_dump_prop(session, pd, prop_data);
+        if (rc != BCM_ERR_OK)
+        {
+            break;
+        }
+    }
+    return rc;
+}
+
+const char *apicli_mgt_group_to_str(bcmolt_mgt_group group)
+{
+    static const char *str_table[BCMOLT_MGT_GROUP__NUM_OF] =
+    {
+        [BCMOLT_MGT_GROUP_KEY]      = "key",
+        [BCMOLT_MGT_GROUP_CFG]      = "cfg",
+        [BCMOLT_MGT_GROUP_STAT]     = "stat",
+        [BCMOLT_MGT_GROUP_STAT_CFG] = "stat_cfg",
+        [BCMOLT_MGT_GROUP_AUTO]     = "auto",
+        [BCMOLT_MGT_GROUP_AUTO_CFG] = "auto_cfg",
+        [BCMOLT_MGT_GROUP_OPER]     = "oper",
+        [BCMOLT_MGT_GROUP_PROXY]    = "proxy",
+        [BCMOLT_MGT_GROUP_PROXY_RX] = "proxy_rx"
+    };
+    return (group >= BCMOLT_MGT_GROUP__NUM_OF) ? "<unknown>" : str_table[group];
+}
+
+/* Dump message set returned by multi-object GET */
+static bcmos_errno _apicli_dump_msgset(
+    bcmcli_session *session,
+    bcmolt_msg *msg,
+    uint32_t key_size,
+    uint32_t data_size,
+    uint32_t data_offset)
+{
+    uint16_t inst;
+    bcmos_errno rc;
+    void *key = NULL;
+    void *data = NULL;
+
+    if (msg->msg_set == NULL)
+    {
+        return BCM_ERR_NULL;
+    }
+
+    bcmcli_print(session, "more: %s\n", msg->msg_set->more ? "yes" : "no");
+    if (msg->msg_set->more)
+    {
+        bcmcli_print(session, "next ");
+        _apicli_dump_key(session, msg, msg->msg_set->next_key, key_size);
+    }
+
+    bcmcli_print(session, "number of objects returned: %d\n", msg->msg_set->num_instances);
+    for (inst = 0; inst < msg->msg_set->num_instances; inst++)
+    {
+        bcmcli_print(session, "object %d:\n", inst);
+
+        key = (void *)((long)msg->msg_set->msg[inst] + sizeof(bcmolt_msg));
+        rc = _apicli_dump_key(session, msg->msg_set->msg[inst], key, key_size);
+        if (rc != BCM_ERR_OK)
+        {
+            return rc;
+        }
+
+        data = (void *)((long)msg->msg_set->msg[inst] + data_offset);
+        rc = _apicli_dump_data(session, msg->msg_set->msg[inst], data, data_size);
+        if (rc)
+        {
+            return rc;
+        }
+    }
+
+    return BCM_ERR_OK;
+}
+
+/* Dump message */
+bcmos_errno apicli_msg_dump(bcmcli_session *session, bcmolt_msg *msg)
+{
+    bcmos_errno rc;
+    const char *name, *descr;
+    uint32_t key_size;
+    uint32_t key_offset;
+    uint32_t data_size;
+    uint32_t data_offset;
+    void *key = NULL;
+    void *data = NULL;
+
+    rc = api_cli_object_name(msg->obj_type, &name, &descr);
+    if (rc)
+    {
+        goto dump_error;
+    }
+
+    bcmcli_print(session, "object: ");
+    if (name)
+    {
+        bcmcli_print(session, "%s", name);
+    }
+    if (descr)
+    {
+        bcmcli_print(session, " - %s", descr);
+    }
+    bcmcli_print(session, "\n");
+    rc = api_cli_object_struct_size(
+        msg->obj_type,
+        msg->group,
+        msg->subgroup,
+        &key_size,
+        &key_offset,
+        &data_size,
+        &data_offset);
+    if (rc)
+    {
+        goto dump_error;
+    }
+
+    bcmcli_print(session, (msg->type & BCMOLT_MSG_TYPE_GET) != 0 ? "get" : "set");
+    if ((msg->type & BCMOLT_MSG_TYPE_CLEAR) != 0)
+    {
+        bcmcli_print(session, ",clear");
+    }
+    if ((msg->type & BCMOLT_MSG_TYPE_MULTI) != 0)
+    {
+        bcmcli_print(session, ",multi");
+    }
+    bcmcli_print(session, " %s ", apicli_mgt_group_to_str(msg->group));
+
+    if (msg->group != BCMOLT_MGT_GROUP_CFG && msg->group != BCMOLT_MGT_GROUP_STAT &&
+        msg->group != BCMOLT_MGT_GROUP_AUTO_CFG && msg->group != BCMOLT_MGT_GROUP_STAT_CFG)
+    {
+        const char *sub_name, *sub_descr;
+        /* Get name of specific subgroup */
+        rc = api_cli_object_subgroup_name(msg->obj_type, msg->group, msg->subgroup, &sub_name, &sub_descr);
+        if (rc)
+        {
+            goto dump_error;
+        }
+        bcmcli_print(session, "subgroup: %s-%s ", sub_name ? sub_name : "?", sub_descr ? sub_descr : "");
+    }
+    if (msg->dir == BCMOLT_MSG_DIR_REQUEST)
+    {
+        bcmcli_print(session, "request\n");
+    }
+    else
+    {
+        bcmcli_print(session, "response: %s %s\n", bcmos_strerror(msg->err), msg->err_text);
+    }
+
+    if (msg->dir == BCMOLT_MSG_DIR_RESPONSE && (msg->type & BCMOLT_MSG_TYPE_MULTI) != 0)
+    {
+        rc = _apicli_dump_msgset(session, msg, key_size, data_size, data_offset);
+        if (rc)
+        {
+            goto dump_error;
+        }
+    }
+    else
+    {
+        if ((msg->group != BCMOLT_MGT_GROUP_AUTO_CFG) && key_size)
+        {
+            key = (void *)((long)msg + key_offset);
+            rc = _apicli_dump_key(session, msg, key, key_size);
+            if (rc)
+            {
+                goto dump_error;
+            }
+        }
+        if (data_size &&
+             (  ((msg->dir == BCMOLT_MSG_DIR_REQUEST) && (msg->type & BCMOLT_MSG_TYPE_SET))  ||
+                ((msg->dir == BCMOLT_MSG_DIR_RESPONSE) && (msg->type & BCMOLT_MSG_TYPE_GET)) ||
+                (msg->group == BCMOLT_MGT_GROUP_AUTO)                                        ||
+                (msg->group == BCMOLT_MGT_GROUP_PROXY_RX)
+             )
+           )
+        {
+            data = (void *)((long)msg + data_offset);
+            rc = _apicli_dump_data(session, msg, data, data_size);
+            if (rc)
+            {
+                goto dump_error;
+            }
+        }
+    }
+    return BCM_ERR_OK;
+
+dump_error:
+    bcmcli_print(session, "*** Object dump error %s (%d)\n", bcmos_strerror(rc), rc);
+    return rc;
+}
+
diff --git a/bcm68620_release/release/host_reference/api_cli/bcm_api_cli_handlers.c b/bcm68620_release/release/host_reference/api_cli/bcm_api_cli_handlers.c
new file mode 100644
index 0000000..ed9bfef
--- /dev/null
+++ b/bcm68620_release/release/host_reference/api_cli/bcm_api_cli_handlers.c
@@ -0,0 +1,67731 @@
+/*
+<:copyright-BRCM:2016:DUAL/GPL:standard
+
+   Broadcom Proprietary and Confidential.(c) 2016 Broadcom
+   All Rights Reserved
+
+Unless you and Broadcom execute a separate written software license
+agreement governing use of this software, this software is licensed
+to you under the terms of the GNU General Public License version 2
+(the "GPL"), available at http://www.broadcom.com/licenses/GPLv2.php,
+with the following added to such license:
+
+   As a special exception, the copyright holders of this software give
+   you permission to link this software with independent modules, and
+   to copy and distribute the resulting executable under terms of your
+   choice, provided that you also meet, for each linked independent
+   module, the terms and conditions of the license of that module.
+   An independent module is a module which is not derived from this
+   software.  The special exception does not apply to any modifications
+   of the software.
+
+Not withstanding the above, under no circumstances may you combine
+this software in any way with any other Broadcom software provided
+under a license other than the GPL, without Broadcom's express prior
+written consent.
+
+:>
+*/
+#include <bcmos_system.h>
+#include <bcmolt_api.h>
+#include <bcmcli.h>
+#include <bcmolt_model_types.h>
+#include <bcm_api_cli_helpers.h>
+#include "bcm_api_cli_handlers.h"
+
+bcmcli_session *apicli_cli_log_session = NULL;
+
+typedef struct
+{
+    uint8_t *start;
+    uint32_t used;
+    bcmolt_msg_set *msg_set;    /* used for multi-object get messages */
+} apicli_byte_pool;
+
+/* only store 1 message set at a time so it's easy to clean up after */
+static bcmos_errno apicli_byte_pool_create(apicli_byte_pool *buf)
+{
+    buf->used = 0;
+    buf->start = bcmos_calloc(APICLI_DYNAMIC_LIST_BUFFER_SIZE);
+    buf->msg_set = NULL;
+    return (buf->start == NULL) ? BCM_ERR_NOMEM : BCM_ERR_OK;
+}
+
+static void apicli_byte_pool_destroy(apicli_byte_pool *buf)
+{
+    if (buf->msg_set != NULL)
+    {
+        bcmolt_msg_set_free(buf->msg_set);
+    }
+
+    bcmos_free(buf->start);
+}
+
+static void *apicli_byte_pool_calloc(apicli_byte_pool *buf, uint32_t num_bytes)
+{
+    void *ret;
+    if (buf->used + num_bytes > APICLI_DYNAMIC_LIST_BUFFER_SIZE)
+    {
+        return NULL;
+    }
+
+    ret = buf->start + buf->used;
+    buf->used += num_bytes;
+    memset(ret, 0, num_bytes);
+    return ret;
+}
+
+static bcmos_errno apicli_msg_set_alloc(apicli_byte_pool *buf, bcmolt_obj_id obj, bcmolt_mgt_group group, uint32_t max_instances, bcmolt_msg_set **msg_set)
+{
+    bcmos_errno err;
+    if (buf->msg_set != NULL)
+    {
+        return BCM_ERR_NOMEM;   /* only one at a time */
+    }
+
+    err = bcmolt_msg_set_alloc(obj, group, max_instances, &buf->msg_set);
+    *msg_set = buf->msg_set;
+    return err;
+}
+
+/*
+ * Start/end banners - these are specially formatted so listening apps can easily tell where API handling starts/ends.
+ */
+static void apicli_print_start(bcmcli_session *session, const char *api_name)
+{
+    bcmcli_print(session, "[-- API Start: %s --]\n", api_name);
+}
+
+static void apicli_print_data_start(bcmcli_session *session)
+{
+    bcmcli_print(session, "[-- API Message Data --]\n");
+}
+
+static void apicli_print_complete(bcmcli_session *session, bcmos_errno err, const char *err_text)
+{
+    if (err != BCM_ERR_OK && err_text != NULL && err_text[0] != '\0')
+    {
+        bcmcli_print(session, "ERROR: %s", err_text);
+    }
+
+    bcmcli_print(session, "[-- API Complete: %d (%s) --]\n", err, bcmos_strerror(err));
+}
+
+static int apicli_cli_session_write_cb(bcmcli_session *cli_session, const char *buf, uint32_t size)
+{
+    bcmcli_log(buf, "%.*s", size, buf);
+    return (int)size;
+}
+
+/* Logs a property value to the CLI log in such a way that it is a valid RHS in an initializer.  For a primitve, this
+ * will just print the value (e.g. "42").  For a struct, it will emit all members in between curly braces. */
+static void apicli_log_prop_val(bcmolt_obj_id obj, bcmolt_mgt_group group, uint16_t subgroup, uint16_t prop, void *value)
+{
+    bcmos_errno err;
+    const bcmcli_prop_descr *prop_descr;
+
+    if (apicli_cli_log_session == NULL)
+    {
+        static bcmcli_session_parm session_params = { .write = apicli_cli_session_write_cb };
+
+        err = bcmcli_session_open(&session_params, &apicli_cli_log_session);
+        if (err != BCM_ERR_OK)
+        {
+            bcmos_trace(BCMOS_TRACE_LEVEL_ERROR, "Error opening session: %s", bcmos_strerror(err));
+            return;
+        }
+    }
+
+    err = api_cli_object_property(obj, group, subgroup, prop, &prop_descr);
+    if (err != BCM_ERR_OK)
+    {
+        bcmos_trace(BCMOS_TRACE_LEVEL_ERROR, "Error getting info for property: %s", bcmos_strerror(err));
+        return;
+    }
+
+    err = apicli_dump_prop_initializer(apicli_cli_log_session, prop_descr, value);
+    if (err != BCM_ERR_OK)
+    {
+        bcmos_trace(BCMOS_TRACE_LEVEL_ERROR, "Error printing property: %s", bcmos_strerror(err));
+    }
+}
+
+static bcmos_ipv4_address apicli_unumber_to_ipv4(uint32_t num)
+{
+    bcmos_ipv4_address ip;
+    ip.u32 = num;
+    return ip;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_ae_ni_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_ae_ni_cfg cfg;       /**< declare main API struct */
+    bcmolt_ae_ni_key key = { }; /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_ae_ni_cfg cfg;\n");
+    bcmcli_log("bcmolt_ae_ni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "ae_ni");
+    if (cli_parm != NULL)
+    {
+        key.ae_ni = (bcmolt_ae_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "ae_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.ae_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_AE_NI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_AE_NI_KEY_ID_AE_NI, &key.ae_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, ae_ni, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, ae_ni, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "mac_address");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, ae_ni, mac_address);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, ae_ni, mac_address);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ae_ni_en");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, ae_ni, ae_ni_en);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, ae_ni, ae_ni_en);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mtu_10g");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, ae_ni, mtu_10g);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, ae_ni, mtu_10g);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "prbs_generator");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, ae_ni, prbs_generator);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, ae_ni, prbs_generator);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "prbs_checker");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, ae_ni, prbs_checker);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, ae_ni, prbs_checker);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "prbs_status");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, ae_ni, prbs_status);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, ae_ni, prbs_status);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_CFG_PROP_IS_SET(&cfg, ae_ni, mac_address) && !BCMOLT_CFG_PROP_IS_SET(&cfg, ae_ni, ae_ni_en) && !BCMOLT_CFG_PROP_IS_SET(&cfg, ae_ni, mtu_10g) && !BCMOLT_CFG_PROP_IS_SET(&cfg, ae_ni, prbs_generator) && !BCMOLT_CFG_PROP_IS_SET(&cfg, ae_ni, prbs_checker) && !BCMOLT_CFG_PROP_IS_SET(&cfg, ae_ni, prbs_status))
+    {
+        BCMOLT_CFG_PROP_GET(&cfg, ae_ni, all_properties);
+        bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, ae_ni, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_get(device_id, &cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_ae_ni_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_ae_ni_cfg cfg;       /**< declare main API struct */
+    bcmolt_ae_ni_key key = { }; /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_ae_ni_cfg cfg;\n");
+    bcmcli_log("bcmolt_ae_ni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "ae_ni");
+    if (cli_parm != NULL)
+    {
+        key.ae_ni = (bcmolt_ae_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "ae_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.ae_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_AE_NI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_AE_NI_KEY_ID_AE_NI, &key.ae_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, ae_ni, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, ae_ni, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "mac_address");
+    if (cli_parm != NULL)
+    {
+        bcmos_mac_address val;
+        val = cli_parm->value.mac;
+        BCMOLT_CFG_PROP_SET(&cfg, ae_ni, mac_address, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, ae_ni, mac_address, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_AE_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_AE_NI_CFG_ID_MAC_ADDRESS, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mtu_10g");
+    if (cli_parm != NULL)
+    {
+        uint16_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, ae_ni, mtu_10g, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, ae_ni, mtu_10g, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_AE_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_AE_NI_CFG_ID_MTU_10G, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "prbs_generator.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_prbs_generator_config val = { };
+        cli_parm = bcmcli_find_named_parm(session, "prbs_generator.polynom");
+        if (cli_parm != NULL)
+        {
+            val.polynom = (bcmolt_prbs_polynomial) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "prbs_generator.polynom is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "prbs_generator.error_insert");
+        if (cli_parm != NULL)
+        {
+            val.error_insert = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "prbs_generator.error_insert is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "prbs_generator.invert");
+        if (cli_parm != NULL)
+        {
+            val.invert = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "prbs_generator.invert is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "prbs_generator.control");
+        if (cli_parm != NULL)
+        {
+            val.control = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "prbs_generator.control is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, ae_ni, prbs_generator, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_prbs_generator_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_AE_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_AE_NI_CFG_ID_PRBS_GENERATOR, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, ae_ni, prbs_generator, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "prbs_checker.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_prbs_checker_config val = { };
+        cli_parm = bcmcli_find_named_parm(session, "prbs_checker.polynom");
+        if (cli_parm != NULL)
+        {
+            val.polynom = (bcmolt_prbs_polynomial) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "prbs_checker.polynom is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "prbs_checker.mode");
+        if (cli_parm != NULL)
+        {
+            val.mode = (bcmolt_prbs_checker_mode) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "prbs_checker.mode is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "prbs_checker.data_invert");
+        if (cli_parm != NULL)
+        {
+            val.data_invert = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "prbs_checker.data_invert is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "prbs_checker.control");
+        if (cli_parm != NULL)
+        {
+            val.control = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "prbs_checker.control is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, ae_ni, prbs_checker, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_prbs_checker_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_AE_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_AE_NI_CFG_ID_PRBS_CHECKER, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, ae_ni, prbs_checker, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_set(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_set(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_ae_ni_cfg_clear(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_ae_ni_cfg cfg;       /**< declare main API struct */
+    bcmolt_ae_ni_key key = { }; /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_ae_ni_cfg cfg;\n");
+    bcmcli_log("bcmolt_ae_ni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_clear");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "ae_ni");
+    if (cli_parm != NULL)
+    {
+        key.ae_ni = (bcmolt_ae_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "ae_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.ae_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_AE_NI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_AE_NI_KEY_ID_AE_NI, &key.ae_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, ae_ni, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, ae_ni, key);\n");
+
+    /* call API */
+    err = bcmolt_cfg_clear(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_clear(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_ae_ni_cfg_get_multi(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_ae_ni_cfg cfg;           /**< declare main API struct */
+    bcmolt_ae_ni_key key = { };     /**< declare key */
+    bcmolt_msg_set *msg_set = NULL; /**< declare message set */
+    uint32_t max_msgs;              /**< declare max number of msgs to get */
+    bcmos_bool invert_filter;       /**< declare filter invert flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_ae_ni_cfg cfg;\n");
+    bcmcli_log("bcmolt_ae_ni_key key = {  };\n");
+    bcmcli_log("bcmolt_msg_set* msg_set = NULL;\n");
+    bcmcli_log("uint32_t max_msgs;\n");
+    bcmcli_log("bcmos_bool invert_filter;\n");
+    apicli_print_start(session, "bcmolt_cfg_get_multi");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "ae_ni");
+    if (cli_parm != NULL)
+    {
+        key.ae_ni = (bcmolt_ae_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "ae_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.ae_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_AE_NI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_AE_NI_KEY_ID_AE_NI, &key.ae_ni);
+    bcmcli_log(";\n");
+
+    /* set max number of msgs from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "max_msgs");
+    if (cli_parm != NULL)
+    {
+        max_msgs = cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "max_msgs is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("max_msgs = %d;\n", max_msgs);
+
+    /* set filter invert flag from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "filter_invert");
+    if (cli_parm != NULL)
+    {
+        invert_filter = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "filter_invert is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("invert_filter = %s;\n", (invert_filter) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* allocate message set */
+    err = apicli_msg_set_alloc(byte_pool, BCMOLT_OBJ_ID_AE_NI, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);
+    if (err != BCM_ERR_OK)
+    {
+        return err;
+    }
+
+    bcmcli_log("bcmolt_msg_set_alloc(BCMOLT_OBJ_ID_AE_NI, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, ae_ni, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, ae_ni, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "filter.mac_address");
+    if (cli_parm != NULL)
+    {
+        bcmos_mac_address val;
+        val = cli_parm->value.mac;
+        BCMOLT_CFG_PROP_SET(&cfg, ae_ni, mac_address, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, ae_ni, mac_address, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_AE_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_AE_NI_CFG_ID_MAC_ADDRESS, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mac_address");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, ae_ni, mac_address);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, ae_ni, mac_address);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.ae_ni_en");
+    if (cli_parm != NULL)
+    {
+        bcmolt_ae_ni_en_state val;
+        val = (bcmolt_ae_ni_en_state) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, ae_ni, ae_ni_en, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, ae_ni, ae_ni_en, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_AE_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_AE_NI_CFG_ID_AE_NI_EN, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ae_ni_en");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, ae_ni, ae_ni_en);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, ae_ni, ae_ni_en);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.mtu_10g");
+    if (cli_parm != NULL)
+    {
+        uint16_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, ae_ni, mtu_10g, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, ae_ni, mtu_10g, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_AE_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_AE_NI_CFG_ID_MTU_10G, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mtu_10g");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, ae_ni, mtu_10g);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, ae_ni, mtu_10g);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.prbs_generator.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_prbs_generator_config val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.prbs_generator.polynom");
+        if (cli_parm != NULL)
+        {
+            val.polynom = (bcmolt_prbs_polynomial) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.prbs_generator.polynom is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.prbs_generator.error_insert");
+        if (cli_parm != NULL)
+        {
+            val.error_insert = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.prbs_generator.error_insert is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.prbs_generator.invert");
+        if (cli_parm != NULL)
+        {
+            val.invert = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.prbs_generator.invert is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.prbs_generator.control");
+        if (cli_parm != NULL)
+        {
+            val.control = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.prbs_generator.control is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, ae_ni, prbs_generator, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_prbs_generator_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_AE_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_AE_NI_CFG_ID_PRBS_GENERATOR, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, ae_ni, prbs_generator, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "prbs_generator");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, ae_ni, prbs_generator);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, ae_ni, prbs_generator);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.prbs_checker.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_prbs_checker_config val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.prbs_checker.polynom");
+        if (cli_parm != NULL)
+        {
+            val.polynom = (bcmolt_prbs_polynomial) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.prbs_checker.polynom is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.prbs_checker.mode");
+        if (cli_parm != NULL)
+        {
+            val.mode = (bcmolt_prbs_checker_mode) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.prbs_checker.mode is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.prbs_checker.data_invert");
+        if (cli_parm != NULL)
+        {
+            val.data_invert = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.prbs_checker.data_invert is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.prbs_checker.control");
+        if (cli_parm != NULL)
+        {
+            val.control = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.prbs_checker.control is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, ae_ni, prbs_checker, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_prbs_checker_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_AE_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_AE_NI_CFG_ID_PRBS_CHECKER, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, ae_ni, prbs_checker, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "prbs_checker");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, ae_ni, prbs_checker);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, ae_ni, prbs_checker);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.prbs_status.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_prbs_status val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.prbs_status.lock_state");
+        if (cli_parm != NULL)
+        {
+            val.lock_state = (bcmolt_prbs_lock_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.prbs_status.lock_state is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.prbs_status.error_counts");
+        if (cli_parm != NULL)
+        {
+            val.error_counts = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.prbs_status.error_counts is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, ae_ni, prbs_status, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_prbs_status val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_AE_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_AE_NI_CFG_ID_PRBS_STATUS, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, ae_ni, prbs_status, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "prbs_status");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, ae_ni, prbs_status);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, ae_ni, prbs_status);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, ae_ni, mac_address) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, ae_ni, ae_ni_en) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, ae_ni, mtu_10g) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, ae_ni, prbs_generator) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, ae_ni, prbs_checker) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, ae_ni, prbs_status))
+    {
+        BCMOLT_MSGSET_CFG_PROP_GET(msg_set, ae_ni, all_properties);
+        bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, ae_ni, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);
+    bcmcli_log("bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_ae_ni_oper_set_ae_ni_en_state_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_ae_ni_set_ae_ni_en_state oper;   /**< declare main API struct */
+    bcmolt_ae_ni_key key = { };             /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_ae_ni_set_ae_ni_en_state oper;\n");
+    bcmcli_log("bcmolt_ae_ni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "ae_ni");
+    if (cli_parm != NULL)
+    {
+        key.ae_ni = (bcmolt_ae_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "ae_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.ae_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_AE_NI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_AE_NI_KEY_ID_AE_NI, &key.ae_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, ae_ni, set_ae_ni_en_state, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, ae_ni, set_ae_ni_en_state, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "new_state");
+    if (cli_parm != NULL)
+    {
+        bcmolt_ae_ni_en_state val;
+        val = (bcmolt_ae_ni_en_state) cli_parm->value.enum_val;
+        BCMOLT_OPER_PROP_SET(&oper, ae_ni, set_ae_ni_en_state, new_state, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, ae_ni, set_ae_ni_en_state, new_state, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_AE_NI, BCMOLT_MGT_GROUP_OPER, BCMOLT_AE_NI_OPER_ID_SET_AE_NI_EN_STATE, BCMOLT_AE_NI_SET_AE_NI_EN_STATE_ID_NEW_STATE, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_ae_path_ds_stat_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_ae_path_ds_stat stat;        /**< declare main API struct */
+    bcmolt_ae_path_ds_key key = { };    /**< declare key */
+    bcmos_bool clear_on_read;           /**< declare 'clear on read' flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_ae_path_ds_stat stat;\n");
+    bcmcli_log("bcmolt_ae_path_ds_key key = {  };\n");
+    bcmcli_log("bcmos_bool clear_on_read;\n");
+    apicli_print_start(session, "bcmolt_stat_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "ae_ni");
+    if (cli_parm != NULL)
+    {
+        key.ae_ni = (bcmolt_ae_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "ae_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.ae_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_AE_PATH_DS, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_AE_PATH_DS_KEY_ID_AE_NI, &key.ae_ni);
+    bcmcli_log(";\n");
+
+    /* set stat flags from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "clear");
+    if (cli_parm != NULL)
+    {
+        clear_on_read = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "clear is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("clear_on_read = %s;\n", (clear_on_read) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* init the API struct */
+    BCMOLT_STAT_INIT(&stat, ae_path_ds, key);
+    bcmcli_log("BCMOLT_STAT_INIT(&stat, ae_path_ds, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "bytes");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, ae_path_ds, bytes);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, ae_path_ds, bytes);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, ae_path_ds, frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, ae_path_ds, frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_64");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, ae_path_ds, frames_64);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, ae_path_ds, frames_64);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_65_127");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, ae_path_ds, frames_65_127);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, ae_path_ds, frames_65_127);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_128_255");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, ae_path_ds, frames_128_255);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, ae_path_ds, frames_128_255);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_256_511");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, ae_path_ds, frames_256_511);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, ae_path_ds, frames_256_511);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_512_1023");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, ae_path_ds, frames_512_1023);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, ae_path_ds, frames_512_1023);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_1024_1518");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, ae_path_ds, frames_1024_1518);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, ae_path_ds, frames_1024_1518);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_1519_2047");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, ae_path_ds, frames_1519_2047);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, ae_path_ds, frames_1519_2047);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_2048_4095");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, ae_path_ds, frames_2048_4095);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, ae_path_ds, frames_2048_4095);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_4096_9216");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, ae_path_ds, frames_4096_9216);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, ae_path_ds, frames_4096_9216);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_9217_16383");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, ae_path_ds, frames_9217_16383);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, ae_path_ds, frames_9217_16383);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "broadcast_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, ae_path_ds, broadcast_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, ae_path_ds, broadcast_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "data_bytes");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, ae_path_ds, data_bytes);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, ae_path_ds, data_bytes);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "multicast_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, ae_path_ds, multicast_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, ae_path_ds, multicast_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "unicast_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, ae_path_ds, unicast_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, ae_path_ds, unicast_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "abort_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, ae_path_ds, abort_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, ae_path_ds, abort_frames);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_STAT_PROP_IS_SET(&stat, ae_path_ds, bytes) && !BCMOLT_STAT_PROP_IS_SET(&stat, ae_path_ds, frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, ae_path_ds, frames_64) && !BCMOLT_STAT_PROP_IS_SET(&stat, ae_path_ds, frames_65_127) && !BCMOLT_STAT_PROP_IS_SET(&stat, ae_path_ds, frames_128_255) && !BCMOLT_STAT_PROP_IS_SET(&stat, ae_path_ds, frames_256_511) && !BCMOLT_STAT_PROP_IS_SET(&stat, ae_path_ds, frames_512_1023) && !BCMOLT_STAT_PROP_IS_SET(&stat, ae_path_ds, frames_1024_1518) && !BCMOLT_STAT_PROP_IS_SET(&stat, ae_path_ds, frames_1519_2047) && !BCMOLT_STAT_PROP_IS_SET(&stat, ae_path_ds, frames_2048_4095) && !BCMOLT_STAT_PROP_IS_SET(&stat, ae_path_ds, frames_4096_9216) && !BCMOLT_STAT_PROP_IS_SET(&stat, ae_path_ds, frames_9217_16383) && !BCMOLT_STAT_PROP_IS_SET(&stat, ae_path_ds, broadcast_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, ae_path_ds, data_bytes) && !BCMOLT_STAT_PROP_IS_SET(&stat, ae_path_ds, multicast_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, ae_path_ds, unicast_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, ae_path_ds, abort_frames))
+    {
+        BCMOLT_STAT_PROP_GET(&stat, ae_path_ds, all_properties);
+        bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, ae_path_ds, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_stat_get(device_id, &stat.hdr, clear_on_read);
+    bcmcli_log("bcmolt_stat_get(device_id, &stat.hdr, clear_on_read);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &stat.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, stat.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_ae_path_ds_stat_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_ae_path_ds_stat_cfg stat_cfg;    /**< declare main API struct */
+    bcmolt_ae_path_ds_key key = { };        /**< declare key */
+    bcmolt_ae_path_ds_stat_id stat_id;      /**< declare stat ID */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_ae_path_ds_stat_cfg stat_cfg;\n");
+    bcmcli_log("bcmolt_ae_path_ds_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_stat_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "ae_ni");
+    if (cli_parm != NULL)
+    {
+        key.ae_ni = (bcmolt_ae_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "ae_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.ae_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_AE_PATH_DS, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_AE_PATH_DS_KEY_ID_AE_NI, &key.ae_ni);
+    bcmcli_log(";\n");
+
+    /* set stat ID from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "sub");
+    if (cli_parm != NULL)
+    {
+        stat_id = (bcmolt_ae_path_ds_stat_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    /* init the API struct */
+    switch (stat_id)
+    {
+        case BCMOLT_AE_PATH_DS_STAT_ID_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, bytes, key);\n");
+            break;
+        case BCMOLT_AE_PATH_DS_STAT_ID_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, frames, key);\n");
+            break;
+        case BCMOLT_AE_PATH_DS_STAT_ID_FRAMES_64:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, frames_64, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, frames_64, key);\n");
+            break;
+        case BCMOLT_AE_PATH_DS_STAT_ID_FRAMES_65_127:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, frames_65_127, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, frames_65_127, key);\n");
+            break;
+        case BCMOLT_AE_PATH_DS_STAT_ID_FRAMES_128_255:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, frames_128_255, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, frames_128_255, key);\n");
+            break;
+        case BCMOLT_AE_PATH_DS_STAT_ID_FRAMES_256_511:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, frames_256_511, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, frames_256_511, key);\n");
+            break;
+        case BCMOLT_AE_PATH_DS_STAT_ID_FRAMES_512_1023:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, frames_512_1023, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, frames_512_1023, key);\n");
+            break;
+        case BCMOLT_AE_PATH_DS_STAT_ID_FRAMES_1024_1518:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, frames_1024_1518, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, frames_1024_1518, key);\n");
+            break;
+        case BCMOLT_AE_PATH_DS_STAT_ID_FRAMES_1519_2047:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, frames_1519_2047, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, frames_1519_2047, key);\n");
+            break;
+        case BCMOLT_AE_PATH_DS_STAT_ID_FRAMES_2048_4095:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, frames_2048_4095, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, frames_2048_4095, key);\n");
+            break;
+        case BCMOLT_AE_PATH_DS_STAT_ID_FRAMES_4096_9216:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, frames_4096_9216, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, frames_4096_9216, key);\n");
+            break;
+        case BCMOLT_AE_PATH_DS_STAT_ID_FRAMES_9217_16383:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, frames_9217_16383, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, frames_9217_16383, key);\n");
+            break;
+        case BCMOLT_AE_PATH_DS_STAT_ID_BROADCAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, broadcast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, broadcast_frames, key);\n");
+            break;
+        case BCMOLT_AE_PATH_DS_STAT_ID_DATA_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, data_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, data_bytes, key);\n");
+            break;
+        case BCMOLT_AE_PATH_DS_STAT_ID_MULTICAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, multicast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, multicast_frames, key);\n");
+            break;
+        case BCMOLT_AE_PATH_DS_STAT_ID_UNICAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, unicast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, unicast_frames, key);\n");
+            break;
+        case BCMOLT_AE_PATH_DS_STAT_ID_ABORT_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, abort_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, abort_frames, key);\n");
+            break;
+        default:
+            apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+            return BCM_ERR_RANGE;
+    }
+
+    /* call API */
+    err = bcmolt_stat_cfg_get(device_id, &stat_cfg.hdr);
+    bcmcli_log("bcmolt_stat_cfg_get(device_id, &stat_cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &stat_cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, stat_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_ae_path_ds_stat_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_ae_path_ds_stat_cfg stat_cfg;    /**< declare main API struct */
+    bcmolt_ae_path_ds_key key = { };        /**< declare key */
+    bcmolt_ae_path_ds_stat_id stat_id;      /**< declare stat ID */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_ae_path_ds_stat_cfg stat_cfg;\n");
+    bcmcli_log("bcmolt_ae_path_ds_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_stat_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "ae_ni");
+    if (cli_parm != NULL)
+    {
+        key.ae_ni = (bcmolt_ae_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "ae_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.ae_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_AE_PATH_DS, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_AE_PATH_DS_KEY_ID_AE_NI, &key.ae_ni);
+    bcmcli_log(";\n");
+
+    /* set stat ID from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "sub");
+    if (cli_parm != NULL)
+    {
+        stat_id = (bcmolt_ae_path_ds_stat_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    /* init the API struct */
+    switch (stat_id)
+    {
+        case BCMOLT_AE_PATH_DS_STAT_ID_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, bytes, key);\n");
+            break;
+        case BCMOLT_AE_PATH_DS_STAT_ID_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, frames, key);\n");
+            break;
+        case BCMOLT_AE_PATH_DS_STAT_ID_FRAMES_64:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, frames_64, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, frames_64, key);\n");
+            break;
+        case BCMOLT_AE_PATH_DS_STAT_ID_FRAMES_65_127:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, frames_65_127, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, frames_65_127, key);\n");
+            break;
+        case BCMOLT_AE_PATH_DS_STAT_ID_FRAMES_128_255:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, frames_128_255, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, frames_128_255, key);\n");
+            break;
+        case BCMOLT_AE_PATH_DS_STAT_ID_FRAMES_256_511:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, frames_256_511, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, frames_256_511, key);\n");
+            break;
+        case BCMOLT_AE_PATH_DS_STAT_ID_FRAMES_512_1023:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, frames_512_1023, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, frames_512_1023, key);\n");
+            break;
+        case BCMOLT_AE_PATH_DS_STAT_ID_FRAMES_1024_1518:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, frames_1024_1518, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, frames_1024_1518, key);\n");
+            break;
+        case BCMOLT_AE_PATH_DS_STAT_ID_FRAMES_1519_2047:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, frames_1519_2047, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, frames_1519_2047, key);\n");
+            break;
+        case BCMOLT_AE_PATH_DS_STAT_ID_FRAMES_2048_4095:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, frames_2048_4095, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, frames_2048_4095, key);\n");
+            break;
+        case BCMOLT_AE_PATH_DS_STAT_ID_FRAMES_4096_9216:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, frames_4096_9216, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, frames_4096_9216, key);\n");
+            break;
+        case BCMOLT_AE_PATH_DS_STAT_ID_FRAMES_9217_16383:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, frames_9217_16383, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, frames_9217_16383, key);\n");
+            break;
+        case BCMOLT_AE_PATH_DS_STAT_ID_BROADCAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, broadcast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, broadcast_frames, key);\n");
+            break;
+        case BCMOLT_AE_PATH_DS_STAT_ID_DATA_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, data_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, data_bytes, key);\n");
+            break;
+        case BCMOLT_AE_PATH_DS_STAT_ID_MULTICAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, multicast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, multicast_frames, key);\n");
+            break;
+        case BCMOLT_AE_PATH_DS_STAT_ID_UNICAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, unicast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, unicast_frames, key);\n");
+            break;
+        case BCMOLT_AE_PATH_DS_STAT_ID_ABORT_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, abort_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_ds, abort_frames, key);\n");
+            break;
+        default:
+            apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+            return BCM_ERR_RANGE;
+    }
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_stat_alarm_config val = { };
+        cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.trigger.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.type");
+            if (cli_parm != NULL)
+            {
+                val.trigger.type = (bcmolt_stat_condition_type) cli_parm->value.enum_val;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.type is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            switch (val.trigger.type)
+            {
+                case BCMOLT_STAT_CONDITION_TYPE_RATE_THRESHOLD:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.rising");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_threshold.rising = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.rising is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.falling");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_threshold.falling = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.falling is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_RATE_RANGE:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.upper");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_range.upper = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.upper is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.lower");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_range.lower = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.lower is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_VALUE_THRESHOLD:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.limit");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.value_threshold.limit = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.limit is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_NONE:
+                    break;
+                default:
+                    apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+                    return BCM_ERR_RANGE;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.soak.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "cfg.soak.active_soak_time");
+            if (cli_parm != NULL)
+            {
+                val.soak.active_soak_time = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak.active_soak_time is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "cfg.soak.clear_soak_time");
+            if (cli_parm != NULL)
+            {
+                val.soak.clear_soak_time = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak.clear_soak_time is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_STAT_CFG_PROP_SET(&stat_cfg, ae_path_ds, cfg, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_stat_alarm_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_AE_PATH_DS, BCMOLT_MGT_GROUP_STAT_CFG, 0, BCMOLT_AE_PATH_DS_STAT_CFG_ID_CFG, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_STAT_CFG_PROP_SET(&stat_cfg, ae_path_ds, cfg, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    /* call API */
+    err = bcmolt_stat_cfg_set(device_id, &stat_cfg.hdr);
+    bcmcli_log("bcmolt_stat_cfg_set(device_id, &stat_cfg.hdr);\n");
+    apicli_print_complete(session, err, stat_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_ae_path_ds_auto_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_ae_path_ds_auto_cfg auto_cfg;    /**< declare main API struct */
+    bcmolt_ae_path_ds_key key = { };        /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_ae_path_ds_auto_cfg auto_cfg;\n");
+    bcmcli_log("bcmolt_ae_path_ds_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_auto_cfg_get");
+
+    /* init the API struct */
+    BCMOLT_AUTO_CFG_INIT(&auto_cfg, ae_path_ds, key);
+    bcmcli_log("BCMOLT_AUTO_CFG_INIT(&auto_cfg, ae_path_ds, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_cleared");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, ae_path_ds, stat_alarm_cleared);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, ae_path_ds, stat_alarm_cleared);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_raised");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, ae_path_ds, stat_alarm_raised);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, ae_path_ds, stat_alarm_raised);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, ae_path_ds, stat_alarm_cleared) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, ae_path_ds, stat_alarm_raised))
+    {
+        BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, ae_path_ds, all_properties);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, ae_path_ds, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_auto_cfg_get(device_id, &auto_cfg.hdr);
+    bcmcli_log("bcmolt_auto_cfg_get(device_id, &auto_cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &auto_cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, auto_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_ae_path_ds_auto_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_ae_path_ds_auto_cfg auto_cfg;    /**< declare main API struct */
+    bcmolt_ae_path_ds_key key = { };        /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_ae_path_ds_auto_cfg auto_cfg;\n");
+    bcmcli_log("bcmolt_ae_path_ds_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_auto_cfg_set");
+
+    /* init the API struct */
+    BCMOLT_AUTO_CFG_INIT(&auto_cfg, ae_path_ds, key);
+    bcmcli_log("BCMOLT_AUTO_CFG_INIT(&auto_cfg, ae_path_ds, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_cleared");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, ae_path_ds, stat_alarm_cleared, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, ae_path_ds, stat_alarm_cleared, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_AE_PATH_DS, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_AE_PATH_DS_AUTO_CFG_ID_STAT_ALARM_CLEARED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_raised");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, ae_path_ds, stat_alarm_raised, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, ae_path_ds, stat_alarm_raised, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_AE_PATH_DS, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_AE_PATH_DS_AUTO_CFG_ID_STAT_ALARM_RAISED, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_auto_cfg_set(device_id, &auto_cfg.hdr);
+    bcmcli_log("bcmolt_auto_cfg_set(device_id, &auto_cfg.hdr);\n");
+    apicli_print_complete(session, err, auto_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_ae_path_us_stat_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_ae_path_us_stat stat;        /**< declare main API struct */
+    bcmolt_ae_path_us_key key = { };    /**< declare key */
+    bcmos_bool clear_on_read;           /**< declare 'clear on read' flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_ae_path_us_stat stat;\n");
+    bcmcli_log("bcmolt_ae_path_us_key key = {  };\n");
+    bcmcli_log("bcmos_bool clear_on_read;\n");
+    apicli_print_start(session, "bcmolt_stat_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "ae_ni");
+    if (cli_parm != NULL)
+    {
+        key.ae_ni = (bcmolt_ae_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "ae_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.ae_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_AE_PATH_US, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_AE_PATH_US_KEY_ID_AE_NI, &key.ae_ni);
+    bcmcli_log(";\n");
+
+    /* set stat flags from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "clear");
+    if (cli_parm != NULL)
+    {
+        clear_on_read = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "clear is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("clear_on_read = %s;\n", (clear_on_read) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* init the API struct */
+    BCMOLT_STAT_INIT(&stat, ae_path_us, key);
+    bcmcli_log("BCMOLT_STAT_INIT(&stat, ae_path_us, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "bytes");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, ae_path_us, bytes);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, ae_path_us, bytes);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, ae_path_us, frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, ae_path_us, frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_64");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, ae_path_us, frames_64);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, ae_path_us, frames_64);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_65_127");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, ae_path_us, frames_65_127);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, ae_path_us, frames_65_127);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_128_255");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, ae_path_us, frames_128_255);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, ae_path_us, frames_128_255);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_256_511");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, ae_path_us, frames_256_511);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, ae_path_us, frames_256_511);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_512_1023");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, ae_path_us, frames_512_1023);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, ae_path_us, frames_512_1023);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_1024_1518");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, ae_path_us, frames_1024_1518);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, ae_path_us, frames_1024_1518);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_1519_2047");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, ae_path_us, frames_1519_2047);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, ae_path_us, frames_1519_2047);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_2048_4095");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, ae_path_us, frames_2048_4095);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, ae_path_us, frames_2048_4095);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_4096_9216");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, ae_path_us, frames_4096_9216);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, ae_path_us, frames_4096_9216);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_9217_16383");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, ae_path_us, frames_9217_16383);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, ae_path_us, frames_9217_16383);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "broadcast_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, ae_path_us, broadcast_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, ae_path_us, broadcast_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "data_bytes");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, ae_path_us, data_bytes);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, ae_path_us, data_bytes);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "multicast_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, ae_path_us, multicast_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, ae_path_us, multicast_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "unicast_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, ae_path_us, unicast_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, ae_path_us, unicast_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "abort_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, ae_path_us, abort_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, ae_path_us, abort_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "fcs_error");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, ae_path_us, fcs_error);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, ae_path_us, fcs_error);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "oversize_error");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, ae_path_us, oversize_error);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, ae_path_us, oversize_error);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "runt_error");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, ae_path_us, runt_error);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, ae_path_us, runt_error);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_STAT_PROP_IS_SET(&stat, ae_path_us, bytes) && !BCMOLT_STAT_PROP_IS_SET(&stat, ae_path_us, frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, ae_path_us, frames_64) && !BCMOLT_STAT_PROP_IS_SET(&stat, ae_path_us, frames_65_127) && !BCMOLT_STAT_PROP_IS_SET(&stat, ae_path_us, frames_128_255) && !BCMOLT_STAT_PROP_IS_SET(&stat, ae_path_us, frames_256_511) && !BCMOLT_STAT_PROP_IS_SET(&stat, ae_path_us, frames_512_1023) && !BCMOLT_STAT_PROP_IS_SET(&stat, ae_path_us, frames_1024_1518) && !BCMOLT_STAT_PROP_IS_SET(&stat, ae_path_us, frames_1519_2047) && !BCMOLT_STAT_PROP_IS_SET(&stat, ae_path_us, frames_2048_4095) && !BCMOLT_STAT_PROP_IS_SET(&stat, ae_path_us, frames_4096_9216) && !BCMOLT_STAT_PROP_IS_SET(&stat, ae_path_us, frames_9217_16383) && !BCMOLT_STAT_PROP_IS_SET(&stat, ae_path_us, broadcast_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, ae_path_us, data_bytes) && !BCMOLT_STAT_PROP_IS_SET(&stat, ae_path_us, multicast_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, ae_path_us, unicast_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, ae_path_us, abort_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, ae_path_us, fcs_error) && !BCMOLT_STAT_PROP_IS_SET(&stat, ae_path_us, oversize_error) && !BCMOLT_STAT_PROP_IS_SET(&stat, ae_path_us, runt_error))
+    {
+        BCMOLT_STAT_PROP_GET(&stat, ae_path_us, all_properties);
+        bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, ae_path_us, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_stat_get(device_id, &stat.hdr, clear_on_read);
+    bcmcli_log("bcmolt_stat_get(device_id, &stat.hdr, clear_on_read);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &stat.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, stat.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_ae_path_us_stat_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_ae_path_us_stat_cfg stat_cfg;    /**< declare main API struct */
+    bcmolt_ae_path_us_key key = { };        /**< declare key */
+    bcmolt_ae_path_us_stat_id stat_id;      /**< declare stat ID */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_ae_path_us_stat_cfg stat_cfg;\n");
+    bcmcli_log("bcmolt_ae_path_us_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_stat_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "ae_ni");
+    if (cli_parm != NULL)
+    {
+        key.ae_ni = (bcmolt_ae_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "ae_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.ae_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_AE_PATH_US, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_AE_PATH_US_KEY_ID_AE_NI, &key.ae_ni);
+    bcmcli_log(";\n");
+
+    /* set stat ID from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "sub");
+    if (cli_parm != NULL)
+    {
+        stat_id = (bcmolt_ae_path_us_stat_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    /* init the API struct */
+    switch (stat_id)
+    {
+        case BCMOLT_AE_PATH_US_STAT_ID_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, bytes, key);\n");
+            break;
+        case BCMOLT_AE_PATH_US_STAT_ID_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, frames, key);\n");
+            break;
+        case BCMOLT_AE_PATH_US_STAT_ID_FRAMES_64:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, frames_64, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, frames_64, key);\n");
+            break;
+        case BCMOLT_AE_PATH_US_STAT_ID_FRAMES_65_127:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, frames_65_127, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, frames_65_127, key);\n");
+            break;
+        case BCMOLT_AE_PATH_US_STAT_ID_FRAMES_128_255:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, frames_128_255, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, frames_128_255, key);\n");
+            break;
+        case BCMOLT_AE_PATH_US_STAT_ID_FRAMES_256_511:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, frames_256_511, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, frames_256_511, key);\n");
+            break;
+        case BCMOLT_AE_PATH_US_STAT_ID_FRAMES_512_1023:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, frames_512_1023, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, frames_512_1023, key);\n");
+            break;
+        case BCMOLT_AE_PATH_US_STAT_ID_FRAMES_1024_1518:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, frames_1024_1518, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, frames_1024_1518, key);\n");
+            break;
+        case BCMOLT_AE_PATH_US_STAT_ID_FRAMES_1519_2047:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, frames_1519_2047, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, frames_1519_2047, key);\n");
+            break;
+        case BCMOLT_AE_PATH_US_STAT_ID_FRAMES_2048_4095:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, frames_2048_4095, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, frames_2048_4095, key);\n");
+            break;
+        case BCMOLT_AE_PATH_US_STAT_ID_FRAMES_4096_9216:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, frames_4096_9216, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, frames_4096_9216, key);\n");
+            break;
+        case BCMOLT_AE_PATH_US_STAT_ID_FRAMES_9217_16383:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, frames_9217_16383, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, frames_9217_16383, key);\n");
+            break;
+        case BCMOLT_AE_PATH_US_STAT_ID_BROADCAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, broadcast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, broadcast_frames, key);\n");
+            break;
+        case BCMOLT_AE_PATH_US_STAT_ID_DATA_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, data_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, data_bytes, key);\n");
+            break;
+        case BCMOLT_AE_PATH_US_STAT_ID_MULTICAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, multicast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, multicast_frames, key);\n");
+            break;
+        case BCMOLT_AE_PATH_US_STAT_ID_UNICAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, unicast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, unicast_frames, key);\n");
+            break;
+        case BCMOLT_AE_PATH_US_STAT_ID_ABORT_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, abort_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, abort_frames, key);\n");
+            break;
+        case BCMOLT_AE_PATH_US_STAT_ID_FCS_ERROR:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, fcs_error, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, fcs_error, key);\n");
+            break;
+        case BCMOLT_AE_PATH_US_STAT_ID_OVERSIZE_ERROR:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, oversize_error, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, oversize_error, key);\n");
+            break;
+        case BCMOLT_AE_PATH_US_STAT_ID_RUNT_ERROR:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, runt_error, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, runt_error, key);\n");
+            break;
+        default:
+            apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+            return BCM_ERR_RANGE;
+    }
+
+    /* call API */
+    err = bcmolt_stat_cfg_get(device_id, &stat_cfg.hdr);
+    bcmcli_log("bcmolt_stat_cfg_get(device_id, &stat_cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &stat_cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, stat_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_ae_path_us_stat_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_ae_path_us_stat_cfg stat_cfg;    /**< declare main API struct */
+    bcmolt_ae_path_us_key key = { };        /**< declare key */
+    bcmolt_ae_path_us_stat_id stat_id;      /**< declare stat ID */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_ae_path_us_stat_cfg stat_cfg;\n");
+    bcmcli_log("bcmolt_ae_path_us_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_stat_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "ae_ni");
+    if (cli_parm != NULL)
+    {
+        key.ae_ni = (bcmolt_ae_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "ae_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.ae_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_AE_PATH_US, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_AE_PATH_US_KEY_ID_AE_NI, &key.ae_ni);
+    bcmcli_log(";\n");
+
+    /* set stat ID from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "sub");
+    if (cli_parm != NULL)
+    {
+        stat_id = (bcmolt_ae_path_us_stat_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    /* init the API struct */
+    switch (stat_id)
+    {
+        case BCMOLT_AE_PATH_US_STAT_ID_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, bytes, key);\n");
+            break;
+        case BCMOLT_AE_PATH_US_STAT_ID_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, frames, key);\n");
+            break;
+        case BCMOLT_AE_PATH_US_STAT_ID_FRAMES_64:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, frames_64, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, frames_64, key);\n");
+            break;
+        case BCMOLT_AE_PATH_US_STAT_ID_FRAMES_65_127:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, frames_65_127, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, frames_65_127, key);\n");
+            break;
+        case BCMOLT_AE_PATH_US_STAT_ID_FRAMES_128_255:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, frames_128_255, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, frames_128_255, key);\n");
+            break;
+        case BCMOLT_AE_PATH_US_STAT_ID_FRAMES_256_511:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, frames_256_511, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, frames_256_511, key);\n");
+            break;
+        case BCMOLT_AE_PATH_US_STAT_ID_FRAMES_512_1023:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, frames_512_1023, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, frames_512_1023, key);\n");
+            break;
+        case BCMOLT_AE_PATH_US_STAT_ID_FRAMES_1024_1518:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, frames_1024_1518, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, frames_1024_1518, key);\n");
+            break;
+        case BCMOLT_AE_PATH_US_STAT_ID_FRAMES_1519_2047:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, frames_1519_2047, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, frames_1519_2047, key);\n");
+            break;
+        case BCMOLT_AE_PATH_US_STAT_ID_FRAMES_2048_4095:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, frames_2048_4095, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, frames_2048_4095, key);\n");
+            break;
+        case BCMOLT_AE_PATH_US_STAT_ID_FRAMES_4096_9216:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, frames_4096_9216, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, frames_4096_9216, key);\n");
+            break;
+        case BCMOLT_AE_PATH_US_STAT_ID_FRAMES_9217_16383:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, frames_9217_16383, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, frames_9217_16383, key);\n");
+            break;
+        case BCMOLT_AE_PATH_US_STAT_ID_BROADCAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, broadcast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, broadcast_frames, key);\n");
+            break;
+        case BCMOLT_AE_PATH_US_STAT_ID_DATA_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, data_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, data_bytes, key);\n");
+            break;
+        case BCMOLT_AE_PATH_US_STAT_ID_MULTICAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, multicast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, multicast_frames, key);\n");
+            break;
+        case BCMOLT_AE_PATH_US_STAT_ID_UNICAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, unicast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, unicast_frames, key);\n");
+            break;
+        case BCMOLT_AE_PATH_US_STAT_ID_ABORT_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, abort_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, abort_frames, key);\n");
+            break;
+        case BCMOLT_AE_PATH_US_STAT_ID_FCS_ERROR:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, fcs_error, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, fcs_error, key);\n");
+            break;
+        case BCMOLT_AE_PATH_US_STAT_ID_OVERSIZE_ERROR:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, oversize_error, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, oversize_error, key);\n");
+            break;
+        case BCMOLT_AE_PATH_US_STAT_ID_RUNT_ERROR:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, runt_error, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, ae_path_us, runt_error, key);\n");
+            break;
+        default:
+            apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+            return BCM_ERR_RANGE;
+    }
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_stat_alarm_config val = { };
+        cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.trigger.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.type");
+            if (cli_parm != NULL)
+            {
+                val.trigger.type = (bcmolt_stat_condition_type) cli_parm->value.enum_val;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.type is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            switch (val.trigger.type)
+            {
+                case BCMOLT_STAT_CONDITION_TYPE_RATE_THRESHOLD:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.rising");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_threshold.rising = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.rising is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.falling");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_threshold.falling = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.falling is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_RATE_RANGE:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.upper");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_range.upper = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.upper is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.lower");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_range.lower = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.lower is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_VALUE_THRESHOLD:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.limit");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.value_threshold.limit = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.limit is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_NONE:
+                    break;
+                default:
+                    apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+                    return BCM_ERR_RANGE;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.soak.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "cfg.soak.active_soak_time");
+            if (cli_parm != NULL)
+            {
+                val.soak.active_soak_time = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak.active_soak_time is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "cfg.soak.clear_soak_time");
+            if (cli_parm != NULL)
+            {
+                val.soak.clear_soak_time = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak.clear_soak_time is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_STAT_CFG_PROP_SET(&stat_cfg, ae_path_us, cfg, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_stat_alarm_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_AE_PATH_US, BCMOLT_MGT_GROUP_STAT_CFG, 0, BCMOLT_AE_PATH_US_STAT_CFG_ID_CFG, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_STAT_CFG_PROP_SET(&stat_cfg, ae_path_us, cfg, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    /* call API */
+    err = bcmolt_stat_cfg_set(device_id, &stat_cfg.hdr);
+    bcmcli_log("bcmolt_stat_cfg_set(device_id, &stat_cfg.hdr);\n");
+    apicli_print_complete(session, err, stat_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_ae_path_us_auto_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_ae_path_us_auto_cfg auto_cfg;    /**< declare main API struct */
+    bcmolt_ae_path_us_key key = { };        /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_ae_path_us_auto_cfg auto_cfg;\n");
+    bcmcli_log("bcmolt_ae_path_us_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_auto_cfg_get");
+
+    /* init the API struct */
+    BCMOLT_AUTO_CFG_INIT(&auto_cfg, ae_path_us, key);
+    bcmcli_log("BCMOLT_AUTO_CFG_INIT(&auto_cfg, ae_path_us, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_cleared");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, ae_path_us, stat_alarm_cleared);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, ae_path_us, stat_alarm_cleared);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_raised");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, ae_path_us, stat_alarm_raised);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, ae_path_us, stat_alarm_raised);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, ae_path_us, stat_alarm_cleared) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, ae_path_us, stat_alarm_raised))
+    {
+        BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, ae_path_us, all_properties);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, ae_path_us, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_auto_cfg_get(device_id, &auto_cfg.hdr);
+    bcmcli_log("bcmolt_auto_cfg_get(device_id, &auto_cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &auto_cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, auto_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_ae_path_us_auto_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_ae_path_us_auto_cfg auto_cfg;    /**< declare main API struct */
+    bcmolt_ae_path_us_key key = { };        /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_ae_path_us_auto_cfg auto_cfg;\n");
+    bcmcli_log("bcmolt_ae_path_us_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_auto_cfg_set");
+
+    /* init the API struct */
+    BCMOLT_AUTO_CFG_INIT(&auto_cfg, ae_path_us, key);
+    bcmcli_log("BCMOLT_AUTO_CFG_INIT(&auto_cfg, ae_path_us, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_cleared");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, ae_path_us, stat_alarm_cleared, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, ae_path_us, stat_alarm_cleared, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_AE_PATH_US, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_AE_PATH_US_AUTO_CFG_ID_STAT_ALARM_CLEARED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_raised");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, ae_path_us, stat_alarm_raised, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, ae_path_us, stat_alarm_raised, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_AE_PATH_US, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_AE_PATH_US_AUTO_CFG_ID_STAT_ALARM_RAISED, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_auto_cfg_set(device_id, &auto_cfg.hdr);
+    bcmcli_log("bcmolt_auto_cfg_set(device_id, &auto_cfg.hdr);\n");
+    apicli_print_complete(session, err, auto_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_channel_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_channel_cfg cfg;         /**< declare main API struct */
+    bcmolt_channel_key key = { };   /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_channel_cfg cfg;\n");
+    bcmcli_log("bcmolt_channel_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_pon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_CHANNEL, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_CHANNEL_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, channel, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, channel, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "operation_control");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, channel, operation_control);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, channel, operation_control);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tol");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, channel, tol);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, channel, tol);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "system_profile");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, channel, system_profile);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, channel, system_profile);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "channel_profile");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, channel, channel_profile);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, channel, channel_profile);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_CFG_PROP_IS_SET(&cfg, channel, operation_control) && !BCMOLT_CFG_PROP_IS_SET(&cfg, channel, tol) && !BCMOLT_CFG_PROP_IS_SET(&cfg, channel, system_profile) && !BCMOLT_CFG_PROP_IS_SET(&cfg, channel, channel_profile))
+    {
+        BCMOLT_CFG_PROP_GET(&cfg, channel, all_properties);
+        bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, channel, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_get(device_id, &cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_channel_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_channel_cfg cfg;         /**< declare main API struct */
+    bcmolt_channel_key key = { };   /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_channel_cfg cfg;\n");
+    bcmcli_log("bcmolt_channel_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_pon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_CHANNEL, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_CHANNEL_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, channel, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, channel, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_parm_by_prefix(session, "operation_control.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_operation_control val = { };
+        cli_parm = bcmcli_find_named_parm(session, "operation_control.re");
+        if (cli_parm != NULL)
+        {
+            val.re = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "operation_control.re is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "operation_control.odn_class");
+        if (cli_parm != NULL)
+        {
+            val.odn_class = (bcmolt_odn_class) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "operation_control.odn_class is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "operation_control.ds_fec_mode");
+        if (cli_parm != NULL)
+        {
+            val.ds_fec_mode = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "operation_control.ds_fec_mode is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "operation_control.protocol");
+        if (cli_parm != NULL)
+        {
+            val.protocol = (bcmolt_tc_protocol) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "operation_control.protocol is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "operation_control.ds_link_type");
+        if (cli_parm != NULL)
+        {
+            val.ds_link_type = (bcmolt_link_type) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "operation_control.ds_link_type is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "operation_control.pon_id.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "operation_control.pon_id.administrative_label");
+            if (cli_parm != NULL)
+            {
+                val.pon_id.administrative_label = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "operation_control.pon_id.administrative_label is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "operation_control.pon_id.dwlch_id");
+            if (cli_parm != NULL)
+            {
+                val.pon_id.dwlch_id = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "operation_control.pon_id.dwlch_id is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "operation_control.pon_id is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "operation_control.c");
+        if (cli_parm != NULL)
+        {
+            val.c = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "operation_control.c is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, channel, operation_control, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_operation_control val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_CHANNEL, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_CHANNEL_CFG_ID_OPERATION_CONTROL, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, channel, operation_control, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tol");
+    if (cli_parm != NULL)
+    {
+        uint16_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, channel, tol, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, channel, tol, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_CHANNEL, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_CHANNEL_CFG_ID_TOL, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "system_profile.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_system_profile val = { };
+        cli_parm = bcmcli_find_named_parm(session, "system_profile.ng_2_sys_id");
+        if (cli_parm != NULL)
+        {
+            val.ng_2_sys_id = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "system_profile.ng_2_sys_id is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "system_profile.version");
+        if (cli_parm != NULL)
+        {
+            val.version = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "system_profile.version is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "system_profile.channel_spacing");
+        if (cli_parm != NULL)
+        {
+            val.channel_spacing = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "system_profile.channel_spacing is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "system_profile.us_operating_wavelength_bands");
+        if (cli_parm != NULL)
+        {
+            val.us_operating_wavelength_bands = (bcmolt_us_operating_wavelength_bands) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "system_profile.us_operating_wavelength_bands is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "system_profile.us_mse");
+        if (cli_parm != NULL)
+        {
+            val.us_mse = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "system_profile.us_mse is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "system_profile.loose_calibration_bound");
+        if (cli_parm != NULL)
+        {
+            val.loose_calibration_bound = (bcmolt_calibration_record) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "system_profile.loose_calibration_bound is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "system_profile.fsr");
+        if (cli_parm != NULL)
+        {
+            val.fsr = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "system_profile.fsr is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "system_profile.twdm_channel_count");
+        if (cli_parm != NULL)
+        {
+            val.twdm_channel_count = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "system_profile.twdm_channel_count is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, channel, system_profile, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_system_profile val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_CHANNEL, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_CHANNEL_CFG_ID_SYSTEM_PROFILE, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, channel, system_profile, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "channel_profile.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_arr_channel_profile_8 val = { };
+        cli_parm = bcmcli_find_parm_by_prefix(session, "channel_profile.arr.");
+        if (cli_parm != NULL)
+        {
+            int32_t i0;
+            if (cli_parm->array_size != 8)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "array channel_profile.arr must have 8 elements\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "channel_profile.arr.version");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 8)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "channel_profile.arr.version is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i0 = 0; i0 < 8; i0++)
+                {
+                    val.arr[i0].version = cli_parm->values[i0].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "channel_profile.arr.channel_index");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 8)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "channel_profile.arr.channel_index is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i0 = 0; i0 < 8; i0++)
+                {
+                    val.arr[i0].channel_index = cli_parm->values[i0].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "channel_profile.arr.ds_frequency_offset.sign");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 8)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "channel_profile.arr.ds_frequency_offset.sign is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i0 = 0; i0 < 8; i0++)
+                {
+                    val.arr[i0].ds_frequency_offset.sign = (bcmolt_sign) cli_parm->values[i0].enum_val;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "channel_profile.arr.ds_frequency_offset.value");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 8)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "channel_profile.arr.ds_frequency_offset.value is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i0 = 0; i0 < 8; i0++)
+                {
+                    val.arr[i0].ds_frequency_offset.value = cli_parm->values[i0].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "channel_profile.arr.channel_partition");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 8)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "channel_profile.arr.channel_partition is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i0 = 0; i0 < 8; i0++)
+                {
+                    val.arr[i0].channel_partition = cli_parm->values[i0].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "channel_profile.arr.uwlch_id");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 8)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "channel_profile.arr.uwlch_id is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i0 = 0; i0 < 8; i0++)
+                {
+                    val.arr[i0].uwlch_id = cli_parm->values[i0].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "channel_profile.arr.us_frequency");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 8)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "channel_profile.arr.us_frequency is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i0 = 0; i0 < 8; i0++)
+                {
+                    val.arr[i0].us_frequency = cli_parm->values[i0].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "channel_profile.arr.us_rate");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 8)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "channel_profile.arr.us_rate is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i0 = 0; i0 < 8; i0++)
+                {
+                    val.arr[i0].us_rate = (bcmolt_upstream_line_rate_capabilities) cli_parm->values[i0].enum_val;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "channel_profile.arr.default_onu_attenuation");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 8)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "channel_profile.arr.default_onu_attenuation is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i0 = 0; i0 < 8; i0++)
+                {
+                    val.arr[i0].default_onu_attenuation = cli_parm->values[i0].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "channel_profile.arr.response_threshold");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 8)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "channel_profile.arr.response_threshold is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i0 = 0; i0 < 8; i0++)
+                {
+                    val.arr[i0].response_threshold = cli_parm->values[i0].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "channel_profile.arr.us_link_type");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 8)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "channel_profile.arr.us_link_type is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i0 = 0; i0 < 8; i0++)
+                {
+                    val.arr[i0].us_link_type = (bcmolt_link_type) cli_parm->values[i0].enum_val;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "channel_profile.arr.is_valid");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 8)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "channel_profile.arr.is_valid is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i0 = 0; i0 < 8; i0++)
+                {
+                    val.arr[i0].is_valid = cli_parm->values[i0].number;
+                }
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "channel_profile.arr is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, channel, channel_profile, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_arr_channel_profile_8 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_CHANNEL, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_CHANNEL_CFG_ID_CHANNEL_PROFILE, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, channel, channel_profile, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_set(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_set(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_channel_cfg_clear(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_channel_cfg cfg;         /**< declare main API struct */
+    bcmolt_channel_key key = { };   /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_channel_cfg cfg;\n");
+    bcmcli_log("bcmolt_channel_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_clear");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_pon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_CHANNEL, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_CHANNEL_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, channel, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, channel, key);\n");
+
+    /* call API */
+    err = bcmolt_cfg_clear(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_clear(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_channel_cfg_get_multi(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_channel_cfg cfg;         /**< declare main API struct */
+    bcmolt_channel_key key = { };   /**< declare key */
+    bcmolt_msg_set *msg_set = NULL; /**< declare message set */
+    uint32_t max_msgs;              /**< declare max number of msgs to get */
+    bcmos_bool invert_filter;       /**< declare filter invert flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_channel_cfg cfg;\n");
+    bcmcli_log("bcmolt_channel_key key = {  };\n");
+    bcmcli_log("bcmolt_msg_set* msg_set = NULL;\n");
+    bcmcli_log("uint32_t max_msgs;\n");
+    bcmcli_log("bcmos_bool invert_filter;\n");
+    apicli_print_start(session, "bcmolt_cfg_get_multi");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_pon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_CHANNEL, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_CHANNEL_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* set max number of msgs from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "max_msgs");
+    if (cli_parm != NULL)
+    {
+        max_msgs = cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "max_msgs is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("max_msgs = %d;\n", max_msgs);
+
+    /* set filter invert flag from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "filter_invert");
+    if (cli_parm != NULL)
+    {
+        invert_filter = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "filter_invert is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("invert_filter = %s;\n", (invert_filter) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* allocate message set */
+    err = apicli_msg_set_alloc(byte_pool, BCMOLT_OBJ_ID_CHANNEL, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);
+    if (err != BCM_ERR_OK)
+    {
+        return err;
+    }
+
+    bcmcli_log("bcmolt_msg_set_alloc(BCMOLT_OBJ_ID_CHANNEL, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, channel, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, channel, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.operation_control.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_operation_control val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.operation_control.re");
+        if (cli_parm != NULL)
+        {
+            val.re = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.operation_control.re is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.operation_control.odn_class");
+        if (cli_parm != NULL)
+        {
+            val.odn_class = (bcmolt_odn_class) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.operation_control.odn_class is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.operation_control.ds_fec_mode");
+        if (cli_parm != NULL)
+        {
+            val.ds_fec_mode = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.operation_control.ds_fec_mode is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.operation_control.protocol");
+        if (cli_parm != NULL)
+        {
+            val.protocol = (bcmolt_tc_protocol) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.operation_control.protocol is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.operation_control.ds_link_type");
+        if (cli_parm != NULL)
+        {
+            val.ds_link_type = (bcmolt_link_type) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.operation_control.ds_link_type is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "filter.operation_control.pon_id.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "filter.operation_control.pon_id.administrative_label");
+            if (cli_parm != NULL)
+            {
+                val.pon_id.administrative_label = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.operation_control.pon_id.administrative_label is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.operation_control.pon_id.dwlch_id");
+            if (cli_parm != NULL)
+            {
+                val.pon_id.dwlch_id = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.operation_control.pon_id.dwlch_id is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.operation_control.pon_id is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.operation_control.c");
+        if (cli_parm != NULL)
+        {
+            val.c = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.operation_control.c is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, channel, operation_control, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_operation_control val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_CHANNEL, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_CHANNEL_CFG_ID_OPERATION_CONTROL, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, channel, operation_control, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "operation_control");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, channel, operation_control);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, channel, operation_control);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.tol");
+    if (cli_parm != NULL)
+    {
+        uint16_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, channel, tol, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, channel, tol, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_CHANNEL, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_CHANNEL_CFG_ID_TOL, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tol");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, channel, tol);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, channel, tol);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.system_profile.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_system_profile val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.system_profile.ng_2_sys_id");
+        if (cli_parm != NULL)
+        {
+            val.ng_2_sys_id = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.system_profile.ng_2_sys_id is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.system_profile.version");
+        if (cli_parm != NULL)
+        {
+            val.version = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.system_profile.version is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.system_profile.channel_spacing");
+        if (cli_parm != NULL)
+        {
+            val.channel_spacing = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.system_profile.channel_spacing is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.system_profile.us_operating_wavelength_bands");
+        if (cli_parm != NULL)
+        {
+            val.us_operating_wavelength_bands = (bcmolt_us_operating_wavelength_bands) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.system_profile.us_operating_wavelength_bands is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.system_profile.us_mse");
+        if (cli_parm != NULL)
+        {
+            val.us_mse = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.system_profile.us_mse is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.system_profile.loose_calibration_bound");
+        if (cli_parm != NULL)
+        {
+            val.loose_calibration_bound = (bcmolt_calibration_record) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.system_profile.loose_calibration_bound is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.system_profile.fsr");
+        if (cli_parm != NULL)
+        {
+            val.fsr = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.system_profile.fsr is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.system_profile.twdm_channel_count");
+        if (cli_parm != NULL)
+        {
+            val.twdm_channel_count = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.system_profile.twdm_channel_count is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, channel, system_profile, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_system_profile val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_CHANNEL, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_CHANNEL_CFG_ID_SYSTEM_PROFILE, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, channel, system_profile, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "system_profile");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, channel, system_profile);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, channel, system_profile);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.channel_profile.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_arr_channel_profile_8 val = { };
+        cli_parm = bcmcli_find_parm_by_prefix(session, "filter.channel_profile.arr.");
+        if (cli_parm != NULL)
+        {
+            int32_t i0;
+            if (cli_parm->array_size != 8)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "array filter.channel_profile.arr must have 8 elements\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.channel_profile.arr.version");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 8)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "filter.channel_profile.arr.version is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i0 = 0; i0 < 8; i0++)
+                {
+                    val.arr[i0].version = cli_parm->values[i0].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.channel_profile.arr.channel_index");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 8)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "filter.channel_profile.arr.channel_index is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i0 = 0; i0 < 8; i0++)
+                {
+                    val.arr[i0].channel_index = cli_parm->values[i0].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.channel_profile.arr.ds_frequency_offset.sign");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 8)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "filter.channel_profile.arr.ds_frequency_offset.sign is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i0 = 0; i0 < 8; i0++)
+                {
+                    val.arr[i0].ds_frequency_offset.sign = (bcmolt_sign) cli_parm->values[i0].enum_val;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.channel_profile.arr.ds_frequency_offset.value");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 8)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "filter.channel_profile.arr.ds_frequency_offset.value is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i0 = 0; i0 < 8; i0++)
+                {
+                    val.arr[i0].ds_frequency_offset.value = cli_parm->values[i0].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.channel_profile.arr.channel_partition");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 8)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "filter.channel_profile.arr.channel_partition is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i0 = 0; i0 < 8; i0++)
+                {
+                    val.arr[i0].channel_partition = cli_parm->values[i0].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.channel_profile.arr.uwlch_id");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 8)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "filter.channel_profile.arr.uwlch_id is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i0 = 0; i0 < 8; i0++)
+                {
+                    val.arr[i0].uwlch_id = cli_parm->values[i0].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.channel_profile.arr.us_frequency");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 8)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "filter.channel_profile.arr.us_frequency is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i0 = 0; i0 < 8; i0++)
+                {
+                    val.arr[i0].us_frequency = cli_parm->values[i0].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.channel_profile.arr.us_rate");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 8)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "filter.channel_profile.arr.us_rate is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i0 = 0; i0 < 8; i0++)
+                {
+                    val.arr[i0].us_rate = (bcmolt_upstream_line_rate_capabilities) cli_parm->values[i0].enum_val;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.channel_profile.arr.default_onu_attenuation");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 8)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "filter.channel_profile.arr.default_onu_attenuation is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i0 = 0; i0 < 8; i0++)
+                {
+                    val.arr[i0].default_onu_attenuation = cli_parm->values[i0].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.channel_profile.arr.response_threshold");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 8)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "filter.channel_profile.arr.response_threshold is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i0 = 0; i0 < 8; i0++)
+                {
+                    val.arr[i0].response_threshold = cli_parm->values[i0].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.channel_profile.arr.us_link_type");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 8)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "filter.channel_profile.arr.us_link_type is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i0 = 0; i0 < 8; i0++)
+                {
+                    val.arr[i0].us_link_type = (bcmolt_link_type) cli_parm->values[i0].enum_val;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.channel_profile.arr.is_valid");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 8)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "filter.channel_profile.arr.is_valid is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i0 = 0; i0 < 8; i0++)
+                {
+                    val.arr[i0].is_valid = cli_parm->values[i0].number;
+                }
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.channel_profile.arr is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, channel, channel_profile, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_arr_channel_profile_8 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_CHANNEL, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_CHANNEL_CFG_ID_CHANNEL_PROFILE, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, channel, channel_profile, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "channel_profile");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, channel, channel_profile);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, channel, channel_profile);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, channel, operation_control) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, channel, tol) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, channel, system_profile) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, channel, channel_profile))
+    {
+        BCMOLT_MSGSET_CFG_PROP_GET(msg_set, channel, all_properties);
+        bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, channel, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);
+    bcmcli_log("bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_debug_oper_cli_input_submit(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_debug_cli_input oper;    /**< declare main API struct */
+    bcmolt_debug_key key = { };     /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_debug_cli_input oper;\n");
+    bcmcli_log("bcmolt_debug_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, debug, cli_input, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, debug, cli_input, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "data");
+    if (cli_parm != NULL)
+    {
+        bcmolt_u8_list_u32 val = { };
+        val.len = bcmolt_buf_get_used(&cli_parm->value.buffer);
+        val.val = apicli_byte_pool_calloc(byte_pool, val.len);
+        if (val.val == NULL)
+        {
+            apicli_print_complete(session, BCM_ERR_NOMEM, "\n");
+            return BCM_ERR_NOMEM;
+        }
+
+        bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+        bcmolt_buf_read(&cli_parm->value.buffer, val.val, val.len);
+        BCMOLT_OPER_PROP_SET(&oper, debug, cli_input, data, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_u8_list_u32 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEBUG, BCMOLT_MGT_GROUP_OPER, BCMOLT_DEBUG_OPER_ID_CLI_INPUT, BCMOLT_DEBUG_CLI_INPUT_ID_DATA, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, debug, cli_input, data, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_debug_cfg_get(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_debug_cfg cfg;       /**< declare main API struct */
+    bcmolt_debug_key key = { }; /**< declare key */
+    uint8_t *list_mem;          /**< declare memory buffer for variable-sized lists */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_debug_cfg cfg;\n");
+    bcmcli_log("bcmolt_debug_key key = {  };\n");
+    bcmcli_log("uint8_t* list_mem;\n");
+    apicli_print_start(session, "bcmolt_cfg_get");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, debug, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, debug, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "console_redirection");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, debug, console_redirection);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, debug, console_redirection);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "indications_dropped");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, debug, indications_dropped);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, debug, indications_dropped);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "file_used_percent");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, debug, file_used_percent);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, debug, file_used_percent);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "api_capture_cfg");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, debug, api_capture_cfg);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, debug, api_capture_cfg);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "api_capture_stats");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, debug, api_capture_stats);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, debug, api_capture_stats);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "api_capture_buffer_read");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, debug, api_capture_buffer_read);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, debug, api_capture_buffer_read);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "api_capture_buffer");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, debug, api_capture_buffer);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, debug, api_capture_buffer);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_CFG_PROP_IS_SET(&cfg, debug, console_redirection) && !BCMOLT_CFG_PROP_IS_SET(&cfg, debug, indications_dropped) && !BCMOLT_CFG_PROP_IS_SET(&cfg, debug, file_used_percent) && !BCMOLT_CFG_PROP_IS_SET(&cfg, debug, api_capture_cfg) && !BCMOLT_CFG_PROP_IS_SET(&cfg, debug, api_capture_stats) && !BCMOLT_CFG_PROP_IS_SET(&cfg, debug, api_capture_buffer_read) && !BCMOLT_CFG_PROP_IS_SET(&cfg, debug, api_capture_buffer))
+    {
+        BCMOLT_CFG_PROP_GET(&cfg, debug, all_properties);
+        bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, debug, all_properties);\n");
+    }
+
+    /* set memory to use for variable-sized lists */
+    list_mem = apicli_byte_pool_calloc(byte_pool, APICLI_DYNAMIC_LIST_BUFFER_SIZE);
+    if (list_mem == NULL)
+    {
+        apicli_print_complete(session, BCM_ERR_NOMEM, "\n");
+        return BCM_ERR_NOMEM;
+    }
+
+    bcmcli_log("list_mem = bcmos_calloc(APICLI_DYNAMIC_LIST_BUFFER_SIZE);\n");
+    BCMOLT_CFG_LIST_BUF_SET(&cfg, debug, list_mem, APICLI_DYNAMIC_LIST_BUFFER_SIZE);
+    bcmcli_log("BCMOLT_CFG_LIST_BUF_SET(&cfg, debug, list_mem, APICLI_DYNAMIC_LIST_BUFFER_SIZE);\n");
+
+    /* call API */
+    err = bcmolt_cfg_get(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_get(device_id, &cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_debug_cfg_set(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_debug_cfg cfg;       /**< declare main API struct */
+    bcmolt_debug_key key = { }; /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_debug_cfg cfg;\n");
+    bcmcli_log("bcmolt_debug_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_set");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, debug, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, debug, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "console_redirection");
+    if (cli_parm != NULL)
+    {
+        bcmolt_console_redirection val;
+        val = (bcmolt_console_redirection) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, debug, console_redirection, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, debug, console_redirection, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEBUG, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_DEBUG_CFG_ID_CONSOLE_REDIRECTION, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "api_capture_cfg.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_api_capture_config val = { };
+        cli_parm = bcmcli_find_named_parm(session, "api_capture_cfg.location");
+        if (cli_parm != NULL)
+        {
+            val.location = (bcmolt_api_capture_location) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "api_capture_cfg.location is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "api_capture_cfg.buffer_size_bytes");
+        if (cli_parm != NULL)
+        {
+            val.buffer_size_bytes = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "api_capture_cfg.buffer_size_bytes is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "api_capture_cfg.buffer_mode");
+        if (cli_parm != NULL)
+        {
+            val.buffer_mode = (bcmolt_api_capture_buffer_mode) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "api_capture_cfg.buffer_mode is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, debug, api_capture_cfg, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_api_capture_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEBUG, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_DEBUG_CFG_ID_API_CAPTURE_CFG, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, debug, api_capture_cfg, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "api_capture_buffer_read.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_api_capture_buffer_reader val = { };
+        cli_parm = bcmcli_find_named_parm(session, "api_capture_buffer_read.offset");
+        if (cli_parm != NULL)
+        {
+            val.offset = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "api_capture_buffer_read.offset is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "api_capture_buffer_read.size");
+        if (cli_parm != NULL)
+        {
+            val.size = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "api_capture_buffer_read.size is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, debug, api_capture_buffer_read, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_api_capture_buffer_reader val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEBUG, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_DEBUG_CFG_ID_API_CAPTURE_BUFFER_READ, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, debug, api_capture_buffer_read, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_set(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_set(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_debug_cfg_clear(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmos_errno err;
+    bcmolt_debug_cfg cfg;       /**< declare main API struct */
+    bcmolt_debug_key key = { }; /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_debug_cfg cfg;\n");
+    bcmcli_log("bcmolt_debug_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_clear");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, debug, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, debug, key);\n");
+
+    /* call API */
+    err = bcmolt_cfg_clear(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_clear(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_debug_cfg_get_multi(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_debug_cfg cfg;           /**< declare main API struct */
+    bcmolt_debug_key key = { };     /**< declare key */
+    bcmolt_msg_set *msg_set = NULL; /**< declare message set */
+    uint32_t max_msgs;              /**< declare max number of msgs to get */
+    bcmos_bool invert_filter;       /**< declare filter invert flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_debug_cfg cfg;\n");
+    bcmcli_log("bcmolt_debug_key key = {  };\n");
+    bcmcli_log("bcmolt_msg_set* msg_set = NULL;\n");
+    bcmcli_log("uint32_t max_msgs;\n");
+    bcmcli_log("bcmos_bool invert_filter;\n");
+    apicli_print_start(session, "bcmolt_cfg_get_multi");
+
+    /* set max number of msgs from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "max_msgs");
+    if (cli_parm != NULL)
+    {
+        max_msgs = cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "max_msgs is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("max_msgs = %d;\n", max_msgs);
+
+    /* set filter invert flag from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "filter_invert");
+    if (cli_parm != NULL)
+    {
+        invert_filter = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "filter_invert is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("invert_filter = %s;\n", (invert_filter) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* allocate message set */
+    err = apicli_msg_set_alloc(byte_pool, BCMOLT_OBJ_ID_DEBUG, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);
+    if (err != BCM_ERR_OK)
+    {
+        return err;
+    }
+
+    bcmcli_log("bcmolt_msg_set_alloc(BCMOLT_OBJ_ID_DEBUG, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, debug, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, debug, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "filter.console_redirection");
+    if (cli_parm != NULL)
+    {
+        bcmolt_console_redirection val;
+        val = (bcmolt_console_redirection) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, debug, console_redirection, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, debug, console_redirection, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEBUG, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_DEBUG_CFG_ID_CONSOLE_REDIRECTION, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "console_redirection");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, debug, console_redirection);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, debug, console_redirection);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.indications_dropped");
+    if (cli_parm != NULL)
+    {
+        uint32_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, debug, indications_dropped, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, debug, indications_dropped, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEBUG, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_DEBUG_CFG_ID_INDICATIONS_DROPPED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "indications_dropped");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, debug, indications_dropped);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, debug, indications_dropped);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.file_used_percent");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, debug, file_used_percent, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, debug, file_used_percent, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEBUG, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_DEBUG_CFG_ID_FILE_USED_PERCENT, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "file_used_percent");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, debug, file_used_percent);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, debug, file_used_percent);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.api_capture_cfg.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_api_capture_config val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.api_capture_cfg.location");
+        if (cli_parm != NULL)
+        {
+            val.location = (bcmolt_api_capture_location) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.api_capture_cfg.location is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.api_capture_cfg.buffer_size_bytes");
+        if (cli_parm != NULL)
+        {
+            val.buffer_size_bytes = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.api_capture_cfg.buffer_size_bytes is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.api_capture_cfg.buffer_mode");
+        if (cli_parm != NULL)
+        {
+            val.buffer_mode = (bcmolt_api_capture_buffer_mode) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.api_capture_cfg.buffer_mode is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, debug, api_capture_cfg, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_api_capture_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEBUG, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_DEBUG_CFG_ID_API_CAPTURE_CFG, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, debug, api_capture_cfg, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "api_capture_cfg");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, debug, api_capture_cfg);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, debug, api_capture_cfg);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.api_capture_stats.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_api_capture_stats val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.api_capture_stats.buffer_used_bytes");
+        if (cli_parm != NULL)
+        {
+            val.buffer_used_bytes = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.api_capture_stats.buffer_used_bytes is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.api_capture_stats.buffer_wrap_count");
+        if (cli_parm != NULL)
+        {
+            val.buffer_wrap_count = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.api_capture_stats.buffer_wrap_count is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.api_capture_stats.events_recorded");
+        if (cli_parm != NULL)
+        {
+            val.events_recorded = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.api_capture_stats.events_recorded is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.api_capture_stats.events_dropped");
+        if (cli_parm != NULL)
+        {
+            val.events_dropped = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.api_capture_stats.events_dropped is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.api_capture_stats.readable_bytes");
+        if (cli_parm != NULL)
+        {
+            val.readable_bytes = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.api_capture_stats.readable_bytes is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, debug, api_capture_stats, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_api_capture_stats val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEBUG, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_DEBUG_CFG_ID_API_CAPTURE_STATS, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, debug, api_capture_stats, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "api_capture_stats");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, debug, api_capture_stats);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, debug, api_capture_stats);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.api_capture_buffer_read.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_api_capture_buffer_reader val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.api_capture_buffer_read.offset");
+        if (cli_parm != NULL)
+        {
+            val.offset = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.api_capture_buffer_read.offset is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.api_capture_buffer_read.size");
+        if (cli_parm != NULL)
+        {
+            val.size = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.api_capture_buffer_read.size is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, debug, api_capture_buffer_read, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_api_capture_buffer_reader val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEBUG, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_DEBUG_CFG_ID_API_CAPTURE_BUFFER_READ, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, debug, api_capture_buffer_read, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "api_capture_buffer_read");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, debug, api_capture_buffer_read);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, debug, api_capture_buffer_read);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.api_capture_buffer");
+    if (cli_parm != NULL)
+    {
+        bcmolt_u8_list_u32 val = { };
+        val.len = bcmolt_buf_get_used(&cli_parm->value.buffer);
+        val.val = apicli_byte_pool_calloc(byte_pool, val.len);
+        if (val.val == NULL)
+        {
+            apicli_print_complete(session, BCM_ERR_NOMEM, "\n");
+            return BCM_ERR_NOMEM;
+        }
+
+        bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+        bcmolt_buf_read(&cli_parm->value.buffer, val.val, val.len);
+        BCMOLT_CFG_PROP_SET(&cfg, debug, api_capture_buffer, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_u8_list_u32 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEBUG, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_DEBUG_CFG_ID_API_CAPTURE_BUFFER, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, debug, api_capture_buffer, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "api_capture_buffer");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, debug, api_capture_buffer);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, debug, api_capture_buffer);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, debug, console_redirection) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, debug, indications_dropped) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, debug, file_used_percent) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, debug, api_capture_cfg) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, debug, api_capture_stats) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, debug, api_capture_buffer_read) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, debug, api_capture_buffer))
+    {
+        BCMOLT_MSGSET_CFG_PROP_GET(msg_set, debug, all_properties);
+        bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, debug, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);
+    bcmcli_log("bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_debug_oper_start_api_capture_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmos_errno err;
+    bcmolt_debug_start_api_capture oper;    /**< declare main API struct */
+    bcmolt_debug_key key = { };             /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_debug_start_api_capture oper;\n");
+    bcmcli_log("bcmolt_debug_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, debug, start_api_capture, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, debug, start_api_capture, key);\n");
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_debug_oper_stop_api_capture_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmos_errno err;
+    bcmolt_debug_stop_api_capture oper; /**< declare main API struct */
+    bcmolt_debug_key key = { };         /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_debug_stop_api_capture oper;\n");
+    bcmcli_log("bcmolt_debug_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, debug, stop_api_capture, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, debug, stop_api_capture, key);\n");
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_debug_oper_reset_api_capture_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmos_errno err;
+    bcmolt_debug_reset_api_capture oper;    /**< declare main API struct */
+    bcmolt_debug_key key = { };             /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_debug_reset_api_capture oper;\n");
+    bcmcli_log("bcmolt_debug_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, debug, reset_api_capture, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, debug, reset_api_capture, key);\n");
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_debug_auto_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_debug_auto_cfg auto_cfg; /**< declare main API struct */
+    bcmolt_debug_key key = { };     /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_debug_auto_cfg auto_cfg;\n");
+    bcmcli_log("bcmolt_debug_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_auto_cfg_get");
+
+    /* init the API struct */
+    BCMOLT_AUTO_CFG_INIT(&auto_cfg, debug, key);
+    bcmcli_log("BCMOLT_AUTO_CFG_INIT(&auto_cfg, debug, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "cli_output");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, debug, cli_output);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, debug, cli_output);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "file_almost_full");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, debug, file_almost_full);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, debug, file_almost_full);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, debug, cli_output) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, debug, file_almost_full))
+    {
+        BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, debug, all_properties);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, debug, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_auto_cfg_get(device_id, &auto_cfg.hdr);
+    bcmcli_log("bcmolt_auto_cfg_get(device_id, &auto_cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &auto_cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, auto_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_debug_auto_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_debug_auto_cfg auto_cfg; /**< declare main API struct */
+    bcmolt_debug_key key = { };     /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_debug_auto_cfg auto_cfg;\n");
+    bcmcli_log("bcmolt_debug_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_auto_cfg_set");
+
+    /* init the API struct */
+    BCMOLT_AUTO_CFG_INIT(&auto_cfg, debug, key);
+    bcmcli_log("BCMOLT_AUTO_CFG_INIT(&auto_cfg, debug, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "cli_output");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, debug, cli_output, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, debug, cli_output, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEBUG, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_DEBUG_AUTO_CFG_ID_CLI_OUTPUT, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "file_almost_full");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, debug, file_almost_full, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, debug, file_almost_full, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEBUG, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_DEBUG_AUTO_CFG_ID_FILE_ALMOST_FULL, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_auto_cfg_set(device_id, &auto_cfg.hdr);
+    bcmcli_log("bcmolt_auto_cfg_set(device_id, &auto_cfg.hdr);\n");
+    apicli_print_complete(session, err, auto_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_device_cfg_get(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_device_cfg cfg;          /**< declare main API struct */
+    bcmolt_device_key key = { };    /**< declare key */
+    uint8_t *list_mem;              /**< declare memory buffer for variable-sized lists */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_device_cfg cfg;\n");
+    bcmcli_log("bcmolt_device_key key = {  };\n");
+    bcmcli_log("uint8_t* list_mem;\n");
+    apicli_print_start(session, "bcmolt_cfg_get");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, device, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, device, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "system_mode");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, device, system_mode);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, device, system_mode);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "keepalive_interval");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, device, keepalive_interval);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, device, keepalive_interval);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "keepalive_tolerance");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, device, keepalive_tolerance);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, device, keepalive_tolerance);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "firmware_sw_version");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, device, firmware_sw_version);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, device, firmware_sw_version);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "host_sw_version");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, device, host_sw_version);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, device, host_sw_version);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "chip_revision");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, device, chip_revision);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, device, chip_revision);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "state");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, device, state);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, device, state);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "debug");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, device, debug);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, device, debug);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "nni_speed");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, device, nni_speed);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, device, nni_speed);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "protection_switching_ext_irq");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, device, protection_switching_ext_irq);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, device, protection_switching_ext_irq);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "epon_clock_transport_sample_delay");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, device, epon_clock_transport_sample_delay);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, device, epon_clock_transport_sample_delay);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "indication_shaping");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, device, indication_shaping);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, device, indication_shaping);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "chip_temperature");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, device, chip_temperature);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, device, chip_temperature);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "gpon_xgpon_tod_enable");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, device, gpon_xgpon_tod_enable);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, device, gpon_xgpon_tod_enable);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "gpon_xgpon_tod_gpio_pin");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, device, gpon_xgpon_tod_gpio_pin);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, device, gpon_xgpon_tod_gpio_pin);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "gpon_xgpon_tod_connected_internally");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, device, gpon_xgpon_tod_connected_internally);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, device, gpon_xgpon_tod_connected_internally);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "epon_8021_as_tod_format");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, device, epon_8021_as_tod_format);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, device, epon_8021_as_tod_format);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "epon_shaper_mode");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, device, epon_shaper_mode);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, device, epon_shaper_mode);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "embedded_image_list");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, device, embedded_image_list);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, device, embedded_image_list);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "chip_voltage");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, device, chip_voltage);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, device, chip_voltage);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "epon_tod_string");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, device, epon_tod_string);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, device, epon_tod_string);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "xgpon_num_of_onus");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, device, xgpon_num_of_onus);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, device, xgpon_num_of_onus);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "device_ip_address");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, device, device_ip_address);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, device, device_ip_address);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "device_udp_port");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, device, device_udp_port);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, device, device_udp_port);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tod_uart_baudrate");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, device, tod_uart_baudrate);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, device, tod_uart_baudrate);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "gpon_xgpon_tod_string_length");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, device, gpon_xgpon_tod_string_length);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, device, gpon_xgpon_tod_string_length);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_CFG_PROP_IS_SET(&cfg, device, system_mode) && !BCMOLT_CFG_PROP_IS_SET(&cfg, device, keepalive_interval) && !BCMOLT_CFG_PROP_IS_SET(&cfg, device, keepalive_tolerance) && !BCMOLT_CFG_PROP_IS_SET(&cfg, device, firmware_sw_version) && !BCMOLT_CFG_PROP_IS_SET(&cfg, device, host_sw_version) && !BCMOLT_CFG_PROP_IS_SET(&cfg, device, chip_revision) && !BCMOLT_CFG_PROP_IS_SET(&cfg, device, state) && !BCMOLT_CFG_PROP_IS_SET(&cfg, device, debug) && !BCMOLT_CFG_PROP_IS_SET(&cfg, device, nni_speed) && !BCMOLT_CFG_PROP_IS_SET(&cfg, device, protection_switching_ext_irq) && !BCMOLT_CFG_PROP_IS_SET(&cfg, device, epon_clock_transport_sample_delay) && !BCMOLT_CFG_PROP_IS_SET(&cfg, device, indication_shaping) && !BCMOLT_CFG_PROP_IS_SET(&cfg, device, chip_temperature) && !BCMOLT_CFG_PROP_IS_SET(&cfg, device, gpon_xgpon_tod_enable) && !BCMOLT_CFG_PROP_IS_SET(&cfg, device, gpon_xgpon_tod_gpio_pin) && !BCMOLT_CFG_PROP_IS_SET(&cfg, device, gpon_xgpon_tod_connected_internally) && !BCMOLT_CFG_PROP_IS_SET(&cfg, device, epon_8021_as_tod_format) && !BCMOLT_CFG_PROP_IS_SET(&cfg, device, epon_shaper_mode) && !BCMOLT_CFG_PROP_IS_SET(&cfg, device, embedded_image_list) && !BCMOLT_CFG_PROP_IS_SET(&cfg, device, chip_voltage) && !BCMOLT_CFG_PROP_IS_SET(&cfg, device, epon_tod_string) && !BCMOLT_CFG_PROP_IS_SET(&cfg, device, xgpon_num_of_onus) && !BCMOLT_CFG_PROP_IS_SET(&cfg, device, device_ip_address) && !BCMOLT_CFG_PROP_IS_SET(&cfg, device, device_udp_port) && !BCMOLT_CFG_PROP_IS_SET(&cfg, device, tod_uart_baudrate) && !BCMOLT_CFG_PROP_IS_SET(&cfg, device, gpon_xgpon_tod_string_length))
+    {
+        BCMOLT_CFG_PROP_GET(&cfg, device, all_properties);
+        bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, device, all_properties);\n");
+    }
+
+    /* set memory to use for variable-sized lists */
+    list_mem = apicli_byte_pool_calloc(byte_pool, APICLI_DYNAMIC_LIST_BUFFER_SIZE);
+    if (list_mem == NULL)
+    {
+        apicli_print_complete(session, BCM_ERR_NOMEM, "\n");
+        return BCM_ERR_NOMEM;
+    }
+
+    bcmcli_log("list_mem = bcmos_calloc(APICLI_DYNAMIC_LIST_BUFFER_SIZE);\n");
+    BCMOLT_CFG_LIST_BUF_SET(&cfg, device, list_mem, APICLI_DYNAMIC_LIST_BUFFER_SIZE);
+    bcmcli_log("BCMOLT_CFG_LIST_BUF_SET(&cfg, device, list_mem, APICLI_DYNAMIC_LIST_BUFFER_SIZE);\n");
+
+    /* call API */
+    err = bcmolt_cfg_get(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_get(device_id, &cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_device_cfg_set(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_device_cfg cfg;          /**< declare main API struct */
+    bcmolt_device_key key = { };    /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_device_cfg cfg;\n");
+    bcmcli_log("bcmolt_device_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_set");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, device, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, device, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "system_mode");
+    if (cli_parm != NULL)
+    {
+        bcmolt_system_mode val;
+        val = (bcmolt_system_mode) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, device, system_mode, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, device, system_mode, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_DEVICE_CFG_ID_SYSTEM_MODE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "keepalive_interval");
+    if (cli_parm != NULL)
+    {
+        uint32_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, device, keepalive_interval, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, device, keepalive_interval, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_DEVICE_CFG_ID_KEEPALIVE_INTERVAL, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "keepalive_tolerance");
+    if (cli_parm != NULL)
+    {
+        uint32_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, device, keepalive_tolerance, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, device, keepalive_tolerance, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_DEVICE_CFG_ID_KEEPALIVE_TOLERANCE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "debug.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_debug_device_cfg val = { };
+        cli_parm = bcmcli_find_named_parm(session, "debug.host_dma_rx_queue_size");
+        if (cli_parm != NULL)
+        {
+            val.host_dma_rx_queue_size = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "debug.host_dma_rx_queue_size is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "debug.host_dma_tx_queue_size");
+        if (cli_parm != NULL)
+        {
+            val.host_dma_tx_queue_size = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "debug.host_dma_tx_queue_size is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "debug.avs_control");
+        if (cli_parm != NULL)
+        {
+            val.avs_control = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "debug.avs_control is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "debug.use_prev_pon_serdes_firmware");
+        if (cli_parm != NULL)
+        {
+            val.use_prev_pon_serdes_firmware = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "debug.use_prev_pon_serdes_firmware is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "debug.use_prev_nni_serdes_firmware");
+        if (cli_parm != NULL)
+        {
+            val.use_prev_nni_serdes_firmware = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "debug.use_prev_nni_serdes_firmware is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, device, debug, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_debug_device_cfg val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_DEVICE_CFG_ID_DEBUG, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, device, debug, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "nni_speed.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_device_nni_speed val = { };
+        cli_parm = bcmcli_find_named_parm(session, "nni_speed.first_half");
+        if (cli_parm != NULL)
+        {
+            val.first_half = (bcmolt_nni_speed) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "nni_speed.first_half is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "nni_speed.second_half");
+        if (cli_parm != NULL)
+        {
+            val.second_half = (bcmolt_nni_speed) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "nni_speed.second_half is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, device, nni_speed, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_device_nni_speed val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_DEVICE_CFG_ID_NNI_SPEED, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, device, nni_speed, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "protection_switching_ext_irq");
+    if (cli_parm != NULL)
+    {
+        bcmolt_ext_irq val;
+        val = (bcmolt_ext_irq) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, device, protection_switching_ext_irq, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, device, protection_switching_ext_irq, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_DEVICE_CFG_ID_PROTECTION_SWITCHING_EXT_IRQ, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "epon_clock_transport_sample_delay");
+    if (cli_parm != NULL)
+    {
+        uint32_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, device, epon_clock_transport_sample_delay, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, device, epon_clock_transport_sample_delay, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_DEVICE_CFG_ID_EPON_CLOCK_TRANSPORT_SAMPLE_DELAY, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "indication_shaping.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_indication_shaping val = { };
+        cli_parm = bcmcli_find_named_parm(session, "indication_shaping.enabled");
+        if (cli_parm != NULL)
+        {
+            val.enabled = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "indication_shaping.enabled is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "indication_shaping.max_rate");
+        if (cli_parm != NULL)
+        {
+            val.max_rate = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "indication_shaping.max_rate is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "indication_shaping.max_burst");
+        if (cli_parm != NULL)
+        {
+            val.max_burst = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "indication_shaping.max_burst is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, device, indication_shaping, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_indication_shaping val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_DEVICE_CFG_ID_INDICATION_SHAPING, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, device, indication_shaping, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "gpon_xgpon_tod_enable");
+    if (cli_parm != NULL)
+    {
+        bcmolt_control_state val;
+        val = (bcmolt_control_state) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, device, gpon_xgpon_tod_enable, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, device, gpon_xgpon_tod_enable, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_DEVICE_CFG_ID_GPON_XGPON_TOD_ENABLE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "gpon_xgpon_tod_gpio_pin");
+    if (cli_parm != NULL)
+    {
+        bcmolt_gpio_pin val;
+        val = (bcmolt_gpio_pin) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, device, gpon_xgpon_tod_gpio_pin, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, device, gpon_xgpon_tod_gpio_pin, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_DEVICE_CFG_ID_GPON_XGPON_TOD_GPIO_PIN, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "gpon_xgpon_tod_connected_internally");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, device, gpon_xgpon_tod_connected_internally, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, device, gpon_xgpon_tod_connected_internally, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_DEVICE_CFG_ID_GPON_XGPON_TOD_CONNECTED_INTERNALLY, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "epon_8021_as_tod_format.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_str_256 val = { };
+        cli_parm = bcmcli_find_named_parm(session, "epon_8021_as_tod_format.str");
+        if (cli_parm != NULL)
+        {
+            snprintf(val.str, 256, "%s", cli_parm->value.string);
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "epon_8021_as_tod_format.str is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, device, epon_8021_as_tod_format, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_str_256 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_DEVICE_CFG_ID_EPON_8021_AS_TOD_FORMAT, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, device, epon_8021_as_tod_format, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "epon_shaper_mode");
+    if (cli_parm != NULL)
+    {
+        bcmolt_shaper_mode val;
+        val = (bcmolt_shaper_mode) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, device, epon_shaper_mode, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, device, epon_shaper_mode, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_DEVICE_CFG_ID_EPON_SHAPER_MODE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "epon_tod_string.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_str_256 val = { };
+        cli_parm = bcmcli_find_named_parm(session, "epon_tod_string.str");
+        if (cli_parm != NULL)
+        {
+            snprintf(val.str, 256, "%s", cli_parm->value.string);
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "epon_tod_string.str is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, device, epon_tod_string, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_str_256 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_DEVICE_CFG_ID_EPON_TOD_STRING, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, device, epon_tod_string, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "xgpon_num_of_onus");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_num_of_onus val;
+        val = (bcmolt_xgpon_num_of_onus) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, device, xgpon_num_of_onus, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, device, xgpon_num_of_onus, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_DEVICE_CFG_ID_XGPON_NUM_OF_ONUS, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "device_ip_address");
+    if (cli_parm != NULL)
+    {
+        bcmos_ipv4_address val;
+        val = apicli_unumber_to_ipv4(cli_parm->value.unumber);
+        BCMOLT_CFG_PROP_SET(&cfg, device, device_ip_address, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, device, device_ip_address, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_DEVICE_CFG_ID_DEVICE_IP_ADDRESS, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "device_udp_port");
+    if (cli_parm != NULL)
+    {
+        uint16_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, device, device_udp_port, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, device, device_udp_port, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_DEVICE_CFG_ID_DEVICE_UDP_PORT, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tod_uart_baudrate");
+    if (cli_parm != NULL)
+    {
+        bcmolt_uart_baudrate val;
+        val = (bcmolt_uart_baudrate) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, device, tod_uart_baudrate, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, device, tod_uart_baudrate, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_DEVICE_CFG_ID_TOD_UART_BAUDRATE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "gpon_xgpon_tod_string_length");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, device, gpon_xgpon_tod_string_length, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, device, gpon_xgpon_tod_string_length, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_DEVICE_CFG_ID_GPON_XGPON_TOD_STRING_LENGTH, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_set(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_set(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_device_cfg_clear(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmos_errno err;
+    bcmolt_device_cfg cfg;          /**< declare main API struct */
+    bcmolt_device_key key = { };    /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_device_cfg cfg;\n");
+    bcmcli_log("bcmolt_device_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_clear");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, device, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, device, key);\n");
+
+    /* call API */
+    err = bcmolt_cfg_clear(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_clear(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_device_cfg_get_multi(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_device_cfg cfg;          /**< declare main API struct */
+    bcmolt_device_key key = { };    /**< declare key */
+    bcmolt_msg_set *msg_set = NULL; /**< declare message set */
+    uint32_t max_msgs;              /**< declare max number of msgs to get */
+    bcmos_bool invert_filter;       /**< declare filter invert flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_device_cfg cfg;\n");
+    bcmcli_log("bcmolt_device_key key = {  };\n");
+    bcmcli_log("bcmolt_msg_set* msg_set = NULL;\n");
+    bcmcli_log("uint32_t max_msgs;\n");
+    bcmcli_log("bcmos_bool invert_filter;\n");
+    apicli_print_start(session, "bcmolt_cfg_get_multi");
+
+    /* set max number of msgs from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "max_msgs");
+    if (cli_parm != NULL)
+    {
+        max_msgs = cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "max_msgs is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("max_msgs = %d;\n", max_msgs);
+
+    /* set filter invert flag from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "filter_invert");
+    if (cli_parm != NULL)
+    {
+        invert_filter = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "filter_invert is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("invert_filter = %s;\n", (invert_filter) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* allocate message set */
+    err = apicli_msg_set_alloc(byte_pool, BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);
+    if (err != BCM_ERR_OK)
+    {
+        return err;
+    }
+
+    bcmcli_log("bcmolt_msg_set_alloc(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, device, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, device, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "filter.system_mode");
+    if (cli_parm != NULL)
+    {
+        bcmolt_system_mode val;
+        val = (bcmolt_system_mode) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, device, system_mode, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, device, system_mode, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_DEVICE_CFG_ID_SYSTEM_MODE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "system_mode");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, device, system_mode);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, device, system_mode);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.keepalive_interval");
+    if (cli_parm != NULL)
+    {
+        uint32_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, device, keepalive_interval, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, device, keepalive_interval, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_DEVICE_CFG_ID_KEEPALIVE_INTERVAL, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "keepalive_interval");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, device, keepalive_interval);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, device, keepalive_interval);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.keepalive_tolerance");
+    if (cli_parm != NULL)
+    {
+        uint32_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, device, keepalive_tolerance, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, device, keepalive_tolerance, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_DEVICE_CFG_ID_KEEPALIVE_TOLERANCE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "keepalive_tolerance");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, device, keepalive_tolerance);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, device, keepalive_tolerance);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.firmware_sw_version.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_firmware_sw_version val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.firmware_sw_version.major");
+        if (cli_parm != NULL)
+        {
+            val.major = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.firmware_sw_version.major is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.firmware_sw_version.minor");
+        if (cli_parm != NULL)
+        {
+            val.minor = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.firmware_sw_version.minor is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.firmware_sw_version.revision");
+        if (cli_parm != NULL)
+        {
+            val.revision = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.firmware_sw_version.revision is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.firmware_sw_version.model");
+        if (cli_parm != NULL)
+        {
+            val.model = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.firmware_sw_version.model is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.firmware_sw_version.build_time");
+        if (cli_parm != NULL)
+        {
+            snprintf(val.build_time, 32, "%s", cli_parm->value.string);
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.firmware_sw_version.build_time is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, device, firmware_sw_version, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_firmware_sw_version val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_DEVICE_CFG_ID_FIRMWARE_SW_VERSION, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, device, firmware_sw_version, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "firmware_sw_version");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, device, firmware_sw_version);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, device, firmware_sw_version);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.host_sw_version.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_host_sw_version val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.host_sw_version.major");
+        if (cli_parm != NULL)
+        {
+            val.major = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.host_sw_version.major is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.host_sw_version.minor");
+        if (cli_parm != NULL)
+        {
+            val.minor = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.host_sw_version.minor is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.host_sw_version.revision");
+        if (cli_parm != NULL)
+        {
+            val.revision = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.host_sw_version.revision is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.host_sw_version.model");
+        if (cli_parm != NULL)
+        {
+            val.model = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.host_sw_version.model is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.host_sw_version.build_time");
+        if (cli_parm != NULL)
+        {
+            snprintf(val.build_time, 32, "%s", cli_parm->value.string);
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.host_sw_version.build_time is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, device, host_sw_version, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_host_sw_version val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_DEVICE_CFG_ID_HOST_SW_VERSION, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, device, host_sw_version, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "host_sw_version");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, device, host_sw_version);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, device, host_sw_version);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.chip_revision");
+    if (cli_parm != NULL)
+    {
+        bcmolt_device_chip_revision val;
+        val = (bcmolt_device_chip_revision) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, device, chip_revision, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, device, chip_revision, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_DEVICE_CFG_ID_CHIP_REVISION, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "chip_revision");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, device, chip_revision);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, device, chip_revision);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.state");
+    if (cli_parm != NULL)
+    {
+        bcmolt_device_state val;
+        val = (bcmolt_device_state) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, device, state, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, device, state, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_DEVICE_CFG_ID_STATE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "state");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, device, state);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, device, state);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.debug.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_debug_device_cfg val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.debug.host_dma_rx_queue_size");
+        if (cli_parm != NULL)
+        {
+            val.host_dma_rx_queue_size = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.debug.host_dma_rx_queue_size is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.debug.host_dma_tx_queue_size");
+        if (cli_parm != NULL)
+        {
+            val.host_dma_tx_queue_size = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.debug.host_dma_tx_queue_size is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.debug.avs_control");
+        if (cli_parm != NULL)
+        {
+            val.avs_control = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.debug.avs_control is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.debug.use_prev_pon_serdes_firmware");
+        if (cli_parm != NULL)
+        {
+            val.use_prev_pon_serdes_firmware = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.debug.use_prev_pon_serdes_firmware is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.debug.use_prev_nni_serdes_firmware");
+        if (cli_parm != NULL)
+        {
+            val.use_prev_nni_serdes_firmware = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.debug.use_prev_nni_serdes_firmware is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, device, debug, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_debug_device_cfg val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_DEVICE_CFG_ID_DEBUG, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, device, debug, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "debug");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, device, debug);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, device, debug);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.nni_speed.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_device_nni_speed val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.nni_speed.first_half");
+        if (cli_parm != NULL)
+        {
+            val.first_half = (bcmolt_nni_speed) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.nni_speed.first_half is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.nni_speed.second_half");
+        if (cli_parm != NULL)
+        {
+            val.second_half = (bcmolt_nni_speed) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.nni_speed.second_half is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, device, nni_speed, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_device_nni_speed val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_DEVICE_CFG_ID_NNI_SPEED, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, device, nni_speed, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "nni_speed");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, device, nni_speed);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, device, nni_speed);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.protection_switching_ext_irq");
+    if (cli_parm != NULL)
+    {
+        bcmolt_ext_irq val;
+        val = (bcmolt_ext_irq) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, device, protection_switching_ext_irq, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, device, protection_switching_ext_irq, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_DEVICE_CFG_ID_PROTECTION_SWITCHING_EXT_IRQ, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "protection_switching_ext_irq");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, device, protection_switching_ext_irq);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, device, protection_switching_ext_irq);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.epon_clock_transport_sample_delay");
+    if (cli_parm != NULL)
+    {
+        uint32_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, device, epon_clock_transport_sample_delay, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, device, epon_clock_transport_sample_delay, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_DEVICE_CFG_ID_EPON_CLOCK_TRANSPORT_SAMPLE_DELAY, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "epon_clock_transport_sample_delay");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, device, epon_clock_transport_sample_delay);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, device, epon_clock_transport_sample_delay);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.indication_shaping.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_indication_shaping val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.indication_shaping.enabled");
+        if (cli_parm != NULL)
+        {
+            val.enabled = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.indication_shaping.enabled is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.indication_shaping.max_rate");
+        if (cli_parm != NULL)
+        {
+            val.max_rate = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.indication_shaping.max_rate is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.indication_shaping.max_burst");
+        if (cli_parm != NULL)
+        {
+            val.max_burst = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.indication_shaping.max_burst is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, device, indication_shaping, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_indication_shaping val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_DEVICE_CFG_ID_INDICATION_SHAPING, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, device, indication_shaping, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "indication_shaping");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, device, indication_shaping);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, device, indication_shaping);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.chip_temperature");
+    if (cli_parm != NULL)
+    {
+        uint32_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, device, chip_temperature, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, device, chip_temperature, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_DEVICE_CFG_ID_CHIP_TEMPERATURE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "chip_temperature");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, device, chip_temperature);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, device, chip_temperature);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.gpon_xgpon_tod_enable");
+    if (cli_parm != NULL)
+    {
+        bcmolt_control_state val;
+        val = (bcmolt_control_state) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, device, gpon_xgpon_tod_enable, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, device, gpon_xgpon_tod_enable, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_DEVICE_CFG_ID_GPON_XGPON_TOD_ENABLE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "gpon_xgpon_tod_enable");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, device, gpon_xgpon_tod_enable);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, device, gpon_xgpon_tod_enable);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.gpon_xgpon_tod_gpio_pin");
+    if (cli_parm != NULL)
+    {
+        bcmolt_gpio_pin val;
+        val = (bcmolt_gpio_pin) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, device, gpon_xgpon_tod_gpio_pin, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, device, gpon_xgpon_tod_gpio_pin, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_DEVICE_CFG_ID_GPON_XGPON_TOD_GPIO_PIN, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "gpon_xgpon_tod_gpio_pin");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, device, gpon_xgpon_tod_gpio_pin);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, device, gpon_xgpon_tod_gpio_pin);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.gpon_xgpon_tod_connected_internally");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, device, gpon_xgpon_tod_connected_internally, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, device, gpon_xgpon_tod_connected_internally, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_DEVICE_CFG_ID_GPON_XGPON_TOD_CONNECTED_INTERNALLY, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "gpon_xgpon_tod_connected_internally");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, device, gpon_xgpon_tod_connected_internally);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, device, gpon_xgpon_tod_connected_internally);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.epon_8021_as_tod_format.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_str_256 val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.epon_8021_as_tod_format.str");
+        if (cli_parm != NULL)
+        {
+            snprintf(val.str, 256, "%s", cli_parm->value.string);
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.epon_8021_as_tod_format.str is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, device, epon_8021_as_tod_format, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_str_256 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_DEVICE_CFG_ID_EPON_8021_AS_TOD_FORMAT, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, device, epon_8021_as_tod_format, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "epon_8021_as_tod_format");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, device, epon_8021_as_tod_format);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, device, epon_8021_as_tod_format);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.epon_shaper_mode");
+    if (cli_parm != NULL)
+    {
+        bcmolt_shaper_mode val;
+        val = (bcmolt_shaper_mode) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, device, epon_shaper_mode, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, device, epon_shaper_mode, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_DEVICE_CFG_ID_EPON_SHAPER_MODE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "epon_shaper_mode");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, device, epon_shaper_mode);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, device, epon_shaper_mode);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.embedded_image_list.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_embedded_image_entry_list_u8 val = { };
+        int32_t i0;
+        val.val = apicli_byte_pool_calloc(byte_pool, cli_parm->array_size * sizeof(*val.val));
+        if (val.val == NULL)
+        {
+            apicli_print_complete(session, BCM_ERR_NOMEM, "\n");
+            return BCM_ERR_NOMEM;
+        }
+
+        val.len = cli_parm->array_size;
+        cli_parm = bcmcli_find_named_parm(session, "filter.embedded_image_list.image_type");
+        if (cli_parm != NULL)
+        {
+            if (cli_parm->array_size != val.len)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.embedded_image_list.image_type is a different size than other arrays in the struct\n");
+                return BCM_ERR_PARM;
+            }
+
+            for (i0 = 0; i0 < val.len; i0++)
+            {
+                val.val[i0].image_type = (bcmolt_device_image_type) cli_parm->values[i0].enum_val;
+            }
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.embedded_image_list.image_size");
+        if (cli_parm != NULL)
+        {
+            if (cli_parm->array_size != val.len)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.embedded_image_list.image_size is a different size than other arrays in the struct\n");
+                return BCM_ERR_PARM;
+            }
+
+            for (i0 = 0; i0 < val.len; i0++)
+            {
+                val.val[i0].image_size = cli_parm->values[i0].unumber;
+            }
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.embedded_image_list.crc32");
+        if (cli_parm != NULL)
+        {
+            if (cli_parm->array_size != val.len)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.embedded_image_list.crc32 is a different size than other arrays in the struct\n");
+                return BCM_ERR_PARM;
+            }
+
+            for (i0 = 0; i0 < val.len; i0++)
+            {
+                val.val[i0].crc32 = cli_parm->values[i0].unumber;
+            }
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.embedded_image_list.status");
+        if (cli_parm != NULL)
+        {
+            if (cli_parm->array_size != val.len)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.embedded_image_list.status is a different size than other arrays in the struct\n");
+                return BCM_ERR_PARM;
+            }
+
+            for (i0 = 0; i0 < val.len; i0++)
+            {
+                val.val[i0].status = (bcmolt_embedded_image_transfer_status) cli_parm->values[i0].enum_val;
+            }
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.embedded_image_list.image_name");
+        if (cli_parm != NULL)
+        {
+            if (cli_parm->array_size != val.len)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.embedded_image_list.image_name is a different size than other arrays in the struct\n");
+                return BCM_ERR_PARM;
+            }
+
+            for (i0 = 0; i0 < val.len; i0++)
+            {
+                snprintf(val.val[i0].image_name, 64, "%s", cli_parm->values[i0].string);
+            }
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, device, embedded_image_list, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_embedded_image_entry_list_u8 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_DEVICE_CFG_ID_EMBEDDED_IMAGE_LIST, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, device, embedded_image_list, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "embedded_image_list");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, device, embedded_image_list);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, device, embedded_image_list);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.chip_voltage");
+    if (cli_parm != NULL)
+    {
+        uint32_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, device, chip_voltage, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, device, chip_voltage, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_DEVICE_CFG_ID_CHIP_VOLTAGE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "chip_voltage");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, device, chip_voltage);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, device, chip_voltage);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.epon_tod_string.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_str_256 val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.epon_tod_string.str");
+        if (cli_parm != NULL)
+        {
+            snprintf(val.str, 256, "%s", cli_parm->value.string);
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.epon_tod_string.str is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, device, epon_tod_string, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_str_256 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_DEVICE_CFG_ID_EPON_TOD_STRING, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, device, epon_tod_string, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "epon_tod_string");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, device, epon_tod_string);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, device, epon_tod_string);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.xgpon_num_of_onus");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_num_of_onus val;
+        val = (bcmolt_xgpon_num_of_onus) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, device, xgpon_num_of_onus, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, device, xgpon_num_of_onus, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_DEVICE_CFG_ID_XGPON_NUM_OF_ONUS, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "xgpon_num_of_onus");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, device, xgpon_num_of_onus);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, device, xgpon_num_of_onus);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.device_ip_address");
+    if (cli_parm != NULL)
+    {
+        bcmos_ipv4_address val;
+        val = apicli_unumber_to_ipv4(cli_parm->value.unumber);
+        BCMOLT_CFG_PROP_SET(&cfg, device, device_ip_address, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, device, device_ip_address, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_DEVICE_CFG_ID_DEVICE_IP_ADDRESS, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "device_ip_address");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, device, device_ip_address);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, device, device_ip_address);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.device_udp_port");
+    if (cli_parm != NULL)
+    {
+        uint16_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, device, device_udp_port, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, device, device_udp_port, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_DEVICE_CFG_ID_DEVICE_UDP_PORT, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "device_udp_port");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, device, device_udp_port);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, device, device_udp_port);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.tod_uart_baudrate");
+    if (cli_parm != NULL)
+    {
+        bcmolt_uart_baudrate val;
+        val = (bcmolt_uart_baudrate) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, device, tod_uart_baudrate, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, device, tod_uart_baudrate, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_DEVICE_CFG_ID_TOD_UART_BAUDRATE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tod_uart_baudrate");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, device, tod_uart_baudrate);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, device, tod_uart_baudrate);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.gpon_xgpon_tod_string_length");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, device, gpon_xgpon_tod_string_length, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, device, gpon_xgpon_tod_string_length, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_DEVICE_CFG_ID_GPON_XGPON_TOD_STRING_LENGTH, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "gpon_xgpon_tod_string_length");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, device, gpon_xgpon_tod_string_length);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, device, gpon_xgpon_tod_string_length);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, device, system_mode) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, device, keepalive_interval) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, device, keepalive_tolerance) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, device, firmware_sw_version) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, device, host_sw_version) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, device, chip_revision) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, device, state) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, device, debug) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, device, nni_speed) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, device, protection_switching_ext_irq) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, device, epon_clock_transport_sample_delay) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, device, indication_shaping) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, device, chip_temperature) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, device, gpon_xgpon_tod_enable) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, device, gpon_xgpon_tod_gpio_pin) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, device, gpon_xgpon_tod_connected_internally) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, device, epon_8021_as_tod_format) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, device, epon_shaper_mode) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, device, embedded_image_list) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, device, chip_voltage) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, device, epon_tod_string) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, device, xgpon_num_of_onus) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, device, device_ip_address) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, device, device_udp_port) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, device, tod_uart_baudrate) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, device, gpon_xgpon_tod_string_length))
+    {
+        BCMOLT_MSGSET_CFG_PROP_GET(msg_set, device, all_properties);
+        bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, device, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);
+    bcmcli_log("bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_device_oper_connect_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmos_errno err;
+    bcmolt_device_connect oper;     /**< declare main API struct */
+    bcmolt_device_key key = { };    /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_device_connect oper;\n");
+    bcmcli_log("bcmolt_device_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, device, connect, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, device, connect, key);\n");
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_device_oper_disconnect_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmos_errno err;
+    bcmolt_device_disconnect oper;  /**< declare main API struct */
+    bcmolt_device_key key = { };    /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_device_disconnect oper;\n");
+    bcmcli_log("bcmolt_device_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, device, disconnect, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, device, disconnect, key);\n");
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_device_oper_reset_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_device_reset oper;       /**< declare main API struct */
+    bcmolt_device_key key = { };    /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_device_reset oper;\n");
+    bcmcli_log("bcmolt_device_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, device, reset, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, device, reset, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "mode");
+    if (cli_parm != NULL)
+    {
+        bcmolt_device_reset_mode val;
+        val = (bcmolt_device_reset_mode) cli_parm->value.enum_val;
+        BCMOLT_OPER_PROP_SET(&oper, device, reset, mode, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, device, reset, mode, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_OPER, BCMOLT_DEVICE_OPER_ID_RESET, BCMOLT_DEVICE_RESET_ID_MODE, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_device_oper_host_keep_alive_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_device_host_keep_alive oper; /**< declare main API struct */
+    bcmolt_device_key key = { };        /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_device_host_keep_alive oper;\n");
+    bcmcli_log("bcmolt_device_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, device, host_keep_alive, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, device, host_keep_alive, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "sequence_number");
+    if (cli_parm != NULL)
+    {
+        uint32_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_OPER_PROP_SET(&oper, device, host_keep_alive, sequence_number, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, device, host_keep_alive, sequence_number, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_OPER, BCMOLT_DEVICE_OPER_ID_HOST_KEEP_ALIVE, BCMOLT_DEVICE_HOST_KEEP_ALIVE_ID_SEQUENCE_NUMBER, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "time_stamp");
+    if (cli_parm != NULL)
+    {
+        uint32_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_OPER_PROP_SET(&oper, device, host_keep_alive, time_stamp, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, device, host_keep_alive, time_stamp, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_OPER, BCMOLT_DEVICE_OPER_ID_HOST_KEEP_ALIVE, BCMOLT_DEVICE_HOST_KEEP_ALIVE_ID_TIME_STAMP, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_device_oper_sw_upgrade_activate_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmos_errno err;
+    bcmolt_device_sw_upgrade_activate oper; /**< declare main API struct */
+    bcmolt_device_key key = { };            /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_device_sw_upgrade_activate oper;\n");
+    bcmcli_log("bcmolt_device_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, device, sw_upgrade_activate, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, device, sw_upgrade_activate, key);\n");
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_device_oper_image_transfer_start_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_device_image_transfer_start oper;    /**< declare main API struct */
+    bcmolt_device_key key = { };                /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_device_image_transfer_start oper;\n");
+    bcmcli_log("bcmolt_device_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, device, image_transfer_start, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, device, image_transfer_start, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "image_type");
+    if (cli_parm != NULL)
+    {
+        bcmolt_device_image_type val;
+        val = (bcmolt_device_image_type) cli_parm->value.enum_val;
+        BCMOLT_OPER_PROP_SET(&oper, device, image_transfer_start, image_type, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, device, image_transfer_start, image_type, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_OPER, BCMOLT_DEVICE_OPER_ID_IMAGE_TRANSFER_START, BCMOLT_DEVICE_IMAGE_TRANSFER_START_ID_IMAGE_TYPE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "image_size");
+    if (cli_parm != NULL)
+    {
+        uint32_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_OPER_PROP_SET(&oper, device, image_transfer_start, image_size, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, device, image_transfer_start, image_size, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_OPER, BCMOLT_DEVICE_OPER_ID_IMAGE_TRANSFER_START, BCMOLT_DEVICE_IMAGE_TRANSFER_START_ID_IMAGE_SIZE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "crc32");
+    if (cli_parm != NULL)
+    {
+        uint32_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_OPER_PROP_SET(&oper, device, image_transfer_start, crc32, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, device, image_transfer_start, crc32, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_OPER, BCMOLT_DEVICE_OPER_ID_IMAGE_TRANSFER_START, BCMOLT_DEVICE_IMAGE_TRANSFER_START_ID_CRC32, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "image_name.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_str_64 val = { };
+        cli_parm = bcmcli_find_named_parm(session, "image_name.str");
+        if (cli_parm != NULL)
+        {
+            snprintf(val.str, 64, "%s", cli_parm->value.string);
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "image_name.str is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_OPER_PROP_SET(&oper, device, image_transfer_start, image_name, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_str_64 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_OPER, BCMOLT_DEVICE_OPER_ID_IMAGE_TRANSFER_START, BCMOLT_DEVICE_IMAGE_TRANSFER_START_ID_IMAGE_NAME, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, device, image_transfer_start, image_name, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_device_oper_image_transfer_data_submit(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_device_image_transfer_data oper; /**< declare main API struct */
+    bcmolt_device_key key = { };            /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_device_image_transfer_data oper;\n");
+    bcmcli_log("bcmolt_device_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, device, image_transfer_data, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, device, image_transfer_data, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "block_number");
+    if (cli_parm != NULL)
+    {
+        uint32_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_OPER_PROP_SET(&oper, device, image_transfer_data, block_number, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, device, image_transfer_data, block_number, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_OPER, BCMOLT_DEVICE_OPER_ID_IMAGE_TRANSFER_DATA, BCMOLT_DEVICE_IMAGE_TRANSFER_DATA_ID_BLOCK_NUMBER, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "more_data");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_OPER_PROP_SET(&oper, device, image_transfer_data, more_data, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, device, image_transfer_data, more_data, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_OPER, BCMOLT_DEVICE_OPER_ID_IMAGE_TRANSFER_DATA, BCMOLT_DEVICE_IMAGE_TRANSFER_DATA_ID_MORE_DATA, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "data");
+    if (cli_parm != NULL)
+    {
+        bcmolt_u8_list_u16_hex val = { };
+        val.len = bcmolt_buf_get_used(&cli_parm->value.buffer);
+        val.val = apicli_byte_pool_calloc(byte_pool, val.len);
+        if (val.val == NULL)
+        {
+            apicli_print_complete(session, BCM_ERR_NOMEM, "\n");
+            return BCM_ERR_NOMEM;
+        }
+
+        bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+        bcmolt_buf_read(&cli_parm->value.buffer, val.val, val.len);
+        BCMOLT_OPER_PROP_SET(&oper, device, image_transfer_data, data, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_u8_list_u16_hex val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_OPER, BCMOLT_DEVICE_OPER_ID_IMAGE_TRANSFER_DATA, BCMOLT_DEVICE_IMAGE_TRANSFER_DATA_ID_DATA, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, device, image_transfer_data, data, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_device_oper_run_ddr_test_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_device_run_ddr_test oper;    /**< declare main API struct */
+    bcmolt_device_key key = { };        /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_device_run_ddr_test oper;\n");
+    bcmcli_log("bcmolt_device_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, device, run_ddr_test, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, device, run_ddr_test, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "cpu");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_OPER_PROP_SET(&oper, device, run_ddr_test, cpu, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, device, run_ddr_test, cpu, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_OPER, BCMOLT_DEVICE_OPER_ID_RUN_DDR_TEST, BCMOLT_DEVICE_RUN_DDR_TEST_ID_CPU, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ras_0");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_OPER_PROP_SET(&oper, device, run_ddr_test, ras_0, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, device, run_ddr_test, ras_0, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_OPER, BCMOLT_DEVICE_OPER_ID_RUN_DDR_TEST, BCMOLT_DEVICE_RUN_DDR_TEST_ID_RAS_0, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ras_1");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_OPER_PROP_SET(&oper, device, run_ddr_test, ras_1, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, device, run_ddr_test, ras_1, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_OPER, BCMOLT_DEVICE_OPER_ID_RUN_DDR_TEST, BCMOLT_DEVICE_RUN_DDR_TEST_ID_RAS_1, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_device_auto_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_device_auto_cfg auto_cfg;    /**< declare main API struct */
+    bcmolt_device_key key = { };        /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_device_auto_cfg auto_cfg;\n");
+    bcmcli_log("bcmolt_device_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_auto_cfg_get");
+
+    /* init the API struct */
+    BCMOLT_AUTO_CFG_INIT(&auto_cfg, device, key);
+    bcmcli_log("BCMOLT_AUTO_CFG_INIT(&auto_cfg, device, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "connection_complete");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, device, connection_complete);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, device, connection_complete);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "connection_established");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, device, connection_established);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, device, connection_established);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "connection_failure");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, device, connection_failure);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, device, connection_failure);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ddr_test_complete");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, device, ddr_test_complete);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, device, ddr_test_complete);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "device_keep_alive");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, device, device_keep_alive);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, device, device_keep_alive);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "device_ready");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, device, device_ready);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, device, device_ready);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "disconnection_complete");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, device, disconnection_complete);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, device, disconnection_complete);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "image_transfer_complete");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, device, image_transfer_complete);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, device, image_transfer_complete);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "indications_dropped");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, device, indications_dropped);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, device, indications_dropped);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "sw_error");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, device, sw_error);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, device, sw_error);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "sw_exception");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, device, sw_exception);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, device, sw_exception);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, device, connection_complete) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, device, connection_established) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, device, connection_failure) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, device, ddr_test_complete) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, device, device_keep_alive) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, device, device_ready) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, device, disconnection_complete) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, device, image_transfer_complete) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, device, indications_dropped) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, device, sw_error) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, device, sw_exception))
+    {
+        BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, device, all_properties);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, device, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_auto_cfg_get(device_id, &auto_cfg.hdr);
+    bcmcli_log("bcmolt_auto_cfg_get(device_id, &auto_cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &auto_cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, auto_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_device_auto_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_device_auto_cfg auto_cfg;    /**< declare main API struct */
+    bcmolt_device_key key = { };        /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_device_auto_cfg auto_cfg;\n");
+    bcmcli_log("bcmolt_device_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_auto_cfg_set");
+
+    /* init the API struct */
+    BCMOLT_AUTO_CFG_INIT(&auto_cfg, device, key);
+    bcmcli_log("BCMOLT_AUTO_CFG_INIT(&auto_cfg, device, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "connection_complete");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, device, connection_complete, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, device, connection_complete, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_DEVICE_AUTO_CFG_ID_CONNECTION_COMPLETE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "connection_established");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, device, connection_established, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, device, connection_established, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_DEVICE_AUTO_CFG_ID_CONNECTION_ESTABLISHED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "connection_failure");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, device, connection_failure, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, device, connection_failure, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_DEVICE_AUTO_CFG_ID_CONNECTION_FAILURE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ddr_test_complete");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, device, ddr_test_complete, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, device, ddr_test_complete, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_DEVICE_AUTO_CFG_ID_DDR_TEST_COMPLETE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "device_keep_alive");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, device, device_keep_alive, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, device, device_keep_alive, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_DEVICE_AUTO_CFG_ID_DEVICE_KEEP_ALIVE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "device_ready");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, device, device_ready, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, device, device_ready, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_DEVICE_AUTO_CFG_ID_DEVICE_READY, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "disconnection_complete");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, device, disconnection_complete, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, device, disconnection_complete, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_DEVICE_AUTO_CFG_ID_DISCONNECTION_COMPLETE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "image_transfer_complete");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, device, image_transfer_complete, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, device, image_transfer_complete, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_DEVICE_AUTO_CFG_ID_IMAGE_TRANSFER_COMPLETE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "indications_dropped");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, device, indications_dropped, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, device, indications_dropped, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_DEVICE_AUTO_CFG_ID_INDICATIONS_DROPPED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "sw_error");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, device, sw_error, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, device, sw_error, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_DEVICE_AUTO_CFG_ID_SW_ERROR, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "sw_exception");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, device, sw_exception, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, device, sw_exception, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_DEVICE, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_DEVICE_AUTO_CFG_ID_SW_EXCEPTION, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_auto_cfg_set(device_id, &auto_cfg.hdr);
+    bcmcli_log("bcmolt_auto_cfg_set(device_id, &auto_cfg.hdr);\n");
+    apicli_print_complete(session, err, auto_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_denied_link_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_denied_link_cfg cfg;        /**< declare main API struct */
+    bcmolt_epon_denied_link_key key = { };  /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_denied_link_cfg cfg;\n");
+    bcmcli_log("bcmolt_epon_denied_link_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_DENIED_LINK, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_DENIED_LINK_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "mac_address");
+    if (cli_parm != NULL)
+    {
+        key.mac_address = cli_parm->value.mac;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "mac_address is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.mac_address = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_DENIED_LINK, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_DENIED_LINK_KEY_ID_MAC_ADDRESS, &key.mac_address);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, epon_denied_link, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, epon_denied_link, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "alarm_state");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_denied_link, alarm_state);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_denied_link, alarm_state);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_CFG_PROP_IS_SET(&cfg, epon_denied_link, alarm_state))
+    {
+        BCMOLT_CFG_PROP_GET(&cfg, epon_denied_link, all_properties);
+        bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_denied_link, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_get(device_id, &cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_denied_link_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_denied_link_cfg cfg;        /**< declare main API struct */
+    bcmolt_epon_denied_link_key key = { };  /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_denied_link_cfg cfg;\n");
+    bcmcli_log("bcmolt_epon_denied_link_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_DENIED_LINK, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_DENIED_LINK_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "mac_address");
+    if (cli_parm != NULL)
+    {
+        key.mac_address = cli_parm->value.mac;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "mac_address is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.mac_address = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_DENIED_LINK, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_DENIED_LINK_KEY_ID_MAC_ADDRESS, &key.mac_address);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, epon_denied_link, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, epon_denied_link, key);\n");
+
+    /* decode API parameters from CLI */
+
+    /* call API */
+    err = bcmolt_cfg_set(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_set(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_denied_link_cfg_clear(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_denied_link_cfg cfg;        /**< declare main API struct */
+    bcmolt_epon_denied_link_key key = { };  /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_denied_link_cfg cfg;\n");
+    bcmcli_log("bcmolt_epon_denied_link_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_clear");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_DENIED_LINK, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_DENIED_LINK_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "mac_address");
+    if (cli_parm != NULL)
+    {
+        key.mac_address = cli_parm->value.mac;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "mac_address is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.mac_address = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_DENIED_LINK, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_DENIED_LINK_KEY_ID_MAC_ADDRESS, &key.mac_address);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, epon_denied_link, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, epon_denied_link, key);\n");
+
+    /* call API */
+    err = bcmolt_cfg_clear(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_clear(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_denied_link_cfg_get_multi(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_denied_link_cfg cfg;        /**< declare main API struct */
+    bcmolt_epon_denied_link_key key = { };  /**< declare key */
+    bcmolt_msg_set *msg_set = NULL;         /**< declare message set */
+    uint32_t max_msgs;                      /**< declare max number of msgs to get */
+    bcmos_bool invert_filter;               /**< declare filter invert flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_denied_link_cfg cfg;\n");
+    bcmcli_log("bcmolt_epon_denied_link_key key = {  };\n");
+    bcmcli_log("bcmolt_msg_set* msg_set = NULL;\n");
+    bcmcli_log("uint32_t max_msgs;\n");
+    bcmcli_log("bcmos_bool invert_filter;\n");
+    apicli_print_start(session, "bcmolt_cfg_get_multi");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_DENIED_LINK, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_DENIED_LINK_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "mac_address");
+    if (cli_parm != NULL)
+    {
+        key.mac_address = cli_parm->value.mac;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "mac_address is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.mac_address = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_DENIED_LINK, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_DENIED_LINK_KEY_ID_MAC_ADDRESS, &key.mac_address);
+    bcmcli_log(";\n");
+
+    /* set max number of msgs from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "max_msgs");
+    if (cli_parm != NULL)
+    {
+        max_msgs = cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "max_msgs is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("max_msgs = %d;\n", max_msgs);
+
+    /* set filter invert flag from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "filter_invert");
+    if (cli_parm != NULL)
+    {
+        invert_filter = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "filter_invert is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("invert_filter = %s;\n", (invert_filter) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* allocate message set */
+    err = apicli_msg_set_alloc(byte_pool, BCMOLT_OBJ_ID_EPON_DENIED_LINK, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);
+    if (err != BCM_ERR_OK)
+    {
+        return err;
+    }
+
+    bcmcli_log("bcmolt_msg_set_alloc(BCMOLT_OBJ_ID_EPON_DENIED_LINK, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, epon_denied_link, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, epon_denied_link, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.alarm_state.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_epon_denied_link_alarm_state val = { };
+        cli_parm = bcmcli_find_parm_by_prefix(session, "filter.alarm_state.unknown_link_violation.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "filter.alarm_state.unknown_link_violation.link_rate");
+            if (cli_parm != NULL)
+            {
+                val.unknown_link_violation.link_rate = (bcmolt_epon_link_rate) cli_parm->value.enum_val;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.alarm_state.unknown_link_violation.link_rate is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.alarm_state.unknown_link_violation.alarm_status");
+            if (cli_parm != NULL)
+            {
+                val.unknown_link_violation.alarm_status = (bcmolt_status) cli_parm->value.enum_val;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.alarm_state.unknown_link_violation.alarm_status is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.alarm_state.unknown_link_violation is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.alarm_state.overhead_profile_violation");
+        if (cli_parm != NULL)
+        {
+            val.overhead_profile_violation = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.alarm_state.overhead_profile_violation is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.alarm_state.max_link_violation");
+        if (cli_parm != NULL)
+        {
+            val.max_link_violation = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.alarm_state.max_link_violation is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.alarm_state.llid_pool_empty_violation");
+        if (cli_parm != NULL)
+        {
+            val.llid_pool_empty_violation = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.alarm_state.llid_pool_empty_violation is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "filter.alarm_state.laser_on_off_violation.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "filter.alarm_state.laser_on_off_violation.laser_on_time");
+            if (cli_parm != NULL)
+            {
+                val.laser_on_off_violation.laser_on_time = (bcmolt_time_quanta) cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.alarm_state.laser_on_off_violation.laser_on_time is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.alarm_state.laser_on_off_violation.laser_off_time");
+            if (cli_parm != NULL)
+            {
+                val.laser_on_off_violation.laser_off_time = (bcmolt_time_quanta) cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.alarm_state.laser_on_off_violation.laser_off_time is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.alarm_state.laser_on_off_violation.alarm_status");
+            if (cli_parm != NULL)
+            {
+                val.laser_on_off_violation.alarm_status = (bcmolt_status) cli_parm->value.enum_val;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.alarm_state.laser_on_off_violation.alarm_status is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.alarm_state.laser_on_off_violation is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.alarm_state.system_resource_violation");
+        if (cli_parm != NULL)
+        {
+            val.system_resource_violation = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.alarm_state.system_resource_violation is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "filter.alarm_state.range_violation.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "filter.alarm_state.range_violation.range");
+            if (cli_parm != NULL)
+            {
+                val.range_violation.range = (bcmolt_time_quanta) cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.alarm_state.range_violation.range is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.alarm_state.range_violation.alarm_status");
+            if (cli_parm != NULL)
+            {
+                val.range_violation.alarm_status = (bcmolt_status) cli_parm->value.enum_val;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.alarm_state.range_violation.alarm_status is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.alarm_state.range_violation is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.alarm_state.tdm_channels_exhausted");
+        if (cli_parm != NULL)
+        {
+            val.tdm_channels_exhausted = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.alarm_state.tdm_channels_exhausted is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "filter.alarm_state.rogue_violation.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "filter.alarm_state.rogue_violation.denied_llid");
+            if (cli_parm != NULL)
+            {
+                val.rogue_violation.denied_llid = (bcmolt_epon_llid) cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.alarm_state.rogue_violation.denied_llid is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.alarm_state.rogue_violation.denied_range");
+            if (cli_parm != NULL)
+            {
+                val.rogue_violation.denied_range = (bcmolt_time_quanta) cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.alarm_state.rogue_violation.denied_range is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.alarm_state.rogue_violation.alarm_status");
+            if (cli_parm != NULL)
+            {
+                val.rogue_violation.alarm_status = (bcmolt_status) cli_parm->value.enum_val;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.alarm_state.rogue_violation.alarm_status is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.alarm_state.rogue_violation is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.alarm_state.upstream_bandwidth_violation");
+        if (cli_parm != NULL)
+        {
+            val.upstream_bandwidth_violation = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.alarm_state.upstream_bandwidth_violation is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, epon_denied_link, alarm_state, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_epon_denied_link_alarm_state val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_DENIED_LINK, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_DENIED_LINK_CFG_ID_ALARM_STATE, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_denied_link, alarm_state, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "alarm_state");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_denied_link, alarm_state);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_denied_link, alarm_state);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_denied_link, alarm_state))
+    {
+        BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_denied_link, all_properties);
+        bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_denied_link, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);
+    bcmcli_log("bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_denied_link_auto_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_denied_link_auto_cfg auto_cfg;  /**< declare main API struct */
+    bcmolt_epon_denied_link_key key = { };      /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_denied_link_auto_cfg auto_cfg;\n");
+    bcmcli_log("bcmolt_epon_denied_link_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_auto_cfg_get");
+
+    /* init the API struct */
+    BCMOLT_AUTO_CFG_INIT(&auto_cfg, epon_denied_link, key);
+    bcmcli_log("BCMOLT_AUTO_CFG_INIT(&auto_cfg, epon_denied_link, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "laser_on_off_violation");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_denied_link, laser_on_off_violation);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_denied_link, laser_on_off_violation);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "llid_pool_empty_violation");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_denied_link, llid_pool_empty_violation);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_denied_link, llid_pool_empty_violation);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "max_link_violation");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_denied_link, max_link_violation);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_denied_link, max_link_violation);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "overhead_profile_violation");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_denied_link, overhead_profile_violation);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_denied_link, overhead_profile_violation);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "range_violation");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_denied_link, range_violation);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_denied_link, range_violation);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rogue_violation");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_denied_link, rogue_violation);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_denied_link, rogue_violation);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "system_resource_violation");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_denied_link, system_resource_violation);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_denied_link, system_resource_violation);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tdm_channels_exhausted");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_denied_link, tdm_channels_exhausted);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_denied_link, tdm_channels_exhausted);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "unknown_link_violation");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_denied_link, unknown_link_violation);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_denied_link, unknown_link_violation);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "upstream_bandwidth_violation");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_denied_link, upstream_bandwidth_violation);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_denied_link, upstream_bandwidth_violation);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, epon_denied_link, laser_on_off_violation) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, epon_denied_link, llid_pool_empty_violation) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, epon_denied_link, max_link_violation) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, epon_denied_link, overhead_profile_violation) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, epon_denied_link, range_violation) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, epon_denied_link, rogue_violation) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, epon_denied_link, system_resource_violation) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, epon_denied_link, tdm_channels_exhausted) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, epon_denied_link, unknown_link_violation) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, epon_denied_link, upstream_bandwidth_violation))
+    {
+        BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_denied_link, all_properties);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_denied_link, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_auto_cfg_get(device_id, &auto_cfg.hdr);
+    bcmcli_log("bcmolt_auto_cfg_get(device_id, &auto_cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &auto_cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, auto_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_denied_link_auto_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_denied_link_auto_cfg auto_cfg;  /**< declare main API struct */
+    bcmolt_epon_denied_link_key key = { };      /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_denied_link_auto_cfg auto_cfg;\n");
+    bcmcli_log("bcmolt_epon_denied_link_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_auto_cfg_set");
+
+    /* init the API struct */
+    BCMOLT_AUTO_CFG_INIT(&auto_cfg, epon_denied_link, key);
+    bcmcli_log("BCMOLT_AUTO_CFG_INIT(&auto_cfg, epon_denied_link, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "laser_on_off_violation");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_denied_link, laser_on_off_violation, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_denied_link, laser_on_off_violation, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_DENIED_LINK, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_EPON_DENIED_LINK_AUTO_CFG_ID_LASER_ON_OFF_VIOLATION, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "llid_pool_empty_violation");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_denied_link, llid_pool_empty_violation, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_denied_link, llid_pool_empty_violation, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_DENIED_LINK, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_EPON_DENIED_LINK_AUTO_CFG_ID_LLID_POOL_EMPTY_VIOLATION, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "max_link_violation");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_denied_link, max_link_violation, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_denied_link, max_link_violation, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_DENIED_LINK, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_EPON_DENIED_LINK_AUTO_CFG_ID_MAX_LINK_VIOLATION, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "overhead_profile_violation");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_denied_link, overhead_profile_violation, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_denied_link, overhead_profile_violation, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_DENIED_LINK, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_EPON_DENIED_LINK_AUTO_CFG_ID_OVERHEAD_PROFILE_VIOLATION, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "range_violation");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_denied_link, range_violation, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_denied_link, range_violation, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_DENIED_LINK, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_EPON_DENIED_LINK_AUTO_CFG_ID_RANGE_VIOLATION, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rogue_violation");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_denied_link, rogue_violation, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_denied_link, rogue_violation, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_DENIED_LINK, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_EPON_DENIED_LINK_AUTO_CFG_ID_ROGUE_VIOLATION, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "system_resource_violation");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_denied_link, system_resource_violation, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_denied_link, system_resource_violation, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_DENIED_LINK, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_EPON_DENIED_LINK_AUTO_CFG_ID_SYSTEM_RESOURCE_VIOLATION, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tdm_channels_exhausted");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_denied_link, tdm_channels_exhausted, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_denied_link, tdm_channels_exhausted, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_DENIED_LINK, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_EPON_DENIED_LINK_AUTO_CFG_ID_TDM_CHANNELS_EXHAUSTED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "unknown_link_violation");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_denied_link, unknown_link_violation, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_denied_link, unknown_link_violation, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_DENIED_LINK, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_EPON_DENIED_LINK_AUTO_CFG_ID_UNKNOWN_LINK_VIOLATION, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "upstream_bandwidth_violation");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_denied_link, upstream_bandwidth_violation, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_denied_link, upstream_bandwidth_violation, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_DENIED_LINK, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_EPON_DENIED_LINK_AUTO_CFG_ID_UPSTREAM_BANDWIDTH_VIOLATION, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_auto_cfg_set(device_id, &auto_cfg.hdr);
+    bcmcli_log("bcmolt_auto_cfg_set(device_id, &auto_cfg.hdr);\n");
+    apicli_print_complete(session, err, auto_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_link_cfg_get(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_link_cfg cfg;       /**< declare main API struct */
+    bcmolt_epon_link_key key = { }; /**< declare key */
+    uint8_t *list_mem;              /**< declare memory buffer for variable-sized lists */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_link_cfg cfg;\n");
+    bcmcli_log("bcmolt_epon_link_key key = {  };\n");
+    bcmcli_log("uint8_t* list_mem;\n");
+    apicli_print_start(session, "bcmolt_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_LINK_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "mac_address");
+    if (cli_parm != NULL)
+    {
+        key.mac_address = cli_parm->value.mac;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "mac_address is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.mac_address = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_LINK_KEY_ID_MAC_ADDRESS, &key.mac_address);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, epon_link, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, epon_link, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "link_rate");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_link, link_rate);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_link, link_rate);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "state_flags");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_link, state_flags);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_link, state_flags);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "llid");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_link, llid);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_link, llid);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "laser_on_time_tq");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_link, laser_on_time_tq);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_link, laser_on_time_tq);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "laser_off_time_tq");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_link, laser_off_time_tq);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_link, laser_off_time_tq);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "range_value_tq");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_link, range_value_tq);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_link, range_value_tq);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "distance");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_link, distance);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_link, distance);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "alarm_state");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_link, alarm_state);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_link, alarm_state);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tunnel_id");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_link, tunnel_id);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_link, tunnel_id);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_link, onu_id);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_link, onu_id);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "min_laser_overhead");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_link, min_laser_overhead);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_link, min_laser_overhead);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "key_exchange_config");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_link, key_exchange_config);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_link, key_exchange_config);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "epon_encryption");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_link, epon_encryption);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_link, epon_encryption);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "fec_enable");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_link, fec_enable);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_link, fec_enable);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "oam_heartbeat_config");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_link, oam_heartbeat_config);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_link, oam_heartbeat_config);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "upstream_bandwidth");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_link, upstream_bandwidth);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_link, upstream_bandwidth);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ubd_info");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_link, ubd_info);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_link, ubd_info);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "clock_transport_enable");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_link, clock_transport_enable);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_link, clock_transport_enable);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "pending_grants");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_link, pending_grants);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_link, pending_grants);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "link_type");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_link, link_type);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_link, link_type);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_CFG_PROP_IS_SET(&cfg, epon_link, link_rate) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_link, state_flags) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_link, llid) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_link, laser_on_time_tq) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_link, laser_off_time_tq) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_link, range_value_tq) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_link, distance) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_link, alarm_state) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_link, tunnel_id) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_link, onu_id) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_link, min_laser_overhead) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_link, key_exchange_config) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_link, epon_encryption) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_link, fec_enable) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_link, oam_heartbeat_config) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_link, upstream_bandwidth) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_link, ubd_info) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_link, clock_transport_enable) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_link, pending_grants) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_link, link_type))
+    {
+        BCMOLT_CFG_PROP_GET(&cfg, epon_link, all_properties);
+        bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_link, all_properties);\n");
+    }
+
+    /* set memory to use for variable-sized lists */
+    list_mem = apicli_byte_pool_calloc(byte_pool, APICLI_DYNAMIC_LIST_BUFFER_SIZE);
+    if (list_mem == NULL)
+    {
+        apicli_print_complete(session, BCM_ERR_NOMEM, "\n");
+        return BCM_ERR_NOMEM;
+    }
+
+    bcmcli_log("list_mem = bcmos_calloc(APICLI_DYNAMIC_LIST_BUFFER_SIZE);\n");
+    BCMOLT_CFG_LIST_BUF_SET(&cfg, epon_link, list_mem, APICLI_DYNAMIC_LIST_BUFFER_SIZE);
+    bcmcli_log("BCMOLT_CFG_LIST_BUF_SET(&cfg, epon_link, list_mem, APICLI_DYNAMIC_LIST_BUFFER_SIZE);\n");
+
+    /* call API */
+    err = bcmolt_cfg_get(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_get(device_id, &cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_link_cfg_set(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_link_cfg cfg;       /**< declare main API struct */
+    bcmolt_epon_link_key key = { }; /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_link_cfg cfg;\n");
+    bcmcli_log("bcmolt_epon_link_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_LINK_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "mac_address");
+    if (cli_parm != NULL)
+    {
+        key.mac_address = cli_parm->value.mac;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "mac_address is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.mac_address = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_LINK_KEY_ID_MAC_ADDRESS, &key.mac_address);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, epon_link, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, epon_link, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "tunnel_id");
+    if (cli_parm != NULL)
+    {
+        bcmolt_epon_tunnel_id val;
+        val = (bcmolt_epon_tunnel_id) cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_link, tunnel_id, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_link, tunnel_id, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_LINK_CFG_ID_TUNNEL_ID, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        bcmolt_epon_onu_id val;
+        val = (bcmolt_epon_onu_id) cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_link, onu_id, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_link, onu_id, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_LINK_CFG_ID_ONU_ID, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "min_laser_overhead.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_epon_laser_overhead_parameters val = { };
+        cli_parm = bcmcli_find_named_parm(session, "min_laser_overhead.laser_on_time");
+        if (cli_parm != NULL)
+        {
+            val.laser_on_time = (bcmolt_time_quanta) cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "min_laser_overhead.laser_on_time is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "min_laser_overhead.laser_off_time");
+        if (cli_parm != NULL)
+        {
+            val.laser_off_time = (bcmolt_time_quanta) cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "min_laser_overhead.laser_off_time is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, epon_link, min_laser_overhead, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_epon_laser_overhead_parameters val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_LINK_CFG_ID_MIN_LASER_OVERHEAD, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_link, min_laser_overhead, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "key_exchange_config.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_epon_key_exchange_config val = { };
+        cli_parm = bcmcli_find_named_parm(session, "key_exchange_config.oam_type");
+        if (cli_parm != NULL)
+        {
+            val.oam_type = (bcmolt_epon_oam_type) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "key_exchange_config.oam_type is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "key_exchange_config.period");
+        if (cli_parm != NULL)
+        {
+            val.period = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "key_exchange_config.period is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "key_exchange_config.direction");
+        if (cli_parm != NULL)
+        {
+            val.direction = (bcmolt_epon_encryption_direction) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "key_exchange_config.direction is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, epon_link, key_exchange_config, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_epon_key_exchange_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_LINK_CFG_ID_KEY_EXCHANGE_CONFIG, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_link, key_exchange_config, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "epon_encryption.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_epon_encryption_config val = { };
+        cli_parm = bcmcli_find_named_parm(session, "epon_encryption.downstream_mode");
+        if (cli_parm != NULL)
+        {
+            val.downstream_mode = (bcmolt_epon_encryption_mode) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "epon_encryption.downstream_mode is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "epon_encryption.downstream_key_choice");
+        if (cli_parm != NULL)
+        {
+            val.downstream_key_choice = (bcmolt_epon_key_choice) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "epon_encryption.downstream_key_choice is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "epon_encryption.downstream_encryption_information.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "epon_encryption.downstream_encryption_information.format");
+            if (cli_parm != NULL)
+            {
+                val.downstream_encryption_information.format = (bcmolt_epon_encryption_information_format) cli_parm->value.enum_val;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "epon_encryption.downstream_encryption_information.format is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            switch (val.downstream_encryption_information.format)
+            {
+                case BCMOLT_EPON_ENCRYPTION_INFORMATION_FORMAT_CFB:
+                    cli_parm = bcmcli_find_named_parm(session, "epon_encryption.downstream_encryption_information.key");
+                    if (cli_parm != NULL)
+                    {
+                        if (bcmolt_buf_get_used(&cli_parm->value.buffer) != 16)
+                        {
+                            apicli_print_complete(session, BCM_ERR_PARM, "buffer epon_encryption.downstream_encryption_information.key must have 16 bytes\n");
+                            return BCM_ERR_PARM;
+                        }
+
+                        bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+                        bcmolt_buf_read(&cli_parm->value.buffer, val.downstream_encryption_information.u.cfb.key, 16);
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "epon_encryption.downstream_encryption_information.key is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_EPON_ENCRYPTION_INFORMATION_FORMAT_CTR:
+                    cli_parm = bcmcli_find_named_parm(session, "epon_encryption.downstream_encryption_information.key");
+                    if (cli_parm != NULL)
+                    {
+                        if (bcmolt_buf_get_used(&cli_parm->value.buffer) != 16)
+                        {
+                            apicli_print_complete(session, BCM_ERR_PARM, "buffer epon_encryption.downstream_encryption_information.key must have 16 bytes\n");
+                            return BCM_ERR_PARM;
+                        }
+
+                        bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+                        bcmolt_buf_read(&cli_parm->value.buffer, val.downstream_encryption_information.u.ctr.key, 16);
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "epon_encryption.downstream_encryption_information.key is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "epon_encryption.downstream_encryption_information.sci");
+                    if (cli_parm != NULL)
+                    {
+                        if (bcmolt_buf_get_used(&cli_parm->value.buffer) != 8)
+                        {
+                            apicli_print_complete(session, BCM_ERR_PARM, "buffer epon_encryption.downstream_encryption_information.sci must have 8 bytes\n");
+                            return BCM_ERR_PARM;
+                        }
+
+                        bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+                        bcmolt_buf_read(&cli_parm->value.buffer, val.downstream_encryption_information.u.ctr.sci, 8);
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "epon_encryption.downstream_encryption_information.sci is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                default:
+                    apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+                    return BCM_ERR_RANGE;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "epon_encryption.downstream_encryption_information is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "epon_encryption.upstream_mode");
+        if (cli_parm != NULL)
+        {
+            val.upstream_mode = (bcmolt_epon_encryption_mode) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "epon_encryption.upstream_mode is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "epon_encryption.upstream_key_choice");
+        if (cli_parm != NULL)
+        {
+            val.upstream_key_choice = (bcmolt_epon_key_choice) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "epon_encryption.upstream_key_choice is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "epon_encryption.upstream_encryption_information.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "epon_encryption.upstream_encryption_information.format");
+            if (cli_parm != NULL)
+            {
+                val.upstream_encryption_information.format = (bcmolt_epon_encryption_information_format) cli_parm->value.enum_val;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "epon_encryption.upstream_encryption_information.format is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            switch (val.upstream_encryption_information.format)
+            {
+                case BCMOLT_EPON_ENCRYPTION_INFORMATION_FORMAT_CFB:
+                    cli_parm = bcmcli_find_named_parm(session, "epon_encryption.upstream_encryption_information.key");
+                    if (cli_parm != NULL)
+                    {
+                        if (bcmolt_buf_get_used(&cli_parm->value.buffer) != 16)
+                        {
+                            apicli_print_complete(session, BCM_ERR_PARM, "buffer epon_encryption.upstream_encryption_information.key must have 16 bytes\n");
+                            return BCM_ERR_PARM;
+                        }
+
+                        bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+                        bcmolt_buf_read(&cli_parm->value.buffer, val.upstream_encryption_information.u.cfb.key, 16);
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "epon_encryption.upstream_encryption_information.key is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_EPON_ENCRYPTION_INFORMATION_FORMAT_CTR:
+                    cli_parm = bcmcli_find_named_parm(session, "epon_encryption.upstream_encryption_information.key");
+                    if (cli_parm != NULL)
+                    {
+                        if (bcmolt_buf_get_used(&cli_parm->value.buffer) != 16)
+                        {
+                            apicli_print_complete(session, BCM_ERR_PARM, "buffer epon_encryption.upstream_encryption_information.key must have 16 bytes\n");
+                            return BCM_ERR_PARM;
+                        }
+
+                        bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+                        bcmolt_buf_read(&cli_parm->value.buffer, val.upstream_encryption_information.u.ctr.key, 16);
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "epon_encryption.upstream_encryption_information.key is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "epon_encryption.upstream_encryption_information.sci");
+                    if (cli_parm != NULL)
+                    {
+                        if (bcmolt_buf_get_used(&cli_parm->value.buffer) != 8)
+                        {
+                            apicli_print_complete(session, BCM_ERR_PARM, "buffer epon_encryption.upstream_encryption_information.sci must have 8 bytes\n");
+                            return BCM_ERR_PARM;
+                        }
+
+                        bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+                        bcmolt_buf_read(&cli_parm->value.buffer, val.upstream_encryption_information.u.ctr.sci, 8);
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "epon_encryption.upstream_encryption_information.sci is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                default:
+                    apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+                    return BCM_ERR_RANGE;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "epon_encryption.upstream_encryption_information is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, epon_link, epon_encryption, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_epon_encryption_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_LINK_CFG_ID_EPON_ENCRYPTION, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_link, epon_encryption, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "fec_enable.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_epon_link_fec_en val = { };
+        cli_parm = bcmcli_find_named_parm(session, "fec_enable.upstream");
+        if (cli_parm != NULL)
+        {
+            val.upstream = (bcmolt_epon_link_fec_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "fec_enable.upstream is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "fec_enable.downstream");
+        if (cli_parm != NULL)
+        {
+            val.downstream = (bcmolt_epon_link_fec_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "fec_enable.downstream is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, epon_link, fec_enable, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_epon_link_fec_en val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_LINK_CFG_ID_FEC_ENABLE, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_link, fec_enable, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "oam_heartbeat_config.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_oam_heartbeat_config val = { };
+        cli_parm = bcmcli_find_named_parm(session, "oam_heartbeat_config.send_period");
+        if (cli_parm != NULL)
+        {
+            val.send_period = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "oam_heartbeat_config.send_period is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "oam_heartbeat_config.transmit_frame");
+        if (cli_parm != NULL)
+        {
+            val.transmit_frame.len = bcmolt_buf_get_used(&cli_parm->value.buffer);
+            val.transmit_frame.val = apicli_byte_pool_calloc(byte_pool, val.transmit_frame.len);
+            if (val.transmit_frame.val == NULL)
+            {
+                apicli_print_complete(session, BCM_ERR_NOMEM, "\n");
+                return BCM_ERR_NOMEM;
+            }
+
+            bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+            bcmolt_buf_read(&cli_parm->value.buffer, val.transmit_frame.val, val.transmit_frame.len);
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "oam_heartbeat_config.transmit_frame is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "oam_heartbeat_config.ignored_receive_frame_template.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "oam_heartbeat_config.ignored_receive_frame_template.frame_octets");
+            if (cli_parm != NULL)
+            {
+                val.ignored_receive_frame_template.frame_octets.len = bcmolt_buf_get_used(&cli_parm->value.buffer);
+                val.ignored_receive_frame_template.frame_octets.val = apicli_byte_pool_calloc(byte_pool, val.ignored_receive_frame_template.frame_octets.len);
+                if (val.ignored_receive_frame_template.frame_octets.val == NULL)
+                {
+                    apicli_print_complete(session, BCM_ERR_NOMEM, "\n");
+                    return BCM_ERR_NOMEM;
+                }
+
+                bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+                bcmolt_buf_read(&cli_parm->value.buffer, val.ignored_receive_frame_template.frame_octets.val, val.ignored_receive_frame_template.frame_octets.len);
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "oam_heartbeat_config.ignored_receive_frame_template.frame_octets is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "oam_heartbeat_config.ignored_receive_frame_template.mask_octets");
+            if (cli_parm != NULL)
+            {
+                val.ignored_receive_frame_template.mask_octets.len = bcmolt_buf_get_used(&cli_parm->value.buffer);
+                val.ignored_receive_frame_template.mask_octets.val = apicli_byte_pool_calloc(byte_pool, val.ignored_receive_frame_template.mask_octets.len);
+                if (val.ignored_receive_frame_template.mask_octets.val == NULL)
+                {
+                    apicli_print_complete(session, BCM_ERR_NOMEM, "\n");
+                    return BCM_ERR_NOMEM;
+                }
+
+                bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+                bcmolt_buf_read(&cli_parm->value.buffer, val.ignored_receive_frame_template.mask_octets.val, val.ignored_receive_frame_template.mask_octets.len);
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "oam_heartbeat_config.ignored_receive_frame_template.mask_octets is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "oam_heartbeat_config.ignored_receive_frame_template is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "oam_heartbeat_config.receive_timeout");
+        if (cli_parm != NULL)
+        {
+            val.receive_timeout = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "oam_heartbeat_config.receive_timeout is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "oam_heartbeat_config.maximum_receive_size");
+        if (cli_parm != NULL)
+        {
+            val.maximum_receive_size = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "oam_heartbeat_config.maximum_receive_size is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, epon_link, oam_heartbeat_config, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_oam_heartbeat_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_LINK_CFG_ID_OAM_HEARTBEAT_CONFIG, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_link, oam_heartbeat_config, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "upstream_bandwidth.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_upstream_bandwidth_distribution val = { };
+        cli_parm = bcmcli_find_named_parm(session, "upstream_bandwidth.polling_interval_us");
+        if (cli_parm != NULL)
+        {
+            val.polling_interval_us = (bcmolt_polling_interval) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "upstream_bandwidth.polling_interval_us is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "upstream_bandwidth.grant_threshold_tq");
+        if (cli_parm != NULL)
+        {
+            val.grant_threshold_tq = (bcmolt_time_quanta) cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "upstream_bandwidth.grant_threshold_tq is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "upstream_bandwidth.min_schedulershaper.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "upstream_bandwidth.min_schedulershaper.bandwidth_Kbps");
+            if (cli_parm != NULL)
+            {
+                val.min_schedulershaper.bandwidth_Kbps = (bcmolt_bandwidth_Kbps) cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "upstream_bandwidth.min_schedulershaper.bandwidth_Kbps is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "upstream_bandwidth.min_schedulershaper.max_burst_size_tq");
+            if (cli_parm != NULL)
+            {
+                val.min_schedulershaper.max_burst_size_tq = (bcmolt_time_quanta) cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "upstream_bandwidth.min_schedulershaper.max_burst_size_tq is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "upstream_bandwidth.min_schedulershaper.priority");
+            if (cli_parm != NULL)
+            {
+                val.min_schedulershaper.priority = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "upstream_bandwidth.min_schedulershaper.priority is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "upstream_bandwidth.min_schedulershaper.weight_tq");
+            if (cli_parm != NULL)
+            {
+                val.min_schedulershaper.weight_tq = (bcmolt_time_quanta) cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "upstream_bandwidth.min_schedulershaper.weight_tq is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "upstream_bandwidth.min_schedulershaper is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "upstream_bandwidth.max_schedulershaper.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "upstream_bandwidth.max_schedulershaper.bandwidth_Kbps");
+            if (cli_parm != NULL)
+            {
+                val.max_schedulershaper.bandwidth_Kbps = (bcmolt_bandwidth_Kbps) cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "upstream_bandwidth.max_schedulershaper.bandwidth_Kbps is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "upstream_bandwidth.max_schedulershaper.max_burst_size_tq");
+            if (cli_parm != NULL)
+            {
+                val.max_schedulershaper.max_burst_size_tq = (bcmolt_time_quanta) cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "upstream_bandwidth.max_schedulershaper.max_burst_size_tq is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "upstream_bandwidth.max_schedulershaper.priority");
+            if (cli_parm != NULL)
+            {
+                val.max_schedulershaper.priority = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "upstream_bandwidth.max_schedulershaper.priority is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "upstream_bandwidth.max_schedulershaper.weight_tq");
+            if (cli_parm != NULL)
+            {
+                val.max_schedulershaper.weight_tq = (bcmolt_time_quanta) cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "upstream_bandwidth.max_schedulershaper.weight_tq is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "upstream_bandwidth.max_schedulershaper is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "upstream_bandwidth.tdm_grant_size_tq");
+        if (cli_parm != NULL)
+        {
+            val.tdm_grant_size_tq = (bcmolt_time_quanta) cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "upstream_bandwidth.tdm_grant_size_tq is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "upstream_bandwidth.tdm_grant_interval_us");
+        if (cli_parm != NULL)
+        {
+            val.tdm_grant_interval_us = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "upstream_bandwidth.tdm_grant_interval_us is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, epon_link, upstream_bandwidth, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_upstream_bandwidth_distribution val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_LINK_CFG_ID_UPSTREAM_BANDWIDTH, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_link, upstream_bandwidth, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "clock_transport_enable");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_link, clock_transport_enable, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_link, clock_transport_enable, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_LINK_CFG_ID_CLOCK_TRANSPORT_ENABLE, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_set(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_set(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_link_cfg_clear(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_link_cfg cfg;       /**< declare main API struct */
+    bcmolt_epon_link_key key = { }; /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_link_cfg cfg;\n");
+    bcmcli_log("bcmolt_epon_link_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_clear");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_LINK_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "mac_address");
+    if (cli_parm != NULL)
+    {
+        key.mac_address = cli_parm->value.mac;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "mac_address is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.mac_address = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_LINK_KEY_ID_MAC_ADDRESS, &key.mac_address);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, epon_link, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, epon_link, key);\n");
+
+    /* call API */
+    err = bcmolt_cfg_clear(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_clear(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_link_cfg_get_multi(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_link_cfg cfg;       /**< declare main API struct */
+    bcmolt_epon_link_key key = { }; /**< declare key */
+    bcmolt_msg_set *msg_set = NULL; /**< declare message set */
+    uint32_t max_msgs;              /**< declare max number of msgs to get */
+    bcmos_bool invert_filter;       /**< declare filter invert flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_link_cfg cfg;\n");
+    bcmcli_log("bcmolt_epon_link_key key = {  };\n");
+    bcmcli_log("bcmolt_msg_set* msg_set = NULL;\n");
+    bcmcli_log("uint32_t max_msgs;\n");
+    bcmcli_log("bcmos_bool invert_filter;\n");
+    apicli_print_start(session, "bcmolt_cfg_get_multi");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_LINK_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "mac_address");
+    if (cli_parm != NULL)
+    {
+        key.mac_address = cli_parm->value.mac;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "mac_address is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.mac_address = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_LINK_KEY_ID_MAC_ADDRESS, &key.mac_address);
+    bcmcli_log(";\n");
+
+    /* set max number of msgs from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "max_msgs");
+    if (cli_parm != NULL)
+    {
+        max_msgs = cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "max_msgs is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("max_msgs = %d;\n", max_msgs);
+
+    /* set filter invert flag from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "filter_invert");
+    if (cli_parm != NULL)
+    {
+        invert_filter = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "filter_invert is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("invert_filter = %s;\n", (invert_filter) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* allocate message set */
+    err = apicli_msg_set_alloc(byte_pool, BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);
+    if (err != BCM_ERR_OK)
+    {
+        return err;
+    }
+
+    bcmcli_log("bcmolt_msg_set_alloc(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, epon_link, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, epon_link, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "filter.link_rate");
+    if (cli_parm != NULL)
+    {
+        bcmolt_epon_link_rate val;
+        val = (bcmolt_epon_link_rate) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_link, link_rate, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_link, link_rate, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_LINK_CFG_ID_LINK_RATE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "link_rate");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_link, link_rate);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_link, link_rate);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.state_flags");
+    if (cli_parm != NULL)
+    {
+        bcmolt_epon_link_state_flags val;
+        val = (bcmolt_epon_link_state_flags) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_link, state_flags, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_link, state_flags, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_LINK_CFG_ID_STATE_FLAGS, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "state_flags");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_link, state_flags);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_link, state_flags);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.llid");
+    if (cli_parm != NULL)
+    {
+        bcmolt_epon_llid val;
+        val = (bcmolt_epon_llid) cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_link, llid, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_link, llid, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_LINK_CFG_ID_LLID, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "llid");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_link, llid);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_link, llid);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.laser_on_time_tq");
+    if (cli_parm != NULL)
+    {
+        bcmolt_time_quanta val;
+        val = (bcmolt_time_quanta) cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_link, laser_on_time_tq, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_link, laser_on_time_tq, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_LINK_CFG_ID_LASER_ON_TIME_TQ, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "laser_on_time_tq");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_link, laser_on_time_tq);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_link, laser_on_time_tq);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.laser_off_time_tq");
+    if (cli_parm != NULL)
+    {
+        bcmolt_time_quanta val;
+        val = (bcmolt_time_quanta) cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_link, laser_off_time_tq, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_link, laser_off_time_tq, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_LINK_CFG_ID_LASER_OFF_TIME_TQ, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "laser_off_time_tq");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_link, laser_off_time_tq);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_link, laser_off_time_tq);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.range_value_tq");
+    if (cli_parm != NULL)
+    {
+        bcmolt_time_quanta val;
+        val = (bcmolt_time_quanta) cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_link, range_value_tq, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_link, range_value_tq, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_LINK_CFG_ID_RANGE_VALUE_TQ, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "range_value_tq");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_link, range_value_tq);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_link, range_value_tq);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.distance");
+    if (cli_parm != NULL)
+    {
+        bcmolt_meters val;
+        val = (bcmolt_meters) cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_link, distance, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_link, distance, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_LINK_CFG_ID_DISTANCE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "distance");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_link, distance);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_link, distance);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.alarm_state.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_epon_link_alarm_state val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.alarm_state.key_exchange_failure");
+        if (cli_parm != NULL)
+        {
+            val.key_exchange_failure = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.alarm_state.key_exchange_failure is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.alarm_state.invalid_mpcp_report_received");
+        if (cli_parm != NULL)
+        {
+            val.invalid_mpcp_report_received = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.alarm_state.invalid_mpcp_report_received is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.alarm_state.mpcp_report_timeout");
+        if (cli_parm != NULL)
+        {
+            val.mpcp_report_timeout = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.alarm_state.mpcp_report_timeout is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.alarm_state.oam_keepalive_timeout");
+        if (cli_parm != NULL)
+        {
+            val.oam_keepalive_timeout = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.alarm_state.oam_keepalive_timeout is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, epon_link, alarm_state, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_epon_link_alarm_state val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_LINK_CFG_ID_ALARM_STATE, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_link, alarm_state, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "alarm_state");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_link, alarm_state);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_link, alarm_state);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.tunnel_id");
+    if (cli_parm != NULL)
+    {
+        bcmolt_epon_tunnel_id val;
+        val = (bcmolt_epon_tunnel_id) cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_link, tunnel_id, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_link, tunnel_id, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_LINK_CFG_ID_TUNNEL_ID, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tunnel_id");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_link, tunnel_id);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_link, tunnel_id);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.onu_id");
+    if (cli_parm != NULL)
+    {
+        bcmolt_epon_onu_id val;
+        val = (bcmolt_epon_onu_id) cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_link, onu_id, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_link, onu_id, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_LINK_CFG_ID_ONU_ID, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_link, onu_id);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_link, onu_id);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.min_laser_overhead.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_epon_laser_overhead_parameters val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.min_laser_overhead.laser_on_time");
+        if (cli_parm != NULL)
+        {
+            val.laser_on_time = (bcmolt_time_quanta) cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.min_laser_overhead.laser_on_time is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.min_laser_overhead.laser_off_time");
+        if (cli_parm != NULL)
+        {
+            val.laser_off_time = (bcmolt_time_quanta) cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.min_laser_overhead.laser_off_time is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, epon_link, min_laser_overhead, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_epon_laser_overhead_parameters val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_LINK_CFG_ID_MIN_LASER_OVERHEAD, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_link, min_laser_overhead, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "min_laser_overhead");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_link, min_laser_overhead);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_link, min_laser_overhead);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.key_exchange_config.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_epon_key_exchange_config val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.key_exchange_config.oam_type");
+        if (cli_parm != NULL)
+        {
+            val.oam_type = (bcmolt_epon_oam_type) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.key_exchange_config.oam_type is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.key_exchange_config.period");
+        if (cli_parm != NULL)
+        {
+            val.period = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.key_exchange_config.period is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.key_exchange_config.direction");
+        if (cli_parm != NULL)
+        {
+            val.direction = (bcmolt_epon_encryption_direction) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.key_exchange_config.direction is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, epon_link, key_exchange_config, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_epon_key_exchange_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_LINK_CFG_ID_KEY_EXCHANGE_CONFIG, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_link, key_exchange_config, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "key_exchange_config");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_link, key_exchange_config);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_link, key_exchange_config);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.epon_encryption.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_epon_encryption_config val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.epon_encryption.downstream_mode");
+        if (cli_parm != NULL)
+        {
+            val.downstream_mode = (bcmolt_epon_encryption_mode) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.epon_encryption.downstream_mode is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.epon_encryption.downstream_key_choice");
+        if (cli_parm != NULL)
+        {
+            val.downstream_key_choice = (bcmolt_epon_key_choice) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.epon_encryption.downstream_key_choice is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "filter.epon_encryption.downstream_encryption_information.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "filter.epon_encryption.downstream_encryption_information.format");
+            if (cli_parm != NULL)
+            {
+                val.downstream_encryption_information.format = (bcmolt_epon_encryption_information_format) cli_parm->value.enum_val;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.epon_encryption.downstream_encryption_information.format is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            switch (val.downstream_encryption_information.format)
+            {
+                case BCMOLT_EPON_ENCRYPTION_INFORMATION_FORMAT_CFB:
+                    cli_parm = bcmcli_find_named_parm(session, "filter.epon_encryption.downstream_encryption_information.key");
+                    if (cli_parm != NULL)
+                    {
+                        if (bcmolt_buf_get_used(&cli_parm->value.buffer) != 16)
+                        {
+                            apicli_print_complete(session, BCM_ERR_PARM, "buffer filter.epon_encryption.downstream_encryption_information.key must have 16 bytes\n");
+                            return BCM_ERR_PARM;
+                        }
+
+                        bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+                        bcmolt_buf_read(&cli_parm->value.buffer, val.downstream_encryption_information.u.cfb.key, 16);
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "filter.epon_encryption.downstream_encryption_information.key is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_EPON_ENCRYPTION_INFORMATION_FORMAT_CTR:
+                    cli_parm = bcmcli_find_named_parm(session, "filter.epon_encryption.downstream_encryption_information.key");
+                    if (cli_parm != NULL)
+                    {
+                        if (bcmolt_buf_get_used(&cli_parm->value.buffer) != 16)
+                        {
+                            apicli_print_complete(session, BCM_ERR_PARM, "buffer filter.epon_encryption.downstream_encryption_information.key must have 16 bytes\n");
+                            return BCM_ERR_PARM;
+                        }
+
+                        bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+                        bcmolt_buf_read(&cli_parm->value.buffer, val.downstream_encryption_information.u.ctr.key, 16);
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "filter.epon_encryption.downstream_encryption_information.key is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "filter.epon_encryption.downstream_encryption_information.sci");
+                    if (cli_parm != NULL)
+                    {
+                        if (bcmolt_buf_get_used(&cli_parm->value.buffer) != 8)
+                        {
+                            apicli_print_complete(session, BCM_ERR_PARM, "buffer filter.epon_encryption.downstream_encryption_information.sci must have 8 bytes\n");
+                            return BCM_ERR_PARM;
+                        }
+
+                        bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+                        bcmolt_buf_read(&cli_parm->value.buffer, val.downstream_encryption_information.u.ctr.sci, 8);
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "filter.epon_encryption.downstream_encryption_information.sci is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                default:
+                    apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+                    return BCM_ERR_RANGE;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.epon_encryption.downstream_encryption_information is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.epon_encryption.upstream_mode");
+        if (cli_parm != NULL)
+        {
+            val.upstream_mode = (bcmolt_epon_encryption_mode) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.epon_encryption.upstream_mode is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.epon_encryption.upstream_key_choice");
+        if (cli_parm != NULL)
+        {
+            val.upstream_key_choice = (bcmolt_epon_key_choice) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.epon_encryption.upstream_key_choice is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "filter.epon_encryption.upstream_encryption_information.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "filter.epon_encryption.upstream_encryption_information.format");
+            if (cli_parm != NULL)
+            {
+                val.upstream_encryption_information.format = (bcmolt_epon_encryption_information_format) cli_parm->value.enum_val;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.epon_encryption.upstream_encryption_information.format is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            switch (val.upstream_encryption_information.format)
+            {
+                case BCMOLT_EPON_ENCRYPTION_INFORMATION_FORMAT_CFB:
+                    cli_parm = bcmcli_find_named_parm(session, "filter.epon_encryption.upstream_encryption_information.key");
+                    if (cli_parm != NULL)
+                    {
+                        if (bcmolt_buf_get_used(&cli_parm->value.buffer) != 16)
+                        {
+                            apicli_print_complete(session, BCM_ERR_PARM, "buffer filter.epon_encryption.upstream_encryption_information.key must have 16 bytes\n");
+                            return BCM_ERR_PARM;
+                        }
+
+                        bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+                        bcmolt_buf_read(&cli_parm->value.buffer, val.upstream_encryption_information.u.cfb.key, 16);
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "filter.epon_encryption.upstream_encryption_information.key is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_EPON_ENCRYPTION_INFORMATION_FORMAT_CTR:
+                    cli_parm = bcmcli_find_named_parm(session, "filter.epon_encryption.upstream_encryption_information.key");
+                    if (cli_parm != NULL)
+                    {
+                        if (bcmolt_buf_get_used(&cli_parm->value.buffer) != 16)
+                        {
+                            apicli_print_complete(session, BCM_ERR_PARM, "buffer filter.epon_encryption.upstream_encryption_information.key must have 16 bytes\n");
+                            return BCM_ERR_PARM;
+                        }
+
+                        bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+                        bcmolt_buf_read(&cli_parm->value.buffer, val.upstream_encryption_information.u.ctr.key, 16);
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "filter.epon_encryption.upstream_encryption_information.key is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "filter.epon_encryption.upstream_encryption_information.sci");
+                    if (cli_parm != NULL)
+                    {
+                        if (bcmolt_buf_get_used(&cli_parm->value.buffer) != 8)
+                        {
+                            apicli_print_complete(session, BCM_ERR_PARM, "buffer filter.epon_encryption.upstream_encryption_information.sci must have 8 bytes\n");
+                            return BCM_ERR_PARM;
+                        }
+
+                        bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+                        bcmolt_buf_read(&cli_parm->value.buffer, val.upstream_encryption_information.u.ctr.sci, 8);
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "filter.epon_encryption.upstream_encryption_information.sci is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                default:
+                    apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+                    return BCM_ERR_RANGE;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.epon_encryption.upstream_encryption_information is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, epon_link, epon_encryption, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_epon_encryption_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_LINK_CFG_ID_EPON_ENCRYPTION, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_link, epon_encryption, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "epon_encryption");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_link, epon_encryption);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_link, epon_encryption);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.fec_enable.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_epon_link_fec_en val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.fec_enable.upstream");
+        if (cli_parm != NULL)
+        {
+            val.upstream = (bcmolt_epon_link_fec_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.fec_enable.upstream is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.fec_enable.downstream");
+        if (cli_parm != NULL)
+        {
+            val.downstream = (bcmolt_epon_link_fec_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.fec_enable.downstream is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, epon_link, fec_enable, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_epon_link_fec_en val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_LINK_CFG_ID_FEC_ENABLE, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_link, fec_enable, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "fec_enable");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_link, fec_enable);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_link, fec_enable);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.oam_heartbeat_config.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_oam_heartbeat_config val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.oam_heartbeat_config.send_period");
+        if (cli_parm != NULL)
+        {
+            val.send_period = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.oam_heartbeat_config.send_period is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.oam_heartbeat_config.transmit_frame");
+        if (cli_parm != NULL)
+        {
+            val.transmit_frame.len = bcmolt_buf_get_used(&cli_parm->value.buffer);
+            val.transmit_frame.val = apicli_byte_pool_calloc(byte_pool, val.transmit_frame.len);
+            if (val.transmit_frame.val == NULL)
+            {
+                apicli_print_complete(session, BCM_ERR_NOMEM, "\n");
+                return BCM_ERR_NOMEM;
+            }
+
+            bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+            bcmolt_buf_read(&cli_parm->value.buffer, val.transmit_frame.val, val.transmit_frame.len);
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.oam_heartbeat_config.transmit_frame is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "filter.oam_heartbeat_config.ignored_receive_frame_template.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "filter.oam_heartbeat_config.ignored_receive_frame_template.frame_octets");
+            if (cli_parm != NULL)
+            {
+                val.ignored_receive_frame_template.frame_octets.len = bcmolt_buf_get_used(&cli_parm->value.buffer);
+                val.ignored_receive_frame_template.frame_octets.val = apicli_byte_pool_calloc(byte_pool, val.ignored_receive_frame_template.frame_octets.len);
+                if (val.ignored_receive_frame_template.frame_octets.val == NULL)
+                {
+                    apicli_print_complete(session, BCM_ERR_NOMEM, "\n");
+                    return BCM_ERR_NOMEM;
+                }
+
+                bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+                bcmolt_buf_read(&cli_parm->value.buffer, val.ignored_receive_frame_template.frame_octets.val, val.ignored_receive_frame_template.frame_octets.len);
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.oam_heartbeat_config.ignored_receive_frame_template.frame_octets is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.oam_heartbeat_config.ignored_receive_frame_template.mask_octets");
+            if (cli_parm != NULL)
+            {
+                val.ignored_receive_frame_template.mask_octets.len = bcmolt_buf_get_used(&cli_parm->value.buffer);
+                val.ignored_receive_frame_template.mask_octets.val = apicli_byte_pool_calloc(byte_pool, val.ignored_receive_frame_template.mask_octets.len);
+                if (val.ignored_receive_frame_template.mask_octets.val == NULL)
+                {
+                    apicli_print_complete(session, BCM_ERR_NOMEM, "\n");
+                    return BCM_ERR_NOMEM;
+                }
+
+                bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+                bcmolt_buf_read(&cli_parm->value.buffer, val.ignored_receive_frame_template.mask_octets.val, val.ignored_receive_frame_template.mask_octets.len);
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.oam_heartbeat_config.ignored_receive_frame_template.mask_octets is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.oam_heartbeat_config.ignored_receive_frame_template is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.oam_heartbeat_config.receive_timeout");
+        if (cli_parm != NULL)
+        {
+            val.receive_timeout = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.oam_heartbeat_config.receive_timeout is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.oam_heartbeat_config.maximum_receive_size");
+        if (cli_parm != NULL)
+        {
+            val.maximum_receive_size = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.oam_heartbeat_config.maximum_receive_size is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, epon_link, oam_heartbeat_config, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_oam_heartbeat_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_LINK_CFG_ID_OAM_HEARTBEAT_CONFIG, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_link, oam_heartbeat_config, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "oam_heartbeat_config");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_link, oam_heartbeat_config);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_link, oam_heartbeat_config);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.upstream_bandwidth.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_upstream_bandwidth_distribution val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.upstream_bandwidth.polling_interval_us");
+        if (cli_parm != NULL)
+        {
+            val.polling_interval_us = (bcmolt_polling_interval) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.upstream_bandwidth.polling_interval_us is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.upstream_bandwidth.grant_threshold_tq");
+        if (cli_parm != NULL)
+        {
+            val.grant_threshold_tq = (bcmolt_time_quanta) cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.upstream_bandwidth.grant_threshold_tq is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "filter.upstream_bandwidth.min_schedulershaper.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "filter.upstream_bandwidth.min_schedulershaper.bandwidth_Kbps");
+            if (cli_parm != NULL)
+            {
+                val.min_schedulershaper.bandwidth_Kbps = (bcmolt_bandwidth_Kbps) cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.upstream_bandwidth.min_schedulershaper.bandwidth_Kbps is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.upstream_bandwidth.min_schedulershaper.max_burst_size_tq");
+            if (cli_parm != NULL)
+            {
+                val.min_schedulershaper.max_burst_size_tq = (bcmolt_time_quanta) cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.upstream_bandwidth.min_schedulershaper.max_burst_size_tq is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.upstream_bandwidth.min_schedulershaper.priority");
+            if (cli_parm != NULL)
+            {
+                val.min_schedulershaper.priority = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.upstream_bandwidth.min_schedulershaper.priority is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.upstream_bandwidth.min_schedulershaper.weight_tq");
+            if (cli_parm != NULL)
+            {
+                val.min_schedulershaper.weight_tq = (bcmolt_time_quanta) cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.upstream_bandwidth.min_schedulershaper.weight_tq is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.upstream_bandwidth.min_schedulershaper is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "filter.upstream_bandwidth.max_schedulershaper.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "filter.upstream_bandwidth.max_schedulershaper.bandwidth_Kbps");
+            if (cli_parm != NULL)
+            {
+                val.max_schedulershaper.bandwidth_Kbps = (bcmolt_bandwidth_Kbps) cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.upstream_bandwidth.max_schedulershaper.bandwidth_Kbps is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.upstream_bandwidth.max_schedulershaper.max_burst_size_tq");
+            if (cli_parm != NULL)
+            {
+                val.max_schedulershaper.max_burst_size_tq = (bcmolt_time_quanta) cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.upstream_bandwidth.max_schedulershaper.max_burst_size_tq is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.upstream_bandwidth.max_schedulershaper.priority");
+            if (cli_parm != NULL)
+            {
+                val.max_schedulershaper.priority = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.upstream_bandwidth.max_schedulershaper.priority is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.upstream_bandwidth.max_schedulershaper.weight_tq");
+            if (cli_parm != NULL)
+            {
+                val.max_schedulershaper.weight_tq = (bcmolt_time_quanta) cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.upstream_bandwidth.max_schedulershaper.weight_tq is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.upstream_bandwidth.max_schedulershaper is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.upstream_bandwidth.tdm_grant_size_tq");
+        if (cli_parm != NULL)
+        {
+            val.tdm_grant_size_tq = (bcmolt_time_quanta) cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.upstream_bandwidth.tdm_grant_size_tq is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.upstream_bandwidth.tdm_grant_interval_us");
+        if (cli_parm != NULL)
+        {
+            val.tdm_grant_interval_us = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.upstream_bandwidth.tdm_grant_interval_us is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, epon_link, upstream_bandwidth, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_upstream_bandwidth_distribution val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_LINK_CFG_ID_UPSTREAM_BANDWIDTH, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_link, upstream_bandwidth, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "upstream_bandwidth");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_link, upstream_bandwidth);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_link, upstream_bandwidth);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.ubd_info.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_ubd_info val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.ubd_info.actual_polling_interval");
+        if (cli_parm != NULL)
+        {
+            val.actual_polling_interval = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.ubd_info.actual_polling_interval is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.ubd_info.actual_grant_threshold_tq");
+        if (cli_parm != NULL)
+        {
+            val.actual_grant_threshold_tq = (bcmolt_time_quanta) cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.ubd_info.actual_grant_threshold_tq is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "filter.ubd_info.actual_min_schedulershaper.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "filter.ubd_info.actual_min_schedulershaper.actual_mbs_tq");
+            if (cli_parm != NULL)
+            {
+                val.actual_min_schedulershaper.actual_mbs_tq = (bcmolt_time_quanta) cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.ubd_info.actual_min_schedulershaper.actual_mbs_tq is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.ubd_info.actual_min_schedulershaper.actual_weight_tq");
+            if (cli_parm != NULL)
+            {
+                val.actual_min_schedulershaper.actual_weight_tq = (bcmolt_time_quanta) cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.ubd_info.actual_min_schedulershaper.actual_weight_tq is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.ubd_info.actual_min_schedulershaper is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "filter.ubd_info.actual_max_schedulershaper.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "filter.ubd_info.actual_max_schedulershaper.actual_mbs_tq");
+            if (cli_parm != NULL)
+            {
+                val.actual_max_schedulershaper.actual_mbs_tq = (bcmolt_time_quanta) cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.ubd_info.actual_max_schedulershaper.actual_mbs_tq is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.ubd_info.actual_max_schedulershaper.actual_weight_tq");
+            if (cli_parm != NULL)
+            {
+                val.actual_max_schedulershaper.actual_weight_tq = (bcmolt_time_quanta) cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.ubd_info.actual_max_schedulershaper.actual_weight_tq is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.ubd_info.actual_max_schedulershaper is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, epon_link, ubd_info, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_ubd_info val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_LINK_CFG_ID_UBD_INFO, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_link, ubd_info, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ubd_info");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_link, ubd_info);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_link, ubd_info);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.clock_transport_enable");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_link, clock_transport_enable, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_link, clock_transport_enable, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_LINK_CFG_ID_CLOCK_TRANSPORT_ENABLE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "clock_transport_enable");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_link, clock_transport_enable);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_link, clock_transport_enable);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.pending_grants");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_link, pending_grants, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_link, pending_grants, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_LINK_CFG_ID_PENDING_GRANTS, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "pending_grants");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_link, pending_grants);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_link, pending_grants);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.link_type");
+    if (cli_parm != NULL)
+    {
+        bcmolt_epon_link_type val;
+        val = (bcmolt_epon_link_type) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_link, link_type, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_link, link_type, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_LINK_CFG_ID_LINK_TYPE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "link_type");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_link, link_type);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_link, link_type);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_link, link_rate) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_link, state_flags) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_link, llid) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_link, laser_on_time_tq) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_link, laser_off_time_tq) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_link, range_value_tq) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_link, distance) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_link, alarm_state) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_link, tunnel_id) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_link, onu_id) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_link, min_laser_overhead) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_link, key_exchange_config) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_link, epon_encryption) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_link, fec_enable) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_link, oam_heartbeat_config) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_link, upstream_bandwidth) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_link, ubd_info) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_link, clock_transport_enable) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_link, pending_grants) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_link, link_type))
+    {
+        BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_link, all_properties);
+        bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_link, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);
+    bcmcli_log("bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_link_stat_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_link_stat stat;     /**< declare main API struct */
+    bcmolt_epon_link_key key = { }; /**< declare key */
+    bcmos_bool clear_on_read;       /**< declare 'clear on read' flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_link_stat stat;\n");
+    bcmcli_log("bcmolt_epon_link_key key = {  };\n");
+    bcmcli_log("bcmos_bool clear_on_read;\n");
+    apicli_print_start(session, "bcmolt_stat_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_LINK_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "mac_address");
+    if (cli_parm != NULL)
+    {
+        key.mac_address = cli_parm->value.mac;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "mac_address is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.mac_address = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_LINK_KEY_ID_MAC_ADDRESS, &key.mac_address);
+    bcmcli_log(";\n");
+
+    /* set stat flags from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "clear");
+    if (cli_parm != NULL)
+    {
+        clear_on_read = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "clear is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("clear_on_read = %s;\n", (clear_on_read) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* init the API struct */
+    BCMOLT_STAT_INIT(&stat, epon_link, key);
+    bcmcli_log("BCMOLT_STAT_INIT(&stat, epon_link, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "rx_data_bytes");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_link, rx_data_bytes);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_link, rx_data_bytes);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_data_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_link, rx_data_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_link, rx_data_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_frames_64");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_link, rx_frames_64);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_link, rx_frames_64);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_frames_65_127");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_link, rx_frames_65_127);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_link, rx_frames_65_127);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_frames_128_255");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_link, rx_frames_128_255);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_link, rx_frames_128_255);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_frames_256_511");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_link, rx_frames_256_511);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_link, rx_frames_256_511);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_frames_512_1023");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_link, rx_frames_512_1023);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_link, rx_frames_512_1023);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_frames_1024_1518");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_link, rx_frames_1024_1518);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_link, rx_frames_1024_1518);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_frames_1519_2047");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_link, rx_frames_1519_2047);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_link, rx_frames_1519_2047);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_frames_2048_4095");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_link, rx_frames_2048_4095);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_link, rx_frames_2048_4095);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_frames_4096_9216");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_link, rx_frames_4096_9216);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_link, rx_frames_4096_9216);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_frames_9217_16383");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_link, rx_frames_9217_16383);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_link, rx_frames_9217_16383);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_oam_bytes");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_link, rx_oam_bytes);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_link, rx_oam_bytes);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_oam_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_link, rx_oam_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_link, rx_oam_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_mpcp_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_link, rx_mpcp_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_link, rx_mpcp_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_broadcast_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_link, rx_broadcast_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_link, rx_broadcast_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_unicast_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_link, rx_unicast_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_link, rx_unicast_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_multicast_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_link, rx_multicast_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_link, rx_multicast_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_report_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_link, rx_report_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_link, rx_report_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_fcs_error");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_link, rx_fcs_error);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_link, rx_fcs_error);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_oversize_error");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_link, rx_oversize_error);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_link, rx_oversize_error);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_runt_error");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_link, rx_runt_error);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_link, rx_runt_error);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_line_code_error");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_link, rx_line_code_error);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_link, rx_line_code_error);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_line_code_error_max");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_link, rx_line_code_error_max);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_link, rx_line_code_error_max);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_data_bytes");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_link, tx_data_bytes);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_link, tx_data_bytes);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_data_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_link, tx_data_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_link, tx_data_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_frames_64");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_link, tx_frames_64);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_link, tx_frames_64);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_frames_65_127");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_link, tx_frames_65_127);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_link, tx_frames_65_127);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_frames_128_255");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_link, tx_frames_128_255);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_link, tx_frames_128_255);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_frames_256_511");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_link, tx_frames_256_511);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_link, tx_frames_256_511);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_frames_512_1023");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_link, tx_frames_512_1023);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_link, tx_frames_512_1023);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_frames_1024_1518");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_link, tx_frames_1024_1518);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_link, tx_frames_1024_1518);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_frames_1519_2047");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_link, tx_frames_1519_2047);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_link, tx_frames_1519_2047);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_frames_2048_4095");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_link, tx_frames_2048_4095);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_link, tx_frames_2048_4095);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_frames_4096_9216");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_link, tx_frames_4096_9216);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_link, tx_frames_4096_9216);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_frames_9217_16383");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_link, tx_frames_9217_16383);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_link, tx_frames_9217_16383);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_oam_bytes");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_link, tx_oam_bytes);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_link, tx_oam_bytes);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_oam_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_link, tx_oam_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_link, tx_oam_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_mpcp_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_link, tx_mpcp_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_link, tx_mpcp_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_broadcast_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_link, tx_broadcast_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_link, tx_broadcast_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_unicast_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_link, tx_unicast_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_link, tx_unicast_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_multicast_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_link, tx_multicast_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_link, tx_multicast_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_gates");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_link, tx_gates);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_link, tx_gates);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_STAT_PROP_IS_SET(&stat, epon_link, rx_data_bytes) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_link, rx_data_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_link, rx_frames_64) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_link, rx_frames_65_127) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_link, rx_frames_128_255) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_link, rx_frames_256_511) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_link, rx_frames_512_1023) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_link, rx_frames_1024_1518) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_link, rx_frames_1519_2047) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_link, rx_frames_2048_4095) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_link, rx_frames_4096_9216) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_link, rx_frames_9217_16383) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_link, rx_oam_bytes) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_link, rx_oam_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_link, rx_mpcp_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_link, rx_broadcast_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_link, rx_unicast_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_link, rx_multicast_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_link, rx_report_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_link, rx_fcs_error) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_link, rx_oversize_error) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_link, rx_runt_error) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_link, rx_line_code_error) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_link, rx_line_code_error_max) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_link, tx_data_bytes) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_link, tx_data_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_link, tx_frames_64) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_link, tx_frames_65_127) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_link, tx_frames_128_255) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_link, tx_frames_256_511) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_link, tx_frames_512_1023) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_link, tx_frames_1024_1518) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_link, tx_frames_1519_2047) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_link, tx_frames_2048_4095) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_link, tx_frames_4096_9216) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_link, tx_frames_9217_16383) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_link, tx_oam_bytes) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_link, tx_oam_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_link, tx_mpcp_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_link, tx_broadcast_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_link, tx_unicast_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_link, tx_multicast_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_link, tx_gates))
+    {
+        BCMOLT_STAT_PROP_GET(&stat, epon_link, all_properties);
+        bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_link, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_stat_get(device_id, &stat.hdr, clear_on_read);
+    bcmcli_log("bcmolt_stat_get(device_id, &stat.hdr, clear_on_read);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &stat.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, stat.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_link_oper_force_rediscovery_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_link_force_rediscovery oper;    /**< declare main API struct */
+    bcmolt_epon_link_key key = { };             /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_link_force_rediscovery oper;\n");
+    bcmcli_log("bcmolt_epon_link_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_LINK_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "mac_address");
+    if (cli_parm != NULL)
+    {
+        key.mac_address = cli_parm->value.mac;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "mac_address is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.mac_address = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_LINK_KEY_ID_MAC_ADDRESS, &key.mac_address);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, epon_link, force_rediscovery, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, epon_link, force_rediscovery, key);\n");
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_link_oper_delete_link_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_link_delete_link oper;  /**< declare main API struct */
+    bcmolt_epon_link_key key = { };     /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_link_delete_link oper;\n");
+    bcmcli_log("bcmolt_epon_link_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_LINK_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "mac_address");
+    if (cli_parm != NULL)
+    {
+        key.mac_address = cli_parm->value.mac;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "mac_address is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.mac_address = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_LINK_KEY_ID_MAC_ADDRESS, &key.mac_address);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, epon_link, delete_link, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, epon_link, delete_link, key);\n");
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_link_oper_oam_keepalive_timer_start_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_link_oam_keepalive_timer_start oper;    /**< declare main API struct */
+    bcmolt_epon_link_key key = { };                     /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_link_oam_keepalive_timer_start oper;\n");
+    bcmcli_log("bcmolt_epon_link_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_LINK_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "mac_address");
+    if (cli_parm != NULL)
+    {
+        key.mac_address = cli_parm->value.mac;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "mac_address is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.mac_address = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_LINK_KEY_ID_MAC_ADDRESS, &key.mac_address);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, epon_link, oam_keepalive_timer_start, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, epon_link, oam_keepalive_timer_start, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "send_period");
+    if (cli_parm != NULL)
+    {
+        uint16_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_OPER_PROP_SET(&oper, epon_link, oam_keepalive_timer_start, send_period, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, epon_link, oam_keepalive_timer_start, send_period, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_OPER, BCMOLT_EPON_LINK_OPER_ID_OAM_KEEPALIVE_TIMER_START, BCMOLT_EPON_LINK_OAM_KEEPALIVE_TIMER_START_ID_SEND_PERIOD, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_link_oper_oam_keepalive_timer_stop_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_link_oam_keepalive_timer_stop oper; /**< declare main API struct */
+    bcmolt_epon_link_key key = { };                 /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_link_oam_keepalive_timer_stop oper;\n");
+    bcmcli_log("bcmolt_epon_link_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_LINK_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "mac_address");
+    if (cli_parm != NULL)
+    {
+        key.mac_address = cli_parm->value.mac;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "mac_address is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.mac_address = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_LINK_KEY_ID_MAC_ADDRESS, &key.mac_address);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, epon_link, oam_keepalive_timer_stop, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, epon_link, oam_keepalive_timer_stop, key);\n");
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_link_oper_key_exchange_start_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_link_key_exchange_start oper;   /**< declare main API struct */
+    bcmolt_epon_link_key key = { };             /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_link_key_exchange_start oper;\n");
+    bcmcli_log("bcmolt_epon_link_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_LINK_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "mac_address");
+    if (cli_parm != NULL)
+    {
+        key.mac_address = cli_parm->value.mac;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "mac_address is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.mac_address = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_LINK_KEY_ID_MAC_ADDRESS, &key.mac_address);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, epon_link, key_exchange_start, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, epon_link, key_exchange_start, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "period");
+    if (cli_parm != NULL)
+    {
+        uint16_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_OPER_PROP_SET(&oper, epon_link, key_exchange_start, period, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, epon_link, key_exchange_start, period, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_OPER, BCMOLT_EPON_LINK_OPER_ID_KEY_EXCHANGE_START, BCMOLT_EPON_LINK_KEY_EXCHANGE_START_ID_PERIOD, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_link_oper_key_exchange_stop_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_link_key_exchange_stop oper;    /**< declare main API struct */
+    bcmolt_epon_link_key key = { };             /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_link_key_exchange_stop oper;\n");
+    bcmcli_log("bcmolt_epon_link_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_LINK_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "mac_address");
+    if (cli_parm != NULL)
+    {
+        key.mac_address = cli_parm->value.mac;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "mac_address is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.mac_address = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_LINK_KEY_ID_MAC_ADDRESS, &key.mac_address);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, epon_link, key_exchange_stop, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, epon_link, key_exchange_stop, key);\n");
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_link_oper_static_registration_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_link_static_registration oper;  /**< declare main API struct */
+    bcmolt_epon_link_key key = { };             /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_link_static_registration oper;\n");
+    bcmcli_log("bcmolt_epon_link_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_LINK_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "mac_address");
+    if (cli_parm != NULL)
+    {
+        key.mac_address = cli_parm->value.mac;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "mac_address is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.mac_address = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_LINK_KEY_ID_MAC_ADDRESS, &key.mac_address);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, epon_link, static_registration, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, epon_link, static_registration, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "laseron_time_tq");
+    if (cli_parm != NULL)
+    {
+        bcmolt_time_quanta val;
+        val = (bcmolt_time_quanta) cli_parm->value.unumber;
+        BCMOLT_OPER_PROP_SET(&oper, epon_link, static_registration, laseron_time_tq, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, epon_link, static_registration, laseron_time_tq, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_OPER, BCMOLT_EPON_LINK_OPER_ID_STATIC_REGISTRATION, BCMOLT_EPON_LINK_STATIC_REGISTRATION_ID_LASERON_TIME_TQ, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "laseroff_time_tq");
+    if (cli_parm != NULL)
+    {
+        bcmolt_time_quanta val;
+        val = (bcmolt_time_quanta) cli_parm->value.unumber;
+        BCMOLT_OPER_PROP_SET(&oper, epon_link, static_registration, laseroff_time_tq, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, epon_link, static_registration, laseroff_time_tq, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_OPER, BCMOLT_EPON_LINK_OPER_ID_STATIC_REGISTRATION, BCMOLT_EPON_LINK_STATIC_REGISTRATION_ID_LASEROFF_TIME_TQ, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "range_value_tq");
+    if (cli_parm != NULL)
+    {
+        bcmolt_time_quanta val;
+        val = (bcmolt_time_quanta) cli_parm->value.unumber;
+        BCMOLT_OPER_PROP_SET(&oper, epon_link, static_registration, range_value_tq, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, epon_link, static_registration, range_value_tq, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_OPER, BCMOLT_EPON_LINK_OPER_ID_STATIC_REGISTRATION, BCMOLT_EPON_LINK_STATIC_REGISTRATION_ID_RANGE_VALUE_TQ, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "pending_grants");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_OPER_PROP_SET(&oper, epon_link, static_registration, pending_grants, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, epon_link, static_registration, pending_grants, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_OPER, BCMOLT_EPON_LINK_OPER_ID_STATIC_REGISTRATION, BCMOLT_EPON_LINK_STATIC_REGISTRATION_ID_PENDING_GRANTS, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_link_proxy_inject_frame_send(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_link_inject_frame proxy;    /**< declare main API struct */
+    bcmolt_epon_link_key key = { };         /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_link_inject_frame proxy;\n");
+    bcmcli_log("bcmolt_epon_link_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_proxy_send");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_LINK_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "mac_address");
+    if (cli_parm != NULL)
+    {
+        key.mac_address = cli_parm->value.mac;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "mac_address is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.mac_address = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_LINK_KEY_ID_MAC_ADDRESS, &key.mac_address);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_PROXY_INIT(&proxy, epon_link, inject_frame, key);
+    bcmcli_log("BCMOLT_PROXY_INIT(&proxy, epon_link, inject_frame, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_parm_by_prefix(session, "frame.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_ethernet_frame_unmasked val = { };
+        cli_parm = bcmcli_find_named_parm(session, "frame.frame_octets");
+        if (cli_parm != NULL)
+        {
+            val.frame_octets.len = bcmolt_buf_get_used(&cli_parm->value.buffer);
+            val.frame_octets.val = apicli_byte_pool_calloc(byte_pool, val.frame_octets.len);
+            if (val.frame_octets.val == NULL)
+            {
+                apicli_print_complete(session, BCM_ERR_NOMEM, "\n");
+                return BCM_ERR_NOMEM;
+            }
+
+            bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+            bcmolt_buf_read(&cli_parm->value.buffer, val.frame_octets.val, val.frame_octets.len);
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "frame.frame_octets is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_PROXY_PROP_SET(&proxy, epon_link, inject_frame, frame, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_ethernet_frame_unmasked val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_PROXY, BCMOLT_EPON_LINK_PROXY_ID_INJECT_FRAME, BCMOLT_EPON_LINK_INJECT_FRAME_ID_FRAME, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_PROXY_PROP_SET(&proxy, epon_link, inject_frame, frame, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    /* call API */
+    err = bcmolt_proxy_send(device_id, &proxy.hdr);
+    bcmcli_log("bcmolt_proxy_send(device_id, &proxy.hdr);\n");
+    apicli_print_complete(session, err, proxy.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_link_stat_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_link_stat_cfg stat_cfg; /**< declare main API struct */
+    bcmolt_epon_link_key key = { };     /**< declare key */
+    bcmolt_epon_link_stat_id stat_id;   /**< declare stat ID */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_link_stat_cfg stat_cfg;\n");
+    bcmcli_log("bcmolt_epon_link_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_stat_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_LINK_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "mac_address");
+    if (cli_parm != NULL)
+    {
+        key.mac_address = cli_parm->value.mac;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "mac_address is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.mac_address = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_LINK_KEY_ID_MAC_ADDRESS, &key.mac_address);
+    bcmcli_log(";\n");
+
+    /* set stat ID from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "sub");
+    if (cli_parm != NULL)
+    {
+        stat_id = (bcmolt_epon_link_stat_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    /* init the API struct */
+    switch (stat_id)
+    {
+        case BCMOLT_EPON_LINK_STAT_ID_RX_DATA_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_data_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_data_bytes, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_RX_DATA_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_data_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_data_frames, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_RX_FRAMES_64:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_frames_64, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_frames_64, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_RX_FRAMES_65_127:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_frames_65_127, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_frames_65_127, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_RX_FRAMES_128_255:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_frames_128_255, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_frames_128_255, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_RX_FRAMES_256_511:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_frames_256_511, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_frames_256_511, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_RX_FRAMES_512_1023:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_frames_512_1023, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_frames_512_1023, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_RX_FRAMES_1024_1518:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_frames_1024_1518, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_frames_1024_1518, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_RX_FRAMES_1519_2047:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_frames_1519_2047, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_frames_1519_2047, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_RX_FRAMES_2048_4095:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_frames_2048_4095, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_frames_2048_4095, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_RX_FRAMES_4096_9216:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_frames_4096_9216, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_frames_4096_9216, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_RX_FRAMES_9217_16383:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_frames_9217_16383, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_frames_9217_16383, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_RX_OAM_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_oam_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_oam_bytes, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_RX_OAM_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_oam_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_oam_frames, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_RX_MPCP_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_mpcp_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_mpcp_frames, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_RX_BROADCAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_broadcast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_broadcast_frames, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_RX_UNICAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_unicast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_unicast_frames, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_RX_MULTICAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_multicast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_multicast_frames, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_RX_REPORT_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_report_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_report_frames, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_RX_FCS_ERROR:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_fcs_error, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_fcs_error, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_RX_OVERSIZE_ERROR:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_oversize_error, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_oversize_error, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_RX_RUNT_ERROR:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_runt_error, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_runt_error, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_RX_LINE_CODE_ERROR:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_line_code_error, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_line_code_error, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_RX_LINE_CODE_ERROR_MAX:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_line_code_error_max, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_line_code_error_max, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_TX_DATA_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_data_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_data_bytes, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_TX_DATA_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_data_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_data_frames, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_TX_FRAMES_64:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_frames_64, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_frames_64, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_TX_FRAMES_65_127:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_frames_65_127, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_frames_65_127, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_TX_FRAMES_128_255:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_frames_128_255, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_frames_128_255, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_TX_FRAMES_256_511:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_frames_256_511, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_frames_256_511, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_TX_FRAMES_512_1023:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_frames_512_1023, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_frames_512_1023, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_TX_FRAMES_1024_1518:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_frames_1024_1518, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_frames_1024_1518, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_TX_FRAMES_1519_2047:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_frames_1519_2047, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_frames_1519_2047, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_TX_FRAMES_2048_4095:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_frames_2048_4095, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_frames_2048_4095, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_TX_FRAMES_4096_9216:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_frames_4096_9216, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_frames_4096_9216, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_TX_FRAMES_9217_16383:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_frames_9217_16383, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_frames_9217_16383, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_TX_OAM_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_oam_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_oam_bytes, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_TX_OAM_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_oam_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_oam_frames, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_TX_MPCP_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_mpcp_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_mpcp_frames, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_TX_BROADCAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_broadcast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_broadcast_frames, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_TX_UNICAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_unicast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_unicast_frames, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_TX_MULTICAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_multicast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_multicast_frames, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_TX_GATES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_gates, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_gates, key);\n");
+            break;
+        default:
+            apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+            return BCM_ERR_RANGE;
+    }
+
+    /* call API */
+    err = bcmolt_stat_cfg_get(device_id, &stat_cfg.hdr);
+    bcmcli_log("bcmolt_stat_cfg_get(device_id, &stat_cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &stat_cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, stat_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_link_stat_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_link_stat_cfg stat_cfg; /**< declare main API struct */
+    bcmolt_epon_link_key key = { };     /**< declare key */
+    bcmolt_epon_link_stat_id stat_id;   /**< declare stat ID */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_link_stat_cfg stat_cfg;\n");
+    bcmcli_log("bcmolt_epon_link_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_stat_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_LINK_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "mac_address");
+    if (cli_parm != NULL)
+    {
+        key.mac_address = cli_parm->value.mac;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "mac_address is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.mac_address = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_LINK_KEY_ID_MAC_ADDRESS, &key.mac_address);
+    bcmcli_log(";\n");
+
+    /* set stat ID from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "sub");
+    if (cli_parm != NULL)
+    {
+        stat_id = (bcmolt_epon_link_stat_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    /* init the API struct */
+    switch (stat_id)
+    {
+        case BCMOLT_EPON_LINK_STAT_ID_RX_DATA_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_data_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_data_bytes, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_RX_DATA_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_data_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_data_frames, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_RX_FRAMES_64:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_frames_64, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_frames_64, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_RX_FRAMES_65_127:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_frames_65_127, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_frames_65_127, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_RX_FRAMES_128_255:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_frames_128_255, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_frames_128_255, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_RX_FRAMES_256_511:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_frames_256_511, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_frames_256_511, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_RX_FRAMES_512_1023:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_frames_512_1023, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_frames_512_1023, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_RX_FRAMES_1024_1518:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_frames_1024_1518, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_frames_1024_1518, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_RX_FRAMES_1519_2047:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_frames_1519_2047, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_frames_1519_2047, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_RX_FRAMES_2048_4095:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_frames_2048_4095, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_frames_2048_4095, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_RX_FRAMES_4096_9216:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_frames_4096_9216, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_frames_4096_9216, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_RX_FRAMES_9217_16383:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_frames_9217_16383, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_frames_9217_16383, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_RX_OAM_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_oam_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_oam_bytes, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_RX_OAM_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_oam_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_oam_frames, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_RX_MPCP_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_mpcp_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_mpcp_frames, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_RX_BROADCAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_broadcast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_broadcast_frames, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_RX_UNICAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_unicast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_unicast_frames, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_RX_MULTICAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_multicast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_multicast_frames, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_RX_REPORT_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_report_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_report_frames, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_RX_FCS_ERROR:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_fcs_error, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_fcs_error, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_RX_OVERSIZE_ERROR:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_oversize_error, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_oversize_error, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_RX_RUNT_ERROR:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_runt_error, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_runt_error, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_RX_LINE_CODE_ERROR:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_line_code_error, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_line_code_error, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_RX_LINE_CODE_ERROR_MAX:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_line_code_error_max, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, rx_line_code_error_max, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_TX_DATA_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_data_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_data_bytes, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_TX_DATA_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_data_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_data_frames, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_TX_FRAMES_64:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_frames_64, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_frames_64, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_TX_FRAMES_65_127:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_frames_65_127, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_frames_65_127, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_TX_FRAMES_128_255:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_frames_128_255, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_frames_128_255, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_TX_FRAMES_256_511:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_frames_256_511, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_frames_256_511, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_TX_FRAMES_512_1023:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_frames_512_1023, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_frames_512_1023, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_TX_FRAMES_1024_1518:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_frames_1024_1518, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_frames_1024_1518, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_TX_FRAMES_1519_2047:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_frames_1519_2047, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_frames_1519_2047, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_TX_FRAMES_2048_4095:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_frames_2048_4095, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_frames_2048_4095, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_TX_FRAMES_4096_9216:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_frames_4096_9216, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_frames_4096_9216, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_TX_FRAMES_9217_16383:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_frames_9217_16383, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_frames_9217_16383, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_TX_OAM_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_oam_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_oam_bytes, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_TX_OAM_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_oam_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_oam_frames, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_TX_MPCP_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_mpcp_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_mpcp_frames, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_TX_BROADCAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_broadcast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_broadcast_frames, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_TX_UNICAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_unicast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_unicast_frames, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_TX_MULTICAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_multicast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_multicast_frames, key);\n");
+            break;
+        case BCMOLT_EPON_LINK_STAT_ID_TX_GATES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_gates, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_link, tx_gates, key);\n");
+            break;
+        default:
+            apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+            return BCM_ERR_RANGE;
+    }
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_stat_alarm_config val = { };
+        cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.trigger.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.type");
+            if (cli_parm != NULL)
+            {
+                val.trigger.type = (bcmolt_stat_condition_type) cli_parm->value.enum_val;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.type is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            switch (val.trigger.type)
+            {
+                case BCMOLT_STAT_CONDITION_TYPE_RATE_THRESHOLD:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.rising");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_threshold.rising = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.rising is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.falling");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_threshold.falling = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.falling is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_RATE_RANGE:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.upper");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_range.upper = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.upper is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.lower");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_range.lower = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.lower is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_VALUE_THRESHOLD:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.limit");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.value_threshold.limit = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.limit is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_NONE:
+                    break;
+                default:
+                    apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+                    return BCM_ERR_RANGE;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.soak.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "cfg.soak.active_soak_time");
+            if (cli_parm != NULL)
+            {
+                val.soak.active_soak_time = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak.active_soak_time is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "cfg.soak.clear_soak_time");
+            if (cli_parm != NULL)
+            {
+                val.soak.clear_soak_time = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak.clear_soak_time is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_STAT_CFG_PROP_SET(&stat_cfg, epon_link, cfg, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_stat_alarm_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_STAT_CFG, 0, BCMOLT_EPON_LINK_STAT_CFG_ID_CFG, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_STAT_CFG_PROP_SET(&stat_cfg, epon_link, cfg, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    /* call API */
+    err = bcmolt_stat_cfg_set(device_id, &stat_cfg.hdr);
+    bcmcli_log("bcmolt_stat_cfg_set(device_id, &stat_cfg.hdr);\n");
+    apicli_print_complete(session, err, stat_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_link_auto_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_link_auto_cfg auto_cfg; /**< declare main API struct */
+    bcmolt_epon_link_key key = { };     /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_link_auto_cfg auto_cfg;\n");
+    bcmcli_log("bcmolt_epon_link_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_auto_cfg_get");
+
+    /* init the API struct */
+    BCMOLT_AUTO_CFG_INIT(&auto_cfg, epon_link, key);
+    bcmcli_log("BCMOLT_AUTO_CFG_INIT(&auto_cfg, epon_link, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "duplicate_mpcp_registration_request");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_link, duplicate_mpcp_registration_request);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_link, duplicate_mpcp_registration_request);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "encryption_enabled");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_link, encryption_enabled);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_link, encryption_enabled);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "key_exchange_failure");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_link, key_exchange_failure);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_link, key_exchange_failure);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "key_exchange_started");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_link, key_exchange_started);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_link, key_exchange_started);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "key_exchange_stopped");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_link, key_exchange_stopped);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_link, key_exchange_stopped);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "link_deleted");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_link, link_deleted);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_link, link_deleted);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "link_speed_mismatch");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_link, link_speed_mismatch);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_link, link_speed_mismatch);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mpcp_deregistered");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_link, mpcp_deregistered);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_link, mpcp_deregistered);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mpcp_discovered");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_link, mpcp_discovered);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_link, mpcp_discovered);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mpcp_reg_ack_timeout");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_link, mpcp_reg_ack_timeout);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_link, mpcp_reg_ack_timeout);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mpcp_report_timeout");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_link, mpcp_report_timeout);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_link, mpcp_report_timeout);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "oam_keepalive_timeout");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_link, oam_keepalive_timeout);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_link, oam_keepalive_timeout);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "oam_keepalive_timer_started");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_link, oam_keepalive_timer_started);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_link, oam_keepalive_timer_started);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "oam_keepalive_timer_stopped");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_link, oam_keepalive_timer_stopped);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_link, oam_keepalive_timer_stopped);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "preprovisioned_link_created");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_link, preprovisioned_link_created);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_link, preprovisioned_link_created);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "protection_switch_occurred");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_link, protection_switch_occurred);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_link, protection_switch_occurred);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "range_value_changed");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_link, range_value_changed);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_link, range_value_changed);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rerange_failure");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_link, rerange_failure);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_link, rerange_failure);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_cleared");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_link, stat_alarm_cleared);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_link, stat_alarm_cleared);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_raised");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_link, stat_alarm_raised);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_link, stat_alarm_raised);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "static_registration_done");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_link, static_registration_done);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_link, static_registration_done);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, epon_link, duplicate_mpcp_registration_request) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, epon_link, encryption_enabled) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, epon_link, key_exchange_failure) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, epon_link, key_exchange_started) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, epon_link, key_exchange_stopped) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, epon_link, link_deleted) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, epon_link, link_speed_mismatch) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, epon_link, mpcp_deregistered) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, epon_link, mpcp_discovered) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, epon_link, mpcp_reg_ack_timeout) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, epon_link, mpcp_report_timeout) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, epon_link, oam_keepalive_timeout) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, epon_link, oam_keepalive_timer_started) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, epon_link, oam_keepalive_timer_stopped) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, epon_link, preprovisioned_link_created) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, epon_link, protection_switch_occurred) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, epon_link, range_value_changed) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, epon_link, rerange_failure) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, epon_link, stat_alarm_cleared) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, epon_link, stat_alarm_raised) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, epon_link, static_registration_done))
+    {
+        BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_link, all_properties);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_link, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_auto_cfg_get(device_id, &auto_cfg.hdr);
+    bcmcli_log("bcmolt_auto_cfg_get(device_id, &auto_cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &auto_cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, auto_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_link_auto_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_link_auto_cfg auto_cfg; /**< declare main API struct */
+    bcmolt_epon_link_key key = { };     /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_link_auto_cfg auto_cfg;\n");
+    bcmcli_log("bcmolt_epon_link_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_auto_cfg_set");
+
+    /* init the API struct */
+    BCMOLT_AUTO_CFG_INIT(&auto_cfg, epon_link, key);
+    bcmcli_log("BCMOLT_AUTO_CFG_INIT(&auto_cfg, epon_link, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "duplicate_mpcp_registration_request");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_link, duplicate_mpcp_registration_request, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_link, duplicate_mpcp_registration_request, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_EPON_LINK_AUTO_CFG_ID_DUPLICATE_MPCP_REGISTRATION_REQUEST, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "encryption_enabled");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_link, encryption_enabled, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_link, encryption_enabled, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_EPON_LINK_AUTO_CFG_ID_ENCRYPTION_ENABLED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "key_exchange_failure");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_link, key_exchange_failure, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_link, key_exchange_failure, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_EPON_LINK_AUTO_CFG_ID_KEY_EXCHANGE_FAILURE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "key_exchange_started");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_link, key_exchange_started, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_link, key_exchange_started, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_EPON_LINK_AUTO_CFG_ID_KEY_EXCHANGE_STARTED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "key_exchange_stopped");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_link, key_exchange_stopped, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_link, key_exchange_stopped, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_EPON_LINK_AUTO_CFG_ID_KEY_EXCHANGE_STOPPED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "link_deleted");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_link, link_deleted, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_link, link_deleted, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_EPON_LINK_AUTO_CFG_ID_LINK_DELETED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "link_speed_mismatch");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_link, link_speed_mismatch, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_link, link_speed_mismatch, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_EPON_LINK_AUTO_CFG_ID_LINK_SPEED_MISMATCH, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mpcp_deregistered");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_link, mpcp_deregistered, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_link, mpcp_deregistered, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_EPON_LINK_AUTO_CFG_ID_MPCP_DEREGISTERED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mpcp_discovered");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_link, mpcp_discovered, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_link, mpcp_discovered, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_EPON_LINK_AUTO_CFG_ID_MPCP_DISCOVERED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mpcp_reg_ack_timeout");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_link, mpcp_reg_ack_timeout, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_link, mpcp_reg_ack_timeout, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_EPON_LINK_AUTO_CFG_ID_MPCP_REG_ACK_TIMEOUT, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mpcp_report_timeout");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_link, mpcp_report_timeout, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_link, mpcp_report_timeout, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_EPON_LINK_AUTO_CFG_ID_MPCP_REPORT_TIMEOUT, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "oam_keepalive_timeout");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_link, oam_keepalive_timeout, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_link, oam_keepalive_timeout, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_EPON_LINK_AUTO_CFG_ID_OAM_KEEPALIVE_TIMEOUT, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "oam_keepalive_timer_started");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_link, oam_keepalive_timer_started, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_link, oam_keepalive_timer_started, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_EPON_LINK_AUTO_CFG_ID_OAM_KEEPALIVE_TIMER_STARTED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "oam_keepalive_timer_stopped");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_link, oam_keepalive_timer_stopped, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_link, oam_keepalive_timer_stopped, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_EPON_LINK_AUTO_CFG_ID_OAM_KEEPALIVE_TIMER_STOPPED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "preprovisioned_link_created");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_link, preprovisioned_link_created, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_link, preprovisioned_link_created, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_EPON_LINK_AUTO_CFG_ID_PREPROVISIONED_LINK_CREATED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "protection_switch_occurred");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_link, protection_switch_occurred, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_link, protection_switch_occurred, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_EPON_LINK_AUTO_CFG_ID_PROTECTION_SWITCH_OCCURRED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "range_value_changed");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_link, range_value_changed, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_link, range_value_changed, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_EPON_LINK_AUTO_CFG_ID_RANGE_VALUE_CHANGED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rerange_failure");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_link, rerange_failure, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_link, rerange_failure, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_EPON_LINK_AUTO_CFG_ID_RERANGE_FAILURE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_cleared");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_link, stat_alarm_cleared, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_link, stat_alarm_cleared, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_EPON_LINK_AUTO_CFG_ID_STAT_ALARM_CLEARED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_raised");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_link, stat_alarm_raised, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_link, stat_alarm_raised, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_EPON_LINK_AUTO_CFG_ID_STAT_ALARM_RAISED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "static_registration_done");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_link, static_registration_done, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_link, static_registration_done, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_LINK, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_EPON_LINK_AUTO_CFG_ID_STATIC_REGISTRATION_DONE, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_auto_cfg_set(device_id, &auto_cfg.hdr);
+    bcmcli_log("bcmolt_auto_cfg_set(device_id, &auto_cfg.hdr);\n");
+    apicli_print_complete(session, err, auto_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_ni_cfg_get(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_ni_cfg cfg;         /**< declare main API struct */
+    bcmolt_epon_ni_key key = { };   /**< declare key */
+    uint8_t *list_mem;              /**< declare memory buffer for variable-sized lists */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_ni_cfg cfg;\n");
+    bcmcli_log("bcmolt_epon_ni_key key = {  };\n");
+    bcmcli_log("uint8_t* list_mem;\n");
+    apicli_print_start(session, "bcmolt_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_NI_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, epon_ni, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, epon_ni, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "mac_address");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_ni, mac_address);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_ni, mac_address);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni_en");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_ni, epon_ni_en);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_ni, epon_ni_en);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "registration_behavior");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_ni, registration_behavior);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_ni, registration_behavior);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mtu_1g");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_ni, mtu_1g);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_ni, mtu_1g);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mtu_10g");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_ni, mtu_10g);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_ni, mtu_10g);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "minimum_fiber_length");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_ni, minimum_fiber_length);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_ni, minimum_fiber_length);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "maximum_fiber_length");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_ni, maximum_fiber_length);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_ni, maximum_fiber_length);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "grant_spacing_tq");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_ni, grant_spacing_tq);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_ni, grant_spacing_tq);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "epon_logical_link_options");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_ni, epon_logical_link_options);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_ni, epon_logical_link_options);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mpcp_discovery_period_ms");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_ni, mpcp_discovery_period_ms);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_ni, mpcp_discovery_period_ms);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "alarm_state");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_ni, alarm_state);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_ni, alarm_state);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "all_links");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_ni, all_links);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_ni, all_links);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "encryption_cfg");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_ni, encryption_cfg);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_ni, encryption_cfg);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "protection_switching_cfg");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_ni, protection_switching_cfg);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_ni, protection_switching_cfg);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "clock_transport_cfg");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_ni, clock_transport_cfg);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_ni, clock_transport_cfg);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "dropdown_weights");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_ni, dropdown_weights);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_ni, dropdown_weights);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "approximate_solicited_usage");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_ni, approximate_solicited_usage);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_ni, approximate_solicited_usage);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "approximate_tdm_usage");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_ni, approximate_tdm_usage);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_ni, approximate_tdm_usage);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "no_reports_soak_time");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_ni, no_reports_soak_time);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_ni, no_reports_soak_time);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "pon_aggregate_shaper");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_ni, pon_aggregate_shaper);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_ni, pon_aggregate_shaper);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "estimated_pon_latency_tq");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_ni, estimated_pon_latency_tq);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_ni, estimated_pon_latency_tq);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_upgrade_params");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_ni, onu_upgrade_params);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_ni, onu_upgrade_params);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "auto_rogue_detect_10g_en");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_ni, auto_rogue_detect_10g_en);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_ni, auto_rogue_detect_10g_en);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "auto_rogue_detect_1g_en");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_ni, auto_rogue_detect_1g_en);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_ni, auto_rogue_detect_1g_en);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "auto_rogue_detect_10g_threshold");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_ni, auto_rogue_detect_10g_threshold);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_ni, auto_rogue_detect_10g_threshold);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_CFG_PROP_IS_SET(&cfg, epon_ni, mac_address) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_ni, epon_ni_en) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_ni, registration_behavior) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_ni, mtu_1g) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_ni, mtu_10g) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_ni, minimum_fiber_length) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_ni, maximum_fiber_length) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_ni, grant_spacing_tq) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_ni, epon_logical_link_options) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_ni, mpcp_discovery_period_ms) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_ni, alarm_state) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_ni, all_links) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_ni, encryption_cfg) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_ni, protection_switching_cfg) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_ni, clock_transport_cfg) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_ni, dropdown_weights) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_ni, approximate_solicited_usage) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_ni, approximate_tdm_usage) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_ni, no_reports_soak_time) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_ni, pon_aggregate_shaper) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_ni, estimated_pon_latency_tq) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_ni, onu_upgrade_params) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_ni, auto_rogue_detect_10g_en) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_ni, auto_rogue_detect_1g_en) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_ni, auto_rogue_detect_10g_threshold))
+    {
+        BCMOLT_CFG_PROP_GET(&cfg, epon_ni, all_properties);
+        bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_ni, all_properties);\n");
+    }
+
+    /* set memory to use for variable-sized lists */
+    list_mem = apicli_byte_pool_calloc(byte_pool, APICLI_DYNAMIC_LIST_BUFFER_SIZE);
+    if (list_mem == NULL)
+    {
+        apicli_print_complete(session, BCM_ERR_NOMEM, "\n");
+        return BCM_ERR_NOMEM;
+    }
+
+    bcmcli_log("list_mem = bcmos_calloc(APICLI_DYNAMIC_LIST_BUFFER_SIZE);\n");
+    BCMOLT_CFG_LIST_BUF_SET(&cfg, epon_ni, list_mem, APICLI_DYNAMIC_LIST_BUFFER_SIZE);
+    bcmcli_log("BCMOLT_CFG_LIST_BUF_SET(&cfg, epon_ni, list_mem, APICLI_DYNAMIC_LIST_BUFFER_SIZE);\n");
+
+    /* call API */
+    err = bcmolt_cfg_get(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_get(device_id, &cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_ni_cfg_set(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_ni_cfg cfg;         /**< declare main API struct */
+    bcmolt_epon_ni_key key = { };   /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_ni_cfg cfg;\n");
+    bcmcli_log("bcmolt_epon_ni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_NI_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, epon_ni, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, epon_ni, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "mac_address");
+    if (cli_parm != NULL)
+    {
+        bcmos_mac_address val;
+        val = cli_parm->value.mac;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_ni, mac_address, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_ni, mac_address, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_NI_CFG_ID_MAC_ADDRESS, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "registration_behavior");
+    if (cli_parm != NULL)
+    {
+        bcmolt_registration_behavior val;
+        val = (bcmolt_registration_behavior) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_ni, registration_behavior, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_ni, registration_behavior, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_NI_CFG_ID_REGISTRATION_BEHAVIOR, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mtu_1g");
+    if (cli_parm != NULL)
+    {
+        uint16_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_ni, mtu_1g, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_ni, mtu_1g, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_NI_CFG_ID_MTU_1G, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mtu_10g");
+    if (cli_parm != NULL)
+    {
+        uint16_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_ni, mtu_10g, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_ni, mtu_10g, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_NI_CFG_ID_MTU_10G, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "minimum_fiber_length");
+    if (cli_parm != NULL)
+    {
+        bcmolt_meters val;
+        val = (bcmolt_meters) cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_ni, minimum_fiber_length, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_ni, minimum_fiber_length, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_NI_CFG_ID_MINIMUM_FIBER_LENGTH, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "maximum_fiber_length");
+    if (cli_parm != NULL)
+    {
+        bcmolt_meters val;
+        val = (bcmolt_meters) cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_ni, maximum_fiber_length, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_ni, maximum_fiber_length, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_NI_CFG_ID_MAXIMUM_FIBER_LENGTH, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "grant_spacing_tq");
+    if (cli_parm != NULL)
+    {
+        bcmolt_time_quanta val;
+        val = (bcmolt_time_quanta) cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_ni, grant_spacing_tq, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_ni, grant_spacing_tq, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_NI_CFG_ID_GRANT_SPACING_TQ, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "epon_logical_link_options.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_epon_logical_link_options val = { };
+        cli_parm = bcmcli_find_parm_by_prefix(session, "epon_logical_link_options.registration_gate_mode.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "epon_logical_link_options.registration_gate_mode.registration_gate_mode");
+            if (cli_parm != NULL)
+            {
+                val.registration_gate_mode.registration_gate_mode = (bcmolt_mpcp_gate_mode) cli_parm->value.enum_val;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "epon_logical_link_options.registration_gate_mode.registration_gate_mode is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            switch (val.registration_gate_mode.registration_gate_mode)
+            {
+                case BCMOLT_MPCP_GATE_MODE_TEKNOVUS:
+                    cli_parm = bcmcli_find_named_parm(session, "epon_logical_link_options.registration_gate_mode.reg_ack_timeout_ms");
+                    if (cli_parm != NULL)
+                    {
+                        val.registration_gate_mode.u.teknovus.reg_ack_timeout_ms = cli_parm->value.unumber;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "epon_logical_link_options.registration_gate_mode.reg_ack_timeout_ms is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_MPCP_GATE_MODE_CUSTOM:
+                    cli_parm = bcmcli_find_parm_by_prefix(session, "epon_logical_link_options.registration_gate_mode.gates.");
+                    if (cli_parm != NULL)
+                    {
+                        int32_t i0;
+                        val.registration_gate_mode.u.custom.gates.val = apicli_byte_pool_calloc(byte_pool, cli_parm->array_size * sizeof(*val.registration_gate_mode.u.custom.gates.val));
+                        if (val.registration_gate_mode.u.custom.gates.val == NULL)
+                        {
+                            apicli_print_complete(session, BCM_ERR_NOMEM, "\n");
+                            return BCM_ERR_NOMEM;
+                        }
+
+                        val.registration_gate_mode.u.custom.gates.len = cli_parm->array_size;
+                        cli_parm = bcmcli_find_named_parm(session, "epon_logical_link_options.registration_gate_mode.gates.flags");
+                        if (cli_parm != NULL)
+                        {
+                            if (cli_parm->array_size != val.registration_gate_mode.u.custom.gates.len)
+                            {
+                                apicli_print_complete(session, BCM_ERR_PARM, "epon_logical_link_options.registration_gate_mode.gates.flags is a different size than other arrays in the struct\n");
+                                return BCM_ERR_PARM;
+                            }
+
+                            for (i0 = 0; i0 < val.registration_gate_mode.u.custom.gates.len; i0++)
+                            {
+                                val.registration_gate_mode.u.custom.gates.val[i0].flags = (bcmolt_mpcp_registration_gate_flags) cli_parm->values[i0].enum_val;
+                            }
+                        }
+
+                        cli_parm = bcmcli_find_named_parm(session, "epon_logical_link_options.registration_gate_mode.gates.delay_before_ms");
+                        if (cli_parm != NULL)
+                        {
+                            if (cli_parm->array_size != val.registration_gate_mode.u.custom.gates.len)
+                            {
+                                apicli_print_complete(session, BCM_ERR_PARM, "epon_logical_link_options.registration_gate_mode.gates.delay_before_ms is a different size than other arrays in the struct\n");
+                                return BCM_ERR_PARM;
+                            }
+
+                            for (i0 = 0; i0 < val.registration_gate_mode.u.custom.gates.len; i0++)
+                            {
+                                val.registration_gate_mode.u.custom.gates.val[i0].delay_before_ms = cli_parm->values[i0].unumber;
+                            }
+                        }
+
+                        cli_parm = bcmcli_find_named_parm(session, "epon_logical_link_options.registration_gate_mode.gates.gate_size_tq");
+                        if (cli_parm != NULL)
+                        {
+                            if (cli_parm->array_size != val.registration_gate_mode.u.custom.gates.len)
+                            {
+                                apicli_print_complete(session, BCM_ERR_PARM, "epon_logical_link_options.registration_gate_mode.gates.gate_size_tq is a different size than other arrays in the struct\n");
+                                return BCM_ERR_PARM;
+                            }
+
+                            for (i0 = 0; i0 < val.registration_gate_mode.u.custom.gates.len; i0++)
+                            {
+                                val.registration_gate_mode.u.custom.gates.val[i0].gate_size_tq = (bcmolt_time_quanta) cli_parm->values[i0].unumber;
+                            }
+                        }
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "epon_logical_link_options.registration_gate_mode.gates is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                default:
+                    apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+                    return BCM_ERR_RANGE;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "epon_logical_link_options.registration_gate_mode is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "epon_logical_link_options.reporting_mode");
+        if (cli_parm != NULL)
+        {
+            val.reporting_mode = (bcmolt_epon_dba_reporting_mode) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "epon_logical_link_options.reporting_mode is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "epon_logical_link_options.max_links");
+        if (cli_parm != NULL)
+        {
+            val.max_links = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "epon_logical_link_options.max_links is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, epon_ni, epon_logical_link_options, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_epon_logical_link_options val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_NI_CFG_ID_EPON_LOGICAL_LINK_OPTIONS, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_ni, epon_logical_link_options, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mpcp_discovery_period_ms");
+    if (cli_parm != NULL)
+    {
+        uint32_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_ni, mpcp_discovery_period_ms, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_ni, mpcp_discovery_period_ms, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_NI_CFG_ID_MPCP_DISCOVERY_PERIOD_MS, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "encryption_cfg.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_epon_ni_encryption_cfg val = { };
+        cli_parm = bcmcli_find_named_parm(session, "encryption_cfg.downstream_encryption_mode");
+        if (cli_parm != NULL)
+        {
+            val.downstream_encryption_mode = (bcmolt_epon_encryption_mode) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "encryption_cfg.downstream_encryption_mode is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "encryption_cfg.upstream_encryption_mode");
+        if (cli_parm != NULL)
+        {
+            val.upstream_encryption_mode = (bcmolt_epon_encryption_mode) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "encryption_cfg.upstream_encryption_mode is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, epon_ni, encryption_cfg, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_epon_ni_encryption_cfg val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_NI_CFG_ID_ENCRYPTION_CFG, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_ni, encryption_cfg, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "protection_switching_cfg.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_epon_protection_switching_configuration val = { };
+        cli_parm = bcmcli_find_named_parm(session, "protection_switching_cfg.protection_type");
+        if (cli_parm != NULL)
+        {
+            val.protection_type = (bcmolt_epon_protection_switching_type) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "protection_switching_cfg.protection_type is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "protection_switching_cfg.protection_switching_options");
+        if (cli_parm != NULL)
+        {
+            val.protection_switching_options = (bcmolt_protection_switching_detection_options) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "protection_switching_cfg.protection_switching_options is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "protection_switching_cfg.rerange_options");
+        if (cli_parm != NULL)
+        {
+            val.rerange_options = (bcmolt_epon_protection_switching_reranging_options) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "protection_switching_cfg.rerange_options is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "protection_switching_cfg.rerange_attempts");
+        if (cli_parm != NULL)
+        {
+            val.rerange_attempts = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "protection_switching_cfg.rerange_attempts is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "protection_switching_cfg.rerange_interval");
+        if (cli_parm != NULL)
+        {
+            val.rerange_interval = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "protection_switching_cfg.rerange_interval is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "protection_switching_cfg.sync_gate_duration");
+        if (cli_parm != NULL)
+        {
+            val.sync_gate_duration = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "protection_switching_cfg.sync_gate_duration is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "protection_switching_cfg.gpio_input");
+        if (cli_parm != NULL)
+        {
+            val.gpio_input = (bcmolt_gpio_pin) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "protection_switching_cfg.gpio_input is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "protection_switching_cfg.gpio_input_polarity");
+        if (cli_parm != NULL)
+        {
+            val.gpio_input_polarity = (bcmolt_gpio_polarity) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "protection_switching_cfg.gpio_input_polarity is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "protection_switching_cfg.gpio_output");
+        if (cli_parm != NULL)
+        {
+            val.gpio_output = (bcmolt_gpio_pin) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "protection_switching_cfg.gpio_output is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "protection_switching_cfg.gpio_output_polarity");
+        if (cli_parm != NULL)
+        {
+            val.gpio_output_polarity = (bcmolt_gpio_polarity) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "protection_switching_cfg.gpio_output_polarity is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, epon_ni, protection_switching_cfg, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_epon_protection_switching_configuration val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_NI_CFG_ID_PROTECTION_SWITCHING_CFG, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_ni, protection_switching_cfg, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "clock_transport_cfg.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_epon_clock_transport_configuration val = { };
+        cli_parm = bcmcli_find_named_parm(session, "clock_transport_cfg.epon_clock_transport_mode");
+        if (cli_parm != NULL)
+        {
+            val.epon_clock_transport_mode = (bcmolt_epon_clock_transport_mode) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "clock_transport_cfg.epon_clock_transport_mode is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, epon_ni, clock_transport_cfg, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_epon_clock_transport_configuration val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_NI_CFG_ID_CLOCK_TRANSPORT_CFG, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_ni, clock_transport_cfg, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "dropdown_weights.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_arr_u16_7 val = { };
+        cli_parm = bcmcli_find_named_parm(session, "dropdown_weights.arr");
+        if (cli_parm != NULL)
+        {
+            int32_t i1;
+            if (cli_parm->array_size != 7)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "array dropdown_weights.arr must have 7 elements\n");
+                return BCM_ERR_PARM;
+            }
+
+            for (i1 = 0; i1 < 7; i1++)
+            {
+                val.arr[i1] = cli_parm->values[i1].unumber;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "dropdown_weights.arr is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, epon_ni, dropdown_weights, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_arr_u16_7 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_NI_CFG_ID_DROPDOWN_WEIGHTS, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_ni, dropdown_weights, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "no_reports_soak_time");
+    if (cli_parm != NULL)
+    {
+        uint16_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_ni, no_reports_soak_time, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_ni, no_reports_soak_time, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_NI_CFG_ID_NO_REPORTS_SOAK_TIME, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "pon_aggregate_shaper.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_pon_aggregate_shaper val = { };
+        cli_parm = bcmcli_find_named_parm(session, "pon_aggregate_shaper.bandwidth_kbps");
+        if (cli_parm != NULL)
+        {
+            val.bandwidth_kbps = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "pon_aggregate_shaper.bandwidth_kbps is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "pon_aggregate_shaper.mbs_kB");
+        if (cli_parm != NULL)
+        {
+            val.mbs_kB = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "pon_aggregate_shaper.mbs_kB is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, epon_ni, pon_aggregate_shaper, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_pon_aggregate_shaper val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_NI_CFG_ID_PON_AGGREGATE_SHAPER, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_ni, pon_aggregate_shaper, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "onu_upgrade_params.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_epon_onu_upgrade_params val = { };
+        cli_parm = bcmcli_find_named_parm(session, "onu_upgrade_params.oam_extension_type");
+        if (cli_parm != NULL)
+        {
+            val.oam_extension_type = (bcmolt_epon_oam_extension_type) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "onu_upgrade_params.oam_extension_type is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        switch (val.oam_extension_type)
+        {
+            case BCMOLT_EPON_OAM_EXTENSION_TYPE_RESERVED:
+                break;
+            case BCMOLT_EPON_OAM_EXTENSION_TYPE_BROADCOM:
+                cli_parm = bcmcli_find_named_parm(session, "onu_upgrade_params.response_timeout_ms");
+                if (cli_parm != NULL)
+                {
+                    val.u.broadcom.response_timeout_ms = cli_parm->value.unumber;
+                }
+                else
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "onu_upgrade_params.response_timeout_ms is not set\n");
+                    return BCM_ERR_PARM;
+                }
+                break;
+            case BCMOLT_EPON_OAM_EXTENSION_TYPE_CTC:
+                cli_parm = bcmcli_find_named_parm(session, "onu_upgrade_params.response_timeout_ms");
+                if (cli_parm != NULL)
+                {
+                    val.u.ctc.response_timeout_ms = cli_parm->value.unumber;
+                }
+                else
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "onu_upgrade_params.response_timeout_ms is not set\n");
+                    return BCM_ERR_PARM;
+                }
+                break;
+            case BCMOLT_EPON_OAM_EXTENSION_TYPE_DASAN:
+                cli_parm = bcmcli_find_named_parm(session, "onu_upgrade_params.response_timeout_ms");
+                if (cli_parm != NULL)
+                {
+                    val.u.dasan.response_timeout_ms = cli_parm->value.unumber;
+                }
+                else
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "onu_upgrade_params.response_timeout_ms is not set\n");
+                    return BCM_ERR_PARM;
+                }
+                break;
+            case BCMOLT_EPON_OAM_EXTENSION_TYPE_KT:
+                cli_parm = bcmcli_find_named_parm(session, "onu_upgrade_params.response_timeout_ms");
+                if (cli_parm != NULL)
+                {
+                    val.u.kt.response_timeout_ms = cli_parm->value.unumber;
+                }
+                else
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "onu_upgrade_params.response_timeout_ms is not set\n");
+                    return BCM_ERR_PARM;
+                }
+                break;
+            case BCMOLT_EPON_OAM_EXTENSION_TYPE_DPOE:
+                cli_parm = bcmcli_find_named_parm(session, "onu_upgrade_params.response_timeout_ms");
+                if (cli_parm != NULL)
+                {
+                    val.u.dpoe.response_timeout_ms = cli_parm->value.unumber;
+                }
+                else
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "onu_upgrade_params.response_timeout_ms is not set\n");
+                    return BCM_ERR_PARM;
+                }
+
+                cli_parm = bcmcli_find_named_parm(session, "onu_upgrade_params.block_size");
+                if (cli_parm != NULL)
+                {
+                    val.u.dpoe.block_size = cli_parm->value.unumber;
+                }
+                else
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "onu_upgrade_params.block_size is not set\n");
+                    return BCM_ERR_PARM;
+                }
+
+                cli_parm = bcmcli_find_named_parm(session, "onu_upgrade_params.final_ack_response_timeout");
+                if (cli_parm != NULL)
+                {
+                    val.u.dpoe.final_ack_response_timeout = cli_parm->value.unumber;
+                }
+                else
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "onu_upgrade_params.final_ack_response_timeout is not set\n");
+                    return BCM_ERR_PARM;
+                }
+                break;
+            default:
+                apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+                return BCM_ERR_RANGE;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, epon_ni, onu_upgrade_params, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_epon_onu_upgrade_params val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_NI_CFG_ID_ONU_UPGRADE_PARAMS, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_ni, onu_upgrade_params, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "auto_rogue_detect_10g_en");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_ni, auto_rogue_detect_10g_en, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_ni, auto_rogue_detect_10g_en, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_NI_CFG_ID_AUTO_ROGUE_DETECT_10G_EN, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "auto_rogue_detect_1g_en");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_ni, auto_rogue_detect_1g_en, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_ni, auto_rogue_detect_1g_en, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_NI_CFG_ID_AUTO_ROGUE_DETECT_1G_EN, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "auto_rogue_detect_10g_threshold");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_ni, auto_rogue_detect_10g_threshold, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_ni, auto_rogue_detect_10g_threshold, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_NI_CFG_ID_AUTO_ROGUE_DETECT_10G_THRESHOLD, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_set(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_set(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_ni_cfg_clear(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_ni_cfg cfg;         /**< declare main API struct */
+    bcmolt_epon_ni_key key = { };   /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_ni_cfg cfg;\n");
+    bcmcli_log("bcmolt_epon_ni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_clear");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_NI_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, epon_ni, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, epon_ni, key);\n");
+
+    /* call API */
+    err = bcmolt_cfg_clear(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_clear(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_ni_cfg_get_multi(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_ni_cfg cfg;         /**< declare main API struct */
+    bcmolt_epon_ni_key key = { };   /**< declare key */
+    bcmolt_msg_set *msg_set = NULL; /**< declare message set */
+    uint32_t max_msgs;              /**< declare max number of msgs to get */
+    bcmos_bool invert_filter;       /**< declare filter invert flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_ni_cfg cfg;\n");
+    bcmcli_log("bcmolt_epon_ni_key key = {  };\n");
+    bcmcli_log("bcmolt_msg_set* msg_set = NULL;\n");
+    bcmcli_log("uint32_t max_msgs;\n");
+    bcmcli_log("bcmos_bool invert_filter;\n");
+    apicli_print_start(session, "bcmolt_cfg_get_multi");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_NI_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+
+    /* set max number of msgs from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "max_msgs");
+    if (cli_parm != NULL)
+    {
+        max_msgs = cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "max_msgs is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("max_msgs = %d;\n", max_msgs);
+
+    /* set filter invert flag from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "filter_invert");
+    if (cli_parm != NULL)
+    {
+        invert_filter = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "filter_invert is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("invert_filter = %s;\n", (invert_filter) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* allocate message set */
+    err = apicli_msg_set_alloc(byte_pool, BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);
+    if (err != BCM_ERR_OK)
+    {
+        return err;
+    }
+
+    bcmcli_log("bcmolt_msg_set_alloc(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, epon_ni, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, epon_ni, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "filter.mac_address");
+    if (cli_parm != NULL)
+    {
+        bcmos_mac_address val;
+        val = cli_parm->value.mac;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_ni, mac_address, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_ni, mac_address, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_NI_CFG_ID_MAC_ADDRESS, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mac_address");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_ni, mac_address);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_ni, mac_address);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.epon_ni_en");
+    if (cli_parm != NULL)
+    {
+        bcmolt_epon_ni_en_state val;
+        val = (bcmolt_epon_ni_en_state) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_ni, epon_ni_en, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_ni, epon_ni_en, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_NI_CFG_ID_EPON_NI_EN, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni_en");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_ni, epon_ni_en);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_ni, epon_ni_en);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.registration_behavior");
+    if (cli_parm != NULL)
+    {
+        bcmolt_registration_behavior val;
+        val = (bcmolt_registration_behavior) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_ni, registration_behavior, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_ni, registration_behavior, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_NI_CFG_ID_REGISTRATION_BEHAVIOR, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "registration_behavior");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_ni, registration_behavior);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_ni, registration_behavior);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.mtu_1g");
+    if (cli_parm != NULL)
+    {
+        uint16_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_ni, mtu_1g, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_ni, mtu_1g, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_NI_CFG_ID_MTU_1G, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mtu_1g");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_ni, mtu_1g);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_ni, mtu_1g);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.mtu_10g");
+    if (cli_parm != NULL)
+    {
+        uint16_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_ni, mtu_10g, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_ni, mtu_10g, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_NI_CFG_ID_MTU_10G, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mtu_10g");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_ni, mtu_10g);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_ni, mtu_10g);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.minimum_fiber_length");
+    if (cli_parm != NULL)
+    {
+        bcmolt_meters val;
+        val = (bcmolt_meters) cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_ni, minimum_fiber_length, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_ni, minimum_fiber_length, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_NI_CFG_ID_MINIMUM_FIBER_LENGTH, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "minimum_fiber_length");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_ni, minimum_fiber_length);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_ni, minimum_fiber_length);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.maximum_fiber_length");
+    if (cli_parm != NULL)
+    {
+        bcmolt_meters val;
+        val = (bcmolt_meters) cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_ni, maximum_fiber_length, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_ni, maximum_fiber_length, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_NI_CFG_ID_MAXIMUM_FIBER_LENGTH, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "maximum_fiber_length");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_ni, maximum_fiber_length);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_ni, maximum_fiber_length);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.grant_spacing_tq");
+    if (cli_parm != NULL)
+    {
+        bcmolt_time_quanta val;
+        val = (bcmolt_time_quanta) cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_ni, grant_spacing_tq, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_ni, grant_spacing_tq, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_NI_CFG_ID_GRANT_SPACING_TQ, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "grant_spacing_tq");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_ni, grant_spacing_tq);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_ni, grant_spacing_tq);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.epon_logical_link_options.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_epon_logical_link_options val = { };
+        cli_parm = bcmcli_find_parm_by_prefix(session, "filter.epon_logical_link_options.registration_gate_mode.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "filter.epon_logical_link_options.registration_gate_mode.registration_gate_mode");
+            if (cli_parm != NULL)
+            {
+                val.registration_gate_mode.registration_gate_mode = (bcmolt_mpcp_gate_mode) cli_parm->value.enum_val;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.epon_logical_link_options.registration_gate_mode.registration_gate_mode is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            switch (val.registration_gate_mode.registration_gate_mode)
+            {
+                case BCMOLT_MPCP_GATE_MODE_TEKNOVUS:
+                    cli_parm = bcmcli_find_named_parm(session, "filter.epon_logical_link_options.registration_gate_mode.reg_ack_timeout_ms");
+                    if (cli_parm != NULL)
+                    {
+                        val.registration_gate_mode.u.teknovus.reg_ack_timeout_ms = cli_parm->value.unumber;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "filter.epon_logical_link_options.registration_gate_mode.reg_ack_timeout_ms is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_MPCP_GATE_MODE_CUSTOM:
+                    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.epon_logical_link_options.registration_gate_mode.gates.");
+                    if (cli_parm != NULL)
+                    {
+                        int32_t i0;
+                        val.registration_gate_mode.u.custom.gates.val = apicli_byte_pool_calloc(byte_pool, cli_parm->array_size * sizeof(*val.registration_gate_mode.u.custom.gates.val));
+                        if (val.registration_gate_mode.u.custom.gates.val == NULL)
+                        {
+                            apicli_print_complete(session, BCM_ERR_NOMEM, "\n");
+                            return BCM_ERR_NOMEM;
+                        }
+
+                        val.registration_gate_mode.u.custom.gates.len = cli_parm->array_size;
+                        cli_parm = bcmcli_find_named_parm(session, "filter.epon_logical_link_options.registration_gate_mode.gates.flags");
+                        if (cli_parm != NULL)
+                        {
+                            if (cli_parm->array_size != val.registration_gate_mode.u.custom.gates.len)
+                            {
+                                apicli_print_complete(session, BCM_ERR_PARM, "filter.epon_logical_link_options.registration_gate_mode.gates.flags is a different size than other arrays in the struct\n");
+                                return BCM_ERR_PARM;
+                            }
+
+                            for (i0 = 0; i0 < val.registration_gate_mode.u.custom.gates.len; i0++)
+                            {
+                                val.registration_gate_mode.u.custom.gates.val[i0].flags = (bcmolt_mpcp_registration_gate_flags) cli_parm->values[i0].enum_val;
+                            }
+                        }
+
+                        cli_parm = bcmcli_find_named_parm(session, "filter.epon_logical_link_options.registration_gate_mode.gates.delay_before_ms");
+                        if (cli_parm != NULL)
+                        {
+                            if (cli_parm->array_size != val.registration_gate_mode.u.custom.gates.len)
+                            {
+                                apicli_print_complete(session, BCM_ERR_PARM, "filter.epon_logical_link_options.registration_gate_mode.gates.delay_before_ms is a different size than other arrays in the struct\n");
+                                return BCM_ERR_PARM;
+                            }
+
+                            for (i0 = 0; i0 < val.registration_gate_mode.u.custom.gates.len; i0++)
+                            {
+                                val.registration_gate_mode.u.custom.gates.val[i0].delay_before_ms = cli_parm->values[i0].unumber;
+                            }
+                        }
+
+                        cli_parm = bcmcli_find_named_parm(session, "filter.epon_logical_link_options.registration_gate_mode.gates.gate_size_tq");
+                        if (cli_parm != NULL)
+                        {
+                            if (cli_parm->array_size != val.registration_gate_mode.u.custom.gates.len)
+                            {
+                                apicli_print_complete(session, BCM_ERR_PARM, "filter.epon_logical_link_options.registration_gate_mode.gates.gate_size_tq is a different size than other arrays in the struct\n");
+                                return BCM_ERR_PARM;
+                            }
+
+                            for (i0 = 0; i0 < val.registration_gate_mode.u.custom.gates.len; i0++)
+                            {
+                                val.registration_gate_mode.u.custom.gates.val[i0].gate_size_tq = (bcmolt_time_quanta) cli_parm->values[i0].unumber;
+                            }
+                        }
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "filter.epon_logical_link_options.registration_gate_mode.gates is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                default:
+                    apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+                    return BCM_ERR_RANGE;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.epon_logical_link_options.registration_gate_mode is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.epon_logical_link_options.reporting_mode");
+        if (cli_parm != NULL)
+        {
+            val.reporting_mode = (bcmolt_epon_dba_reporting_mode) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.epon_logical_link_options.reporting_mode is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.epon_logical_link_options.max_links");
+        if (cli_parm != NULL)
+        {
+            val.max_links = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.epon_logical_link_options.max_links is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, epon_ni, epon_logical_link_options, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_epon_logical_link_options val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_NI_CFG_ID_EPON_LOGICAL_LINK_OPTIONS, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_ni, epon_logical_link_options, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "epon_logical_link_options");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_ni, epon_logical_link_options);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_ni, epon_logical_link_options);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.mpcp_discovery_period_ms");
+    if (cli_parm != NULL)
+    {
+        uint32_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_ni, mpcp_discovery_period_ms, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_ni, mpcp_discovery_period_ms, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_NI_CFG_ID_MPCP_DISCOVERY_PERIOD_MS, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mpcp_discovery_period_ms");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_ni, mpcp_discovery_period_ms);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_ni, mpcp_discovery_period_ms);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.alarm_state.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_epon_ni_alarm_state val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.alarm_state.no_reports");
+        if (cli_parm != NULL)
+        {
+            val.no_reports = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.alarm_state.no_reports is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, epon_ni, alarm_state, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_epon_ni_alarm_state val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_NI_CFG_ID_ALARM_STATE, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_ni, alarm_state, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "alarm_state");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_ni, alarm_state);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_ni, alarm_state);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.all_links");
+    if (cli_parm != NULL)
+    {
+        bcmolt_macaddress_list_u32_max_2048 val = { };
+        int32_t i1;
+        val.val = apicli_byte_pool_calloc(byte_pool, cli_parm->array_size * sizeof(*val.val));
+        if (val.val == NULL)
+        {
+            apicli_print_complete(session, BCM_ERR_NOMEM, "\n");
+            return BCM_ERR_NOMEM;
+        }
+
+        val.len = cli_parm->array_size;
+        for (i1 = 0; i1 < val.len; i1++)
+        {
+            val.val[i1] = cli_parm->values[i1].mac;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, epon_ni, all_links, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_macaddress_list_u32_max_2048 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_NI_CFG_ID_ALL_LINKS, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_ni, all_links, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "all_links");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_ni, all_links);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_ni, all_links);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.encryption_cfg.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_epon_ni_encryption_cfg val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.encryption_cfg.downstream_encryption_mode");
+        if (cli_parm != NULL)
+        {
+            val.downstream_encryption_mode = (bcmolt_epon_encryption_mode) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.encryption_cfg.downstream_encryption_mode is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.encryption_cfg.upstream_encryption_mode");
+        if (cli_parm != NULL)
+        {
+            val.upstream_encryption_mode = (bcmolt_epon_encryption_mode) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.encryption_cfg.upstream_encryption_mode is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, epon_ni, encryption_cfg, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_epon_ni_encryption_cfg val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_NI_CFG_ID_ENCRYPTION_CFG, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_ni, encryption_cfg, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "encryption_cfg");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_ni, encryption_cfg);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_ni, encryption_cfg);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.protection_switching_cfg.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_epon_protection_switching_configuration val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.protection_switching_cfg.protection_type");
+        if (cli_parm != NULL)
+        {
+            val.protection_type = (bcmolt_epon_protection_switching_type) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.protection_switching_cfg.protection_type is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.protection_switching_cfg.protection_switching_options");
+        if (cli_parm != NULL)
+        {
+            val.protection_switching_options = (bcmolt_protection_switching_detection_options) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.protection_switching_cfg.protection_switching_options is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.protection_switching_cfg.rerange_options");
+        if (cli_parm != NULL)
+        {
+            val.rerange_options = (bcmolt_epon_protection_switching_reranging_options) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.protection_switching_cfg.rerange_options is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.protection_switching_cfg.rerange_attempts");
+        if (cli_parm != NULL)
+        {
+            val.rerange_attempts = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.protection_switching_cfg.rerange_attempts is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.protection_switching_cfg.rerange_interval");
+        if (cli_parm != NULL)
+        {
+            val.rerange_interval = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.protection_switching_cfg.rerange_interval is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.protection_switching_cfg.sync_gate_duration");
+        if (cli_parm != NULL)
+        {
+            val.sync_gate_duration = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.protection_switching_cfg.sync_gate_duration is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.protection_switching_cfg.gpio_input");
+        if (cli_parm != NULL)
+        {
+            val.gpio_input = (bcmolt_gpio_pin) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.protection_switching_cfg.gpio_input is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.protection_switching_cfg.gpio_input_polarity");
+        if (cli_parm != NULL)
+        {
+            val.gpio_input_polarity = (bcmolt_gpio_polarity) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.protection_switching_cfg.gpio_input_polarity is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.protection_switching_cfg.gpio_output");
+        if (cli_parm != NULL)
+        {
+            val.gpio_output = (bcmolt_gpio_pin) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.protection_switching_cfg.gpio_output is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.protection_switching_cfg.gpio_output_polarity");
+        if (cli_parm != NULL)
+        {
+            val.gpio_output_polarity = (bcmolt_gpio_polarity) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.protection_switching_cfg.gpio_output_polarity is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, epon_ni, protection_switching_cfg, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_epon_protection_switching_configuration val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_NI_CFG_ID_PROTECTION_SWITCHING_CFG, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_ni, protection_switching_cfg, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "protection_switching_cfg");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_ni, protection_switching_cfg);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_ni, protection_switching_cfg);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.clock_transport_cfg.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_epon_clock_transport_configuration val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.clock_transport_cfg.epon_clock_transport_mode");
+        if (cli_parm != NULL)
+        {
+            val.epon_clock_transport_mode = (bcmolt_epon_clock_transport_mode) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.clock_transport_cfg.epon_clock_transport_mode is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, epon_ni, clock_transport_cfg, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_epon_clock_transport_configuration val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_NI_CFG_ID_CLOCK_TRANSPORT_CFG, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_ni, clock_transport_cfg, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "clock_transport_cfg");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_ni, clock_transport_cfg);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_ni, clock_transport_cfg);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.dropdown_weights.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_arr_u16_7 val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.dropdown_weights.arr");
+        if (cli_parm != NULL)
+        {
+            int32_t i2;
+            if (cli_parm->array_size != 7)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "array filter.dropdown_weights.arr must have 7 elements\n");
+                return BCM_ERR_PARM;
+            }
+
+            for (i2 = 0; i2 < 7; i2++)
+            {
+                val.arr[i2] = cli_parm->values[i2].unumber;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.dropdown_weights.arr is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, epon_ni, dropdown_weights, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_arr_u16_7 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_NI_CFG_ID_DROPDOWN_WEIGHTS, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_ni, dropdown_weights, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "dropdown_weights");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_ni, dropdown_weights);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_ni, dropdown_weights);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.approximate_solicited_usage.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_arr_bounds_8 val = { };
+        cli_parm = bcmcli_find_parm_by_prefix(session, "filter.approximate_solicited_usage.arr.");
+        if (cli_parm != NULL)
+        {
+            int32_t i3;
+            if (cli_parm->array_size != 8)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "array filter.approximate_solicited_usage.arr must have 8 elements\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.approximate_solicited_usage.arr.best_case");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 8)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "filter.approximate_solicited_usage.arr.best_case is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i3 = 0; i3 < 8; i3++)
+                {
+                    val.arr[i3].best_case = cli_parm->values[i3].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.approximate_solicited_usage.arr.worst_case");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 8)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "filter.approximate_solicited_usage.arr.worst_case is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i3 = 0; i3 < 8; i3++)
+                {
+                    val.arr[i3].worst_case = cli_parm->values[i3].unumber;
+                }
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.approximate_solicited_usage.arr is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, epon_ni, approximate_solicited_usage, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_arr_bounds_8 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_NI_CFG_ID_APPROXIMATE_SOLICITED_USAGE, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_ni, approximate_solicited_usage, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "approximate_solicited_usage");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_ni, approximate_solicited_usage);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_ni, approximate_solicited_usage);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.approximate_tdm_usage");
+    if (cli_parm != NULL)
+    {
+        uint32_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_ni, approximate_tdm_usage, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_ni, approximate_tdm_usage, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_NI_CFG_ID_APPROXIMATE_TDM_USAGE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "approximate_tdm_usage");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_ni, approximate_tdm_usage);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_ni, approximate_tdm_usage);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.no_reports_soak_time");
+    if (cli_parm != NULL)
+    {
+        uint16_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_ni, no_reports_soak_time, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_ni, no_reports_soak_time, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_NI_CFG_ID_NO_REPORTS_SOAK_TIME, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "no_reports_soak_time");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_ni, no_reports_soak_time);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_ni, no_reports_soak_time);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.pon_aggregate_shaper.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_pon_aggregate_shaper val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.pon_aggregate_shaper.bandwidth_kbps");
+        if (cli_parm != NULL)
+        {
+            val.bandwidth_kbps = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.pon_aggregate_shaper.bandwidth_kbps is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.pon_aggregate_shaper.mbs_kB");
+        if (cli_parm != NULL)
+        {
+            val.mbs_kB = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.pon_aggregate_shaper.mbs_kB is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, epon_ni, pon_aggregate_shaper, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_pon_aggregate_shaper val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_NI_CFG_ID_PON_AGGREGATE_SHAPER, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_ni, pon_aggregate_shaper, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "pon_aggregate_shaper");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_ni, pon_aggregate_shaper);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_ni, pon_aggregate_shaper);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.estimated_pon_latency_tq.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_arr_bounds_8 val = { };
+        cli_parm = bcmcli_find_parm_by_prefix(session, "filter.estimated_pon_latency_tq.arr.");
+        if (cli_parm != NULL)
+        {
+            int32_t i4;
+            if (cli_parm->array_size != 8)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "array filter.estimated_pon_latency_tq.arr must have 8 elements\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.estimated_pon_latency_tq.arr.best_case");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 8)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "filter.estimated_pon_latency_tq.arr.best_case is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i4 = 0; i4 < 8; i4++)
+                {
+                    val.arr[i4].best_case = cli_parm->values[i4].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.estimated_pon_latency_tq.arr.worst_case");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 8)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "filter.estimated_pon_latency_tq.arr.worst_case is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i4 = 0; i4 < 8; i4++)
+                {
+                    val.arr[i4].worst_case = cli_parm->values[i4].unumber;
+                }
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.estimated_pon_latency_tq.arr is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, epon_ni, estimated_pon_latency_tq, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_arr_bounds_8 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_NI_CFG_ID_ESTIMATED_PON_LATENCY_TQ, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_ni, estimated_pon_latency_tq, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "estimated_pon_latency_tq");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_ni, estimated_pon_latency_tq);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_ni, estimated_pon_latency_tq);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.onu_upgrade_params.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_epon_onu_upgrade_params val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.onu_upgrade_params.oam_extension_type");
+        if (cli_parm != NULL)
+        {
+            val.oam_extension_type = (bcmolt_epon_oam_extension_type) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.onu_upgrade_params.oam_extension_type is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        switch (val.oam_extension_type)
+        {
+            case BCMOLT_EPON_OAM_EXTENSION_TYPE_RESERVED:
+                break;
+            case BCMOLT_EPON_OAM_EXTENSION_TYPE_BROADCOM:
+                cli_parm = bcmcli_find_named_parm(session, "filter.onu_upgrade_params.response_timeout_ms");
+                if (cli_parm != NULL)
+                {
+                    val.u.broadcom.response_timeout_ms = cli_parm->value.unumber;
+                }
+                else
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "filter.onu_upgrade_params.response_timeout_ms is not set\n");
+                    return BCM_ERR_PARM;
+                }
+                break;
+            case BCMOLT_EPON_OAM_EXTENSION_TYPE_CTC:
+                cli_parm = bcmcli_find_named_parm(session, "filter.onu_upgrade_params.response_timeout_ms");
+                if (cli_parm != NULL)
+                {
+                    val.u.ctc.response_timeout_ms = cli_parm->value.unumber;
+                }
+                else
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "filter.onu_upgrade_params.response_timeout_ms is not set\n");
+                    return BCM_ERR_PARM;
+                }
+                break;
+            case BCMOLT_EPON_OAM_EXTENSION_TYPE_DASAN:
+                cli_parm = bcmcli_find_named_parm(session, "filter.onu_upgrade_params.response_timeout_ms");
+                if (cli_parm != NULL)
+                {
+                    val.u.dasan.response_timeout_ms = cli_parm->value.unumber;
+                }
+                else
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "filter.onu_upgrade_params.response_timeout_ms is not set\n");
+                    return BCM_ERR_PARM;
+                }
+                break;
+            case BCMOLT_EPON_OAM_EXTENSION_TYPE_KT:
+                cli_parm = bcmcli_find_named_parm(session, "filter.onu_upgrade_params.response_timeout_ms");
+                if (cli_parm != NULL)
+                {
+                    val.u.kt.response_timeout_ms = cli_parm->value.unumber;
+                }
+                else
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "filter.onu_upgrade_params.response_timeout_ms is not set\n");
+                    return BCM_ERR_PARM;
+                }
+                break;
+            case BCMOLT_EPON_OAM_EXTENSION_TYPE_DPOE:
+                cli_parm = bcmcli_find_named_parm(session, "filter.onu_upgrade_params.response_timeout_ms");
+                if (cli_parm != NULL)
+                {
+                    val.u.dpoe.response_timeout_ms = cli_parm->value.unumber;
+                }
+                else
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "filter.onu_upgrade_params.response_timeout_ms is not set\n");
+                    return BCM_ERR_PARM;
+                }
+
+                cli_parm = bcmcli_find_named_parm(session, "filter.onu_upgrade_params.block_size");
+                if (cli_parm != NULL)
+                {
+                    val.u.dpoe.block_size = cli_parm->value.unumber;
+                }
+                else
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "filter.onu_upgrade_params.block_size is not set\n");
+                    return BCM_ERR_PARM;
+                }
+
+                cli_parm = bcmcli_find_named_parm(session, "filter.onu_upgrade_params.final_ack_response_timeout");
+                if (cli_parm != NULL)
+                {
+                    val.u.dpoe.final_ack_response_timeout = cli_parm->value.unumber;
+                }
+                else
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "filter.onu_upgrade_params.final_ack_response_timeout is not set\n");
+                    return BCM_ERR_PARM;
+                }
+                break;
+            default:
+                apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+                return BCM_ERR_RANGE;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, epon_ni, onu_upgrade_params, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_epon_onu_upgrade_params val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_NI_CFG_ID_ONU_UPGRADE_PARAMS, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_ni, onu_upgrade_params, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_upgrade_params");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_ni, onu_upgrade_params);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_ni, onu_upgrade_params);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.auto_rogue_detect_10g_en");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_ni, auto_rogue_detect_10g_en, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_ni, auto_rogue_detect_10g_en, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_NI_CFG_ID_AUTO_ROGUE_DETECT_10G_EN, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "auto_rogue_detect_10g_en");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_ni, auto_rogue_detect_10g_en);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_ni, auto_rogue_detect_10g_en);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.auto_rogue_detect_1g_en");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_ni, auto_rogue_detect_1g_en, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_ni, auto_rogue_detect_1g_en, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_NI_CFG_ID_AUTO_ROGUE_DETECT_1G_EN, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "auto_rogue_detect_1g_en");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_ni, auto_rogue_detect_1g_en);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_ni, auto_rogue_detect_1g_en);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.auto_rogue_detect_10g_threshold");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_ni, auto_rogue_detect_10g_threshold, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_ni, auto_rogue_detect_10g_threshold, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_NI_CFG_ID_AUTO_ROGUE_DETECT_10G_THRESHOLD, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "auto_rogue_detect_10g_threshold");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_ni, auto_rogue_detect_10g_threshold);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_ni, auto_rogue_detect_10g_threshold);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_ni, mac_address) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_ni, epon_ni_en) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_ni, registration_behavior) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_ni, mtu_1g) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_ni, mtu_10g) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_ni, minimum_fiber_length) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_ni, maximum_fiber_length) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_ni, grant_spacing_tq) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_ni, epon_logical_link_options) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_ni, mpcp_discovery_period_ms) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_ni, alarm_state) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_ni, all_links) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_ni, encryption_cfg) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_ni, protection_switching_cfg) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_ni, clock_transport_cfg) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_ni, dropdown_weights) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_ni, approximate_solicited_usage) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_ni, approximate_tdm_usage) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_ni, no_reports_soak_time) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_ni, pon_aggregate_shaper) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_ni, estimated_pon_latency_tq) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_ni, onu_upgrade_params) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_ni, auto_rogue_detect_10g_en) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_ni, auto_rogue_detect_1g_en) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_ni, auto_rogue_detect_10g_threshold))
+    {
+        BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_ni, all_properties);
+        bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_ni, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);
+    bcmcli_log("bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_ni_oper_set_epon_ni_en_state_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_ni_set_epon_ni_en_state oper;   /**< declare main API struct */
+    bcmolt_epon_ni_key key = { };               /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_ni_set_epon_ni_en_state oper;\n");
+    bcmcli_log("bcmolt_epon_ni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_NI_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, epon_ni, set_epon_ni_en_state, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, epon_ni, set_epon_ni_en_state, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "new_state");
+    if (cli_parm != NULL)
+    {
+        bcmolt_epon_ni_en_state val;
+        val = (bcmolt_epon_ni_en_state) cli_parm->value.enum_val;
+        BCMOLT_OPER_PROP_SET(&oper, epon_ni, set_epon_ni_en_state, new_state, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, epon_ni, set_epon_ni_en_state, new_state, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_OPER, BCMOLT_EPON_NI_OPER_ID_SET_EPON_NI_EN_STATE, BCMOLT_EPON_NI_SET_EPON_NI_EN_STATE_ID_NEW_STATE, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_ni_oper_issue_rssi_grant_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_ni_issue_rssi_grant oper;   /**< declare main API struct */
+    bcmolt_epon_ni_key key = { };           /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_ni_issue_rssi_grant oper;\n");
+    bcmcli_log("bcmolt_epon_ni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_NI_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, epon_ni, issue_rssi_grant, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, epon_ni, issue_rssi_grant, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "granted_link");
+    if (cli_parm != NULL)
+    {
+        bcmos_mac_address val;
+        val = cli_parm->value.mac;
+        BCMOLT_OPER_PROP_SET(&oper, epon_ni, issue_rssi_grant, granted_link, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, epon_ni, issue_rssi_grant, granted_link, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_OPER, BCMOLT_EPON_NI_OPER_ID_ISSUE_RSSI_GRANT, BCMOLT_EPON_NI_ISSUE_RSSI_GRANT_ID_GRANTED_LINK, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "trigger_width");
+    if (cli_parm != NULL)
+    {
+        uint16_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_OPER_PROP_SET(&oper, epon_ni, issue_rssi_grant, trigger_width, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, epon_ni, issue_rssi_grant, trigger_width, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_OPER, BCMOLT_EPON_NI_OPER_ID_ISSUE_RSSI_GRANT, BCMOLT_EPON_NI_ISSUE_RSSI_GRANT_ID_TRIGGER_WIDTH, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "trigger_delay");
+    if (cli_parm != NULL)
+    {
+        uint16_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_OPER_PROP_SET(&oper, epon_ni, issue_rssi_grant, trigger_delay, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, epon_ni, issue_rssi_grant, trigger_delay, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_OPER, BCMOLT_EPON_NI_OPER_ID_ISSUE_RSSI_GRANT, BCMOLT_EPON_NI_ISSUE_RSSI_GRANT_ID_TRIGGER_DELAY, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "sample_period");
+    if (cli_parm != NULL)
+    {
+        uint16_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_OPER_PROP_SET(&oper, epon_ni, issue_rssi_grant, sample_period, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, epon_ni, issue_rssi_grant, sample_period, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_OPER, BCMOLT_EPON_NI_OPER_ID_ISSUE_RSSI_GRANT, BCMOLT_EPON_NI_ISSUE_RSSI_GRANT_ID_SAMPLE_PERIOD, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_ni_oper_add_link_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_ni_add_link oper;   /**< declare main API struct */
+    bcmolt_epon_ni_key key = { };   /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_ni_add_link oper;\n");
+    bcmcli_log("bcmolt_epon_ni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_NI_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, epon_ni, add_link, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, epon_ni, add_link, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "mac_address");
+    if (cli_parm != NULL)
+    {
+        bcmos_mac_address val;
+        val = cli_parm->value.mac;
+        BCMOLT_OPER_PROP_SET(&oper, epon_ni, add_link, mac_address, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, epon_ni, add_link, mac_address, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_OPER, BCMOLT_EPON_NI_OPER_ID_ADD_LINK, BCMOLT_EPON_NI_ADD_LINK_ID_MAC_ADDRESS, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rate");
+    if (cli_parm != NULL)
+    {
+        bcmolt_epon_link_rate val;
+        val = (bcmolt_epon_link_rate) cli_parm->value.enum_val;
+        BCMOLT_OPER_PROP_SET(&oper, epon_ni, add_link, rate, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, epon_ni, add_link, rate, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_OPER, BCMOLT_EPON_NI_OPER_ID_ADD_LINK, BCMOLT_EPON_NI_ADD_LINK_ID_RATE, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_ni_oper_add_multicast_link_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_ni_add_multicast_link oper; /**< declare main API struct */
+    bcmolt_epon_ni_key key = { };           /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_ni_add_multicast_link oper;\n");
+    bcmcli_log("bcmolt_epon_ni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_NI_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, epon_ni, add_multicast_link, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, epon_ni, add_multicast_link, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "mac_address");
+    if (cli_parm != NULL)
+    {
+        bcmos_mac_address val;
+        val = cli_parm->value.mac;
+        BCMOLT_OPER_PROP_SET(&oper, epon_ni, add_multicast_link, mac_address, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, epon_ni, add_multicast_link, mac_address, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_OPER, BCMOLT_EPON_NI_OPER_ID_ADD_MULTICAST_LINK, BCMOLT_EPON_NI_ADD_MULTICAST_LINK_ID_MAC_ADDRESS, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rate");
+    if (cli_parm != NULL)
+    {
+        bcmolt_epon_link_rate val;
+        val = (bcmolt_epon_link_rate) cli_parm->value.enum_val;
+        BCMOLT_OPER_PROP_SET(&oper, epon_ni, add_multicast_link, rate, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, epon_ni, add_multicast_link, rate, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_OPER, BCMOLT_EPON_NI_OPER_ID_ADD_MULTICAST_LINK, BCMOLT_EPON_NI_ADD_MULTICAST_LINK_ID_RATE, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_ni_oper_add_protected_standby_link_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_ni_add_protected_standby_link oper; /**< declare main API struct */
+    bcmolt_epon_ni_key key = { };                   /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_ni_add_protected_standby_link oper;\n");
+    bcmcli_log("bcmolt_epon_ni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_NI_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, epon_ni, add_protected_standby_link, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, epon_ni, add_protected_standby_link, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "mac_address");
+    if (cli_parm != NULL)
+    {
+        bcmos_mac_address val;
+        val = cli_parm->value.mac;
+        BCMOLT_OPER_PROP_SET(&oper, epon_ni, add_protected_standby_link, mac_address, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, epon_ni, add_protected_standby_link, mac_address, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_OPER, BCMOLT_EPON_NI_OPER_ID_ADD_PROTECTED_STANDBY_LINK, BCMOLT_EPON_NI_ADD_PROTECTED_STANDBY_LINK_ID_MAC_ADDRESS, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "working_link_info.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_epon_link_info val = { };
+        cli_parm = bcmcli_find_named_parm(session, "working_link_info.link_status");
+        if (cli_parm != NULL)
+        {
+            val.link_status = (bcmolt_epon_link_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "working_link_info.link_status is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "working_link_info.rate");
+        if (cli_parm != NULL)
+        {
+            val.rate = (bcmolt_epon_link_rate) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "working_link_info.rate is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "working_link_info.llid");
+        if (cli_parm != NULL)
+        {
+            val.llid = (bcmolt_epon_llid) cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "working_link_info.llid is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "working_link_info.mpcp_discovery_info");
+        if (cli_parm != NULL)
+        {
+            val.mpcp_discovery_info = (bcmolt_mpcp_discovery_info) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "working_link_info.mpcp_discovery_info is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "working_link_info.onu_laser_on_time_tq");
+        if (cli_parm != NULL)
+        {
+            val.onu_laser_on_time_tq = (bcmolt_time_quanta) cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "working_link_info.onu_laser_on_time_tq is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "working_link_info.onu_laser_off_time_tq");
+        if (cli_parm != NULL)
+        {
+            val.onu_laser_off_time_tq = (bcmolt_time_quanta) cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "working_link_info.onu_laser_off_time_tq is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "working_link_info.pending_grants");
+        if (cli_parm != NULL)
+        {
+            val.pending_grants = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "working_link_info.pending_grants is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "working_link_info.range_value_tq");
+        if (cli_parm != NULL)
+        {
+            val.range_value_tq = (bcmolt_time_quanta) cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "working_link_info.range_value_tq is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "working_link_info.tunnel_id");
+        if (cli_parm != NULL)
+        {
+            val.tunnel_id = (bcmolt_epon_tunnel_id) cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "working_link_info.tunnel_id is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_OPER_PROP_SET(&oper, epon_ni, add_protected_standby_link, working_link_info, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_epon_link_info val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_OPER, BCMOLT_EPON_NI_OPER_ID_ADD_PROTECTED_STANDBY_LINK, BCMOLT_EPON_NI_ADD_PROTECTED_STANDBY_LINK_ID_WORKING_LINK_INFO, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, epon_ni, add_protected_standby_link, working_link_info, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_ni_oper_protection_switching_apply_rerange_delta_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_ni_protection_switching_apply_rerange_delta oper;   /**< declare main API struct */
+    bcmolt_epon_ni_key key = { };   /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_ni_protection_switching_apply_rerange_delta oper;\n");
+    bcmcli_log("bcmolt_epon_ni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_NI_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, epon_ni, protection_switching_apply_rerange_delta, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, epon_ni, protection_switching_apply_rerange_delta, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "rerange_delta");
+    if (cli_parm != NULL)
+    {
+        uint32_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_OPER_PROP_SET(&oper, epon_ni, protection_switching_apply_rerange_delta, rerange_delta, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, epon_ni, protection_switching_apply_rerange_delta, rerange_delta, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_OPER, BCMOLT_EPON_NI_OPER_ID_PROTECTION_SWITCHING_APPLY_RERANGE_DELTA, BCMOLT_EPON_NI_PROTECTION_SWITCHING_APPLY_RERANGE_DELTA_ID_RERANGE_DELTA, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_ni_oper_rogue_llid_scan_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_ni_rogue_llid_scan oper;    /**< declare main API struct */
+    bcmolt_epon_ni_key key = { };           /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_ni_rogue_llid_scan oper;\n");
+    bcmcli_log("bcmolt_epon_ni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_NI_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, epon_ni, rogue_llid_scan, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, epon_ni, rogue_llid_scan, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "mode");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_OPER_PROP_SET(&oper, epon_ni, rogue_llid_scan, mode, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, epon_ni, rogue_llid_scan, mode, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_OPER, BCMOLT_EPON_NI_OPER_ID_ROGUE_LLID_SCAN, BCMOLT_EPON_NI_ROGUE_LLID_SCAN_ID_MODE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "llid");
+    if (cli_parm != NULL)
+    {
+        bcmolt_epon_llid val;
+        val = (bcmolt_epon_llid) cli_parm->value.unumber;
+        BCMOLT_OPER_PROP_SET(&oper, epon_ni, rogue_llid_scan, llid, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, epon_ni, rogue_llid_scan, llid, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_OPER, BCMOLT_EPON_NI_OPER_ID_ROGUE_LLID_SCAN, BCMOLT_EPON_NI_ROGUE_LLID_SCAN_ID_LLID, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_ni_oper_start_onu_upgrade_submit(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_ni_start_onu_upgrade oper;  /**< declare main API struct */
+    bcmolt_epon_ni_key key = { };           /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_ni_start_onu_upgrade oper;\n");
+    bcmcli_log("bcmolt_epon_ni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_NI_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, epon_ni, start_onu_upgrade, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, epon_ni, start_onu_upgrade, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "list_of_onu_ids");
+    if (cli_parm != NULL)
+    {
+        bcmolt_macaddress_list_u32 val = { };
+        int32_t i0;
+        val.val = apicli_byte_pool_calloc(byte_pool, cli_parm->array_size * sizeof(*val.val));
+        if (val.val == NULL)
+        {
+            apicli_print_complete(session, BCM_ERR_NOMEM, "\n");
+            return BCM_ERR_NOMEM;
+        }
+
+        val.len = cli_parm->array_size;
+        for (i0 = 0; i0 < val.len; i0++)
+        {
+            val.val[i0] = cli_parm->values[i0].mac;
+        }
+
+        BCMOLT_OPER_PROP_SET(&oper, epon_ni, start_onu_upgrade, list_of_onu_ids, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_macaddress_list_u32 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_OPER, BCMOLT_EPON_NI_OPER_ID_START_ONU_UPGRADE, BCMOLT_EPON_NI_START_ONU_UPGRADE_ID_LIST_OF_ONU_IDS, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, epon_ni, start_onu_upgrade, list_of_onu_ids, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_ni_auto_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_ni_auto_cfg auto_cfg;   /**< declare main API struct */
+    bcmolt_epon_ni_key key = { };       /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_ni_auto_cfg auto_cfg;\n");
+    bcmcli_log("bcmolt_epon_ni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_auto_cfg_get");
+
+    /* init the API struct */
+    BCMOLT_AUTO_CFG_INIT(&auto_cfg, epon_ni, key);
+    bcmcli_log("BCMOLT_AUTO_CFG_INIT(&auto_cfg, epon_ni, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "auto_rogue_scan_10g_failure");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_ni, auto_rogue_scan_10g_failure);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_ni, auto_rogue_scan_10g_failure);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "auto_rogue_scan_1g_failure");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_ni, auto_rogue_scan_1g_failure);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_ni, auto_rogue_scan_1g_failure);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "llid_quarantined");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_ni, llid_quarantined);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_ni, llid_quarantined);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mpcp_timestamp_changed");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_ni, mpcp_timestamp_changed);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_ni, mpcp_timestamp_changed);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "no_reports");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_ni, no_reports);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_ni, no_reports);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_upgrade_complete");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_ni, onu_upgrade_complete);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_ni, onu_upgrade_complete);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rerange_failure");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_ni, rerange_failure);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_ni, rerange_failure);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rogue_scan_complete");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_ni, rogue_scan_complete);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_ni, rogue_scan_complete);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rssi_measurement_completed");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_ni, rssi_measurement_completed);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_ni, rssi_measurement_completed);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "state_change_completed");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_ni, state_change_completed);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_ni, state_change_completed);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, epon_ni, auto_rogue_scan_10g_failure) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, epon_ni, auto_rogue_scan_1g_failure) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, epon_ni, llid_quarantined) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, epon_ni, mpcp_timestamp_changed) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, epon_ni, no_reports) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, epon_ni, onu_upgrade_complete) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, epon_ni, rerange_failure) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, epon_ni, rogue_scan_complete) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, epon_ni, rssi_measurement_completed) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, epon_ni, state_change_completed))
+    {
+        BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_ni, all_properties);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_ni, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_auto_cfg_get(device_id, &auto_cfg.hdr);
+    bcmcli_log("bcmolt_auto_cfg_get(device_id, &auto_cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &auto_cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, auto_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_ni_auto_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_ni_auto_cfg auto_cfg;   /**< declare main API struct */
+    bcmolt_epon_ni_key key = { };       /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_ni_auto_cfg auto_cfg;\n");
+    bcmcli_log("bcmolt_epon_ni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_auto_cfg_set");
+
+    /* init the API struct */
+    BCMOLT_AUTO_CFG_INIT(&auto_cfg, epon_ni, key);
+    bcmcli_log("BCMOLT_AUTO_CFG_INIT(&auto_cfg, epon_ni, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "auto_rogue_scan_10g_failure");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_ni, auto_rogue_scan_10g_failure, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_ni, auto_rogue_scan_10g_failure, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_EPON_NI_AUTO_CFG_ID_AUTO_ROGUE_SCAN_10G_FAILURE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "auto_rogue_scan_1g_failure");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_ni, auto_rogue_scan_1g_failure, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_ni, auto_rogue_scan_1g_failure, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_EPON_NI_AUTO_CFG_ID_AUTO_ROGUE_SCAN_1G_FAILURE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "llid_quarantined");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_ni, llid_quarantined, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_ni, llid_quarantined, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_EPON_NI_AUTO_CFG_ID_LLID_QUARANTINED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mpcp_timestamp_changed");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_ni, mpcp_timestamp_changed, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_ni, mpcp_timestamp_changed, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_EPON_NI_AUTO_CFG_ID_MPCP_TIMESTAMP_CHANGED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "no_reports");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_ni, no_reports, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_ni, no_reports, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_EPON_NI_AUTO_CFG_ID_NO_REPORTS, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_upgrade_complete");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_ni, onu_upgrade_complete, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_ni, onu_upgrade_complete, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_EPON_NI_AUTO_CFG_ID_ONU_UPGRADE_COMPLETE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rerange_failure");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_ni, rerange_failure, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_ni, rerange_failure, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_EPON_NI_AUTO_CFG_ID_RERANGE_FAILURE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rogue_scan_complete");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_ni, rogue_scan_complete, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_ni, rogue_scan_complete, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_EPON_NI_AUTO_CFG_ID_ROGUE_SCAN_COMPLETE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rssi_measurement_completed");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_ni, rssi_measurement_completed, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_ni, rssi_measurement_completed, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_EPON_NI_AUTO_CFG_ID_RSSI_MEASUREMENT_COMPLETED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "state_change_completed");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_ni, state_change_completed, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_ni, state_change_completed, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_NI, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_EPON_NI_AUTO_CFG_ID_STATE_CHANGE_COMPLETED, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_auto_cfg_set(device_id, &auto_cfg.hdr);
+    bcmcli_log("bcmolt_auto_cfg_set(device_id, &auto_cfg.hdr);\n");
+    apicli_print_complete(session, err, auto_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_onu_10g_us_stat_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_onu_10g_us_stat stat;       /**< declare main API struct */
+    bcmolt_epon_onu_10g_us_key key = { };   /**< declare key */
+    bcmos_bool clear_on_read;               /**< declare 'clear on read' flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_onu_10g_us_stat stat;\n");
+    bcmcli_log("bcmolt_epon_onu_10g_us_key key = {  };\n");
+    bcmcli_log("bcmos_bool clear_on_read;\n");
+    apicli_print_start(session, "bcmolt_stat_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_ONU_10G_US, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_ONU_10G_US_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        key.onu_id = (bcmolt_epon_onu_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "onu_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.onu_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_ONU_10G_US, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_ONU_10G_US_KEY_ID_ONU_ID, &key.onu_id);
+    bcmcli_log(";\n");
+
+    /* set stat flags from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "clear");
+    if (cli_parm != NULL)
+    {
+        clear_on_read = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "clear is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("clear_on_read = %s;\n", (clear_on_read) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* init the API struct */
+    BCMOLT_STAT_INIT(&stat, epon_onu_10g_us, key);
+    bcmcli_log("BCMOLT_STAT_INIT(&stat, epon_onu_10g_us, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "fec_code_words_total");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_onu_10g_us, fec_code_words_total);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_onu_10g_us, fec_code_words_total);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "fec_code_words_decode_fails");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_onu_10g_us, fec_code_words_decode_fails);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_onu_10g_us, fec_code_words_decode_fails);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "fec_zeroes_corrected");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_onu_10g_us, fec_zeroes_corrected);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_onu_10g_us, fec_zeroes_corrected);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "fec_ones_corrected");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_onu_10g_us, fec_ones_corrected);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_onu_10g_us, fec_ones_corrected);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_STAT_PROP_IS_SET(&stat, epon_onu_10g_us, fec_code_words_total) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_onu_10g_us, fec_code_words_decode_fails) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_onu_10g_us, fec_zeroes_corrected) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_onu_10g_us, fec_ones_corrected))
+    {
+        BCMOLT_STAT_PROP_GET(&stat, epon_onu_10g_us, all_properties);
+        bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_onu_10g_us, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_stat_get(device_id, &stat.hdr, clear_on_read);
+    bcmcli_log("bcmolt_stat_get(device_id, &stat.hdr, clear_on_read);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &stat.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, stat.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_onu_10g_us_cfg_get(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_onu_10g_us_cfg cfg;         /**< declare main API struct */
+    bcmolt_epon_onu_10g_us_key key = { };   /**< declare key */
+    uint8_t *list_mem;                      /**< declare memory buffer for variable-sized lists */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_onu_10g_us_cfg cfg;\n");
+    bcmcli_log("bcmolt_epon_onu_10g_us_key key = {  };\n");
+    bcmcli_log("uint8_t* list_mem;\n");
+    apicli_print_start(session, "bcmolt_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_ONU_10G_US, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_ONU_10G_US_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        key.onu_id = (bcmolt_epon_onu_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "onu_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.onu_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_ONU_10G_US, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_ONU_10G_US_KEY_ID_ONU_ID, &key.onu_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, epon_onu_10g_us, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, epon_onu_10g_us, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "all_links");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_onu_10g_us, all_links);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_onu_10g_us, all_links);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_CFG_PROP_IS_SET(&cfg, epon_onu_10g_us, all_links))
+    {
+        BCMOLT_CFG_PROP_GET(&cfg, epon_onu_10g_us, all_properties);
+        bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_onu_10g_us, all_properties);\n");
+    }
+
+    /* set memory to use for variable-sized lists */
+    list_mem = apicli_byte_pool_calloc(byte_pool, APICLI_DYNAMIC_LIST_BUFFER_SIZE);
+    if (list_mem == NULL)
+    {
+        apicli_print_complete(session, BCM_ERR_NOMEM, "\n");
+        return BCM_ERR_NOMEM;
+    }
+
+    bcmcli_log("list_mem = bcmos_calloc(APICLI_DYNAMIC_LIST_BUFFER_SIZE);\n");
+    BCMOLT_CFG_LIST_BUF_SET(&cfg, epon_onu_10g_us, list_mem, APICLI_DYNAMIC_LIST_BUFFER_SIZE);
+    bcmcli_log("BCMOLT_CFG_LIST_BUF_SET(&cfg, epon_onu_10g_us, list_mem, APICLI_DYNAMIC_LIST_BUFFER_SIZE);\n");
+
+    /* call API */
+    err = bcmolt_cfg_get(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_get(device_id, &cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_onu_10g_us_cfg_set(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_onu_10g_us_cfg cfg;         /**< declare main API struct */
+    bcmolt_epon_onu_10g_us_key key = { };   /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_onu_10g_us_cfg cfg;\n");
+    bcmcli_log("bcmolt_epon_onu_10g_us_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_ONU_10G_US, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_ONU_10G_US_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        key.onu_id = (bcmolt_epon_onu_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "onu_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.onu_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_ONU_10G_US, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_ONU_10G_US_KEY_ID_ONU_ID, &key.onu_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, epon_onu_10g_us, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, epon_onu_10g_us, key);\n");
+
+    /* decode API parameters from CLI */
+
+    /* call API */
+    err = bcmolt_cfg_set(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_set(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_onu_10g_us_cfg_clear(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_onu_10g_us_cfg cfg;         /**< declare main API struct */
+    bcmolt_epon_onu_10g_us_key key = { };   /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_onu_10g_us_cfg cfg;\n");
+    bcmcli_log("bcmolt_epon_onu_10g_us_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_clear");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_ONU_10G_US, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_ONU_10G_US_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        key.onu_id = (bcmolt_epon_onu_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "onu_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.onu_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_ONU_10G_US, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_ONU_10G_US_KEY_ID_ONU_ID, &key.onu_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, epon_onu_10g_us, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, epon_onu_10g_us, key);\n");
+
+    /* call API */
+    err = bcmolt_cfg_clear(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_clear(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_onu_10g_us_cfg_get_multi(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_onu_10g_us_cfg cfg;         /**< declare main API struct */
+    bcmolt_epon_onu_10g_us_key key = { };   /**< declare key */
+    bcmolt_msg_set *msg_set = NULL;         /**< declare message set */
+    uint32_t max_msgs;                      /**< declare max number of msgs to get */
+    bcmos_bool invert_filter;               /**< declare filter invert flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_onu_10g_us_cfg cfg;\n");
+    bcmcli_log("bcmolt_epon_onu_10g_us_key key = {  };\n");
+    bcmcli_log("bcmolt_msg_set* msg_set = NULL;\n");
+    bcmcli_log("uint32_t max_msgs;\n");
+    bcmcli_log("bcmos_bool invert_filter;\n");
+    apicli_print_start(session, "bcmolt_cfg_get_multi");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_ONU_10G_US, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_ONU_10G_US_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        key.onu_id = (bcmolt_epon_onu_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "onu_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.onu_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_ONU_10G_US, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_ONU_10G_US_KEY_ID_ONU_ID, &key.onu_id);
+    bcmcli_log(";\n");
+
+    /* set max number of msgs from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "max_msgs");
+    if (cli_parm != NULL)
+    {
+        max_msgs = cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "max_msgs is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("max_msgs = %d;\n", max_msgs);
+
+    /* set filter invert flag from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "filter_invert");
+    if (cli_parm != NULL)
+    {
+        invert_filter = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "filter_invert is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("invert_filter = %s;\n", (invert_filter) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* allocate message set */
+    err = apicli_msg_set_alloc(byte_pool, BCMOLT_OBJ_ID_EPON_ONU_10G_US, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);
+    if (err != BCM_ERR_OK)
+    {
+        return err;
+    }
+
+    bcmcli_log("bcmolt_msg_set_alloc(BCMOLT_OBJ_ID_EPON_ONU_10G_US, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, epon_onu_10g_us, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, epon_onu_10g_us, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "filter.all_links");
+    if (cli_parm != NULL)
+    {
+        bcmolt_macaddress_list_u32_max_2048 val = { };
+        int32_t i0;
+        val.val = apicli_byte_pool_calloc(byte_pool, cli_parm->array_size * sizeof(*val.val));
+        if (val.val == NULL)
+        {
+            apicli_print_complete(session, BCM_ERR_NOMEM, "\n");
+            return BCM_ERR_NOMEM;
+        }
+
+        val.len = cli_parm->array_size;
+        for (i0 = 0; i0 < val.len; i0++)
+        {
+            val.val[i0] = cli_parm->values[i0].mac;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, epon_onu_10g_us, all_links, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_macaddress_list_u32_max_2048 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_ONU_10G_US, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_ONU_10G_US_CFG_ID_ALL_LINKS, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_onu_10g_us, all_links, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "all_links");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_onu_10g_us, all_links);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_onu_10g_us, all_links);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_onu_10g_us, all_links))
+    {
+        BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_onu_10g_us, all_properties);
+        bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_onu_10g_us, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);
+    bcmcli_log("bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_onu_10g_us_stat_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_onu_10g_us_stat_cfg stat_cfg;   /**< declare main API struct */
+    bcmolt_epon_onu_10g_us_key key = { };       /**< declare key */
+    bcmolt_epon_onu_10g_us_stat_id stat_id;     /**< declare stat ID */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_onu_10g_us_stat_cfg stat_cfg;\n");
+    bcmcli_log("bcmolt_epon_onu_10g_us_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_stat_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_ONU_10G_US, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_ONU_10G_US_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        key.onu_id = (bcmolt_epon_onu_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "onu_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.onu_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_ONU_10G_US, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_ONU_10G_US_KEY_ID_ONU_ID, &key.onu_id);
+    bcmcli_log(";\n");
+
+    /* set stat ID from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "sub");
+    if (cli_parm != NULL)
+    {
+        stat_id = (bcmolt_epon_onu_10g_us_stat_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    /* init the API struct */
+    switch (stat_id)
+    {
+        case BCMOLT_EPON_ONU_10G_US_STAT_ID_FEC_CODE_WORDS_TOTAL:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_10g_us, fec_code_words_total, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_10g_us, fec_code_words_total, key);\n");
+            break;
+        case BCMOLT_EPON_ONU_10G_US_STAT_ID_FEC_CODE_WORDS_DECODE_FAILS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_10g_us, fec_code_words_decode_fails, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_10g_us, fec_code_words_decode_fails, key);\n");
+            break;
+        case BCMOLT_EPON_ONU_10G_US_STAT_ID_FEC_ZEROES_CORRECTED:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_10g_us, fec_zeroes_corrected, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_10g_us, fec_zeroes_corrected, key);\n");
+            break;
+        case BCMOLT_EPON_ONU_10G_US_STAT_ID_FEC_ONES_CORRECTED:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_10g_us, fec_ones_corrected, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_10g_us, fec_ones_corrected, key);\n");
+            break;
+        default:
+            apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+            return BCM_ERR_RANGE;
+    }
+
+    /* call API */
+    err = bcmolt_stat_cfg_get(device_id, &stat_cfg.hdr);
+    bcmcli_log("bcmolt_stat_cfg_get(device_id, &stat_cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &stat_cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, stat_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_onu_10g_us_stat_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_onu_10g_us_stat_cfg stat_cfg;   /**< declare main API struct */
+    bcmolt_epon_onu_10g_us_key key = { };       /**< declare key */
+    bcmolt_epon_onu_10g_us_stat_id stat_id;     /**< declare stat ID */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_onu_10g_us_stat_cfg stat_cfg;\n");
+    bcmcli_log("bcmolt_epon_onu_10g_us_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_stat_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_ONU_10G_US, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_ONU_10G_US_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        key.onu_id = (bcmolt_epon_onu_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "onu_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.onu_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_ONU_10G_US, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_ONU_10G_US_KEY_ID_ONU_ID, &key.onu_id);
+    bcmcli_log(";\n");
+
+    /* set stat ID from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "sub");
+    if (cli_parm != NULL)
+    {
+        stat_id = (bcmolt_epon_onu_10g_us_stat_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    /* init the API struct */
+    switch (stat_id)
+    {
+        case BCMOLT_EPON_ONU_10G_US_STAT_ID_FEC_CODE_WORDS_TOTAL:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_10g_us, fec_code_words_total, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_10g_us, fec_code_words_total, key);\n");
+            break;
+        case BCMOLT_EPON_ONU_10G_US_STAT_ID_FEC_CODE_WORDS_DECODE_FAILS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_10g_us, fec_code_words_decode_fails, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_10g_us, fec_code_words_decode_fails, key);\n");
+            break;
+        case BCMOLT_EPON_ONU_10G_US_STAT_ID_FEC_ZEROES_CORRECTED:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_10g_us, fec_zeroes_corrected, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_10g_us, fec_zeroes_corrected, key);\n");
+            break;
+        case BCMOLT_EPON_ONU_10G_US_STAT_ID_FEC_ONES_CORRECTED:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_10g_us, fec_ones_corrected, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_10g_us, fec_ones_corrected, key);\n");
+            break;
+        default:
+            apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+            return BCM_ERR_RANGE;
+    }
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_stat_alarm_config val = { };
+        cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.trigger.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.type");
+            if (cli_parm != NULL)
+            {
+                val.trigger.type = (bcmolt_stat_condition_type) cli_parm->value.enum_val;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.type is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            switch (val.trigger.type)
+            {
+                case BCMOLT_STAT_CONDITION_TYPE_RATE_THRESHOLD:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.rising");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_threshold.rising = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.rising is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.falling");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_threshold.falling = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.falling is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_RATE_RANGE:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.upper");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_range.upper = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.upper is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.lower");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_range.lower = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.lower is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_VALUE_THRESHOLD:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.limit");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.value_threshold.limit = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.limit is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_NONE:
+                    break;
+                default:
+                    apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+                    return BCM_ERR_RANGE;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.soak.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "cfg.soak.active_soak_time");
+            if (cli_parm != NULL)
+            {
+                val.soak.active_soak_time = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak.active_soak_time is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "cfg.soak.clear_soak_time");
+            if (cli_parm != NULL)
+            {
+                val.soak.clear_soak_time = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak.clear_soak_time is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_STAT_CFG_PROP_SET(&stat_cfg, epon_onu_10g_us, cfg, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_stat_alarm_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_ONU_10G_US, BCMOLT_MGT_GROUP_STAT_CFG, 0, BCMOLT_EPON_ONU_10G_US_STAT_CFG_ID_CFG, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_STAT_CFG_PROP_SET(&stat_cfg, epon_onu_10g_us, cfg, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    /* call API */
+    err = bcmolt_stat_cfg_set(device_id, &stat_cfg.hdr);
+    bcmcli_log("bcmolt_stat_cfg_set(device_id, &stat_cfg.hdr);\n");
+    apicli_print_complete(session, err, stat_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_onu_10g_us_auto_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_onu_10g_us_auto_cfg auto_cfg;   /**< declare main API struct */
+    bcmolt_epon_onu_10g_us_key key = { };       /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_onu_10g_us_auto_cfg auto_cfg;\n");
+    bcmcli_log("bcmolt_epon_onu_10g_us_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_auto_cfg_get");
+
+    /* init the API struct */
+    BCMOLT_AUTO_CFG_INIT(&auto_cfg, epon_onu_10g_us, key);
+    bcmcli_log("BCMOLT_AUTO_CFG_INIT(&auto_cfg, epon_onu_10g_us, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_cleared");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_onu_10g_us, stat_alarm_cleared);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_onu_10g_us, stat_alarm_cleared);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_raised");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_onu_10g_us, stat_alarm_raised);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_onu_10g_us, stat_alarm_raised);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, epon_onu_10g_us, stat_alarm_cleared) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, epon_onu_10g_us, stat_alarm_raised))
+    {
+        BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_onu_10g_us, all_properties);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_onu_10g_us, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_auto_cfg_get(device_id, &auto_cfg.hdr);
+    bcmcli_log("bcmolt_auto_cfg_get(device_id, &auto_cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &auto_cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, auto_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_onu_10g_us_auto_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_onu_10g_us_auto_cfg auto_cfg;   /**< declare main API struct */
+    bcmolt_epon_onu_10g_us_key key = { };       /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_onu_10g_us_auto_cfg auto_cfg;\n");
+    bcmcli_log("bcmolt_epon_onu_10g_us_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_auto_cfg_set");
+
+    /* init the API struct */
+    BCMOLT_AUTO_CFG_INIT(&auto_cfg, epon_onu_10g_us, key);
+    bcmcli_log("BCMOLT_AUTO_CFG_INIT(&auto_cfg, epon_onu_10g_us, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_cleared");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_onu_10g_us, stat_alarm_cleared, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_onu_10g_us, stat_alarm_cleared, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_ONU_10G_US, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_EPON_ONU_10G_US_AUTO_CFG_ID_STAT_ALARM_CLEARED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_raised");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_onu_10g_us, stat_alarm_raised, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_onu_10g_us, stat_alarm_raised, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_ONU_10G_US, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_EPON_ONU_10G_US_AUTO_CFG_ID_STAT_ALARM_RAISED, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_auto_cfg_set(device_id, &auto_cfg.hdr);
+    bcmcli_log("bcmolt_auto_cfg_set(device_id, &auto_cfg.hdr);\n");
+    apicli_print_complete(session, err, auto_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_onu_1g_us_stat_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_onu_1g_us_stat stat;        /**< declare main API struct */
+    bcmolt_epon_onu_1g_us_key key = { };    /**< declare key */
+    bcmos_bool clear_on_read;               /**< declare 'clear on read' flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_onu_1g_us_stat stat;\n");
+    bcmcli_log("bcmolt_epon_onu_1g_us_key key = {  };\n");
+    bcmcli_log("bcmos_bool clear_on_read;\n");
+    apicli_print_start(session, "bcmolt_stat_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_ONU_1G_US, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_ONU_1G_US_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        key.onu_id = (bcmolt_epon_onu_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "onu_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.onu_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_ONU_1G_US, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_ONU_1G_US_KEY_ID_ONU_ID, &key.onu_id);
+    bcmcli_log(";\n");
+
+    /* set stat flags from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "clear");
+    if (cli_parm != NULL)
+    {
+        clear_on_read = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "clear is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("clear_on_read = %s;\n", (clear_on_read) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* init the API struct */
+    BCMOLT_STAT_INIT(&stat, epon_onu_1g_us, key);
+    bcmcli_log("BCMOLT_STAT_INIT(&stat, epon_onu_1g_us, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "good_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_onu_1g_us, good_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_onu_1g_us, good_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "good_bytes");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_onu_1g_us, good_bytes);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_onu_1g_us, good_bytes);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "oversz_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_onu_1g_us, oversz_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_onu_1g_us, oversz_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "non_fec_good_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_onu_1g_us, non_fec_good_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_onu_1g_us, non_fec_good_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "non_fec_good_bytes");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_onu_1g_us, non_fec_good_bytes);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_onu_1g_us, non_fec_good_bytes);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "fec_good_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_onu_1g_us, fec_good_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_onu_1g_us, fec_good_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "fec_good_bytes");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_onu_1g_us, fec_good_bytes);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_onu_1g_us, fec_good_bytes);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "fec_frames_exc_errs");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_onu_1g_us, fec_frames_exc_errs);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_onu_1g_us, fec_frames_exc_errs);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "fec_blks_no_errs");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_onu_1g_us, fec_blks_no_errs);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_onu_1g_us, fec_blks_no_errs);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "fec_blks_corr_errs");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_onu_1g_us, fec_blks_corr_errs);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_onu_1g_us, fec_blks_corr_errs);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "fec_blks_uncorr_errs");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_onu_1g_us, fec_blks_uncorr_errs);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_onu_1g_us, fec_blks_uncorr_errs);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "fec_corr_bytes");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_onu_1g_us, fec_corr_bytes);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_onu_1g_us, fec_corr_bytes);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "fec_corr_zeroes");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_onu_1g_us, fec_corr_zeroes);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_onu_1g_us, fec_corr_zeroes);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "fec_corr_ones");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_onu_1g_us, fec_corr_ones);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_onu_1g_us, fec_corr_ones);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "undersz_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_onu_1g_us, undersz_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_onu_1g_us, undersz_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "errorsz_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_onu_1g_us, errorsz_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_onu_1g_us, errorsz_frames);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_STAT_PROP_IS_SET(&stat, epon_onu_1g_us, good_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_onu_1g_us, good_bytes) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_onu_1g_us, oversz_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_onu_1g_us, non_fec_good_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_onu_1g_us, non_fec_good_bytes) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_onu_1g_us, fec_good_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_onu_1g_us, fec_good_bytes) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_onu_1g_us, fec_frames_exc_errs) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_onu_1g_us, fec_blks_no_errs) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_onu_1g_us, fec_blks_corr_errs) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_onu_1g_us, fec_blks_uncorr_errs) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_onu_1g_us, fec_corr_bytes) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_onu_1g_us, fec_corr_zeroes) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_onu_1g_us, fec_corr_ones) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_onu_1g_us, undersz_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_onu_1g_us, errorsz_frames))
+    {
+        BCMOLT_STAT_PROP_GET(&stat, epon_onu_1g_us, all_properties);
+        bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_onu_1g_us, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_stat_get(device_id, &stat.hdr, clear_on_read);
+    bcmcli_log("bcmolt_stat_get(device_id, &stat.hdr, clear_on_read);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &stat.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, stat.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_onu_1g_us_cfg_get(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_onu_1g_us_cfg cfg;          /**< declare main API struct */
+    bcmolt_epon_onu_1g_us_key key = { };    /**< declare key */
+    uint8_t *list_mem;                      /**< declare memory buffer for variable-sized lists */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_onu_1g_us_cfg cfg;\n");
+    bcmcli_log("bcmolt_epon_onu_1g_us_key key = {  };\n");
+    bcmcli_log("uint8_t* list_mem;\n");
+    apicli_print_start(session, "bcmolt_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_ONU_1G_US, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_ONU_1G_US_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        key.onu_id = (bcmolt_epon_onu_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "onu_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.onu_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_ONU_1G_US, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_ONU_1G_US_KEY_ID_ONU_ID, &key.onu_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, epon_onu_1g_us, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, epon_onu_1g_us, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "all_links");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_onu_1g_us, all_links);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_onu_1g_us, all_links);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_CFG_PROP_IS_SET(&cfg, epon_onu_1g_us, all_links))
+    {
+        BCMOLT_CFG_PROP_GET(&cfg, epon_onu_1g_us, all_properties);
+        bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_onu_1g_us, all_properties);\n");
+    }
+
+    /* set memory to use for variable-sized lists */
+    list_mem = apicli_byte_pool_calloc(byte_pool, APICLI_DYNAMIC_LIST_BUFFER_SIZE);
+    if (list_mem == NULL)
+    {
+        apicli_print_complete(session, BCM_ERR_NOMEM, "\n");
+        return BCM_ERR_NOMEM;
+    }
+
+    bcmcli_log("list_mem = bcmos_calloc(APICLI_DYNAMIC_LIST_BUFFER_SIZE);\n");
+    BCMOLT_CFG_LIST_BUF_SET(&cfg, epon_onu_1g_us, list_mem, APICLI_DYNAMIC_LIST_BUFFER_SIZE);
+    bcmcli_log("BCMOLT_CFG_LIST_BUF_SET(&cfg, epon_onu_1g_us, list_mem, APICLI_DYNAMIC_LIST_BUFFER_SIZE);\n");
+
+    /* call API */
+    err = bcmolt_cfg_get(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_get(device_id, &cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_onu_1g_us_cfg_set(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_onu_1g_us_cfg cfg;          /**< declare main API struct */
+    bcmolt_epon_onu_1g_us_key key = { };    /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_onu_1g_us_cfg cfg;\n");
+    bcmcli_log("bcmolt_epon_onu_1g_us_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_ONU_1G_US, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_ONU_1G_US_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        key.onu_id = (bcmolt_epon_onu_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "onu_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.onu_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_ONU_1G_US, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_ONU_1G_US_KEY_ID_ONU_ID, &key.onu_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, epon_onu_1g_us, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, epon_onu_1g_us, key);\n");
+
+    /* decode API parameters from CLI */
+
+    /* call API */
+    err = bcmolt_cfg_set(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_set(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_onu_1g_us_cfg_clear(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_onu_1g_us_cfg cfg;          /**< declare main API struct */
+    bcmolt_epon_onu_1g_us_key key = { };    /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_onu_1g_us_cfg cfg;\n");
+    bcmcli_log("bcmolt_epon_onu_1g_us_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_clear");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_ONU_1G_US, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_ONU_1G_US_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        key.onu_id = (bcmolt_epon_onu_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "onu_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.onu_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_ONU_1G_US, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_ONU_1G_US_KEY_ID_ONU_ID, &key.onu_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, epon_onu_1g_us, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, epon_onu_1g_us, key);\n");
+
+    /* call API */
+    err = bcmolt_cfg_clear(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_clear(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_onu_1g_us_cfg_get_multi(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_onu_1g_us_cfg cfg;          /**< declare main API struct */
+    bcmolt_epon_onu_1g_us_key key = { };    /**< declare key */
+    bcmolt_msg_set *msg_set = NULL;         /**< declare message set */
+    uint32_t max_msgs;                      /**< declare max number of msgs to get */
+    bcmos_bool invert_filter;               /**< declare filter invert flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_onu_1g_us_cfg cfg;\n");
+    bcmcli_log("bcmolt_epon_onu_1g_us_key key = {  };\n");
+    bcmcli_log("bcmolt_msg_set* msg_set = NULL;\n");
+    bcmcli_log("uint32_t max_msgs;\n");
+    bcmcli_log("bcmos_bool invert_filter;\n");
+    apicli_print_start(session, "bcmolt_cfg_get_multi");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_ONU_1G_US, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_ONU_1G_US_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        key.onu_id = (bcmolt_epon_onu_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "onu_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.onu_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_ONU_1G_US, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_ONU_1G_US_KEY_ID_ONU_ID, &key.onu_id);
+    bcmcli_log(";\n");
+
+    /* set max number of msgs from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "max_msgs");
+    if (cli_parm != NULL)
+    {
+        max_msgs = cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "max_msgs is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("max_msgs = %d;\n", max_msgs);
+
+    /* set filter invert flag from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "filter_invert");
+    if (cli_parm != NULL)
+    {
+        invert_filter = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "filter_invert is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("invert_filter = %s;\n", (invert_filter) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* allocate message set */
+    err = apicli_msg_set_alloc(byte_pool, BCMOLT_OBJ_ID_EPON_ONU_1G_US, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);
+    if (err != BCM_ERR_OK)
+    {
+        return err;
+    }
+
+    bcmcli_log("bcmolt_msg_set_alloc(BCMOLT_OBJ_ID_EPON_ONU_1G_US, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, epon_onu_1g_us, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, epon_onu_1g_us, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "filter.all_links");
+    if (cli_parm != NULL)
+    {
+        bcmolt_macaddress_list_u32 val = { };
+        int32_t i0;
+        val.val = apicli_byte_pool_calloc(byte_pool, cli_parm->array_size * sizeof(*val.val));
+        if (val.val == NULL)
+        {
+            apicli_print_complete(session, BCM_ERR_NOMEM, "\n");
+            return BCM_ERR_NOMEM;
+        }
+
+        val.len = cli_parm->array_size;
+        for (i0 = 0; i0 < val.len; i0++)
+        {
+            val.val[i0] = cli_parm->values[i0].mac;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, epon_onu_1g_us, all_links, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_macaddress_list_u32 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_ONU_1G_US, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_ONU_1G_US_CFG_ID_ALL_LINKS, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_onu_1g_us, all_links, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "all_links");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_onu_1g_us, all_links);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_onu_1g_us, all_links);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_onu_1g_us, all_links))
+    {
+        BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_onu_1g_us, all_properties);
+        bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_onu_1g_us, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);
+    bcmcli_log("bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_onu_1g_us_stat_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_onu_1g_us_stat_cfg stat_cfg;    /**< declare main API struct */
+    bcmolt_epon_onu_1g_us_key key = { };        /**< declare key */
+    bcmolt_epon_onu_1g_us_stat_id stat_id;      /**< declare stat ID */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_onu_1g_us_stat_cfg stat_cfg;\n");
+    bcmcli_log("bcmolt_epon_onu_1g_us_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_stat_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_ONU_1G_US, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_ONU_1G_US_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        key.onu_id = (bcmolt_epon_onu_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "onu_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.onu_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_ONU_1G_US, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_ONU_1G_US_KEY_ID_ONU_ID, &key.onu_id);
+    bcmcli_log(";\n");
+
+    /* set stat ID from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "sub");
+    if (cli_parm != NULL)
+    {
+        stat_id = (bcmolt_epon_onu_1g_us_stat_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    /* init the API struct */
+    switch (stat_id)
+    {
+        case BCMOLT_EPON_ONU_1G_US_STAT_ID_GOOD_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, good_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, good_frames, key);\n");
+            break;
+        case BCMOLT_EPON_ONU_1G_US_STAT_ID_GOOD_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, good_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, good_bytes, key);\n");
+            break;
+        case BCMOLT_EPON_ONU_1G_US_STAT_ID_OVERSZ_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, oversz_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, oversz_frames, key);\n");
+            break;
+        case BCMOLT_EPON_ONU_1G_US_STAT_ID_NON_FEC_GOOD_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, non_fec_good_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, non_fec_good_frames, key);\n");
+            break;
+        case BCMOLT_EPON_ONU_1G_US_STAT_ID_NON_FEC_GOOD_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, non_fec_good_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, non_fec_good_bytes, key);\n");
+            break;
+        case BCMOLT_EPON_ONU_1G_US_STAT_ID_FEC_GOOD_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, fec_good_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, fec_good_frames, key);\n");
+            break;
+        case BCMOLT_EPON_ONU_1G_US_STAT_ID_FEC_GOOD_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, fec_good_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, fec_good_bytes, key);\n");
+            break;
+        case BCMOLT_EPON_ONU_1G_US_STAT_ID_FEC_FRAMES_EXC_ERRS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, fec_frames_exc_errs, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, fec_frames_exc_errs, key);\n");
+            break;
+        case BCMOLT_EPON_ONU_1G_US_STAT_ID_FEC_BLKS_NO_ERRS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, fec_blks_no_errs, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, fec_blks_no_errs, key);\n");
+            break;
+        case BCMOLT_EPON_ONU_1G_US_STAT_ID_FEC_BLKS_CORR_ERRS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, fec_blks_corr_errs, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, fec_blks_corr_errs, key);\n");
+            break;
+        case BCMOLT_EPON_ONU_1G_US_STAT_ID_FEC_BLKS_UNCORR_ERRS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, fec_blks_uncorr_errs, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, fec_blks_uncorr_errs, key);\n");
+            break;
+        case BCMOLT_EPON_ONU_1G_US_STAT_ID_FEC_CORR_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, fec_corr_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, fec_corr_bytes, key);\n");
+            break;
+        case BCMOLT_EPON_ONU_1G_US_STAT_ID_FEC_CORR_ZEROES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, fec_corr_zeroes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, fec_corr_zeroes, key);\n");
+            break;
+        case BCMOLT_EPON_ONU_1G_US_STAT_ID_FEC_CORR_ONES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, fec_corr_ones, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, fec_corr_ones, key);\n");
+            break;
+        case BCMOLT_EPON_ONU_1G_US_STAT_ID_UNDERSZ_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, undersz_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, undersz_frames, key);\n");
+            break;
+        case BCMOLT_EPON_ONU_1G_US_STAT_ID_ERRORSZ_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, errorsz_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, errorsz_frames, key);\n");
+            break;
+        default:
+            apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+            return BCM_ERR_RANGE;
+    }
+
+    /* call API */
+    err = bcmolt_stat_cfg_get(device_id, &stat_cfg.hdr);
+    bcmcli_log("bcmolt_stat_cfg_get(device_id, &stat_cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &stat_cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, stat_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_onu_1g_us_stat_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_onu_1g_us_stat_cfg stat_cfg;    /**< declare main API struct */
+    bcmolt_epon_onu_1g_us_key key = { };        /**< declare key */
+    bcmolt_epon_onu_1g_us_stat_id stat_id;      /**< declare stat ID */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_onu_1g_us_stat_cfg stat_cfg;\n");
+    bcmcli_log("bcmolt_epon_onu_1g_us_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_stat_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_ONU_1G_US, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_ONU_1G_US_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        key.onu_id = (bcmolt_epon_onu_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "onu_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.onu_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_ONU_1G_US, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_ONU_1G_US_KEY_ID_ONU_ID, &key.onu_id);
+    bcmcli_log(";\n");
+
+    /* set stat ID from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "sub");
+    if (cli_parm != NULL)
+    {
+        stat_id = (bcmolt_epon_onu_1g_us_stat_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    /* init the API struct */
+    switch (stat_id)
+    {
+        case BCMOLT_EPON_ONU_1G_US_STAT_ID_GOOD_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, good_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, good_frames, key);\n");
+            break;
+        case BCMOLT_EPON_ONU_1G_US_STAT_ID_GOOD_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, good_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, good_bytes, key);\n");
+            break;
+        case BCMOLT_EPON_ONU_1G_US_STAT_ID_OVERSZ_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, oversz_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, oversz_frames, key);\n");
+            break;
+        case BCMOLT_EPON_ONU_1G_US_STAT_ID_NON_FEC_GOOD_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, non_fec_good_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, non_fec_good_frames, key);\n");
+            break;
+        case BCMOLT_EPON_ONU_1G_US_STAT_ID_NON_FEC_GOOD_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, non_fec_good_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, non_fec_good_bytes, key);\n");
+            break;
+        case BCMOLT_EPON_ONU_1G_US_STAT_ID_FEC_GOOD_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, fec_good_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, fec_good_frames, key);\n");
+            break;
+        case BCMOLT_EPON_ONU_1G_US_STAT_ID_FEC_GOOD_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, fec_good_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, fec_good_bytes, key);\n");
+            break;
+        case BCMOLT_EPON_ONU_1G_US_STAT_ID_FEC_FRAMES_EXC_ERRS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, fec_frames_exc_errs, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, fec_frames_exc_errs, key);\n");
+            break;
+        case BCMOLT_EPON_ONU_1G_US_STAT_ID_FEC_BLKS_NO_ERRS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, fec_blks_no_errs, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, fec_blks_no_errs, key);\n");
+            break;
+        case BCMOLT_EPON_ONU_1G_US_STAT_ID_FEC_BLKS_CORR_ERRS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, fec_blks_corr_errs, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, fec_blks_corr_errs, key);\n");
+            break;
+        case BCMOLT_EPON_ONU_1G_US_STAT_ID_FEC_BLKS_UNCORR_ERRS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, fec_blks_uncorr_errs, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, fec_blks_uncorr_errs, key);\n");
+            break;
+        case BCMOLT_EPON_ONU_1G_US_STAT_ID_FEC_CORR_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, fec_corr_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, fec_corr_bytes, key);\n");
+            break;
+        case BCMOLT_EPON_ONU_1G_US_STAT_ID_FEC_CORR_ZEROES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, fec_corr_zeroes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, fec_corr_zeroes, key);\n");
+            break;
+        case BCMOLT_EPON_ONU_1G_US_STAT_ID_FEC_CORR_ONES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, fec_corr_ones, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, fec_corr_ones, key);\n");
+            break;
+        case BCMOLT_EPON_ONU_1G_US_STAT_ID_UNDERSZ_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, undersz_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, undersz_frames, key);\n");
+            break;
+        case BCMOLT_EPON_ONU_1G_US_STAT_ID_ERRORSZ_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, errorsz_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_onu_1g_us, errorsz_frames, key);\n");
+            break;
+        default:
+            apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+            return BCM_ERR_RANGE;
+    }
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_stat_alarm_config val = { };
+        cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.trigger.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.type");
+            if (cli_parm != NULL)
+            {
+                val.trigger.type = (bcmolt_stat_condition_type) cli_parm->value.enum_val;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.type is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            switch (val.trigger.type)
+            {
+                case BCMOLT_STAT_CONDITION_TYPE_RATE_THRESHOLD:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.rising");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_threshold.rising = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.rising is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.falling");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_threshold.falling = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.falling is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_RATE_RANGE:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.upper");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_range.upper = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.upper is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.lower");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_range.lower = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.lower is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_VALUE_THRESHOLD:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.limit");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.value_threshold.limit = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.limit is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_NONE:
+                    break;
+                default:
+                    apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+                    return BCM_ERR_RANGE;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.soak.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "cfg.soak.active_soak_time");
+            if (cli_parm != NULL)
+            {
+                val.soak.active_soak_time = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak.active_soak_time is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "cfg.soak.clear_soak_time");
+            if (cli_parm != NULL)
+            {
+                val.soak.clear_soak_time = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak.clear_soak_time is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_STAT_CFG_PROP_SET(&stat_cfg, epon_onu_1g_us, cfg, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_stat_alarm_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_ONU_1G_US, BCMOLT_MGT_GROUP_STAT_CFG, 0, BCMOLT_EPON_ONU_1G_US_STAT_CFG_ID_CFG, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_STAT_CFG_PROP_SET(&stat_cfg, epon_onu_1g_us, cfg, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    /* call API */
+    err = bcmolt_stat_cfg_set(device_id, &stat_cfg.hdr);
+    bcmcli_log("bcmolt_stat_cfg_set(device_id, &stat_cfg.hdr);\n");
+    apicli_print_complete(session, err, stat_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_onu_1g_us_auto_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_onu_1g_us_auto_cfg auto_cfg;    /**< declare main API struct */
+    bcmolt_epon_onu_1g_us_key key = { };        /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_onu_1g_us_auto_cfg auto_cfg;\n");
+    bcmcli_log("bcmolt_epon_onu_1g_us_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_auto_cfg_get");
+
+    /* init the API struct */
+    BCMOLT_AUTO_CFG_INIT(&auto_cfg, epon_onu_1g_us, key);
+    bcmcli_log("BCMOLT_AUTO_CFG_INIT(&auto_cfg, epon_onu_1g_us, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_cleared");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_onu_1g_us, stat_alarm_cleared);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_onu_1g_us, stat_alarm_cleared);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_raised");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_onu_1g_us, stat_alarm_raised);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_onu_1g_us, stat_alarm_raised);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, epon_onu_1g_us, stat_alarm_cleared) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, epon_onu_1g_us, stat_alarm_raised))
+    {
+        BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_onu_1g_us, all_properties);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_onu_1g_us, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_auto_cfg_get(device_id, &auto_cfg.hdr);
+    bcmcli_log("bcmolt_auto_cfg_get(device_id, &auto_cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &auto_cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, auto_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_onu_1g_us_auto_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_onu_1g_us_auto_cfg auto_cfg;    /**< declare main API struct */
+    bcmolt_epon_onu_1g_us_key key = { };        /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_onu_1g_us_auto_cfg auto_cfg;\n");
+    bcmcli_log("bcmolt_epon_onu_1g_us_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_auto_cfg_set");
+
+    /* init the API struct */
+    BCMOLT_AUTO_CFG_INIT(&auto_cfg, epon_onu_1g_us, key);
+    bcmcli_log("BCMOLT_AUTO_CFG_INIT(&auto_cfg, epon_onu_1g_us, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_cleared");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_onu_1g_us, stat_alarm_cleared, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_onu_1g_us, stat_alarm_cleared, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_ONU_1G_US, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_EPON_ONU_1G_US_AUTO_CFG_ID_STAT_ALARM_CLEARED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_raised");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_onu_1g_us, stat_alarm_raised, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_onu_1g_us, stat_alarm_raised, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_ONU_1G_US, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_EPON_ONU_1G_US_AUTO_CFG_ID_STAT_ALARM_RAISED, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_auto_cfg_set(device_id, &auto_cfg.hdr);
+    bcmcli_log("bcmolt_auto_cfg_set(device_id, &auto_cfg.hdr);\n");
+    apicli_print_complete(session, err, auto_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_path_10g_ds_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_path_10g_ds_cfg cfg;        /**< declare main API struct */
+    bcmolt_epon_path_10g_ds_key key = { };  /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_path_10g_ds_cfg cfg;\n");
+    bcmcli_log("bcmolt_epon_path_10g_ds_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_10G_DS, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_PATH_10G_DS_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, epon_path_10g_ds, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, epon_path_10g_ds, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "fec_state");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_path_10g_ds, fec_state);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_path_10g_ds, fec_state);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "prbs_generator");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_path_10g_ds, prbs_generator);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_path_10g_ds, prbs_generator);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_CFG_PROP_IS_SET(&cfg, epon_path_10g_ds, fec_state) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_path_10g_ds, prbs_generator))
+    {
+        BCMOLT_CFG_PROP_GET(&cfg, epon_path_10g_ds, all_properties);
+        bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_path_10g_ds, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_get(device_id, &cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_path_10g_ds_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_path_10g_ds_cfg cfg;        /**< declare main API struct */
+    bcmolt_epon_path_10g_ds_key key = { };  /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_path_10g_ds_cfg cfg;\n");
+    bcmcli_log("bcmolt_epon_path_10g_ds_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_10G_DS, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_PATH_10G_DS_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, epon_path_10g_ds, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, epon_path_10g_ds, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "fec_state");
+    if (cli_parm != NULL)
+    {
+        bcmolt_epon_fec_en_state val;
+        val = (bcmolt_epon_fec_en_state) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_path_10g_ds, fec_state, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_path_10g_ds, fec_state, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_10G_DS, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_PATH_10G_DS_CFG_ID_FEC_STATE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "prbs_generator.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_prbs_generator_config val = { };
+        cli_parm = bcmcli_find_named_parm(session, "prbs_generator.polynom");
+        if (cli_parm != NULL)
+        {
+            val.polynom = (bcmolt_prbs_polynomial) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "prbs_generator.polynom is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "prbs_generator.error_insert");
+        if (cli_parm != NULL)
+        {
+            val.error_insert = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "prbs_generator.error_insert is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "prbs_generator.invert");
+        if (cli_parm != NULL)
+        {
+            val.invert = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "prbs_generator.invert is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "prbs_generator.control");
+        if (cli_parm != NULL)
+        {
+            val.control = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "prbs_generator.control is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, epon_path_10g_ds, prbs_generator, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_prbs_generator_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_10G_DS, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_PATH_10G_DS_CFG_ID_PRBS_GENERATOR, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_path_10g_ds, prbs_generator, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_set(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_set(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_path_10g_ds_cfg_clear(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_path_10g_ds_cfg cfg;        /**< declare main API struct */
+    bcmolt_epon_path_10g_ds_key key = { };  /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_path_10g_ds_cfg cfg;\n");
+    bcmcli_log("bcmolt_epon_path_10g_ds_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_clear");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_10G_DS, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_PATH_10G_DS_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, epon_path_10g_ds, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, epon_path_10g_ds, key);\n");
+
+    /* call API */
+    err = bcmolt_cfg_clear(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_clear(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_path_10g_ds_cfg_get_multi(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_path_10g_ds_cfg cfg;        /**< declare main API struct */
+    bcmolt_epon_path_10g_ds_key key = { };  /**< declare key */
+    bcmolt_msg_set *msg_set = NULL;         /**< declare message set */
+    uint32_t max_msgs;                      /**< declare max number of msgs to get */
+    bcmos_bool invert_filter;               /**< declare filter invert flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_path_10g_ds_cfg cfg;\n");
+    bcmcli_log("bcmolt_epon_path_10g_ds_key key = {  };\n");
+    bcmcli_log("bcmolt_msg_set* msg_set = NULL;\n");
+    bcmcli_log("uint32_t max_msgs;\n");
+    bcmcli_log("bcmos_bool invert_filter;\n");
+    apicli_print_start(session, "bcmolt_cfg_get_multi");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_10G_DS, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_PATH_10G_DS_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+
+    /* set max number of msgs from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "max_msgs");
+    if (cli_parm != NULL)
+    {
+        max_msgs = cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "max_msgs is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("max_msgs = %d;\n", max_msgs);
+
+    /* set filter invert flag from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "filter_invert");
+    if (cli_parm != NULL)
+    {
+        invert_filter = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "filter_invert is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("invert_filter = %s;\n", (invert_filter) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* allocate message set */
+    err = apicli_msg_set_alloc(byte_pool, BCMOLT_OBJ_ID_EPON_PATH_10G_DS, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);
+    if (err != BCM_ERR_OK)
+    {
+        return err;
+    }
+
+    bcmcli_log("bcmolt_msg_set_alloc(BCMOLT_OBJ_ID_EPON_PATH_10G_DS, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, epon_path_10g_ds, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, epon_path_10g_ds, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "filter.fec_state");
+    if (cli_parm != NULL)
+    {
+        bcmolt_epon_fec_en_state val;
+        val = (bcmolt_epon_fec_en_state) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_path_10g_ds, fec_state, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_path_10g_ds, fec_state, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_10G_DS, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_PATH_10G_DS_CFG_ID_FEC_STATE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "fec_state");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_path_10g_ds, fec_state);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_path_10g_ds, fec_state);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.prbs_generator.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_prbs_generator_config val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.prbs_generator.polynom");
+        if (cli_parm != NULL)
+        {
+            val.polynom = (bcmolt_prbs_polynomial) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.prbs_generator.polynom is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.prbs_generator.error_insert");
+        if (cli_parm != NULL)
+        {
+            val.error_insert = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.prbs_generator.error_insert is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.prbs_generator.invert");
+        if (cli_parm != NULL)
+        {
+            val.invert = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.prbs_generator.invert is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.prbs_generator.control");
+        if (cli_parm != NULL)
+        {
+            val.control = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.prbs_generator.control is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, epon_path_10g_ds, prbs_generator, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_prbs_generator_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_10G_DS, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_PATH_10G_DS_CFG_ID_PRBS_GENERATOR, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_path_10g_ds, prbs_generator, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "prbs_generator");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_path_10g_ds, prbs_generator);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_path_10g_ds, prbs_generator);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_path_10g_ds, fec_state) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_path_10g_ds, prbs_generator))
+    {
+        BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_path_10g_ds, all_properties);
+        bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_path_10g_ds, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);
+    bcmcli_log("bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_path_10g_ds_stat_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_path_10g_ds_stat stat;      /**< declare main API struct */
+    bcmolt_epon_path_10g_ds_key key = { };  /**< declare key */
+    bcmos_bool clear_on_read;               /**< declare 'clear on read' flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_path_10g_ds_stat stat;\n");
+    bcmcli_log("bcmolt_epon_path_10g_ds_key key = {  };\n");
+    bcmcli_log("bcmos_bool clear_on_read;\n");
+    apicli_print_start(session, "bcmolt_stat_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_10G_DS, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_PATH_10G_DS_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+
+    /* set stat flags from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "clear");
+    if (cli_parm != NULL)
+    {
+        clear_on_read = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "clear is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("clear_on_read = %s;\n", (clear_on_read) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* init the API struct */
+    BCMOLT_STAT_INIT(&stat, epon_path_10g_ds, key);
+    bcmcli_log("BCMOLT_STAT_INIT(&stat, epon_path_10g_ds, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "bytes");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_ds, bytes);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_ds, bytes);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_ds, frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_ds, frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_64");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_ds, frames_64);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_ds, frames_64);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_65_127");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_ds, frames_65_127);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_ds, frames_65_127);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_128_255");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_ds, frames_128_255);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_ds, frames_128_255);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_256_511");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_ds, frames_256_511);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_ds, frames_256_511);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_512_1023");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_ds, frames_512_1023);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_ds, frames_512_1023);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_1024_1518");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_ds, frames_1024_1518);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_ds, frames_1024_1518);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_1519_2047");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_ds, frames_1519_2047);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_ds, frames_1519_2047);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_2048_4095");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_ds, frames_2048_4095);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_ds, frames_2048_4095);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_4096_9216");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_ds, frames_4096_9216);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_ds, frames_4096_9216);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_9217_16383");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_ds, frames_9217_16383);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_ds, frames_9217_16383);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "broadcast_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_ds, broadcast_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_ds, broadcast_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "data_bytes");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_ds, data_bytes);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_ds, data_bytes);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "multicast_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_ds, multicast_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_ds, multicast_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "unicast_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_ds, unicast_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_ds, unicast_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "oam_bytes");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_ds, oam_bytes);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_ds, oam_bytes);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "oam_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_ds, oam_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_ds, oam_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "gate_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_ds, gate_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_ds, gate_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mpcp_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_ds, mpcp_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_ds, mpcp_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "abort_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_ds, abort_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_ds, abort_frames);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_10g_ds, bytes) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_10g_ds, frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_10g_ds, frames_64) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_10g_ds, frames_65_127) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_10g_ds, frames_128_255) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_10g_ds, frames_256_511) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_10g_ds, frames_512_1023) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_10g_ds, frames_1024_1518) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_10g_ds, frames_1519_2047) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_10g_ds, frames_2048_4095) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_10g_ds, frames_4096_9216) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_10g_ds, frames_9217_16383) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_10g_ds, broadcast_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_10g_ds, data_bytes) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_10g_ds, multicast_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_10g_ds, unicast_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_10g_ds, oam_bytes) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_10g_ds, oam_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_10g_ds, gate_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_10g_ds, mpcp_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_10g_ds, abort_frames))
+    {
+        BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_ds, all_properties);
+        bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_ds, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_stat_get(device_id, &stat.hdr, clear_on_read);
+    bcmcli_log("bcmolt_stat_get(device_id, &stat.hdr, clear_on_read);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &stat.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, stat.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_path_10g_ds_stat_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_path_10g_ds_stat_cfg stat_cfg;  /**< declare main API struct */
+    bcmolt_epon_path_10g_ds_key key = { };      /**< declare key */
+    bcmolt_epon_path_10g_ds_stat_id stat_id;    /**< declare stat ID */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_path_10g_ds_stat_cfg stat_cfg;\n");
+    bcmcli_log("bcmolt_epon_path_10g_ds_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_stat_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_10G_DS, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_PATH_10G_DS_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+
+    /* set stat ID from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "sub");
+    if (cli_parm != NULL)
+    {
+        stat_id = (bcmolt_epon_path_10g_ds_stat_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    /* init the API struct */
+    switch (stat_id)
+    {
+        case BCMOLT_EPON_PATH_10G_DS_STAT_ID_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, bytes, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_DS_STAT_ID_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_DS_STAT_ID_FRAMES_64:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, frames_64, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, frames_64, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_DS_STAT_ID_FRAMES_65_127:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, frames_65_127, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, frames_65_127, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_DS_STAT_ID_FRAMES_128_255:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, frames_128_255, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, frames_128_255, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_DS_STAT_ID_FRAMES_256_511:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, frames_256_511, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, frames_256_511, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_DS_STAT_ID_FRAMES_512_1023:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, frames_512_1023, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, frames_512_1023, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_DS_STAT_ID_FRAMES_1024_1518:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, frames_1024_1518, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, frames_1024_1518, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_DS_STAT_ID_FRAMES_1519_2047:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, frames_1519_2047, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, frames_1519_2047, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_DS_STAT_ID_FRAMES_2048_4095:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, frames_2048_4095, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, frames_2048_4095, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_DS_STAT_ID_FRAMES_4096_9216:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, frames_4096_9216, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, frames_4096_9216, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_DS_STAT_ID_FRAMES_9217_16383:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, frames_9217_16383, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, frames_9217_16383, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_DS_STAT_ID_BROADCAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, broadcast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, broadcast_frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_DS_STAT_ID_DATA_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, data_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, data_bytes, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_DS_STAT_ID_MULTICAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, multicast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, multicast_frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_DS_STAT_ID_UNICAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, unicast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, unicast_frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_DS_STAT_ID_OAM_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, oam_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, oam_bytes, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_DS_STAT_ID_OAM_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, oam_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, oam_frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_DS_STAT_ID_GATE_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, gate_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, gate_frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_DS_STAT_ID_MPCP_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, mpcp_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, mpcp_frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_DS_STAT_ID_ABORT_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, abort_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, abort_frames, key);\n");
+            break;
+        default:
+            apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+            return BCM_ERR_RANGE;
+    }
+
+    /* call API */
+    err = bcmolt_stat_cfg_get(device_id, &stat_cfg.hdr);
+    bcmcli_log("bcmolt_stat_cfg_get(device_id, &stat_cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &stat_cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, stat_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_path_10g_ds_stat_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_path_10g_ds_stat_cfg stat_cfg;  /**< declare main API struct */
+    bcmolt_epon_path_10g_ds_key key = { };      /**< declare key */
+    bcmolt_epon_path_10g_ds_stat_id stat_id;    /**< declare stat ID */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_path_10g_ds_stat_cfg stat_cfg;\n");
+    bcmcli_log("bcmolt_epon_path_10g_ds_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_stat_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_10G_DS, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_PATH_10G_DS_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+
+    /* set stat ID from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "sub");
+    if (cli_parm != NULL)
+    {
+        stat_id = (bcmolt_epon_path_10g_ds_stat_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    /* init the API struct */
+    switch (stat_id)
+    {
+        case BCMOLT_EPON_PATH_10G_DS_STAT_ID_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, bytes, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_DS_STAT_ID_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_DS_STAT_ID_FRAMES_64:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, frames_64, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, frames_64, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_DS_STAT_ID_FRAMES_65_127:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, frames_65_127, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, frames_65_127, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_DS_STAT_ID_FRAMES_128_255:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, frames_128_255, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, frames_128_255, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_DS_STAT_ID_FRAMES_256_511:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, frames_256_511, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, frames_256_511, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_DS_STAT_ID_FRAMES_512_1023:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, frames_512_1023, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, frames_512_1023, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_DS_STAT_ID_FRAMES_1024_1518:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, frames_1024_1518, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, frames_1024_1518, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_DS_STAT_ID_FRAMES_1519_2047:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, frames_1519_2047, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, frames_1519_2047, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_DS_STAT_ID_FRAMES_2048_4095:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, frames_2048_4095, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, frames_2048_4095, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_DS_STAT_ID_FRAMES_4096_9216:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, frames_4096_9216, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, frames_4096_9216, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_DS_STAT_ID_FRAMES_9217_16383:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, frames_9217_16383, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, frames_9217_16383, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_DS_STAT_ID_BROADCAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, broadcast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, broadcast_frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_DS_STAT_ID_DATA_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, data_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, data_bytes, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_DS_STAT_ID_MULTICAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, multicast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, multicast_frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_DS_STAT_ID_UNICAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, unicast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, unicast_frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_DS_STAT_ID_OAM_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, oam_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, oam_bytes, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_DS_STAT_ID_OAM_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, oam_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, oam_frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_DS_STAT_ID_GATE_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, gate_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, gate_frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_DS_STAT_ID_MPCP_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, mpcp_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, mpcp_frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_DS_STAT_ID_ABORT_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, abort_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_ds, abort_frames, key);\n");
+            break;
+        default:
+            apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+            return BCM_ERR_RANGE;
+    }
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_stat_alarm_config val = { };
+        cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.trigger.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.type");
+            if (cli_parm != NULL)
+            {
+                val.trigger.type = (bcmolt_stat_condition_type) cli_parm->value.enum_val;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.type is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            switch (val.trigger.type)
+            {
+                case BCMOLT_STAT_CONDITION_TYPE_RATE_THRESHOLD:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.rising");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_threshold.rising = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.rising is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.falling");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_threshold.falling = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.falling is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_RATE_RANGE:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.upper");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_range.upper = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.upper is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.lower");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_range.lower = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.lower is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_VALUE_THRESHOLD:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.limit");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.value_threshold.limit = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.limit is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_NONE:
+                    break;
+                default:
+                    apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+                    return BCM_ERR_RANGE;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.soak.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "cfg.soak.active_soak_time");
+            if (cli_parm != NULL)
+            {
+                val.soak.active_soak_time = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak.active_soak_time is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "cfg.soak.clear_soak_time");
+            if (cli_parm != NULL)
+            {
+                val.soak.clear_soak_time = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak.clear_soak_time is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_STAT_CFG_PROP_SET(&stat_cfg, epon_path_10g_ds, cfg, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_stat_alarm_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_10G_DS, BCMOLT_MGT_GROUP_STAT_CFG, 0, BCMOLT_EPON_PATH_10G_DS_STAT_CFG_ID_CFG, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_STAT_CFG_PROP_SET(&stat_cfg, epon_path_10g_ds, cfg, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    /* call API */
+    err = bcmolt_stat_cfg_set(device_id, &stat_cfg.hdr);
+    bcmcli_log("bcmolt_stat_cfg_set(device_id, &stat_cfg.hdr);\n");
+    apicli_print_complete(session, err, stat_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_path_10g_ds_auto_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_path_10g_ds_auto_cfg auto_cfg;  /**< declare main API struct */
+    bcmolt_epon_path_10g_ds_key key = { };      /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_path_10g_ds_auto_cfg auto_cfg;\n");
+    bcmcli_log("bcmolt_epon_path_10g_ds_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_auto_cfg_get");
+
+    /* init the API struct */
+    BCMOLT_AUTO_CFG_INIT(&auto_cfg, epon_path_10g_ds, key);
+    bcmcli_log("BCMOLT_AUTO_CFG_INIT(&auto_cfg, epon_path_10g_ds, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_cleared");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_path_10g_ds, stat_alarm_cleared);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_path_10g_ds, stat_alarm_cleared);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_raised");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_path_10g_ds, stat_alarm_raised);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_path_10g_ds, stat_alarm_raised);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, epon_path_10g_ds, stat_alarm_cleared) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, epon_path_10g_ds, stat_alarm_raised))
+    {
+        BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_path_10g_ds, all_properties);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_path_10g_ds, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_auto_cfg_get(device_id, &auto_cfg.hdr);
+    bcmcli_log("bcmolt_auto_cfg_get(device_id, &auto_cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &auto_cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, auto_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_path_10g_ds_auto_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_path_10g_ds_auto_cfg auto_cfg;  /**< declare main API struct */
+    bcmolt_epon_path_10g_ds_key key = { };      /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_path_10g_ds_auto_cfg auto_cfg;\n");
+    bcmcli_log("bcmolt_epon_path_10g_ds_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_auto_cfg_set");
+
+    /* init the API struct */
+    BCMOLT_AUTO_CFG_INIT(&auto_cfg, epon_path_10g_ds, key);
+    bcmcli_log("BCMOLT_AUTO_CFG_INIT(&auto_cfg, epon_path_10g_ds, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_cleared");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_path_10g_ds, stat_alarm_cleared, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_path_10g_ds, stat_alarm_cleared, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_10G_DS, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_EPON_PATH_10G_DS_AUTO_CFG_ID_STAT_ALARM_CLEARED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_raised");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_path_10g_ds, stat_alarm_raised, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_path_10g_ds, stat_alarm_raised, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_10G_DS, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_EPON_PATH_10G_DS_AUTO_CFG_ID_STAT_ALARM_RAISED, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_auto_cfg_set(device_id, &auto_cfg.hdr);
+    bcmcli_log("bcmolt_auto_cfg_set(device_id, &auto_cfg.hdr);\n");
+    apicli_print_complete(session, err, auto_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_path_10g_us_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_path_10g_us_cfg cfg;        /**< declare main API struct */
+    bcmolt_epon_path_10g_us_key key = { };  /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_path_10g_us_cfg cfg;\n");
+    bcmcli_log("bcmolt_epon_path_10g_us_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_10G_US, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_PATH_10G_US_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, epon_path_10g_us, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, epon_path_10g_us, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "fec_state");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_path_10g_us, fec_state);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_path_10g_us, fec_state);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "sync_time_tq");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_path_10g_us, sync_time_tq);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_path_10g_us, sync_time_tq);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "prbs_checker");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_path_10g_us, prbs_checker);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_path_10g_us, prbs_checker);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "prbs_status");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_path_10g_us, prbs_status);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_path_10g_us, prbs_status);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_CFG_PROP_IS_SET(&cfg, epon_path_10g_us, fec_state) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_path_10g_us, sync_time_tq) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_path_10g_us, prbs_checker) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_path_10g_us, prbs_status))
+    {
+        BCMOLT_CFG_PROP_GET(&cfg, epon_path_10g_us, all_properties);
+        bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_path_10g_us, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_get(device_id, &cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_path_10g_us_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_path_10g_us_cfg cfg;        /**< declare main API struct */
+    bcmolt_epon_path_10g_us_key key = { };  /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_path_10g_us_cfg cfg;\n");
+    bcmcli_log("bcmolt_epon_path_10g_us_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_10G_US, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_PATH_10G_US_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, epon_path_10g_us, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, epon_path_10g_us, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "fec_state");
+    if (cli_parm != NULL)
+    {
+        bcmolt_epon_fec_en_state val;
+        val = (bcmolt_epon_fec_en_state) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_path_10g_us, fec_state, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_path_10g_us, fec_state, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_10G_US, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_PATH_10G_US_CFG_ID_FEC_STATE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "sync_time_tq");
+    if (cli_parm != NULL)
+    {
+        bcmolt_time_quanta val;
+        val = (bcmolt_time_quanta) cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_path_10g_us, sync_time_tq, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_path_10g_us, sync_time_tq, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_10G_US, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_PATH_10G_US_CFG_ID_SYNC_TIME_TQ, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "prbs_checker.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_prbs_checker_config val = { };
+        cli_parm = bcmcli_find_named_parm(session, "prbs_checker.polynom");
+        if (cli_parm != NULL)
+        {
+            val.polynom = (bcmolt_prbs_polynomial) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "prbs_checker.polynom is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "prbs_checker.mode");
+        if (cli_parm != NULL)
+        {
+            val.mode = (bcmolt_prbs_checker_mode) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "prbs_checker.mode is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "prbs_checker.data_invert");
+        if (cli_parm != NULL)
+        {
+            val.data_invert = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "prbs_checker.data_invert is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "prbs_checker.control");
+        if (cli_parm != NULL)
+        {
+            val.control = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "prbs_checker.control is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, epon_path_10g_us, prbs_checker, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_prbs_checker_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_10G_US, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_PATH_10G_US_CFG_ID_PRBS_CHECKER, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_path_10g_us, prbs_checker, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_set(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_set(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_path_10g_us_cfg_clear(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_path_10g_us_cfg cfg;        /**< declare main API struct */
+    bcmolt_epon_path_10g_us_key key = { };  /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_path_10g_us_cfg cfg;\n");
+    bcmcli_log("bcmolt_epon_path_10g_us_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_clear");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_10G_US, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_PATH_10G_US_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, epon_path_10g_us, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, epon_path_10g_us, key);\n");
+
+    /* call API */
+    err = bcmolt_cfg_clear(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_clear(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_path_10g_us_cfg_get_multi(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_path_10g_us_cfg cfg;        /**< declare main API struct */
+    bcmolt_epon_path_10g_us_key key = { };  /**< declare key */
+    bcmolt_msg_set *msg_set = NULL;         /**< declare message set */
+    uint32_t max_msgs;                      /**< declare max number of msgs to get */
+    bcmos_bool invert_filter;               /**< declare filter invert flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_path_10g_us_cfg cfg;\n");
+    bcmcli_log("bcmolt_epon_path_10g_us_key key = {  };\n");
+    bcmcli_log("bcmolt_msg_set* msg_set = NULL;\n");
+    bcmcli_log("uint32_t max_msgs;\n");
+    bcmcli_log("bcmos_bool invert_filter;\n");
+    apicli_print_start(session, "bcmolt_cfg_get_multi");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_10G_US, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_PATH_10G_US_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+
+    /* set max number of msgs from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "max_msgs");
+    if (cli_parm != NULL)
+    {
+        max_msgs = cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "max_msgs is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("max_msgs = %d;\n", max_msgs);
+
+    /* set filter invert flag from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "filter_invert");
+    if (cli_parm != NULL)
+    {
+        invert_filter = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "filter_invert is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("invert_filter = %s;\n", (invert_filter) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* allocate message set */
+    err = apicli_msg_set_alloc(byte_pool, BCMOLT_OBJ_ID_EPON_PATH_10G_US, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);
+    if (err != BCM_ERR_OK)
+    {
+        return err;
+    }
+
+    bcmcli_log("bcmolt_msg_set_alloc(BCMOLT_OBJ_ID_EPON_PATH_10G_US, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, epon_path_10g_us, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, epon_path_10g_us, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "filter.fec_state");
+    if (cli_parm != NULL)
+    {
+        bcmolt_epon_fec_en_state val;
+        val = (bcmolt_epon_fec_en_state) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_path_10g_us, fec_state, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_path_10g_us, fec_state, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_10G_US, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_PATH_10G_US_CFG_ID_FEC_STATE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "fec_state");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_path_10g_us, fec_state);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_path_10g_us, fec_state);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.sync_time_tq");
+    if (cli_parm != NULL)
+    {
+        bcmolt_time_quanta val;
+        val = (bcmolt_time_quanta) cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_path_10g_us, sync_time_tq, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_path_10g_us, sync_time_tq, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_10G_US, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_PATH_10G_US_CFG_ID_SYNC_TIME_TQ, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "sync_time_tq");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_path_10g_us, sync_time_tq);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_path_10g_us, sync_time_tq);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.prbs_checker.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_prbs_checker_config val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.prbs_checker.polynom");
+        if (cli_parm != NULL)
+        {
+            val.polynom = (bcmolt_prbs_polynomial) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.prbs_checker.polynom is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.prbs_checker.mode");
+        if (cli_parm != NULL)
+        {
+            val.mode = (bcmolt_prbs_checker_mode) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.prbs_checker.mode is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.prbs_checker.data_invert");
+        if (cli_parm != NULL)
+        {
+            val.data_invert = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.prbs_checker.data_invert is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.prbs_checker.control");
+        if (cli_parm != NULL)
+        {
+            val.control = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.prbs_checker.control is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, epon_path_10g_us, prbs_checker, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_prbs_checker_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_10G_US, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_PATH_10G_US_CFG_ID_PRBS_CHECKER, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_path_10g_us, prbs_checker, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "prbs_checker");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_path_10g_us, prbs_checker);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_path_10g_us, prbs_checker);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.prbs_status.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_prbs_status val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.prbs_status.lock_state");
+        if (cli_parm != NULL)
+        {
+            val.lock_state = (bcmolt_prbs_lock_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.prbs_status.lock_state is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.prbs_status.error_counts");
+        if (cli_parm != NULL)
+        {
+            val.error_counts = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.prbs_status.error_counts is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, epon_path_10g_us, prbs_status, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_prbs_status val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_10G_US, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_PATH_10G_US_CFG_ID_PRBS_STATUS, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_path_10g_us, prbs_status, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "prbs_status");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_path_10g_us, prbs_status);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_path_10g_us, prbs_status);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_path_10g_us, fec_state) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_path_10g_us, sync_time_tq) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_path_10g_us, prbs_checker) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_path_10g_us, prbs_status))
+    {
+        BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_path_10g_us, all_properties);
+        bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_path_10g_us, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);
+    bcmcli_log("bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_path_10g_us_stat_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_path_10g_us_stat stat;      /**< declare main API struct */
+    bcmolt_epon_path_10g_us_key key = { };  /**< declare key */
+    bcmos_bool clear_on_read;               /**< declare 'clear on read' flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_path_10g_us_stat stat;\n");
+    bcmcli_log("bcmolt_epon_path_10g_us_key key = {  };\n");
+    bcmcli_log("bcmos_bool clear_on_read;\n");
+    apicli_print_start(session, "bcmolt_stat_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_10G_US, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_PATH_10G_US_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+
+    /* set stat flags from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "clear");
+    if (cli_parm != NULL)
+    {
+        clear_on_read = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "clear is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("clear_on_read = %s;\n", (clear_on_read) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* init the API struct */
+    BCMOLT_STAT_INIT(&stat, epon_path_10g_us, key);
+    bcmcli_log("BCMOLT_STAT_INIT(&stat, epon_path_10g_us, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "bytes");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_us, bytes);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_us, bytes);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_us, frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_us, frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_64");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_us, frames_64);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_us, frames_64);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_65_127");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_us, frames_65_127);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_us, frames_65_127);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_128_255");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_us, frames_128_255);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_us, frames_128_255);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_256_511");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_us, frames_256_511);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_us, frames_256_511);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_512_1023");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_us, frames_512_1023);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_us, frames_512_1023);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_1024_1518");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_us, frames_1024_1518);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_us, frames_1024_1518);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_1519_2047");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_us, frames_1519_2047);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_us, frames_1519_2047);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_2048_4095");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_us, frames_2048_4095);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_us, frames_2048_4095);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_4096_9216");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_us, frames_4096_9216);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_us, frames_4096_9216);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_9217_16383");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_us, frames_9217_16383);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_us, frames_9217_16383);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "broadcast_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_us, broadcast_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_us, broadcast_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "data_bytes");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_us, data_bytes);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_us, data_bytes);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "multicast_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_us, multicast_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_us, multicast_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "unicast_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_us, unicast_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_us, unicast_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mpcp_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_us, mpcp_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_us, mpcp_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "oam_bytes");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_us, oam_bytes);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_us, oam_bytes);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "oam_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_us, oam_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_us, oam_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "report_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_us, report_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_us, report_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "abort_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_us, abort_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_us, abort_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "fcs_error");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_us, fcs_error);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_us, fcs_error);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "crc_8_error");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_us, crc_8_error);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_us, crc_8_error);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "out_of_slot");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_us, out_of_slot);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_us, out_of_slot);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "oversize_error");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_us, oversize_error);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_us, oversize_error);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "runt_error");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_us, runt_error);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_us, runt_error);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_10g_us, bytes) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_10g_us, frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_10g_us, frames_64) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_10g_us, frames_65_127) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_10g_us, frames_128_255) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_10g_us, frames_256_511) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_10g_us, frames_512_1023) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_10g_us, frames_1024_1518) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_10g_us, frames_1519_2047) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_10g_us, frames_2048_4095) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_10g_us, frames_4096_9216) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_10g_us, frames_9217_16383) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_10g_us, broadcast_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_10g_us, data_bytes) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_10g_us, multicast_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_10g_us, unicast_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_10g_us, mpcp_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_10g_us, oam_bytes) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_10g_us, oam_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_10g_us, report_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_10g_us, abort_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_10g_us, fcs_error) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_10g_us, crc_8_error) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_10g_us, out_of_slot) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_10g_us, oversize_error) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_10g_us, runt_error))
+    {
+        BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_us, all_properties);
+        bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_10g_us, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_stat_get(device_id, &stat.hdr, clear_on_read);
+    bcmcli_log("bcmolt_stat_get(device_id, &stat.hdr, clear_on_read);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &stat.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, stat.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_path_10g_us_stat_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_path_10g_us_stat_cfg stat_cfg;  /**< declare main API struct */
+    bcmolt_epon_path_10g_us_key key = { };      /**< declare key */
+    bcmolt_epon_path_10g_us_stat_id stat_id;    /**< declare stat ID */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_path_10g_us_stat_cfg stat_cfg;\n");
+    bcmcli_log("bcmolt_epon_path_10g_us_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_stat_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_10G_US, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_PATH_10G_US_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+
+    /* set stat ID from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "sub");
+    if (cli_parm != NULL)
+    {
+        stat_id = (bcmolt_epon_path_10g_us_stat_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    /* init the API struct */
+    switch (stat_id)
+    {
+        case BCMOLT_EPON_PATH_10G_US_STAT_ID_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, bytes, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_US_STAT_ID_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_US_STAT_ID_FRAMES_64:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, frames_64, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, frames_64, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_US_STAT_ID_FRAMES_65_127:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, frames_65_127, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, frames_65_127, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_US_STAT_ID_FRAMES_128_255:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, frames_128_255, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, frames_128_255, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_US_STAT_ID_FRAMES_256_511:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, frames_256_511, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, frames_256_511, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_US_STAT_ID_FRAMES_512_1023:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, frames_512_1023, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, frames_512_1023, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_US_STAT_ID_FRAMES_1024_1518:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, frames_1024_1518, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, frames_1024_1518, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_US_STAT_ID_FRAMES_1519_2047:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, frames_1519_2047, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, frames_1519_2047, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_US_STAT_ID_FRAMES_2048_4095:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, frames_2048_4095, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, frames_2048_4095, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_US_STAT_ID_FRAMES_4096_9216:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, frames_4096_9216, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, frames_4096_9216, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_US_STAT_ID_FRAMES_9217_16383:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, frames_9217_16383, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, frames_9217_16383, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_US_STAT_ID_BROADCAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, broadcast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, broadcast_frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_US_STAT_ID_DATA_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, data_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, data_bytes, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_US_STAT_ID_MULTICAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, multicast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, multicast_frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_US_STAT_ID_UNICAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, unicast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, unicast_frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_US_STAT_ID_MPCP_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, mpcp_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, mpcp_frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_US_STAT_ID_OAM_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, oam_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, oam_bytes, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_US_STAT_ID_OAM_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, oam_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, oam_frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_US_STAT_ID_REPORT_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, report_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, report_frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_US_STAT_ID_ABORT_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, abort_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, abort_frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_US_STAT_ID_FCS_ERROR:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, fcs_error, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, fcs_error, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_US_STAT_ID_CRC_8_ERROR:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, crc_8_error, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, crc_8_error, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_US_STAT_ID_OUT_OF_SLOT:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, out_of_slot, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, out_of_slot, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_US_STAT_ID_OVERSIZE_ERROR:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, oversize_error, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, oversize_error, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_US_STAT_ID_RUNT_ERROR:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, runt_error, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, runt_error, key);\n");
+            break;
+        default:
+            apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+            return BCM_ERR_RANGE;
+    }
+
+    /* call API */
+    err = bcmolt_stat_cfg_get(device_id, &stat_cfg.hdr);
+    bcmcli_log("bcmolt_stat_cfg_get(device_id, &stat_cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &stat_cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, stat_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_path_10g_us_stat_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_path_10g_us_stat_cfg stat_cfg;  /**< declare main API struct */
+    bcmolt_epon_path_10g_us_key key = { };      /**< declare key */
+    bcmolt_epon_path_10g_us_stat_id stat_id;    /**< declare stat ID */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_path_10g_us_stat_cfg stat_cfg;\n");
+    bcmcli_log("bcmolt_epon_path_10g_us_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_stat_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_10G_US, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_PATH_10G_US_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+
+    /* set stat ID from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "sub");
+    if (cli_parm != NULL)
+    {
+        stat_id = (bcmolt_epon_path_10g_us_stat_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    /* init the API struct */
+    switch (stat_id)
+    {
+        case BCMOLT_EPON_PATH_10G_US_STAT_ID_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, bytes, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_US_STAT_ID_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_US_STAT_ID_FRAMES_64:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, frames_64, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, frames_64, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_US_STAT_ID_FRAMES_65_127:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, frames_65_127, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, frames_65_127, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_US_STAT_ID_FRAMES_128_255:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, frames_128_255, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, frames_128_255, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_US_STAT_ID_FRAMES_256_511:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, frames_256_511, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, frames_256_511, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_US_STAT_ID_FRAMES_512_1023:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, frames_512_1023, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, frames_512_1023, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_US_STAT_ID_FRAMES_1024_1518:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, frames_1024_1518, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, frames_1024_1518, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_US_STAT_ID_FRAMES_1519_2047:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, frames_1519_2047, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, frames_1519_2047, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_US_STAT_ID_FRAMES_2048_4095:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, frames_2048_4095, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, frames_2048_4095, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_US_STAT_ID_FRAMES_4096_9216:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, frames_4096_9216, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, frames_4096_9216, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_US_STAT_ID_FRAMES_9217_16383:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, frames_9217_16383, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, frames_9217_16383, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_US_STAT_ID_BROADCAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, broadcast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, broadcast_frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_US_STAT_ID_DATA_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, data_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, data_bytes, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_US_STAT_ID_MULTICAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, multicast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, multicast_frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_US_STAT_ID_UNICAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, unicast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, unicast_frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_US_STAT_ID_MPCP_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, mpcp_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, mpcp_frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_US_STAT_ID_OAM_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, oam_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, oam_bytes, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_US_STAT_ID_OAM_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, oam_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, oam_frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_US_STAT_ID_REPORT_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, report_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, report_frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_US_STAT_ID_ABORT_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, abort_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, abort_frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_US_STAT_ID_FCS_ERROR:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, fcs_error, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, fcs_error, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_US_STAT_ID_CRC_8_ERROR:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, crc_8_error, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, crc_8_error, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_US_STAT_ID_OUT_OF_SLOT:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, out_of_slot, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, out_of_slot, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_US_STAT_ID_OVERSIZE_ERROR:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, oversize_error, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, oversize_error, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_10G_US_STAT_ID_RUNT_ERROR:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, runt_error, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_10g_us, runt_error, key);\n");
+            break;
+        default:
+            apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+            return BCM_ERR_RANGE;
+    }
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_stat_alarm_config val = { };
+        cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.trigger.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.type");
+            if (cli_parm != NULL)
+            {
+                val.trigger.type = (bcmolt_stat_condition_type) cli_parm->value.enum_val;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.type is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            switch (val.trigger.type)
+            {
+                case BCMOLT_STAT_CONDITION_TYPE_RATE_THRESHOLD:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.rising");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_threshold.rising = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.rising is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.falling");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_threshold.falling = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.falling is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_RATE_RANGE:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.upper");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_range.upper = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.upper is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.lower");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_range.lower = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.lower is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_VALUE_THRESHOLD:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.limit");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.value_threshold.limit = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.limit is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_NONE:
+                    break;
+                default:
+                    apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+                    return BCM_ERR_RANGE;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.soak.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "cfg.soak.active_soak_time");
+            if (cli_parm != NULL)
+            {
+                val.soak.active_soak_time = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak.active_soak_time is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "cfg.soak.clear_soak_time");
+            if (cli_parm != NULL)
+            {
+                val.soak.clear_soak_time = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak.clear_soak_time is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_STAT_CFG_PROP_SET(&stat_cfg, epon_path_10g_us, cfg, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_stat_alarm_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_10G_US, BCMOLT_MGT_GROUP_STAT_CFG, 0, BCMOLT_EPON_PATH_10G_US_STAT_CFG_ID_CFG, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_STAT_CFG_PROP_SET(&stat_cfg, epon_path_10g_us, cfg, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    /* call API */
+    err = bcmolt_stat_cfg_set(device_id, &stat_cfg.hdr);
+    bcmcli_log("bcmolt_stat_cfg_set(device_id, &stat_cfg.hdr);\n");
+    apicli_print_complete(session, err, stat_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_path_10g_us_auto_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_path_10g_us_auto_cfg auto_cfg;  /**< declare main API struct */
+    bcmolt_epon_path_10g_us_key key = { };      /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_path_10g_us_auto_cfg auto_cfg;\n");
+    bcmcli_log("bcmolt_epon_path_10g_us_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_auto_cfg_get");
+
+    /* init the API struct */
+    BCMOLT_AUTO_CFG_INIT(&auto_cfg, epon_path_10g_us, key);
+    bcmcli_log("BCMOLT_AUTO_CFG_INIT(&auto_cfg, epon_path_10g_us, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_cleared");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_path_10g_us, stat_alarm_cleared);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_path_10g_us, stat_alarm_cleared);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_raised");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_path_10g_us, stat_alarm_raised);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_path_10g_us, stat_alarm_raised);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, epon_path_10g_us, stat_alarm_cleared) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, epon_path_10g_us, stat_alarm_raised))
+    {
+        BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_path_10g_us, all_properties);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_path_10g_us, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_auto_cfg_get(device_id, &auto_cfg.hdr);
+    bcmcli_log("bcmolt_auto_cfg_get(device_id, &auto_cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &auto_cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, auto_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_path_10g_us_auto_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_path_10g_us_auto_cfg auto_cfg;  /**< declare main API struct */
+    bcmolt_epon_path_10g_us_key key = { };      /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_path_10g_us_auto_cfg auto_cfg;\n");
+    bcmcli_log("bcmolt_epon_path_10g_us_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_auto_cfg_set");
+
+    /* init the API struct */
+    BCMOLT_AUTO_CFG_INIT(&auto_cfg, epon_path_10g_us, key);
+    bcmcli_log("BCMOLT_AUTO_CFG_INIT(&auto_cfg, epon_path_10g_us, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_cleared");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_path_10g_us, stat_alarm_cleared, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_path_10g_us, stat_alarm_cleared, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_10G_US, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_EPON_PATH_10G_US_AUTO_CFG_ID_STAT_ALARM_CLEARED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_raised");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_path_10g_us, stat_alarm_raised, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_path_10g_us, stat_alarm_raised, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_10G_US, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_EPON_PATH_10G_US_AUTO_CFG_ID_STAT_ALARM_RAISED, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_auto_cfg_set(device_id, &auto_cfg.hdr);
+    bcmcli_log("bcmolt_auto_cfg_set(device_id, &auto_cfg.hdr);\n");
+    apicli_print_complete(session, err, auto_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_path_1g_ds_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_path_1g_ds_cfg cfg;         /**< declare main API struct */
+    bcmolt_epon_path_1g_ds_key key = { };   /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_path_1g_ds_cfg cfg;\n");
+    bcmcli_log("bcmolt_epon_path_1g_ds_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_1G_DS, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_PATH_1G_DS_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, epon_path_1g_ds, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, epon_path_1g_ds, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "default_fec_state");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_path_1g_ds, default_fec_state);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_path_1g_ds, default_fec_state);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "raman_mode");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_path_1g_ds, raman_mode);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_path_1g_ds, raman_mode);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "turbo_2g_mode");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_path_1g_ds, turbo_2g_mode);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_path_1g_ds, turbo_2g_mode);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "prbs_generator");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_path_1g_ds, prbs_generator);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_path_1g_ds, prbs_generator);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_CFG_PROP_IS_SET(&cfg, epon_path_1g_ds, default_fec_state) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_path_1g_ds, raman_mode) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_path_1g_ds, turbo_2g_mode) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_path_1g_ds, prbs_generator))
+    {
+        BCMOLT_CFG_PROP_GET(&cfg, epon_path_1g_ds, all_properties);
+        bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_path_1g_ds, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_get(device_id, &cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_path_1g_ds_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_path_1g_ds_cfg cfg;         /**< declare main API struct */
+    bcmolt_epon_path_1g_ds_key key = { };   /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_path_1g_ds_cfg cfg;\n");
+    bcmcli_log("bcmolt_epon_path_1g_ds_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_1G_DS, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_PATH_1G_DS_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, epon_path_1g_ds, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, epon_path_1g_ds, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "default_fec_state");
+    if (cli_parm != NULL)
+    {
+        bcmolt_epon_fec_en_state val;
+        val = (bcmolt_epon_fec_en_state) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_path_1g_ds, default_fec_state, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_path_1g_ds, default_fec_state, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_1G_DS, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_PATH_1G_DS_CFG_ID_DEFAULT_FEC_STATE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "raman_mode");
+    if (cli_parm != NULL)
+    {
+        bcmolt_raman_mitigation_mode val;
+        val = (bcmolt_raman_mitigation_mode) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_path_1g_ds, raman_mode, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_path_1g_ds, raman_mode, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_1G_DS, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_PATH_1G_DS_CFG_ID_RAMAN_MODE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "turbo_2g_mode");
+    if (cli_parm != NULL)
+    {
+        bcmolt_epon_1g_turbo_mode val;
+        val = (bcmolt_epon_1g_turbo_mode) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_path_1g_ds, turbo_2g_mode, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_path_1g_ds, turbo_2g_mode, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_1G_DS, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_PATH_1G_DS_CFG_ID_TURBO_2G_MODE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "prbs_generator.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_prbs_generator_config val = { };
+        cli_parm = bcmcli_find_named_parm(session, "prbs_generator.polynom");
+        if (cli_parm != NULL)
+        {
+            val.polynom = (bcmolt_prbs_polynomial) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "prbs_generator.polynom is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "prbs_generator.error_insert");
+        if (cli_parm != NULL)
+        {
+            val.error_insert = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "prbs_generator.error_insert is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "prbs_generator.invert");
+        if (cli_parm != NULL)
+        {
+            val.invert = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "prbs_generator.invert is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "prbs_generator.control");
+        if (cli_parm != NULL)
+        {
+            val.control = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "prbs_generator.control is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, epon_path_1g_ds, prbs_generator, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_prbs_generator_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_1G_DS, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_PATH_1G_DS_CFG_ID_PRBS_GENERATOR, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_path_1g_ds, prbs_generator, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_set(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_set(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_path_1g_ds_cfg_clear(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_path_1g_ds_cfg cfg;         /**< declare main API struct */
+    bcmolt_epon_path_1g_ds_key key = { };   /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_path_1g_ds_cfg cfg;\n");
+    bcmcli_log("bcmolt_epon_path_1g_ds_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_clear");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_1G_DS, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_PATH_1G_DS_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, epon_path_1g_ds, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, epon_path_1g_ds, key);\n");
+
+    /* call API */
+    err = bcmolt_cfg_clear(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_clear(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_path_1g_ds_cfg_get_multi(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_path_1g_ds_cfg cfg;         /**< declare main API struct */
+    bcmolt_epon_path_1g_ds_key key = { };   /**< declare key */
+    bcmolt_msg_set *msg_set = NULL;         /**< declare message set */
+    uint32_t max_msgs;                      /**< declare max number of msgs to get */
+    bcmos_bool invert_filter;               /**< declare filter invert flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_path_1g_ds_cfg cfg;\n");
+    bcmcli_log("bcmolt_epon_path_1g_ds_key key = {  };\n");
+    bcmcli_log("bcmolt_msg_set* msg_set = NULL;\n");
+    bcmcli_log("uint32_t max_msgs;\n");
+    bcmcli_log("bcmos_bool invert_filter;\n");
+    apicli_print_start(session, "bcmolt_cfg_get_multi");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_1G_DS, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_PATH_1G_DS_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+
+    /* set max number of msgs from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "max_msgs");
+    if (cli_parm != NULL)
+    {
+        max_msgs = cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "max_msgs is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("max_msgs = %d;\n", max_msgs);
+
+    /* set filter invert flag from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "filter_invert");
+    if (cli_parm != NULL)
+    {
+        invert_filter = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "filter_invert is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("invert_filter = %s;\n", (invert_filter) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* allocate message set */
+    err = apicli_msg_set_alloc(byte_pool, BCMOLT_OBJ_ID_EPON_PATH_1G_DS, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);
+    if (err != BCM_ERR_OK)
+    {
+        return err;
+    }
+
+    bcmcli_log("bcmolt_msg_set_alloc(BCMOLT_OBJ_ID_EPON_PATH_1G_DS, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, epon_path_1g_ds, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, epon_path_1g_ds, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "filter.default_fec_state");
+    if (cli_parm != NULL)
+    {
+        bcmolt_epon_fec_en_state val;
+        val = (bcmolt_epon_fec_en_state) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_path_1g_ds, default_fec_state, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_path_1g_ds, default_fec_state, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_1G_DS, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_PATH_1G_DS_CFG_ID_DEFAULT_FEC_STATE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "default_fec_state");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_path_1g_ds, default_fec_state);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_path_1g_ds, default_fec_state);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.raman_mode");
+    if (cli_parm != NULL)
+    {
+        bcmolt_raman_mitigation_mode val;
+        val = (bcmolt_raman_mitigation_mode) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_path_1g_ds, raman_mode, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_path_1g_ds, raman_mode, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_1G_DS, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_PATH_1G_DS_CFG_ID_RAMAN_MODE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "raman_mode");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_path_1g_ds, raman_mode);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_path_1g_ds, raman_mode);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.turbo_2g_mode");
+    if (cli_parm != NULL)
+    {
+        bcmolt_epon_1g_turbo_mode val;
+        val = (bcmolt_epon_1g_turbo_mode) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_path_1g_ds, turbo_2g_mode, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_path_1g_ds, turbo_2g_mode, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_1G_DS, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_PATH_1G_DS_CFG_ID_TURBO_2G_MODE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "turbo_2g_mode");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_path_1g_ds, turbo_2g_mode);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_path_1g_ds, turbo_2g_mode);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.prbs_generator.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_prbs_generator_config val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.prbs_generator.polynom");
+        if (cli_parm != NULL)
+        {
+            val.polynom = (bcmolt_prbs_polynomial) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.prbs_generator.polynom is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.prbs_generator.error_insert");
+        if (cli_parm != NULL)
+        {
+            val.error_insert = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.prbs_generator.error_insert is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.prbs_generator.invert");
+        if (cli_parm != NULL)
+        {
+            val.invert = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.prbs_generator.invert is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.prbs_generator.control");
+        if (cli_parm != NULL)
+        {
+            val.control = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.prbs_generator.control is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, epon_path_1g_ds, prbs_generator, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_prbs_generator_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_1G_DS, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_PATH_1G_DS_CFG_ID_PRBS_GENERATOR, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_path_1g_ds, prbs_generator, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "prbs_generator");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_path_1g_ds, prbs_generator);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_path_1g_ds, prbs_generator);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_path_1g_ds, default_fec_state) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_path_1g_ds, raman_mode) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_path_1g_ds, turbo_2g_mode) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_path_1g_ds, prbs_generator))
+    {
+        BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_path_1g_ds, all_properties);
+        bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_path_1g_ds, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);
+    bcmcli_log("bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_path_1g_ds_stat_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_path_1g_ds_stat stat;       /**< declare main API struct */
+    bcmolt_epon_path_1g_ds_key key = { };   /**< declare key */
+    bcmos_bool clear_on_read;               /**< declare 'clear on read' flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_path_1g_ds_stat stat;\n");
+    bcmcli_log("bcmolt_epon_path_1g_ds_key key = {  };\n");
+    bcmcli_log("bcmos_bool clear_on_read;\n");
+    apicli_print_start(session, "bcmolt_stat_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_1G_DS, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_PATH_1G_DS_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+
+    /* set stat flags from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "clear");
+    if (cli_parm != NULL)
+    {
+        clear_on_read = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "clear is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("clear_on_read = %s;\n", (clear_on_read) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* init the API struct */
+    BCMOLT_STAT_INIT(&stat, epon_path_1g_ds, key);
+    bcmcli_log("BCMOLT_STAT_INIT(&stat, epon_path_1g_ds, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "bytes");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_ds, bytes);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_ds, bytes);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_ds, frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_ds, frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_64");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_ds, frames_64);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_ds, frames_64);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_65_127");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_ds, frames_65_127);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_ds, frames_65_127);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_128_255");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_ds, frames_128_255);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_ds, frames_128_255);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_256_511");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_ds, frames_256_511);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_ds, frames_256_511);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_512_1023");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_ds, frames_512_1023);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_ds, frames_512_1023);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_1024_1518");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_ds, frames_1024_1518);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_ds, frames_1024_1518);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_1519_2047");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_ds, frames_1519_2047);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_ds, frames_1519_2047);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_2048_4095");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_ds, frames_2048_4095);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_ds, frames_2048_4095);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_4096_9216");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_ds, frames_4096_9216);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_ds, frames_4096_9216);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_9217_16383");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_ds, frames_9217_16383);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_ds, frames_9217_16383);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "broadcast_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_ds, broadcast_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_ds, broadcast_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "data_bytes");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_ds, data_bytes);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_ds, data_bytes);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "multicast_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_ds, multicast_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_ds, multicast_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "unicast_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_ds, unicast_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_ds, unicast_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "oam_bytes");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_ds, oam_bytes);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_ds, oam_bytes);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "oam_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_ds, oam_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_ds, oam_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "gate_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_ds, gate_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_ds, gate_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mpcp_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_ds, mpcp_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_ds, mpcp_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "abort_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_ds, abort_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_ds, abort_frames);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_1g_ds, bytes) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_1g_ds, frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_1g_ds, frames_64) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_1g_ds, frames_65_127) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_1g_ds, frames_128_255) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_1g_ds, frames_256_511) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_1g_ds, frames_512_1023) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_1g_ds, frames_1024_1518) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_1g_ds, frames_1519_2047) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_1g_ds, frames_2048_4095) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_1g_ds, frames_4096_9216) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_1g_ds, frames_9217_16383) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_1g_ds, broadcast_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_1g_ds, data_bytes) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_1g_ds, multicast_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_1g_ds, unicast_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_1g_ds, oam_bytes) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_1g_ds, oam_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_1g_ds, gate_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_1g_ds, mpcp_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_1g_ds, abort_frames))
+    {
+        BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_ds, all_properties);
+        bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_ds, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_stat_get(device_id, &stat.hdr, clear_on_read);
+    bcmcli_log("bcmolt_stat_get(device_id, &stat.hdr, clear_on_read);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &stat.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, stat.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_path_1g_ds_stat_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_path_1g_ds_stat_cfg stat_cfg;   /**< declare main API struct */
+    bcmolt_epon_path_1g_ds_key key = { };       /**< declare key */
+    bcmolt_epon_path_1g_ds_stat_id stat_id;     /**< declare stat ID */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_path_1g_ds_stat_cfg stat_cfg;\n");
+    bcmcli_log("bcmolt_epon_path_1g_ds_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_stat_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_1G_DS, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_PATH_1G_DS_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+
+    /* set stat ID from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "sub");
+    if (cli_parm != NULL)
+    {
+        stat_id = (bcmolt_epon_path_1g_ds_stat_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    /* init the API struct */
+    switch (stat_id)
+    {
+        case BCMOLT_EPON_PATH_1G_DS_STAT_ID_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, bytes, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_DS_STAT_ID_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_DS_STAT_ID_FRAMES_64:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, frames_64, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, frames_64, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_DS_STAT_ID_FRAMES_65_127:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, frames_65_127, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, frames_65_127, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_DS_STAT_ID_FRAMES_128_255:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, frames_128_255, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, frames_128_255, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_DS_STAT_ID_FRAMES_256_511:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, frames_256_511, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, frames_256_511, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_DS_STAT_ID_FRAMES_512_1023:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, frames_512_1023, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, frames_512_1023, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_DS_STAT_ID_FRAMES_1024_1518:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, frames_1024_1518, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, frames_1024_1518, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_DS_STAT_ID_FRAMES_1519_2047:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, frames_1519_2047, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, frames_1519_2047, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_DS_STAT_ID_FRAMES_2048_4095:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, frames_2048_4095, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, frames_2048_4095, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_DS_STAT_ID_FRAMES_4096_9216:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, frames_4096_9216, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, frames_4096_9216, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_DS_STAT_ID_FRAMES_9217_16383:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, frames_9217_16383, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, frames_9217_16383, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_DS_STAT_ID_BROADCAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, broadcast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, broadcast_frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_DS_STAT_ID_DATA_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, data_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, data_bytes, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_DS_STAT_ID_MULTICAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, multicast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, multicast_frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_DS_STAT_ID_UNICAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, unicast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, unicast_frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_DS_STAT_ID_OAM_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, oam_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, oam_bytes, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_DS_STAT_ID_OAM_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, oam_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, oam_frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_DS_STAT_ID_GATE_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, gate_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, gate_frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_DS_STAT_ID_MPCP_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, mpcp_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, mpcp_frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_DS_STAT_ID_ABORT_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, abort_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, abort_frames, key);\n");
+            break;
+        default:
+            apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+            return BCM_ERR_RANGE;
+    }
+
+    /* call API */
+    err = bcmolt_stat_cfg_get(device_id, &stat_cfg.hdr);
+    bcmcli_log("bcmolt_stat_cfg_get(device_id, &stat_cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &stat_cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, stat_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_path_1g_ds_stat_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_path_1g_ds_stat_cfg stat_cfg;   /**< declare main API struct */
+    bcmolt_epon_path_1g_ds_key key = { };       /**< declare key */
+    bcmolt_epon_path_1g_ds_stat_id stat_id;     /**< declare stat ID */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_path_1g_ds_stat_cfg stat_cfg;\n");
+    bcmcli_log("bcmolt_epon_path_1g_ds_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_stat_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_1G_DS, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_PATH_1G_DS_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+
+    /* set stat ID from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "sub");
+    if (cli_parm != NULL)
+    {
+        stat_id = (bcmolt_epon_path_1g_ds_stat_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    /* init the API struct */
+    switch (stat_id)
+    {
+        case BCMOLT_EPON_PATH_1G_DS_STAT_ID_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, bytes, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_DS_STAT_ID_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_DS_STAT_ID_FRAMES_64:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, frames_64, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, frames_64, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_DS_STAT_ID_FRAMES_65_127:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, frames_65_127, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, frames_65_127, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_DS_STAT_ID_FRAMES_128_255:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, frames_128_255, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, frames_128_255, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_DS_STAT_ID_FRAMES_256_511:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, frames_256_511, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, frames_256_511, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_DS_STAT_ID_FRAMES_512_1023:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, frames_512_1023, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, frames_512_1023, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_DS_STAT_ID_FRAMES_1024_1518:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, frames_1024_1518, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, frames_1024_1518, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_DS_STAT_ID_FRAMES_1519_2047:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, frames_1519_2047, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, frames_1519_2047, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_DS_STAT_ID_FRAMES_2048_4095:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, frames_2048_4095, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, frames_2048_4095, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_DS_STAT_ID_FRAMES_4096_9216:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, frames_4096_9216, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, frames_4096_9216, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_DS_STAT_ID_FRAMES_9217_16383:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, frames_9217_16383, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, frames_9217_16383, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_DS_STAT_ID_BROADCAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, broadcast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, broadcast_frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_DS_STAT_ID_DATA_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, data_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, data_bytes, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_DS_STAT_ID_MULTICAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, multicast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, multicast_frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_DS_STAT_ID_UNICAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, unicast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, unicast_frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_DS_STAT_ID_OAM_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, oam_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, oam_bytes, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_DS_STAT_ID_OAM_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, oam_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, oam_frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_DS_STAT_ID_GATE_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, gate_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, gate_frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_DS_STAT_ID_MPCP_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, mpcp_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, mpcp_frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_DS_STAT_ID_ABORT_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, abort_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_ds, abort_frames, key);\n");
+            break;
+        default:
+            apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+            return BCM_ERR_RANGE;
+    }
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_stat_alarm_config val = { };
+        cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.trigger.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.type");
+            if (cli_parm != NULL)
+            {
+                val.trigger.type = (bcmolt_stat_condition_type) cli_parm->value.enum_val;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.type is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            switch (val.trigger.type)
+            {
+                case BCMOLT_STAT_CONDITION_TYPE_RATE_THRESHOLD:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.rising");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_threshold.rising = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.rising is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.falling");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_threshold.falling = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.falling is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_RATE_RANGE:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.upper");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_range.upper = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.upper is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.lower");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_range.lower = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.lower is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_VALUE_THRESHOLD:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.limit");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.value_threshold.limit = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.limit is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_NONE:
+                    break;
+                default:
+                    apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+                    return BCM_ERR_RANGE;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.soak.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "cfg.soak.active_soak_time");
+            if (cli_parm != NULL)
+            {
+                val.soak.active_soak_time = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak.active_soak_time is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "cfg.soak.clear_soak_time");
+            if (cli_parm != NULL)
+            {
+                val.soak.clear_soak_time = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak.clear_soak_time is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_STAT_CFG_PROP_SET(&stat_cfg, epon_path_1g_ds, cfg, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_stat_alarm_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_1G_DS, BCMOLT_MGT_GROUP_STAT_CFG, 0, BCMOLT_EPON_PATH_1G_DS_STAT_CFG_ID_CFG, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_STAT_CFG_PROP_SET(&stat_cfg, epon_path_1g_ds, cfg, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    /* call API */
+    err = bcmolt_stat_cfg_set(device_id, &stat_cfg.hdr);
+    bcmcli_log("bcmolt_stat_cfg_set(device_id, &stat_cfg.hdr);\n");
+    apicli_print_complete(session, err, stat_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_path_1g_ds_auto_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_path_1g_ds_auto_cfg auto_cfg;   /**< declare main API struct */
+    bcmolt_epon_path_1g_ds_key key = { };       /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_path_1g_ds_auto_cfg auto_cfg;\n");
+    bcmcli_log("bcmolt_epon_path_1g_ds_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_auto_cfg_get");
+
+    /* init the API struct */
+    BCMOLT_AUTO_CFG_INIT(&auto_cfg, epon_path_1g_ds, key);
+    bcmcli_log("BCMOLT_AUTO_CFG_INIT(&auto_cfg, epon_path_1g_ds, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_cleared");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_path_1g_ds, stat_alarm_cleared);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_path_1g_ds, stat_alarm_cleared);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_raised");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_path_1g_ds, stat_alarm_raised);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_path_1g_ds, stat_alarm_raised);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, epon_path_1g_ds, stat_alarm_cleared) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, epon_path_1g_ds, stat_alarm_raised))
+    {
+        BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_path_1g_ds, all_properties);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_path_1g_ds, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_auto_cfg_get(device_id, &auto_cfg.hdr);
+    bcmcli_log("bcmolt_auto_cfg_get(device_id, &auto_cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &auto_cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, auto_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_path_1g_ds_auto_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_path_1g_ds_auto_cfg auto_cfg;   /**< declare main API struct */
+    bcmolt_epon_path_1g_ds_key key = { };       /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_path_1g_ds_auto_cfg auto_cfg;\n");
+    bcmcli_log("bcmolt_epon_path_1g_ds_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_auto_cfg_set");
+
+    /* init the API struct */
+    BCMOLT_AUTO_CFG_INIT(&auto_cfg, epon_path_1g_ds, key);
+    bcmcli_log("BCMOLT_AUTO_CFG_INIT(&auto_cfg, epon_path_1g_ds, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_cleared");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_path_1g_ds, stat_alarm_cleared, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_path_1g_ds, stat_alarm_cleared, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_1G_DS, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_EPON_PATH_1G_DS_AUTO_CFG_ID_STAT_ALARM_CLEARED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_raised");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_path_1g_ds, stat_alarm_raised, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_path_1g_ds, stat_alarm_raised, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_1G_DS, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_EPON_PATH_1G_DS_AUTO_CFG_ID_STAT_ALARM_RAISED, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_auto_cfg_set(device_id, &auto_cfg.hdr);
+    bcmcli_log("bcmolt_auto_cfg_set(device_id, &auto_cfg.hdr);\n");
+    apicli_print_complete(session, err, auto_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_path_1g_us_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_path_1g_us_cfg cfg;         /**< declare main API struct */
+    bcmolt_epon_path_1g_us_key key = { };   /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_path_1g_us_cfg cfg;\n");
+    bcmcli_log("bcmolt_epon_path_1g_us_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_1G_US, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_PATH_1G_US_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, epon_path_1g_us, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, epon_path_1g_us, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "default_fec_state");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_path_1g_us, default_fec_state);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_path_1g_us, default_fec_state);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "sync_time_tq");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_path_1g_us, sync_time_tq);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_path_1g_us, sync_time_tq);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "prbs_checker");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_path_1g_us, prbs_checker);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_path_1g_us, prbs_checker);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "prbs_status");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_path_1g_us, prbs_status);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_path_1g_us, prbs_status);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_CFG_PROP_IS_SET(&cfg, epon_path_1g_us, default_fec_state) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_path_1g_us, sync_time_tq) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_path_1g_us, prbs_checker) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_path_1g_us, prbs_status))
+    {
+        BCMOLT_CFG_PROP_GET(&cfg, epon_path_1g_us, all_properties);
+        bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_path_1g_us, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_get(device_id, &cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_path_1g_us_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_path_1g_us_cfg cfg;         /**< declare main API struct */
+    bcmolt_epon_path_1g_us_key key = { };   /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_path_1g_us_cfg cfg;\n");
+    bcmcli_log("bcmolt_epon_path_1g_us_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_1G_US, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_PATH_1G_US_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, epon_path_1g_us, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, epon_path_1g_us, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "default_fec_state");
+    if (cli_parm != NULL)
+    {
+        bcmolt_epon_fec_en_state val;
+        val = (bcmolt_epon_fec_en_state) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_path_1g_us, default_fec_state, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_path_1g_us, default_fec_state, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_1G_US, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_PATH_1G_US_CFG_ID_DEFAULT_FEC_STATE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "sync_time_tq");
+    if (cli_parm != NULL)
+    {
+        bcmolt_time_quanta val;
+        val = (bcmolt_time_quanta) cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_path_1g_us, sync_time_tq, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_path_1g_us, sync_time_tq, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_1G_US, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_PATH_1G_US_CFG_ID_SYNC_TIME_TQ, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "prbs_checker.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_prbs_checker_config val = { };
+        cli_parm = bcmcli_find_named_parm(session, "prbs_checker.polynom");
+        if (cli_parm != NULL)
+        {
+            val.polynom = (bcmolt_prbs_polynomial) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "prbs_checker.polynom is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "prbs_checker.mode");
+        if (cli_parm != NULL)
+        {
+            val.mode = (bcmolt_prbs_checker_mode) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "prbs_checker.mode is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "prbs_checker.data_invert");
+        if (cli_parm != NULL)
+        {
+            val.data_invert = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "prbs_checker.data_invert is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "prbs_checker.control");
+        if (cli_parm != NULL)
+        {
+            val.control = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "prbs_checker.control is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, epon_path_1g_us, prbs_checker, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_prbs_checker_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_1G_US, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_PATH_1G_US_CFG_ID_PRBS_CHECKER, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_path_1g_us, prbs_checker, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_set(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_set(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_path_1g_us_cfg_clear(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_path_1g_us_cfg cfg;         /**< declare main API struct */
+    bcmolt_epon_path_1g_us_key key = { };   /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_path_1g_us_cfg cfg;\n");
+    bcmcli_log("bcmolt_epon_path_1g_us_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_clear");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_1G_US, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_PATH_1G_US_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, epon_path_1g_us, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, epon_path_1g_us, key);\n");
+
+    /* call API */
+    err = bcmolt_cfg_clear(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_clear(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_path_1g_us_cfg_get_multi(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_path_1g_us_cfg cfg;         /**< declare main API struct */
+    bcmolt_epon_path_1g_us_key key = { };   /**< declare key */
+    bcmolt_msg_set *msg_set = NULL;         /**< declare message set */
+    uint32_t max_msgs;                      /**< declare max number of msgs to get */
+    bcmos_bool invert_filter;               /**< declare filter invert flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_path_1g_us_cfg cfg;\n");
+    bcmcli_log("bcmolt_epon_path_1g_us_key key = {  };\n");
+    bcmcli_log("bcmolt_msg_set* msg_set = NULL;\n");
+    bcmcli_log("uint32_t max_msgs;\n");
+    bcmcli_log("bcmos_bool invert_filter;\n");
+    apicli_print_start(session, "bcmolt_cfg_get_multi");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_1G_US, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_PATH_1G_US_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+
+    /* set max number of msgs from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "max_msgs");
+    if (cli_parm != NULL)
+    {
+        max_msgs = cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "max_msgs is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("max_msgs = %d;\n", max_msgs);
+
+    /* set filter invert flag from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "filter_invert");
+    if (cli_parm != NULL)
+    {
+        invert_filter = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "filter_invert is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("invert_filter = %s;\n", (invert_filter) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* allocate message set */
+    err = apicli_msg_set_alloc(byte_pool, BCMOLT_OBJ_ID_EPON_PATH_1G_US, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);
+    if (err != BCM_ERR_OK)
+    {
+        return err;
+    }
+
+    bcmcli_log("bcmolt_msg_set_alloc(BCMOLT_OBJ_ID_EPON_PATH_1G_US, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, epon_path_1g_us, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, epon_path_1g_us, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "filter.default_fec_state");
+    if (cli_parm != NULL)
+    {
+        bcmolt_epon_fec_en_state val;
+        val = (bcmolt_epon_fec_en_state) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_path_1g_us, default_fec_state, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_path_1g_us, default_fec_state, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_1G_US, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_PATH_1G_US_CFG_ID_DEFAULT_FEC_STATE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "default_fec_state");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_path_1g_us, default_fec_state);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_path_1g_us, default_fec_state);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.sync_time_tq");
+    if (cli_parm != NULL)
+    {
+        bcmolt_time_quanta val;
+        val = (bcmolt_time_quanta) cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_path_1g_us, sync_time_tq, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_path_1g_us, sync_time_tq, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_1G_US, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_PATH_1G_US_CFG_ID_SYNC_TIME_TQ, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "sync_time_tq");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_path_1g_us, sync_time_tq);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_path_1g_us, sync_time_tq);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.prbs_checker.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_prbs_checker_config val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.prbs_checker.polynom");
+        if (cli_parm != NULL)
+        {
+            val.polynom = (bcmolt_prbs_polynomial) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.prbs_checker.polynom is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.prbs_checker.mode");
+        if (cli_parm != NULL)
+        {
+            val.mode = (bcmolt_prbs_checker_mode) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.prbs_checker.mode is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.prbs_checker.data_invert");
+        if (cli_parm != NULL)
+        {
+            val.data_invert = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.prbs_checker.data_invert is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.prbs_checker.control");
+        if (cli_parm != NULL)
+        {
+            val.control = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.prbs_checker.control is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, epon_path_1g_us, prbs_checker, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_prbs_checker_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_1G_US, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_PATH_1G_US_CFG_ID_PRBS_CHECKER, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_path_1g_us, prbs_checker, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "prbs_checker");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_path_1g_us, prbs_checker);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_path_1g_us, prbs_checker);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.prbs_status.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_prbs_status val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.prbs_status.lock_state");
+        if (cli_parm != NULL)
+        {
+            val.lock_state = (bcmolt_prbs_lock_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.prbs_status.lock_state is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.prbs_status.error_counts");
+        if (cli_parm != NULL)
+        {
+            val.error_counts = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.prbs_status.error_counts is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, epon_path_1g_us, prbs_status, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_prbs_status val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_1G_US, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_PATH_1G_US_CFG_ID_PRBS_STATUS, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_path_1g_us, prbs_status, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "prbs_status");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_path_1g_us, prbs_status);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_path_1g_us, prbs_status);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_path_1g_us, default_fec_state) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_path_1g_us, sync_time_tq) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_path_1g_us, prbs_checker) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_path_1g_us, prbs_status))
+    {
+        BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_path_1g_us, all_properties);
+        bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_path_1g_us, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);
+    bcmcli_log("bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_path_1g_us_stat_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_path_1g_us_stat stat;       /**< declare main API struct */
+    bcmolt_epon_path_1g_us_key key = { };   /**< declare key */
+    bcmos_bool clear_on_read;               /**< declare 'clear on read' flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_path_1g_us_stat stat;\n");
+    bcmcli_log("bcmolt_epon_path_1g_us_key key = {  };\n");
+    bcmcli_log("bcmos_bool clear_on_read;\n");
+    apicli_print_start(session, "bcmolt_stat_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_1G_US, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_PATH_1G_US_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+
+    /* set stat flags from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "clear");
+    if (cli_parm != NULL)
+    {
+        clear_on_read = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "clear is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("clear_on_read = %s;\n", (clear_on_read) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* init the API struct */
+    BCMOLT_STAT_INIT(&stat, epon_path_1g_us, key);
+    bcmcli_log("BCMOLT_STAT_INIT(&stat, epon_path_1g_us, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "bytes");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_us, bytes);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_us, bytes);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_us, frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_us, frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_64");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_us, frames_64);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_us, frames_64);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_65_127");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_us, frames_65_127);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_us, frames_65_127);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_128_255");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_us, frames_128_255);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_us, frames_128_255);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_256_511");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_us, frames_256_511);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_us, frames_256_511);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_512_1023");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_us, frames_512_1023);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_us, frames_512_1023);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_1024_1518");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_us, frames_1024_1518);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_us, frames_1024_1518);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_1519_2047");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_us, frames_1519_2047);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_us, frames_1519_2047);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_2048_4095");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_us, frames_2048_4095);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_us, frames_2048_4095);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_4096_9216");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_us, frames_4096_9216);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_us, frames_4096_9216);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frames_9217_16383");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_us, frames_9217_16383);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_us, frames_9217_16383);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "broadcast_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_us, broadcast_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_us, broadcast_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "data_bytes");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_us, data_bytes);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_us, data_bytes);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "multicast_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_us, multicast_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_us, multicast_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "unicast_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_us, unicast_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_us, unicast_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mpcp_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_us, mpcp_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_us, mpcp_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "oam_bytes");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_us, oam_bytes);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_us, oam_bytes);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "oam_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_us, oam_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_us, oam_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "report_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_us, report_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_us, report_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "abort_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_us, abort_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_us, abort_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "fcs_error");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_us, fcs_error);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_us, fcs_error);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "crc_8_error");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_us, crc_8_error);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_us, crc_8_error);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "out_of_slot");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_us, out_of_slot);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_us, out_of_slot);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "oversize_error");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_us, oversize_error);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_us, oversize_error);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "runt_error");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_us, runt_error);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_us, runt_error);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_1g_us, bytes) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_1g_us, frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_1g_us, frames_64) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_1g_us, frames_65_127) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_1g_us, frames_128_255) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_1g_us, frames_256_511) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_1g_us, frames_512_1023) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_1g_us, frames_1024_1518) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_1g_us, frames_1519_2047) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_1g_us, frames_2048_4095) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_1g_us, frames_4096_9216) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_1g_us, frames_9217_16383) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_1g_us, broadcast_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_1g_us, data_bytes) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_1g_us, multicast_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_1g_us, unicast_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_1g_us, mpcp_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_1g_us, oam_bytes) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_1g_us, oam_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_1g_us, report_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_1g_us, abort_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_1g_us, fcs_error) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_1g_us, crc_8_error) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_1g_us, out_of_slot) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_1g_us, oversize_error) && !BCMOLT_STAT_PROP_IS_SET(&stat, epon_path_1g_us, runt_error))
+    {
+        BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_us, all_properties);
+        bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, epon_path_1g_us, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_stat_get(device_id, &stat.hdr, clear_on_read);
+    bcmcli_log("bcmolt_stat_get(device_id, &stat.hdr, clear_on_read);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &stat.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, stat.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_path_1g_us_stat_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_path_1g_us_stat_cfg stat_cfg;   /**< declare main API struct */
+    bcmolt_epon_path_1g_us_key key = { };       /**< declare key */
+    bcmolt_epon_path_1g_us_stat_id stat_id;     /**< declare stat ID */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_path_1g_us_stat_cfg stat_cfg;\n");
+    bcmcli_log("bcmolt_epon_path_1g_us_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_stat_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_1G_US, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_PATH_1G_US_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+
+    /* set stat ID from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "sub");
+    if (cli_parm != NULL)
+    {
+        stat_id = (bcmolt_epon_path_1g_us_stat_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    /* init the API struct */
+    switch (stat_id)
+    {
+        case BCMOLT_EPON_PATH_1G_US_STAT_ID_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, bytes, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_US_STAT_ID_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_US_STAT_ID_FRAMES_64:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, frames_64, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, frames_64, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_US_STAT_ID_FRAMES_65_127:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, frames_65_127, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, frames_65_127, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_US_STAT_ID_FRAMES_128_255:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, frames_128_255, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, frames_128_255, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_US_STAT_ID_FRAMES_256_511:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, frames_256_511, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, frames_256_511, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_US_STAT_ID_FRAMES_512_1023:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, frames_512_1023, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, frames_512_1023, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_US_STAT_ID_FRAMES_1024_1518:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, frames_1024_1518, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, frames_1024_1518, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_US_STAT_ID_FRAMES_1519_2047:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, frames_1519_2047, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, frames_1519_2047, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_US_STAT_ID_FRAMES_2048_4095:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, frames_2048_4095, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, frames_2048_4095, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_US_STAT_ID_FRAMES_4096_9216:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, frames_4096_9216, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, frames_4096_9216, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_US_STAT_ID_FRAMES_9217_16383:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, frames_9217_16383, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, frames_9217_16383, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_US_STAT_ID_BROADCAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, broadcast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, broadcast_frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_US_STAT_ID_DATA_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, data_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, data_bytes, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_US_STAT_ID_MULTICAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, multicast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, multicast_frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_US_STAT_ID_UNICAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, unicast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, unicast_frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_US_STAT_ID_MPCP_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, mpcp_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, mpcp_frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_US_STAT_ID_OAM_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, oam_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, oam_bytes, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_US_STAT_ID_OAM_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, oam_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, oam_frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_US_STAT_ID_REPORT_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, report_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, report_frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_US_STAT_ID_ABORT_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, abort_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, abort_frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_US_STAT_ID_FCS_ERROR:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, fcs_error, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, fcs_error, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_US_STAT_ID_CRC_8_ERROR:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, crc_8_error, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, crc_8_error, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_US_STAT_ID_OUT_OF_SLOT:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, out_of_slot, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, out_of_slot, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_US_STAT_ID_OVERSIZE_ERROR:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, oversize_error, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, oversize_error, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_US_STAT_ID_RUNT_ERROR:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, runt_error, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, runt_error, key);\n");
+            break;
+        default:
+            apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+            return BCM_ERR_RANGE;
+    }
+
+    /* call API */
+    err = bcmolt_stat_cfg_get(device_id, &stat_cfg.hdr);
+    bcmcli_log("bcmolt_stat_cfg_get(device_id, &stat_cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &stat_cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, stat_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_path_1g_us_stat_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_path_1g_us_stat_cfg stat_cfg;   /**< declare main API struct */
+    bcmolt_epon_path_1g_us_key key = { };       /**< declare key */
+    bcmolt_epon_path_1g_us_stat_id stat_id;     /**< declare stat ID */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_path_1g_us_stat_cfg stat_cfg;\n");
+    bcmcli_log("bcmolt_epon_path_1g_us_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_stat_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_1G_US, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_PATH_1G_US_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+
+    /* set stat ID from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "sub");
+    if (cli_parm != NULL)
+    {
+        stat_id = (bcmolt_epon_path_1g_us_stat_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    /* init the API struct */
+    switch (stat_id)
+    {
+        case BCMOLT_EPON_PATH_1G_US_STAT_ID_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, bytes, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_US_STAT_ID_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_US_STAT_ID_FRAMES_64:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, frames_64, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, frames_64, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_US_STAT_ID_FRAMES_65_127:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, frames_65_127, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, frames_65_127, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_US_STAT_ID_FRAMES_128_255:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, frames_128_255, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, frames_128_255, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_US_STAT_ID_FRAMES_256_511:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, frames_256_511, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, frames_256_511, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_US_STAT_ID_FRAMES_512_1023:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, frames_512_1023, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, frames_512_1023, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_US_STAT_ID_FRAMES_1024_1518:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, frames_1024_1518, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, frames_1024_1518, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_US_STAT_ID_FRAMES_1519_2047:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, frames_1519_2047, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, frames_1519_2047, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_US_STAT_ID_FRAMES_2048_4095:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, frames_2048_4095, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, frames_2048_4095, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_US_STAT_ID_FRAMES_4096_9216:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, frames_4096_9216, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, frames_4096_9216, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_US_STAT_ID_FRAMES_9217_16383:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, frames_9217_16383, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, frames_9217_16383, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_US_STAT_ID_BROADCAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, broadcast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, broadcast_frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_US_STAT_ID_DATA_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, data_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, data_bytes, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_US_STAT_ID_MULTICAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, multicast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, multicast_frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_US_STAT_ID_UNICAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, unicast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, unicast_frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_US_STAT_ID_MPCP_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, mpcp_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, mpcp_frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_US_STAT_ID_OAM_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, oam_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, oam_bytes, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_US_STAT_ID_OAM_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, oam_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, oam_frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_US_STAT_ID_REPORT_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, report_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, report_frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_US_STAT_ID_ABORT_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, abort_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, abort_frames, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_US_STAT_ID_FCS_ERROR:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, fcs_error, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, fcs_error, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_US_STAT_ID_CRC_8_ERROR:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, crc_8_error, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, crc_8_error, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_US_STAT_ID_OUT_OF_SLOT:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, out_of_slot, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, out_of_slot, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_US_STAT_ID_OVERSIZE_ERROR:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, oversize_error, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, oversize_error, key);\n");
+            break;
+        case BCMOLT_EPON_PATH_1G_US_STAT_ID_RUNT_ERROR:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, runt_error, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, epon_path_1g_us, runt_error, key);\n");
+            break;
+        default:
+            apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+            return BCM_ERR_RANGE;
+    }
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_stat_alarm_config val = { };
+        cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.trigger.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.type");
+            if (cli_parm != NULL)
+            {
+                val.trigger.type = (bcmolt_stat_condition_type) cli_parm->value.enum_val;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.type is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            switch (val.trigger.type)
+            {
+                case BCMOLT_STAT_CONDITION_TYPE_RATE_THRESHOLD:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.rising");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_threshold.rising = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.rising is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.falling");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_threshold.falling = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.falling is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_RATE_RANGE:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.upper");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_range.upper = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.upper is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.lower");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_range.lower = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.lower is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_VALUE_THRESHOLD:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.limit");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.value_threshold.limit = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.limit is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_NONE:
+                    break;
+                default:
+                    apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+                    return BCM_ERR_RANGE;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.soak.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "cfg.soak.active_soak_time");
+            if (cli_parm != NULL)
+            {
+                val.soak.active_soak_time = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak.active_soak_time is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "cfg.soak.clear_soak_time");
+            if (cli_parm != NULL)
+            {
+                val.soak.clear_soak_time = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak.clear_soak_time is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_STAT_CFG_PROP_SET(&stat_cfg, epon_path_1g_us, cfg, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_stat_alarm_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_1G_US, BCMOLT_MGT_GROUP_STAT_CFG, 0, BCMOLT_EPON_PATH_1G_US_STAT_CFG_ID_CFG, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_STAT_CFG_PROP_SET(&stat_cfg, epon_path_1g_us, cfg, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    /* call API */
+    err = bcmolt_stat_cfg_set(device_id, &stat_cfg.hdr);
+    bcmcli_log("bcmolt_stat_cfg_set(device_id, &stat_cfg.hdr);\n");
+    apicli_print_complete(session, err, stat_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_path_1g_us_auto_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_path_1g_us_auto_cfg auto_cfg;   /**< declare main API struct */
+    bcmolt_epon_path_1g_us_key key = { };       /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_path_1g_us_auto_cfg auto_cfg;\n");
+    bcmcli_log("bcmolt_epon_path_1g_us_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_auto_cfg_get");
+
+    /* init the API struct */
+    BCMOLT_AUTO_CFG_INIT(&auto_cfg, epon_path_1g_us, key);
+    bcmcli_log("BCMOLT_AUTO_CFG_INIT(&auto_cfg, epon_path_1g_us, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_cleared");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_path_1g_us, stat_alarm_cleared);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_path_1g_us, stat_alarm_cleared);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_raised");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_path_1g_us, stat_alarm_raised);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_path_1g_us, stat_alarm_raised);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, epon_path_1g_us, stat_alarm_cleared) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, epon_path_1g_us, stat_alarm_raised))
+    {
+        BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_path_1g_us, all_properties);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, epon_path_1g_us, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_auto_cfg_get(device_id, &auto_cfg.hdr);
+    bcmcli_log("bcmolt_auto_cfg_get(device_id, &auto_cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &auto_cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, auto_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_path_1g_us_auto_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_path_1g_us_auto_cfg auto_cfg;   /**< declare main API struct */
+    bcmolt_epon_path_1g_us_key key = { };       /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_path_1g_us_auto_cfg auto_cfg;\n");
+    bcmcli_log("bcmolt_epon_path_1g_us_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_auto_cfg_set");
+
+    /* init the API struct */
+    BCMOLT_AUTO_CFG_INIT(&auto_cfg, epon_path_1g_us, key);
+    bcmcli_log("BCMOLT_AUTO_CFG_INIT(&auto_cfg, epon_path_1g_us, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_cleared");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_path_1g_us, stat_alarm_cleared, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_path_1g_us, stat_alarm_cleared, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_1G_US, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_EPON_PATH_1G_US_AUTO_CFG_ID_STAT_ALARM_CLEARED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_raised");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_path_1g_us, stat_alarm_raised, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, epon_path_1g_us, stat_alarm_raised, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_PATH_1G_US, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_EPON_PATH_1G_US_AUTO_CFG_ID_STAT_ALARM_RAISED, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_auto_cfg_set(device_id, &auto_cfg.hdr);
+    bcmcli_log("bcmolt_auto_cfg_set(device_id, &auto_cfg.hdr);\n");
+    apicli_print_complete(session, err, auto_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_rp_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_rp_cfg cfg;         /**< declare main API struct */
+    bcmolt_epon_rp_key key = { };   /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_rp_cfg cfg;\n");
+    bcmcli_log("bcmolt_epon_rp_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_RP, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_RP_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "link_rate");
+    if (cli_parm != NULL)
+    {
+        key.link_rate = (bcmolt_epon_link_rate) cli_parm->value.enum_val;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "link_rate is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.link_rate = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_RP, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_RP_KEY_ID_LINK_RATE, &key.link_rate);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, epon_rp, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, epon_rp, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "base_llid");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_rp, base_llid);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_rp, base_llid);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mpcp_disc_en");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_rp, mpcp_disc_en);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_rp, mpcp_disc_en);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mpcp_disc_gnt_len_tq");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_rp, mpcp_disc_gnt_len_tq);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_rp, mpcp_disc_gnt_len_tq);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mpcp_report_timeout");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_rp, mpcp_report_timeout);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_rp, mpcp_report_timeout);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "max_mpcp_reg_per_disc_window");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_rp, max_mpcp_reg_per_disc_window);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_rp, max_mpcp_reg_per_disc_window);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "max_links");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_rp, max_links);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_rp, max_links);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "default_upstream_bandwidth");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_rp, default_upstream_bandwidth);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_rp, default_upstream_bandwidth);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rate_of_refraction");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, epon_rp, rate_of_refraction);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_rp, rate_of_refraction);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_CFG_PROP_IS_SET(&cfg, epon_rp, base_llid) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_rp, mpcp_disc_en) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_rp, mpcp_disc_gnt_len_tq) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_rp, mpcp_report_timeout) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_rp, max_mpcp_reg_per_disc_window) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_rp, max_links) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_rp, default_upstream_bandwidth) && !BCMOLT_CFG_PROP_IS_SET(&cfg, epon_rp, rate_of_refraction))
+    {
+        BCMOLT_CFG_PROP_GET(&cfg, epon_rp, all_properties);
+        bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, epon_rp, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_get(device_id, &cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_rp_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_rp_cfg cfg;         /**< declare main API struct */
+    bcmolt_epon_rp_key key = { };   /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_rp_cfg cfg;\n");
+    bcmcli_log("bcmolt_epon_rp_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_RP, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_RP_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "link_rate");
+    if (cli_parm != NULL)
+    {
+        key.link_rate = (bcmolt_epon_link_rate) cli_parm->value.enum_val;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "link_rate is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.link_rate = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_RP, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_RP_KEY_ID_LINK_RATE, &key.link_rate);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, epon_rp, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, epon_rp, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "base_llid");
+    if (cli_parm != NULL)
+    {
+        bcmolt_epon_llid val;
+        val = (bcmolt_epon_llid) cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_rp, base_llid, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_rp, base_llid, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_RP, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_RP_CFG_ID_BASE_LLID, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mpcp_disc_en");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_rp, mpcp_disc_en, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_rp, mpcp_disc_en, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_RP, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_RP_CFG_ID_MPCP_DISC_EN, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mpcp_disc_gnt_len_tq");
+    if (cli_parm != NULL)
+    {
+        bcmolt_time_quanta val;
+        val = (bcmolt_time_quanta) cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_rp, mpcp_disc_gnt_len_tq, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_rp, mpcp_disc_gnt_len_tq, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_RP, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_RP_CFG_ID_MPCP_DISC_GNT_LEN_TQ, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mpcp_report_timeout");
+    if (cli_parm != NULL)
+    {
+        uint16_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_rp, mpcp_report_timeout, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_rp, mpcp_report_timeout, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_RP, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_RP_CFG_ID_MPCP_REPORT_TIMEOUT, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "max_mpcp_reg_per_disc_window");
+    if (cli_parm != NULL)
+    {
+        uint16_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_rp, max_mpcp_reg_per_disc_window, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_rp, max_mpcp_reg_per_disc_window, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_RP, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_RP_CFG_ID_MAX_MPCP_REG_PER_DISC_WINDOW, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "max_links");
+    if (cli_parm != NULL)
+    {
+        uint16_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_rp, max_links, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_rp, max_links, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_RP, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_RP_CFG_ID_MAX_LINKS, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "default_upstream_bandwidth.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_upstream_bandwidth_distribution val = { };
+        cli_parm = bcmcli_find_named_parm(session, "default_upstream_bandwidth.polling_interval_us");
+        if (cli_parm != NULL)
+        {
+            val.polling_interval_us = (bcmolt_polling_interval) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "default_upstream_bandwidth.polling_interval_us is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "default_upstream_bandwidth.grant_threshold_tq");
+        if (cli_parm != NULL)
+        {
+            val.grant_threshold_tq = (bcmolt_time_quanta) cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "default_upstream_bandwidth.grant_threshold_tq is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "default_upstream_bandwidth.min_schedulershaper.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "default_upstream_bandwidth.min_schedulershaper.bandwidth_Kbps");
+            if (cli_parm != NULL)
+            {
+                val.min_schedulershaper.bandwidth_Kbps = (bcmolt_bandwidth_Kbps) cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "default_upstream_bandwidth.min_schedulershaper.bandwidth_Kbps is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "default_upstream_bandwidth.min_schedulershaper.max_burst_size_tq");
+            if (cli_parm != NULL)
+            {
+                val.min_schedulershaper.max_burst_size_tq = (bcmolt_time_quanta) cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "default_upstream_bandwidth.min_schedulershaper.max_burst_size_tq is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "default_upstream_bandwidth.min_schedulershaper.priority");
+            if (cli_parm != NULL)
+            {
+                val.min_schedulershaper.priority = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "default_upstream_bandwidth.min_schedulershaper.priority is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "default_upstream_bandwidth.min_schedulershaper.weight_tq");
+            if (cli_parm != NULL)
+            {
+                val.min_schedulershaper.weight_tq = (bcmolt_time_quanta) cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "default_upstream_bandwidth.min_schedulershaper.weight_tq is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "default_upstream_bandwidth.min_schedulershaper is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "default_upstream_bandwidth.max_schedulershaper.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "default_upstream_bandwidth.max_schedulershaper.bandwidth_Kbps");
+            if (cli_parm != NULL)
+            {
+                val.max_schedulershaper.bandwidth_Kbps = (bcmolt_bandwidth_Kbps) cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "default_upstream_bandwidth.max_schedulershaper.bandwidth_Kbps is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "default_upstream_bandwidth.max_schedulershaper.max_burst_size_tq");
+            if (cli_parm != NULL)
+            {
+                val.max_schedulershaper.max_burst_size_tq = (bcmolt_time_quanta) cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "default_upstream_bandwidth.max_schedulershaper.max_burst_size_tq is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "default_upstream_bandwidth.max_schedulershaper.priority");
+            if (cli_parm != NULL)
+            {
+                val.max_schedulershaper.priority = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "default_upstream_bandwidth.max_schedulershaper.priority is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "default_upstream_bandwidth.max_schedulershaper.weight_tq");
+            if (cli_parm != NULL)
+            {
+                val.max_schedulershaper.weight_tq = (bcmolt_time_quanta) cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "default_upstream_bandwidth.max_schedulershaper.weight_tq is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "default_upstream_bandwidth.max_schedulershaper is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "default_upstream_bandwidth.tdm_grant_size_tq");
+        if (cli_parm != NULL)
+        {
+            val.tdm_grant_size_tq = (bcmolt_time_quanta) cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "default_upstream_bandwidth.tdm_grant_size_tq is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "default_upstream_bandwidth.tdm_grant_interval_us");
+        if (cli_parm != NULL)
+        {
+            val.tdm_grant_interval_us = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "default_upstream_bandwidth.tdm_grant_interval_us is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, epon_rp, default_upstream_bandwidth, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_upstream_bandwidth_distribution val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_RP, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_RP_CFG_ID_DEFAULT_UPSTREAM_BANDWIDTH, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_rp, default_upstream_bandwidth, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rate_of_refraction");
+    if (cli_parm != NULL)
+    {
+        double val;
+        val = cli_parm->value.d;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_rp, rate_of_refraction, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_rp, rate_of_refraction, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_RP, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_RP_CFG_ID_RATE_OF_REFRACTION, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_set(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_set(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_rp_cfg_clear(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_rp_cfg cfg;         /**< declare main API struct */
+    bcmolt_epon_rp_key key = { };   /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_rp_cfg cfg;\n");
+    bcmcli_log("bcmolt_epon_rp_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_clear");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_RP, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_RP_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "link_rate");
+    if (cli_parm != NULL)
+    {
+        key.link_rate = (bcmolt_epon_link_rate) cli_parm->value.enum_val;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "link_rate is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.link_rate = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_RP, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_RP_KEY_ID_LINK_RATE, &key.link_rate);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, epon_rp, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, epon_rp, key);\n");
+
+    /* call API */
+    err = bcmolt_cfg_clear(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_clear(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_epon_rp_cfg_get_multi(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_epon_rp_cfg cfg;         /**< declare main API struct */
+    bcmolt_epon_rp_key key = { };   /**< declare key */
+    bcmolt_msg_set *msg_set = NULL; /**< declare message set */
+    uint32_t max_msgs;              /**< declare max number of msgs to get */
+    bcmos_bool invert_filter;       /**< declare filter invert flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_epon_rp_cfg cfg;\n");
+    bcmcli_log("bcmolt_epon_rp_key key = {  };\n");
+    bcmcli_log("bcmolt_msg_set* msg_set = NULL;\n");
+    bcmcli_log("uint32_t max_msgs;\n");
+    bcmcli_log("bcmos_bool invert_filter;\n");
+    apicli_print_start(session, "bcmolt_cfg_get_multi");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "epon_ni");
+    if (cli_parm != NULL)
+    {
+        key.epon_ni = (bcmolt_epon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "epon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.epon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_RP, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_RP_KEY_ID_EPON_NI, &key.epon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "link_rate");
+    if (cli_parm != NULL)
+    {
+        key.link_rate = (bcmolt_epon_link_rate) cli_parm->value.enum_val;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "link_rate is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.link_rate = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_RP, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_EPON_RP_KEY_ID_LINK_RATE, &key.link_rate);
+    bcmcli_log(";\n");
+
+    /* set max number of msgs from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "max_msgs");
+    if (cli_parm != NULL)
+    {
+        max_msgs = cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "max_msgs is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("max_msgs = %d;\n", max_msgs);
+
+    /* set filter invert flag from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "filter_invert");
+    if (cli_parm != NULL)
+    {
+        invert_filter = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "filter_invert is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("invert_filter = %s;\n", (invert_filter) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* allocate message set */
+    err = apicli_msg_set_alloc(byte_pool, BCMOLT_OBJ_ID_EPON_RP, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);
+    if (err != BCM_ERR_OK)
+    {
+        return err;
+    }
+
+    bcmcli_log("bcmolt_msg_set_alloc(BCMOLT_OBJ_ID_EPON_RP, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, epon_rp, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, epon_rp, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "filter.base_llid");
+    if (cli_parm != NULL)
+    {
+        bcmolt_epon_llid val;
+        val = (bcmolt_epon_llid) cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_rp, base_llid, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_rp, base_llid, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_RP, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_RP_CFG_ID_BASE_LLID, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "base_llid");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_rp, base_llid);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_rp, base_llid);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.mpcp_disc_en");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_rp, mpcp_disc_en, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_rp, mpcp_disc_en, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_RP, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_RP_CFG_ID_MPCP_DISC_EN, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mpcp_disc_en");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_rp, mpcp_disc_en);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_rp, mpcp_disc_en);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.mpcp_disc_gnt_len_tq");
+    if (cli_parm != NULL)
+    {
+        bcmolt_time_quanta val;
+        val = (bcmolt_time_quanta) cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_rp, mpcp_disc_gnt_len_tq, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_rp, mpcp_disc_gnt_len_tq, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_RP, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_RP_CFG_ID_MPCP_DISC_GNT_LEN_TQ, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mpcp_disc_gnt_len_tq");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_rp, mpcp_disc_gnt_len_tq);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_rp, mpcp_disc_gnt_len_tq);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.mpcp_report_timeout");
+    if (cli_parm != NULL)
+    {
+        uint16_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_rp, mpcp_report_timeout, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_rp, mpcp_report_timeout, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_RP, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_RP_CFG_ID_MPCP_REPORT_TIMEOUT, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mpcp_report_timeout");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_rp, mpcp_report_timeout);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_rp, mpcp_report_timeout);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.max_mpcp_reg_per_disc_window");
+    if (cli_parm != NULL)
+    {
+        uint16_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_rp, max_mpcp_reg_per_disc_window, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_rp, max_mpcp_reg_per_disc_window, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_RP, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_RP_CFG_ID_MAX_MPCP_REG_PER_DISC_WINDOW, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "max_mpcp_reg_per_disc_window");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_rp, max_mpcp_reg_per_disc_window);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_rp, max_mpcp_reg_per_disc_window);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.max_links");
+    if (cli_parm != NULL)
+    {
+        uint16_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_rp, max_links, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_rp, max_links, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_RP, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_RP_CFG_ID_MAX_LINKS, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "max_links");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_rp, max_links);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_rp, max_links);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.default_upstream_bandwidth.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_upstream_bandwidth_distribution val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.default_upstream_bandwidth.polling_interval_us");
+        if (cli_parm != NULL)
+        {
+            val.polling_interval_us = (bcmolt_polling_interval) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.default_upstream_bandwidth.polling_interval_us is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.default_upstream_bandwidth.grant_threshold_tq");
+        if (cli_parm != NULL)
+        {
+            val.grant_threshold_tq = (bcmolt_time_quanta) cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.default_upstream_bandwidth.grant_threshold_tq is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "filter.default_upstream_bandwidth.min_schedulershaper.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "filter.default_upstream_bandwidth.min_schedulershaper.bandwidth_Kbps");
+            if (cli_parm != NULL)
+            {
+                val.min_schedulershaper.bandwidth_Kbps = (bcmolt_bandwidth_Kbps) cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.default_upstream_bandwidth.min_schedulershaper.bandwidth_Kbps is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.default_upstream_bandwidth.min_schedulershaper.max_burst_size_tq");
+            if (cli_parm != NULL)
+            {
+                val.min_schedulershaper.max_burst_size_tq = (bcmolt_time_quanta) cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.default_upstream_bandwidth.min_schedulershaper.max_burst_size_tq is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.default_upstream_bandwidth.min_schedulershaper.priority");
+            if (cli_parm != NULL)
+            {
+                val.min_schedulershaper.priority = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.default_upstream_bandwidth.min_schedulershaper.priority is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.default_upstream_bandwidth.min_schedulershaper.weight_tq");
+            if (cli_parm != NULL)
+            {
+                val.min_schedulershaper.weight_tq = (bcmolt_time_quanta) cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.default_upstream_bandwidth.min_schedulershaper.weight_tq is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.default_upstream_bandwidth.min_schedulershaper is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "filter.default_upstream_bandwidth.max_schedulershaper.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "filter.default_upstream_bandwidth.max_schedulershaper.bandwidth_Kbps");
+            if (cli_parm != NULL)
+            {
+                val.max_schedulershaper.bandwidth_Kbps = (bcmolt_bandwidth_Kbps) cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.default_upstream_bandwidth.max_schedulershaper.bandwidth_Kbps is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.default_upstream_bandwidth.max_schedulershaper.max_burst_size_tq");
+            if (cli_parm != NULL)
+            {
+                val.max_schedulershaper.max_burst_size_tq = (bcmolt_time_quanta) cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.default_upstream_bandwidth.max_schedulershaper.max_burst_size_tq is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.default_upstream_bandwidth.max_schedulershaper.priority");
+            if (cli_parm != NULL)
+            {
+                val.max_schedulershaper.priority = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.default_upstream_bandwidth.max_schedulershaper.priority is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.default_upstream_bandwidth.max_schedulershaper.weight_tq");
+            if (cli_parm != NULL)
+            {
+                val.max_schedulershaper.weight_tq = (bcmolt_time_quanta) cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.default_upstream_bandwidth.max_schedulershaper.weight_tq is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.default_upstream_bandwidth.max_schedulershaper is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.default_upstream_bandwidth.tdm_grant_size_tq");
+        if (cli_parm != NULL)
+        {
+            val.tdm_grant_size_tq = (bcmolt_time_quanta) cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.default_upstream_bandwidth.tdm_grant_size_tq is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.default_upstream_bandwidth.tdm_grant_interval_us");
+        if (cli_parm != NULL)
+        {
+            val.tdm_grant_interval_us = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.default_upstream_bandwidth.tdm_grant_interval_us is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, epon_rp, default_upstream_bandwidth, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_upstream_bandwidth_distribution val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_RP, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_RP_CFG_ID_DEFAULT_UPSTREAM_BANDWIDTH, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_rp, default_upstream_bandwidth, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "default_upstream_bandwidth");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_rp, default_upstream_bandwidth);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_rp, default_upstream_bandwidth);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.rate_of_refraction");
+    if (cli_parm != NULL)
+    {
+        double val;
+        val = cli_parm->value.d;
+        BCMOLT_CFG_PROP_SET(&cfg, epon_rp, rate_of_refraction, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, epon_rp, rate_of_refraction, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_EPON_RP, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_EPON_RP_CFG_ID_RATE_OF_REFRACTION, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rate_of_refraction");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_rp, rate_of_refraction);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_rp, rate_of_refraction);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_rp, base_llid) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_rp, mpcp_disc_en) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_rp, mpcp_disc_gnt_len_tq) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_rp, mpcp_report_timeout) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_rp, max_mpcp_reg_per_disc_window) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_rp, max_links) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_rp, default_upstream_bandwidth) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, epon_rp, rate_of_refraction))
+    {
+        BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_rp, all_properties);
+        bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, epon_rp, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);
+    bcmcli_log("bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpio_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpio_cfg cfg;        /**< declare main API struct */
+    bcmolt_gpio_key key = { };  /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpio_cfg cfg;\n");
+    bcmcli_log("bcmolt_gpio_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "gpio_id");
+    if (cli_parm != NULL)
+    {
+        key.gpio_id = (bcmolt_gpio_pin) cli_parm->value.enum_val;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "gpio_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.gpio_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPIO, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPIO_KEY_ID_GPIO_ID, &key.gpio_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, gpio, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, gpio, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "direction");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpio, direction);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpio, direction);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "value");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpio, value);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpio, value);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_CFG_PROP_IS_SET(&cfg, gpio, direction) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpio, value))
+    {
+        BCMOLT_CFG_PROP_GET(&cfg, gpio, all_properties);
+        bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpio, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_get(device_id, &cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpio_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpio_cfg cfg;        /**< declare main API struct */
+    bcmolt_gpio_key key = { };  /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpio_cfg cfg;\n");
+    bcmcli_log("bcmolt_gpio_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "gpio_id");
+    if (cli_parm != NULL)
+    {
+        key.gpio_id = (bcmolt_gpio_pin) cli_parm->value.enum_val;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "gpio_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.gpio_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPIO, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPIO_KEY_ID_GPIO_ID, &key.gpio_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, gpio, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, gpio, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "direction");
+    if (cli_parm != NULL)
+    {
+        bcmolt_gpio_pin_dir val;
+        val = (bcmolt_gpio_pin_dir) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, gpio, direction, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpio, direction, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPIO, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPIO_CFG_ID_DIRECTION, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "value");
+    if (cli_parm != NULL)
+    {
+        bcmolt_gpio_value val;
+        val = (bcmolt_gpio_value) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, gpio, value, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpio, value, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPIO, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPIO_CFG_ID_VALUE, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_set(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_set(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpio_cfg_clear(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpio_cfg cfg;        /**< declare main API struct */
+    bcmolt_gpio_key key = { };  /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpio_cfg cfg;\n");
+    bcmcli_log("bcmolt_gpio_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_clear");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "gpio_id");
+    if (cli_parm != NULL)
+    {
+        key.gpio_id = (bcmolt_gpio_pin) cli_parm->value.enum_val;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "gpio_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.gpio_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPIO, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPIO_KEY_ID_GPIO_ID, &key.gpio_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, gpio, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, gpio, key);\n");
+
+    /* call API */
+    err = bcmolt_cfg_clear(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_clear(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpio_cfg_get_multi(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpio_cfg cfg;            /**< declare main API struct */
+    bcmolt_gpio_key key = { };      /**< declare key */
+    bcmolt_msg_set *msg_set = NULL; /**< declare message set */
+    uint32_t max_msgs;              /**< declare max number of msgs to get */
+    bcmos_bool invert_filter;       /**< declare filter invert flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpio_cfg cfg;\n");
+    bcmcli_log("bcmolt_gpio_key key = {  };\n");
+    bcmcli_log("bcmolt_msg_set* msg_set = NULL;\n");
+    bcmcli_log("uint32_t max_msgs;\n");
+    bcmcli_log("bcmos_bool invert_filter;\n");
+    apicli_print_start(session, "bcmolt_cfg_get_multi");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "gpio_id");
+    if (cli_parm != NULL)
+    {
+        key.gpio_id = (bcmolt_gpio_pin) cli_parm->value.enum_val;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "gpio_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.gpio_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPIO, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPIO_KEY_ID_GPIO_ID, &key.gpio_id);
+    bcmcli_log(";\n");
+
+    /* set max number of msgs from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "max_msgs");
+    if (cli_parm != NULL)
+    {
+        max_msgs = cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "max_msgs is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("max_msgs = %d;\n", max_msgs);
+
+    /* set filter invert flag from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "filter_invert");
+    if (cli_parm != NULL)
+    {
+        invert_filter = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "filter_invert is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("invert_filter = %s;\n", (invert_filter) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* allocate message set */
+    err = apicli_msg_set_alloc(byte_pool, BCMOLT_OBJ_ID_GPIO, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);
+    if (err != BCM_ERR_OK)
+    {
+        return err;
+    }
+
+    bcmcli_log("bcmolt_msg_set_alloc(BCMOLT_OBJ_ID_GPIO, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, gpio, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, gpio, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "filter.direction");
+    if (cli_parm != NULL)
+    {
+        bcmolt_gpio_pin_dir val;
+        val = (bcmolt_gpio_pin_dir) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, gpio, direction, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpio, direction, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPIO, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPIO_CFG_ID_DIRECTION, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "direction");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpio, direction);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpio, direction);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.value");
+    if (cli_parm != NULL)
+    {
+        bcmolt_gpio_value val;
+        val = (bcmolt_gpio_value) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, gpio, value, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpio, value, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPIO, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPIO_CFG_ID_VALUE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "value");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpio, value);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpio, value);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpio, direction) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpio, value))
+    {
+        BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpio, all_properties);
+        bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpio, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);
+    bcmcli_log("bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_alloc_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_alloc_cfg cfg;          /**< declare main API struct */
+    bcmolt_gpon_alloc_key key = { };    /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_alloc_cfg cfg;\n");
+    bcmcli_log("bcmolt_gpon_alloc_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ALLOC, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_ALLOC_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "alloc_id");
+    if (cli_parm != NULL)
+    {
+        key.alloc_id = (bcmolt_gpon_alloc_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "alloc_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.alloc_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ALLOC, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_ALLOC_KEY_ID_ALLOC_ID, &key.alloc_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, gpon_alloc, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, gpon_alloc, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "state");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_alloc, state);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_alloc, state);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "sla");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_alloc, sla);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_alloc, sla);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_alloc, onu_id);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_alloc, onu_id);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "collect_stats");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_alloc, collect_stats);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_alloc, collect_stats);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_alloc, state) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_alloc, sla) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_alloc, onu_id) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_alloc, collect_stats))
+    {
+        BCMOLT_CFG_PROP_GET(&cfg, gpon_alloc, all_properties);
+        bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_alloc, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_get(device_id, &cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_alloc_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_alloc_cfg cfg;          /**< declare main API struct */
+    bcmolt_gpon_alloc_key key = { };    /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_alloc_cfg cfg;\n");
+    bcmcli_log("bcmolt_gpon_alloc_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ALLOC, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_ALLOC_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "alloc_id");
+    if (cli_parm != NULL)
+    {
+        key.alloc_id = (bcmolt_gpon_alloc_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "alloc_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.alloc_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ALLOC, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_ALLOC_KEY_ID_ALLOC_ID, &key.alloc_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, gpon_alloc, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, gpon_alloc, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_parm_by_prefix(session, "sla.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_pon_alloc_sla val = { };
+        cli_parm = bcmcli_find_named_parm(session, "sla.cbr_rt_bw");
+        if (cli_parm != NULL)
+        {
+            val.cbr_rt_bw = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "sla.cbr_rt_bw is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "sla.cbr_nrt_bw");
+        if (cli_parm != NULL)
+        {
+            val.cbr_nrt_bw = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "sla.cbr_nrt_bw is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "sla.guaranteed_bw");
+        if (cli_parm != NULL)
+        {
+            val.guaranteed_bw = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "sla.guaranteed_bw is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "sla.maximum_bw");
+        if (cli_parm != NULL)
+        {
+            val.maximum_bw = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "sla.maximum_bw is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "sla.additional_bw_eligibility");
+        if (cli_parm != NULL)
+        {
+            val.additional_bw_eligibility = (bcmolt_additional_bw_eligibility) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "sla.additional_bw_eligibility is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "sla.cbr_rt_compensation");
+        if (cli_parm != NULL)
+        {
+            val.cbr_rt_compensation = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "sla.cbr_rt_compensation is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "sla.cbr_rt_ap_index");
+        if (cli_parm != NULL)
+        {
+            val.cbr_rt_ap_index = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "sla.cbr_rt_ap_index is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "sla.cbr_nrt_ap_index");
+        if (cli_parm != NULL)
+        {
+            val.cbr_nrt_ap_index = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "sla.cbr_nrt_ap_index is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "sla.alloc_type");
+        if (cli_parm != NULL)
+        {
+            val.alloc_type = (bcmolt_alloc_type) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "sla.alloc_type is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "sla.weight");
+        if (cli_parm != NULL)
+        {
+            val.weight = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "sla.weight is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "sla.priority");
+        if (cli_parm != NULL)
+        {
+            val.priority = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "sla.priority is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_alloc, sla, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_pon_alloc_sla val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ALLOC, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_ALLOC_CFG_ID_SLA, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_alloc, sla, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        bcmolt_gpon_onu_id val;
+        val = (bcmolt_gpon_onu_id) cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_alloc, onu_id, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_alloc, onu_id, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ALLOC, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_ALLOC_CFG_ID_ONU_ID, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "collect_stats");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_alloc, collect_stats, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_alloc, collect_stats, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ALLOC, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_ALLOC_CFG_ID_COLLECT_STATS, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_set(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_set(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_alloc_cfg_clear(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_alloc_cfg cfg;          /**< declare main API struct */
+    bcmolt_gpon_alloc_key key = { };    /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_alloc_cfg cfg;\n");
+    bcmcli_log("bcmolt_gpon_alloc_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_clear");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ALLOC, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_ALLOC_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "alloc_id");
+    if (cli_parm != NULL)
+    {
+        key.alloc_id = (bcmolt_gpon_alloc_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "alloc_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.alloc_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ALLOC, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_ALLOC_KEY_ID_ALLOC_ID, &key.alloc_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, gpon_alloc, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, gpon_alloc, key);\n");
+
+    /* call API */
+    err = bcmolt_cfg_clear(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_clear(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_alloc_cfg_get_multi(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_alloc_cfg cfg;          /**< declare main API struct */
+    bcmolt_gpon_alloc_key key = { };    /**< declare key */
+    bcmolt_msg_set *msg_set = NULL;     /**< declare message set */
+    uint32_t max_msgs;                  /**< declare max number of msgs to get */
+    bcmos_bool invert_filter;           /**< declare filter invert flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_alloc_cfg cfg;\n");
+    bcmcli_log("bcmolt_gpon_alloc_key key = {  };\n");
+    bcmcli_log("bcmolt_msg_set* msg_set = NULL;\n");
+    bcmcli_log("uint32_t max_msgs;\n");
+    bcmcli_log("bcmos_bool invert_filter;\n");
+    apicli_print_start(session, "bcmolt_cfg_get_multi");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ALLOC, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_ALLOC_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "alloc_id");
+    if (cli_parm != NULL)
+    {
+        key.alloc_id = (bcmolt_gpon_alloc_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "alloc_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.alloc_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ALLOC, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_ALLOC_KEY_ID_ALLOC_ID, &key.alloc_id);
+    bcmcli_log(";\n");
+
+    /* set max number of msgs from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "max_msgs");
+    if (cli_parm != NULL)
+    {
+        max_msgs = cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "max_msgs is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("max_msgs = %d;\n", max_msgs);
+
+    /* set filter invert flag from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "filter_invert");
+    if (cli_parm != NULL)
+    {
+        invert_filter = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "filter_invert is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("invert_filter = %s;\n", (invert_filter) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* allocate message set */
+    err = apicli_msg_set_alloc(byte_pool, BCMOLT_OBJ_ID_GPON_ALLOC, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);
+    if (err != BCM_ERR_OK)
+    {
+        return err;
+    }
+
+    bcmcli_log("bcmolt_msg_set_alloc(BCMOLT_OBJ_ID_GPON_ALLOC, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, gpon_alloc, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, gpon_alloc, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "filter.state");
+    if (cli_parm != NULL)
+    {
+        bcmolt_alloc_state val;
+        val = (bcmolt_alloc_state) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_alloc, state, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_alloc, state, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ALLOC, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_ALLOC_CFG_ID_STATE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "state");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_alloc, state);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_alloc, state);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.sla.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_pon_alloc_sla val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.sla.cbr_rt_bw");
+        if (cli_parm != NULL)
+        {
+            val.cbr_rt_bw = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.sla.cbr_rt_bw is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.sla.cbr_nrt_bw");
+        if (cli_parm != NULL)
+        {
+            val.cbr_nrt_bw = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.sla.cbr_nrt_bw is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.sla.guaranteed_bw");
+        if (cli_parm != NULL)
+        {
+            val.guaranteed_bw = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.sla.guaranteed_bw is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.sla.maximum_bw");
+        if (cli_parm != NULL)
+        {
+            val.maximum_bw = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.sla.maximum_bw is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.sla.additional_bw_eligibility");
+        if (cli_parm != NULL)
+        {
+            val.additional_bw_eligibility = (bcmolt_additional_bw_eligibility) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.sla.additional_bw_eligibility is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.sla.cbr_rt_compensation");
+        if (cli_parm != NULL)
+        {
+            val.cbr_rt_compensation = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.sla.cbr_rt_compensation is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.sla.cbr_rt_ap_index");
+        if (cli_parm != NULL)
+        {
+            val.cbr_rt_ap_index = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.sla.cbr_rt_ap_index is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.sla.cbr_nrt_ap_index");
+        if (cli_parm != NULL)
+        {
+            val.cbr_nrt_ap_index = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.sla.cbr_nrt_ap_index is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.sla.alloc_type");
+        if (cli_parm != NULL)
+        {
+            val.alloc_type = (bcmolt_alloc_type) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.sla.alloc_type is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.sla.weight");
+        if (cli_parm != NULL)
+        {
+            val.weight = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.sla.weight is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.sla.priority");
+        if (cli_parm != NULL)
+        {
+            val.priority = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.sla.priority is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_alloc, sla, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_pon_alloc_sla val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ALLOC, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_ALLOC_CFG_ID_SLA, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_alloc, sla, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "sla");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_alloc, sla);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_alloc, sla);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.onu_id");
+    if (cli_parm != NULL)
+    {
+        bcmolt_gpon_onu_id val;
+        val = (bcmolt_gpon_onu_id) cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_alloc, onu_id, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_alloc, onu_id, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ALLOC, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_ALLOC_CFG_ID_ONU_ID, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_alloc, onu_id);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_alloc, onu_id);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.collect_stats");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_alloc, collect_stats, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_alloc, collect_stats, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ALLOC, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_ALLOC_CFG_ID_COLLECT_STATS, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "collect_stats");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_alloc, collect_stats);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_alloc, collect_stats);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_alloc, state) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_alloc, sla) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_alloc, onu_id) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_alloc, collect_stats))
+    {
+        BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_alloc, all_properties);
+        bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_alloc, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);
+    bcmcli_log("bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_alloc_stat_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_alloc_stat stat;        /**< declare main API struct */
+    bcmolt_gpon_alloc_key key = { };    /**< declare key */
+    bcmos_bool clear_on_read;           /**< declare 'clear on read' flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_alloc_stat stat;\n");
+    bcmcli_log("bcmolt_gpon_alloc_key key = {  };\n");
+    bcmcli_log("bcmos_bool clear_on_read;\n");
+    apicli_print_start(session, "bcmolt_stat_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ALLOC, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_ALLOC_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "alloc_id");
+    if (cli_parm != NULL)
+    {
+        key.alloc_id = (bcmolt_gpon_alloc_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "alloc_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.alloc_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ALLOC, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_ALLOC_KEY_ID_ALLOC_ID, &key.alloc_id);
+    bcmcli_log(";\n");
+
+    /* set stat flags from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "clear");
+    if (cli_parm != NULL)
+    {
+        clear_on_read = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "clear is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("clear_on_read = %s;\n", (clear_on_read) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* init the API struct */
+    BCMOLT_STAT_INIT(&stat, gpon_alloc, key);
+    bcmcli_log("BCMOLT_STAT_INIT(&stat, gpon_alloc, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "rx_bytes");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_alloc, rx_bytes);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_alloc, rx_bytes);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_STAT_PROP_IS_SET(&stat, gpon_alloc, rx_bytes))
+    {
+        BCMOLT_STAT_PROP_GET(&stat, gpon_alloc, all_properties);
+        bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_alloc, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_stat_get(device_id, &stat.hdr, clear_on_read);
+    bcmcli_log("bcmolt_stat_get(device_id, &stat.hdr, clear_on_read);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &stat.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, stat.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_alloc_oper_set_state_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_alloc_set_state oper;   /**< declare main API struct */
+    bcmolt_gpon_alloc_key key = { };    /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_alloc_set_state oper;\n");
+    bcmcli_log("bcmolt_gpon_alloc_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ALLOC, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_ALLOC_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "alloc_id");
+    if (cli_parm != NULL)
+    {
+        key.alloc_id = (bcmolt_gpon_alloc_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "alloc_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.alloc_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ALLOC, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_ALLOC_KEY_ID_ALLOC_ID, &key.alloc_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, gpon_alloc, set_state, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, gpon_alloc, set_state, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "state");
+    if (cli_parm != NULL)
+    {
+        bcmolt_alloc_operation val;
+        val = (bcmolt_alloc_operation) cli_parm->value.enum_val;
+        BCMOLT_OPER_PROP_SET(&oper, gpon_alloc, set_state, state, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, gpon_alloc, set_state, state, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ALLOC, BCMOLT_MGT_GROUP_OPER, BCMOLT_GPON_ALLOC_OPER_ID_SET_STATE, BCMOLT_GPON_ALLOC_SET_STATE_ID_STATE, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_alloc_oper_get_stats_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_alloc_get_stats oper;   /**< declare main API struct */
+    bcmolt_gpon_alloc_key key = { };    /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_alloc_get_stats oper;\n");
+    bcmcli_log("bcmolt_gpon_alloc_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ALLOC, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_ALLOC_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "alloc_id");
+    if (cli_parm != NULL)
+    {
+        key.alloc_id = (bcmolt_gpon_alloc_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "alloc_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.alloc_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ALLOC, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_ALLOC_KEY_ID_ALLOC_ID, &key.alloc_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, gpon_alloc, get_stats, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, gpon_alloc, get_stats, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "num_of_cycles");
+    if (cli_parm != NULL)
+    {
+        uint32_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_OPER_PROP_SET(&oper, gpon_alloc, get_stats, num_of_cycles, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, gpon_alloc, get_stats, num_of_cycles, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ALLOC, BCMOLT_MGT_GROUP_OPER, BCMOLT_GPON_ALLOC_OPER_ID_GET_STATS, BCMOLT_GPON_ALLOC_GET_STATS_ID_NUM_OF_CYCLES, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_alloc_stat_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_alloc_stat_cfg stat_cfg;    /**< declare main API struct */
+    bcmolt_gpon_alloc_key key = { };        /**< declare key */
+    bcmolt_gpon_alloc_stat_id stat_id;      /**< declare stat ID */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_alloc_stat_cfg stat_cfg;\n");
+    bcmcli_log("bcmolt_gpon_alloc_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_stat_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ALLOC, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_ALLOC_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "alloc_id");
+    if (cli_parm != NULL)
+    {
+        key.alloc_id = (bcmolt_gpon_alloc_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "alloc_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.alloc_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ALLOC, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_ALLOC_KEY_ID_ALLOC_ID, &key.alloc_id);
+    bcmcli_log(";\n");
+
+    /* set stat ID from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "sub");
+    if (cli_parm != NULL)
+    {
+        stat_id = (bcmolt_gpon_alloc_stat_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    /* init the API struct */
+    switch (stat_id)
+    {
+        case BCMOLT_GPON_ALLOC_STAT_ID_RX_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_alloc, rx_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_alloc, rx_bytes, key);\n");
+            break;
+        default:
+            apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+            return BCM_ERR_RANGE;
+    }
+
+    /* call API */
+    err = bcmolt_stat_cfg_get(device_id, &stat_cfg.hdr);
+    bcmcli_log("bcmolt_stat_cfg_get(device_id, &stat_cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &stat_cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, stat_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_alloc_stat_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_alloc_stat_cfg stat_cfg;    /**< declare main API struct */
+    bcmolt_gpon_alloc_key key = { };        /**< declare key */
+    bcmolt_gpon_alloc_stat_id stat_id;      /**< declare stat ID */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_alloc_stat_cfg stat_cfg;\n");
+    bcmcli_log("bcmolt_gpon_alloc_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_stat_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ALLOC, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_ALLOC_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "alloc_id");
+    if (cli_parm != NULL)
+    {
+        key.alloc_id = (bcmolt_gpon_alloc_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "alloc_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.alloc_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ALLOC, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_ALLOC_KEY_ID_ALLOC_ID, &key.alloc_id);
+    bcmcli_log(";\n");
+
+    /* set stat ID from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "sub");
+    if (cli_parm != NULL)
+    {
+        stat_id = (bcmolt_gpon_alloc_stat_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    /* init the API struct */
+    switch (stat_id)
+    {
+        case BCMOLT_GPON_ALLOC_STAT_ID_RX_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_alloc, rx_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_alloc, rx_bytes, key);\n");
+            break;
+        default:
+            apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+            return BCM_ERR_RANGE;
+    }
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_stat_alarm_config val = { };
+        cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.trigger.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.type");
+            if (cli_parm != NULL)
+            {
+                val.trigger.type = (bcmolt_stat_condition_type) cli_parm->value.enum_val;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.type is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            switch (val.trigger.type)
+            {
+                case BCMOLT_STAT_CONDITION_TYPE_RATE_THRESHOLD:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.rising");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_threshold.rising = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.rising is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.falling");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_threshold.falling = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.falling is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_RATE_RANGE:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.upper");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_range.upper = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.upper is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.lower");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_range.lower = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.lower is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_VALUE_THRESHOLD:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.limit");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.value_threshold.limit = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.limit is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_NONE:
+                    break;
+                default:
+                    apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+                    return BCM_ERR_RANGE;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.soak.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "cfg.soak.active_soak_time");
+            if (cli_parm != NULL)
+            {
+                val.soak.active_soak_time = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak.active_soak_time is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "cfg.soak.clear_soak_time");
+            if (cli_parm != NULL)
+            {
+                val.soak.clear_soak_time = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak.clear_soak_time is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_STAT_CFG_PROP_SET(&stat_cfg, gpon_alloc, cfg, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_stat_alarm_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ALLOC, BCMOLT_MGT_GROUP_STAT_CFG, 0, BCMOLT_GPON_ALLOC_STAT_CFG_ID_CFG, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_STAT_CFG_PROP_SET(&stat_cfg, gpon_alloc, cfg, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    /* call API */
+    err = bcmolt_stat_cfg_set(device_id, &stat_cfg.hdr);
+    bcmcli_log("bcmolt_stat_cfg_set(device_id, &stat_cfg.hdr);\n");
+    apicli_print_complete(session, err, stat_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_alloc_auto_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_alloc_auto_cfg auto_cfg;    /**< declare main API struct */
+    bcmolt_gpon_alloc_key key = { };        /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_alloc_auto_cfg auto_cfg;\n");
+    bcmcli_log("bcmolt_gpon_alloc_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_auto_cfg_get");
+
+    /* init the API struct */
+    BCMOLT_AUTO_CFG_INIT(&auto_cfg, gpon_alloc, key);
+    bcmcli_log("BCMOLT_AUTO_CFG_INIT(&auto_cfg, gpon_alloc, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "configuration_completed");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_alloc, configuration_completed);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_alloc, configuration_completed);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "get_alloc_stats_completed");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_alloc, get_alloc_stats_completed);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_alloc, get_alloc_stats_completed);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_cleared");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_alloc, stat_alarm_cleared);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_alloc, stat_alarm_cleared);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_raised");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_alloc, stat_alarm_raised);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_alloc, stat_alarm_raised);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_alloc, configuration_completed) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_alloc, get_alloc_stats_completed) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_alloc, stat_alarm_cleared) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_alloc, stat_alarm_raised))
+    {
+        BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_alloc, all_properties);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_alloc, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_auto_cfg_get(device_id, &auto_cfg.hdr);
+    bcmcli_log("bcmolt_auto_cfg_get(device_id, &auto_cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &auto_cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, auto_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_alloc_auto_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_alloc_auto_cfg auto_cfg;    /**< declare main API struct */
+    bcmolt_gpon_alloc_key key = { };        /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_alloc_auto_cfg auto_cfg;\n");
+    bcmcli_log("bcmolt_gpon_alloc_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_auto_cfg_set");
+
+    /* init the API struct */
+    BCMOLT_AUTO_CFG_INIT(&auto_cfg, gpon_alloc, key);
+    bcmcli_log("BCMOLT_AUTO_CFG_INIT(&auto_cfg, gpon_alloc, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "configuration_completed");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_alloc, configuration_completed, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_alloc, configuration_completed, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ALLOC, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_ALLOC_AUTO_CFG_ID_CONFIGURATION_COMPLETED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "get_alloc_stats_completed");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_alloc, get_alloc_stats_completed, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_alloc, get_alloc_stats_completed, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ALLOC, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_ALLOC_AUTO_CFG_ID_GET_ALLOC_STATS_COMPLETED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_cleared");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_alloc, stat_alarm_cleared, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_alloc, stat_alarm_cleared, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ALLOC, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_ALLOC_AUTO_CFG_ID_STAT_ALARM_CLEARED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_raised");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_alloc, stat_alarm_raised, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_alloc, stat_alarm_raised, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ALLOC, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_ALLOC_AUTO_CFG_ID_STAT_ALARM_RAISED, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_auto_cfg_set(device_id, &auto_cfg.hdr);
+    bcmcli_log("bcmolt_auto_cfg_set(device_id, &auto_cfg.hdr);\n");
+    apicli_print_complete(session, err, auto_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_gem_port_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_gem_port_cfg cfg;       /**< declare main API struct */
+    bcmolt_gpon_gem_port_key key = { }; /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_gem_port_cfg cfg;\n");
+    bcmcli_log("bcmolt_gpon_gem_port_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_GEM_PORT, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_GEM_PORT_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "gem_port_id");
+    if (cli_parm != NULL)
+    {
+        key.gem_port_id = (bcmolt_gpon_gem_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "gem_port_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.gem_port_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_GEM_PORT, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_GEM_PORT_KEY_ID_GEM_PORT_ID, &key.gem_port_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, gpon_gem_port, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, gpon_gem_port, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "configuration");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_gem_port, configuration);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_gem_port, configuration);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_gem_port, onu_id);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_gem_port, onu_id);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "gem_port_state");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_gem_port, gem_port_state);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_gem_port, gem_port_state);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "downstream_encryption_mode");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_gem_port, downstream_encryption_mode);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_gem_port, downstream_encryption_mode);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "upstream_destination_queue");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_gem_port, upstream_destination_queue);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_gem_port, upstream_destination_queue);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "control");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_gem_port, control);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_gem_port, control);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "debug_flow_config");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_gem_port, debug_flow_config);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_gem_port, debug_flow_config);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mac_table_entry_limit");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_gem_port, mac_table_entry_limit);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_gem_port, mac_table_entry_limit);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_gem_port, configuration) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_gem_port, onu_id) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_gem_port, gem_port_state) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_gem_port, downstream_encryption_mode) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_gem_port, upstream_destination_queue) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_gem_port, control) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_gem_port, debug_flow_config) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_gem_port, mac_table_entry_limit))
+    {
+        BCMOLT_CFG_PROP_GET(&cfg, gpon_gem_port, all_properties);
+        bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_gem_port, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_get(device_id, &cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_gem_port_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_gem_port_cfg cfg;       /**< declare main API struct */
+    bcmolt_gpon_gem_port_key key = { }; /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_gem_port_cfg cfg;\n");
+    bcmcli_log("bcmolt_gpon_gem_port_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_GEM_PORT, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_GEM_PORT_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "gem_port_id");
+    if (cli_parm != NULL)
+    {
+        key.gem_port_id = (bcmolt_gpon_gem_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "gem_port_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.gem_port_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_GEM_PORT, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_GEM_PORT_KEY_ID_GEM_PORT_ID, &key.gem_port_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, gpon_gem_port, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, gpon_gem_port, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_parm_by_prefix(session, "configuration.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_gem_port_configuration val = { };
+        cli_parm = bcmcli_find_named_parm(session, "configuration.direction");
+        if (cli_parm != NULL)
+        {
+            val.direction = (bcmolt_gem_port_direction) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "configuration.direction is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "configuration.type");
+        if (cli_parm != NULL)
+        {
+            val.type = (bcmolt_gem_port_type) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "configuration.type is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_gem_port, configuration, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_gem_port_configuration val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_GEM_PORT, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_GEM_PORT_CFG_ID_CONFIGURATION, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_gem_port, configuration, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        bcmolt_gpon_onu_id val;
+        val = (bcmolt_gpon_onu_id) cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_gem_port, onu_id, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_gem_port, onu_id, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_GEM_PORT, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_GEM_PORT_CFG_ID_ONU_ID, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "downstream_encryption_mode");
+    if (cli_parm != NULL)
+    {
+        bcmolt_control_state val;
+        val = (bcmolt_control_state) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_gem_port, downstream_encryption_mode, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_gem_port, downstream_encryption_mode, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_GEM_PORT, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_GEM_PORT_CFG_ID_DOWNSTREAM_ENCRYPTION_MODE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "upstream_destination_queue");
+    if (cli_parm != NULL)
+    {
+        bcmolt_us_gem_port_destination val;
+        val = (bcmolt_us_gem_port_destination) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_gem_port, upstream_destination_queue, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_gem_port, upstream_destination_queue, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_GEM_PORT, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_GEM_PORT_CFG_ID_UPSTREAM_DESTINATION_QUEUE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "control");
+    if (cli_parm != NULL)
+    {
+        bcmolt_control_state val;
+        val = (bcmolt_control_state) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_gem_port, control, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_gem_port, control, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_GEM_PORT, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_GEM_PORT_CFG_ID_CONTROL, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "debug_flow_config.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_gpon_debug_flow_config val = { };
+        cli_parm = bcmcli_find_named_parm(session, "debug_flow_config.untagged_flow");
+        if (cli_parm != NULL)
+        {
+            val.untagged_flow = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "debug_flow_config.untagged_flow is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "debug_flow_config.untagged_vid");
+        if (cli_parm != NULL)
+        {
+            val.untagged_vid = (bcmolt_vlan_id) cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "debug_flow_config.untagged_vid is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_gem_port, debug_flow_config, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_gpon_debug_flow_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_GEM_PORT, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_GEM_PORT_CFG_ID_DEBUG_FLOW_CONFIG, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_gem_port, debug_flow_config, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mac_table_entry_limit");
+    if (cli_parm != NULL)
+    {
+        uint16_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_gem_port, mac_table_entry_limit, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_gem_port, mac_table_entry_limit, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_GEM_PORT, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_GEM_PORT_CFG_ID_MAC_TABLE_ENTRY_LIMIT, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_set(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_set(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_gem_port_cfg_clear(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_gem_port_cfg cfg;       /**< declare main API struct */
+    bcmolt_gpon_gem_port_key key = { }; /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_gem_port_cfg cfg;\n");
+    bcmcli_log("bcmolt_gpon_gem_port_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_clear");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_GEM_PORT, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_GEM_PORT_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "gem_port_id");
+    if (cli_parm != NULL)
+    {
+        key.gem_port_id = (bcmolt_gpon_gem_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "gem_port_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.gem_port_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_GEM_PORT, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_GEM_PORT_KEY_ID_GEM_PORT_ID, &key.gem_port_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, gpon_gem_port, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, gpon_gem_port, key);\n");
+
+    /* call API */
+    err = bcmolt_cfg_clear(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_clear(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_gem_port_cfg_get_multi(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_gem_port_cfg cfg;       /**< declare main API struct */
+    bcmolt_gpon_gem_port_key key = { }; /**< declare key */
+    bcmolt_msg_set *msg_set = NULL;     /**< declare message set */
+    uint32_t max_msgs;                  /**< declare max number of msgs to get */
+    bcmos_bool invert_filter;           /**< declare filter invert flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_gem_port_cfg cfg;\n");
+    bcmcli_log("bcmolt_gpon_gem_port_key key = {  };\n");
+    bcmcli_log("bcmolt_msg_set* msg_set = NULL;\n");
+    bcmcli_log("uint32_t max_msgs;\n");
+    bcmcli_log("bcmos_bool invert_filter;\n");
+    apicli_print_start(session, "bcmolt_cfg_get_multi");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_GEM_PORT, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_GEM_PORT_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "gem_port_id");
+    if (cli_parm != NULL)
+    {
+        key.gem_port_id = (bcmolt_gpon_gem_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "gem_port_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.gem_port_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_GEM_PORT, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_GEM_PORT_KEY_ID_GEM_PORT_ID, &key.gem_port_id);
+    bcmcli_log(";\n");
+
+    /* set max number of msgs from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "max_msgs");
+    if (cli_parm != NULL)
+    {
+        max_msgs = cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "max_msgs is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("max_msgs = %d;\n", max_msgs);
+
+    /* set filter invert flag from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "filter_invert");
+    if (cli_parm != NULL)
+    {
+        invert_filter = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "filter_invert is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("invert_filter = %s;\n", (invert_filter) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* allocate message set */
+    err = apicli_msg_set_alloc(byte_pool, BCMOLT_OBJ_ID_GPON_GEM_PORT, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);
+    if (err != BCM_ERR_OK)
+    {
+        return err;
+    }
+
+    bcmcli_log("bcmolt_msg_set_alloc(BCMOLT_OBJ_ID_GPON_GEM_PORT, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, gpon_gem_port, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, gpon_gem_port, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.configuration.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_gem_port_configuration val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.configuration.direction");
+        if (cli_parm != NULL)
+        {
+            val.direction = (bcmolt_gem_port_direction) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.configuration.direction is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.configuration.type");
+        if (cli_parm != NULL)
+        {
+            val.type = (bcmolt_gem_port_type) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.configuration.type is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_gem_port, configuration, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_gem_port_configuration val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_GEM_PORT, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_GEM_PORT_CFG_ID_CONFIGURATION, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_gem_port, configuration, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "configuration");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_gem_port, configuration);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_gem_port, configuration);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.onu_id");
+    if (cli_parm != NULL)
+    {
+        bcmolt_gpon_onu_id val;
+        val = (bcmolt_gpon_onu_id) cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_gem_port, onu_id, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_gem_port, onu_id, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_GEM_PORT, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_GEM_PORT_CFG_ID_ONU_ID, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_gem_port, onu_id);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_gem_port, onu_id);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.gem_port_state");
+    if (cli_parm != NULL)
+    {
+        bcmolt_gpon_gem_port_state val;
+        val = (bcmolt_gpon_gem_port_state) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_gem_port, gem_port_state, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_gem_port, gem_port_state, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_GEM_PORT, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_GEM_PORT_CFG_ID_GEM_PORT_STATE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "gem_port_state");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_gem_port, gem_port_state);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_gem_port, gem_port_state);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.downstream_encryption_mode");
+    if (cli_parm != NULL)
+    {
+        bcmolt_control_state val;
+        val = (bcmolt_control_state) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_gem_port, downstream_encryption_mode, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_gem_port, downstream_encryption_mode, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_GEM_PORT, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_GEM_PORT_CFG_ID_DOWNSTREAM_ENCRYPTION_MODE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "downstream_encryption_mode");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_gem_port, downstream_encryption_mode);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_gem_port, downstream_encryption_mode);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.upstream_destination_queue");
+    if (cli_parm != NULL)
+    {
+        bcmolt_us_gem_port_destination val;
+        val = (bcmolt_us_gem_port_destination) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_gem_port, upstream_destination_queue, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_gem_port, upstream_destination_queue, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_GEM_PORT, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_GEM_PORT_CFG_ID_UPSTREAM_DESTINATION_QUEUE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "upstream_destination_queue");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_gem_port, upstream_destination_queue);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_gem_port, upstream_destination_queue);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.control");
+    if (cli_parm != NULL)
+    {
+        bcmolt_control_state val;
+        val = (bcmolt_control_state) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_gem_port, control, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_gem_port, control, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_GEM_PORT, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_GEM_PORT_CFG_ID_CONTROL, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "control");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_gem_port, control);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_gem_port, control);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.debug_flow_config.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_gpon_debug_flow_config val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.debug_flow_config.untagged_flow");
+        if (cli_parm != NULL)
+        {
+            val.untagged_flow = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.debug_flow_config.untagged_flow is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.debug_flow_config.untagged_vid");
+        if (cli_parm != NULL)
+        {
+            val.untagged_vid = (bcmolt_vlan_id) cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.debug_flow_config.untagged_vid is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_gem_port, debug_flow_config, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_gpon_debug_flow_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_GEM_PORT, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_GEM_PORT_CFG_ID_DEBUG_FLOW_CONFIG, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_gem_port, debug_flow_config, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "debug_flow_config");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_gem_port, debug_flow_config);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_gem_port, debug_flow_config);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.mac_table_entry_limit");
+    if (cli_parm != NULL)
+    {
+        uint16_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_gem_port, mac_table_entry_limit, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_gem_port, mac_table_entry_limit, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_GEM_PORT, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_GEM_PORT_CFG_ID_MAC_TABLE_ENTRY_LIMIT, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mac_table_entry_limit");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_gem_port, mac_table_entry_limit);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_gem_port, mac_table_entry_limit);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_gem_port, configuration) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_gem_port, onu_id) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_gem_port, gem_port_state) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_gem_port, downstream_encryption_mode) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_gem_port, upstream_destination_queue) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_gem_port, control) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_gem_port, debug_flow_config) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_gem_port, mac_table_entry_limit))
+    {
+        BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_gem_port, all_properties);
+        bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_gem_port, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);
+    bcmcli_log("bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_gem_port_stat_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_gem_port_stat stat;     /**< declare main API struct */
+    bcmolt_gpon_gem_port_key key = { }; /**< declare key */
+    bcmos_bool clear_on_read;           /**< declare 'clear on read' flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_gem_port_stat stat;\n");
+    bcmcli_log("bcmolt_gpon_gem_port_key key = {  };\n");
+    bcmcli_log("bcmos_bool clear_on_read;\n");
+    apicli_print_start(session, "bcmolt_stat_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_GEM_PORT, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_GEM_PORT_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "gem_port_id");
+    if (cli_parm != NULL)
+    {
+        key.gem_port_id = (bcmolt_gpon_gem_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "gem_port_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.gem_port_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_GEM_PORT, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_GEM_PORT_KEY_ID_GEM_PORT_ID, &key.gem_port_id);
+    bcmcli_log(";\n");
+
+    /* set stat flags from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "clear");
+    if (cli_parm != NULL)
+    {
+        clear_on_read = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "clear is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("clear_on_read = %s;\n", (clear_on_read) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* init the API struct */
+    BCMOLT_STAT_INIT(&stat, gpon_gem_port, key);
+    bcmcli_log("BCMOLT_STAT_INIT(&stat, gpon_gem_port, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "rx_packets");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_gem_port, rx_packets);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_gem_port, rx_packets);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_bytes");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_gem_port, rx_bytes);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_gem_port, rx_bytes);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_packets");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_gem_port, tx_packets);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_gem_port, tx_packets);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_bytes");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_gem_port, tx_bytes);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_gem_port, tx_bytes);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_STAT_PROP_IS_SET(&stat, gpon_gem_port, rx_packets) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_gem_port, rx_bytes) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_gem_port, tx_packets) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_gem_port, tx_bytes))
+    {
+        BCMOLT_STAT_PROP_GET(&stat, gpon_gem_port, all_properties);
+        bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_gem_port, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_stat_get(device_id, &stat.hdr, clear_on_read);
+    bcmcli_log("bcmolt_stat_get(device_id, &stat.hdr, clear_on_read);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &stat.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, stat.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_gem_port_oper_set_state_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_gem_port_set_state oper;    /**< declare main API struct */
+    bcmolt_gpon_gem_port_key key = { };     /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_gem_port_set_state oper;\n");
+    bcmcli_log("bcmolt_gpon_gem_port_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_GEM_PORT, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_GEM_PORT_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "gem_port_id");
+    if (cli_parm != NULL)
+    {
+        key.gem_port_id = (bcmolt_gpon_gem_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "gem_port_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.gem_port_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_GEM_PORT, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_GEM_PORT_KEY_ID_GEM_PORT_ID, &key.gem_port_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, gpon_gem_port, set_state, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, gpon_gem_port, set_state, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "state");
+    if (cli_parm != NULL)
+    {
+        bcmolt_gem_port_operation val;
+        val = (bcmolt_gem_port_operation) cli_parm->value.enum_val;
+        BCMOLT_OPER_PROP_SET(&oper, gpon_gem_port, set_state, state, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, gpon_gem_port, set_state, state, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_GEM_PORT, BCMOLT_MGT_GROUP_OPER, BCMOLT_GPON_GEM_PORT_OPER_ID_SET_STATE, BCMOLT_GPON_GEM_PORT_SET_STATE_ID_STATE, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_gem_port_stat_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_gem_port_stat_cfg stat_cfg; /**< declare main API struct */
+    bcmolt_gpon_gem_port_key key = { };     /**< declare key */
+    bcmolt_gpon_gem_port_stat_id stat_id;   /**< declare stat ID */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_gem_port_stat_cfg stat_cfg;\n");
+    bcmcli_log("bcmolt_gpon_gem_port_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_stat_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_GEM_PORT, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_GEM_PORT_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "gem_port_id");
+    if (cli_parm != NULL)
+    {
+        key.gem_port_id = (bcmolt_gpon_gem_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "gem_port_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.gem_port_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_GEM_PORT, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_GEM_PORT_KEY_ID_GEM_PORT_ID, &key.gem_port_id);
+    bcmcli_log(";\n");
+
+    /* set stat ID from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "sub");
+    if (cli_parm != NULL)
+    {
+        stat_id = (bcmolt_gpon_gem_port_stat_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    /* init the API struct */
+    switch (stat_id)
+    {
+        case BCMOLT_GPON_GEM_PORT_STAT_ID_RX_PACKETS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_gem_port, rx_packets, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_gem_port, rx_packets, key);\n");
+            break;
+        case BCMOLT_GPON_GEM_PORT_STAT_ID_RX_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_gem_port, rx_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_gem_port, rx_bytes, key);\n");
+            break;
+        case BCMOLT_GPON_GEM_PORT_STAT_ID_TX_PACKETS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_gem_port, tx_packets, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_gem_port, tx_packets, key);\n");
+            break;
+        case BCMOLT_GPON_GEM_PORT_STAT_ID_TX_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_gem_port, tx_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_gem_port, tx_bytes, key);\n");
+            break;
+        default:
+            apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+            return BCM_ERR_RANGE;
+    }
+
+    /* call API */
+    err = bcmolt_stat_cfg_get(device_id, &stat_cfg.hdr);
+    bcmcli_log("bcmolt_stat_cfg_get(device_id, &stat_cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &stat_cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, stat_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_gem_port_stat_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_gem_port_stat_cfg stat_cfg; /**< declare main API struct */
+    bcmolt_gpon_gem_port_key key = { };     /**< declare key */
+    bcmolt_gpon_gem_port_stat_id stat_id;   /**< declare stat ID */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_gem_port_stat_cfg stat_cfg;\n");
+    bcmcli_log("bcmolt_gpon_gem_port_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_stat_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_GEM_PORT, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_GEM_PORT_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "gem_port_id");
+    if (cli_parm != NULL)
+    {
+        key.gem_port_id = (bcmolt_gpon_gem_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "gem_port_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.gem_port_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_GEM_PORT, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_GEM_PORT_KEY_ID_GEM_PORT_ID, &key.gem_port_id);
+    bcmcli_log(";\n");
+
+    /* set stat ID from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "sub");
+    if (cli_parm != NULL)
+    {
+        stat_id = (bcmolt_gpon_gem_port_stat_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    /* init the API struct */
+    switch (stat_id)
+    {
+        case BCMOLT_GPON_GEM_PORT_STAT_ID_RX_PACKETS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_gem_port, rx_packets, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_gem_port, rx_packets, key);\n");
+            break;
+        case BCMOLT_GPON_GEM_PORT_STAT_ID_RX_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_gem_port, rx_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_gem_port, rx_bytes, key);\n");
+            break;
+        case BCMOLT_GPON_GEM_PORT_STAT_ID_TX_PACKETS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_gem_port, tx_packets, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_gem_port, tx_packets, key);\n");
+            break;
+        case BCMOLT_GPON_GEM_PORT_STAT_ID_TX_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_gem_port, tx_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_gem_port, tx_bytes, key);\n");
+            break;
+        default:
+            apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+            return BCM_ERR_RANGE;
+    }
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_stat_alarm_config val = { };
+        cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.trigger.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.type");
+            if (cli_parm != NULL)
+            {
+                val.trigger.type = (bcmolt_stat_condition_type) cli_parm->value.enum_val;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.type is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            switch (val.trigger.type)
+            {
+                case BCMOLT_STAT_CONDITION_TYPE_RATE_THRESHOLD:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.rising");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_threshold.rising = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.rising is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.falling");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_threshold.falling = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.falling is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_RATE_RANGE:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.upper");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_range.upper = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.upper is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.lower");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_range.lower = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.lower is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_VALUE_THRESHOLD:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.limit");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.value_threshold.limit = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.limit is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_NONE:
+                    break;
+                default:
+                    apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+                    return BCM_ERR_RANGE;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.soak.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "cfg.soak.active_soak_time");
+            if (cli_parm != NULL)
+            {
+                val.soak.active_soak_time = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak.active_soak_time is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "cfg.soak.clear_soak_time");
+            if (cli_parm != NULL)
+            {
+                val.soak.clear_soak_time = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak.clear_soak_time is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_STAT_CFG_PROP_SET(&stat_cfg, gpon_gem_port, cfg, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_stat_alarm_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_GEM_PORT, BCMOLT_MGT_GROUP_STAT_CFG, 0, BCMOLT_GPON_GEM_PORT_STAT_CFG_ID_CFG, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_STAT_CFG_PROP_SET(&stat_cfg, gpon_gem_port, cfg, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    /* call API */
+    err = bcmolt_stat_cfg_set(device_id, &stat_cfg.hdr);
+    bcmcli_log("bcmolt_stat_cfg_set(device_id, &stat_cfg.hdr);\n");
+    apicli_print_complete(session, err, stat_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_gem_port_auto_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_gem_port_auto_cfg auto_cfg; /**< declare main API struct */
+    bcmolt_gpon_gem_port_key key = { };     /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_gem_port_auto_cfg auto_cfg;\n");
+    bcmcli_log("bcmolt_gpon_gem_port_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_auto_cfg_get");
+
+    /* init the API struct */
+    BCMOLT_AUTO_CFG_INIT(&auto_cfg, gpon_gem_port, key);
+    bcmcli_log("BCMOLT_AUTO_CFG_INIT(&auto_cfg, gpon_gem_port, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "configuration_completed");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_gem_port, configuration_completed);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_gem_port, configuration_completed);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_cleared");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_gem_port, stat_alarm_cleared);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_gem_port, stat_alarm_cleared);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_raised");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_gem_port, stat_alarm_raised);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_gem_port, stat_alarm_raised);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_gem_port, configuration_completed) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_gem_port, stat_alarm_cleared) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_gem_port, stat_alarm_raised))
+    {
+        BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_gem_port, all_properties);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_gem_port, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_auto_cfg_get(device_id, &auto_cfg.hdr);
+    bcmcli_log("bcmolt_auto_cfg_get(device_id, &auto_cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &auto_cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, auto_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_gem_port_auto_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_gem_port_auto_cfg auto_cfg; /**< declare main API struct */
+    bcmolt_gpon_gem_port_key key = { };     /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_gem_port_auto_cfg auto_cfg;\n");
+    bcmcli_log("bcmolt_gpon_gem_port_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_auto_cfg_set");
+
+    /* init the API struct */
+    BCMOLT_AUTO_CFG_INIT(&auto_cfg, gpon_gem_port, key);
+    bcmcli_log("BCMOLT_AUTO_CFG_INIT(&auto_cfg, gpon_gem_port, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "configuration_completed");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_gem_port, configuration_completed, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_gem_port, configuration_completed, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_GEM_PORT, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_GEM_PORT_AUTO_CFG_ID_CONFIGURATION_COMPLETED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_cleared");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_gem_port, stat_alarm_cleared, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_gem_port, stat_alarm_cleared, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_GEM_PORT, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_GEM_PORT_AUTO_CFG_ID_STAT_ALARM_CLEARED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_raised");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_gem_port, stat_alarm_raised, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_gem_port, stat_alarm_raised, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_GEM_PORT, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_GEM_PORT_AUTO_CFG_ID_STAT_ALARM_RAISED, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_auto_cfg_set(device_id, &auto_cfg.hdr);
+    bcmcli_log("bcmolt_auto_cfg_set(device_id, &auto_cfg.hdr);\n");
+    apicli_print_complete(session, err, auto_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_iwf_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_iwf_cfg cfg;        /**< declare main API struct */
+    bcmolt_gpon_iwf_key key = { };  /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_iwf_cfg cfg;\n");
+    bcmcli_log("bcmolt_gpon_iwf_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_IWF_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, gpon_iwf, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, gpon_iwf, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "iwf_mode");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf, iwf_mode);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf, iwf_mode);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "us_tpid_per_flow");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf, us_tpid_per_flow);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf, us_tpid_per_flow);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "us_otag_direct_tpid");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf, us_otag_direct_tpid);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf, us_otag_direct_tpid);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "us_otag_direct_pbit");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf, us_otag_direct_pbit);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf, us_otag_direct_pbit);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ds_tpid");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf, ds_tpid);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf, ds_tpid);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mac_table_configuration");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf, mac_table_configuration);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf, mac_table_configuration);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "debug_flow_configuration");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf, debug_flow_configuration);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf, debug_flow_configuration);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mac_table_count");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf, mac_table_count);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf, mac_table_count);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "forbidden_vlan_flow_gem_range_start");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf, forbidden_vlan_flow_gem_range_start);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf, forbidden_vlan_flow_gem_range_start);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_iwf, iwf_mode) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_iwf, us_tpid_per_flow) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_iwf, us_otag_direct_tpid) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_iwf, us_otag_direct_pbit) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_iwf, ds_tpid) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_iwf, mac_table_configuration) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_iwf, debug_flow_configuration) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_iwf, mac_table_count) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_iwf, forbidden_vlan_flow_gem_range_start))
+    {
+        BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf, all_properties);
+        bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_get(device_id, &cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_iwf_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_iwf_cfg cfg;        /**< declare main API struct */
+    bcmolt_gpon_iwf_key key = { };  /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_iwf_cfg cfg;\n");
+    bcmcli_log("bcmolt_gpon_iwf_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_IWF_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, gpon_iwf, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, gpon_iwf, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "iwf_mode");
+    if (cli_parm != NULL)
+    {
+        bcmolt_iwf_mode val;
+        val = (bcmolt_iwf_mode) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf, iwf_mode, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf, iwf_mode, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_IWF_CFG_ID_IWF_MODE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "us_tpid_per_flow.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_arr_u16_2_hex val = { };
+        cli_parm = bcmcli_find_named_parm(session, "us_tpid_per_flow.arr");
+        if (cli_parm != NULL)
+        {
+            int32_t i0;
+            if (cli_parm->array_size != 2)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "array us_tpid_per_flow.arr must have 2 elements\n");
+                return BCM_ERR_PARM;
+            }
+
+            for (i0 = 0; i0 < 2; i0++)
+            {
+                val.arr[i0] = cli_parm->values[i0].unumber;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "us_tpid_per_flow.arr is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf, us_tpid_per_flow, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_arr_u16_2_hex val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_IWF_CFG_ID_US_TPID_PER_FLOW, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf, us_tpid_per_flow, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "us_otag_direct_tpid");
+    if (cli_parm != NULL)
+    {
+        uint16_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf, us_otag_direct_tpid, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf, us_otag_direct_tpid, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_IWF_CFG_ID_US_OTAG_DIRECT_TPID, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "us_otag_direct_pbit");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf, us_otag_direct_pbit, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf, us_otag_direct_pbit, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_IWF_CFG_ID_US_OTAG_DIRECT_PBIT, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "ds_tpid.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_arr_u16_5_hex val = { };
+        cli_parm = bcmcli_find_named_parm(session, "ds_tpid.arr");
+        if (cli_parm != NULL)
+        {
+            int32_t i1;
+            if (cli_parm->array_size != 5)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "array ds_tpid.arr must have 5 elements\n");
+                return BCM_ERR_PARM;
+            }
+
+            for (i1 = 0; i1 < 5; i1++)
+            {
+                val.arr[i1] = cli_parm->values[i1].unumber;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "ds_tpid.arr is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf, ds_tpid, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_arr_u16_5_hex val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_IWF_CFG_ID_DS_TPID, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf, ds_tpid, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "mac_table_configuration.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_mac_table_configuration val = { };
+        cli_parm = bcmcli_find_named_parm(session, "mac_table_configuration.miss_fallback");
+        if (cli_parm != NULL)
+        {
+            val.miss_fallback = (bcmolt_mac_table_miss_fallback) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "mac_table_configuration.miss_fallback is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "mac_table_configuration.default_flow_id");
+        if (cli_parm != NULL)
+        {
+            val.default_flow_id = (bcmolt_flow_id) cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "mac_table_configuration.default_flow_id is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "mac_table_configuration.aging_time");
+        if (cli_parm != NULL)
+        {
+            val.aging_time = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "mac_table_configuration.aging_time is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "mac_table_configuration.learning_mode");
+        if (cli_parm != NULL)
+        {
+            val.learning_mode = (bcmolt_mac_table_learning_mode) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "mac_table_configuration.learning_mode is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "mac_table_configuration.automatic_mac_learning");
+        if (cli_parm != NULL)
+        {
+            val.automatic_mac_learning = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "mac_table_configuration.automatic_mac_learning is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "mac_table_configuration.automatic_mac_aging");
+        if (cli_parm != NULL)
+        {
+            val.automatic_mac_aging = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "mac_table_configuration.automatic_mac_aging is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "mac_table_configuration.automatic_mac_move");
+        if (cli_parm != NULL)
+        {
+            val.automatic_mac_move = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "mac_table_configuration.automatic_mac_move is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "mac_table_configuration.automatic_static_mode");
+        if (cli_parm != NULL)
+        {
+            val.automatic_static_mode = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "mac_table_configuration.automatic_static_mode is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf, mac_table_configuration, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_mac_table_configuration val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_IWF_CFG_ID_MAC_TABLE_CONFIGURATION, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf, mac_table_configuration, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "debug_flow_configuration.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_gpon_iwf_debug_flow_config val = { };
+        cli_parm = bcmcli_find_named_parm(session, "debug_flow_configuration.learn_untagged_flow_vids");
+        if (cli_parm != NULL)
+        {
+            val.learn_untagged_flow_vids = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "debug_flow_configuration.learn_untagged_flow_vids is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "debug_flow_configuration.untagged_flow_shaping_ms_per_sec");
+        if (cli_parm != NULL)
+        {
+            val.untagged_flow_shaping_ms_per_sec = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "debug_flow_configuration.untagged_flow_shaping_ms_per_sec is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf, debug_flow_configuration, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_gpon_iwf_debug_flow_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_IWF_CFG_ID_DEBUG_FLOW_CONFIGURATION, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf, debug_flow_configuration, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "forbidden_vlan_flow_gem_range_start");
+    if (cli_parm != NULL)
+    {
+        uint16_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf, forbidden_vlan_flow_gem_range_start, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf, forbidden_vlan_flow_gem_range_start, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_IWF_CFG_ID_FORBIDDEN_VLAN_FLOW_GEM_RANGE_START, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_set(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_set(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_iwf_cfg_clear(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_iwf_cfg cfg;        /**< declare main API struct */
+    bcmolt_gpon_iwf_key key = { };  /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_iwf_cfg cfg;\n");
+    bcmcli_log("bcmolt_gpon_iwf_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_clear");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_IWF_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, gpon_iwf, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, gpon_iwf, key);\n");
+
+    /* call API */
+    err = bcmolt_cfg_clear(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_clear(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_iwf_cfg_get_multi(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_iwf_cfg cfg;        /**< declare main API struct */
+    bcmolt_gpon_iwf_key key = { };  /**< declare key */
+    bcmolt_msg_set *msg_set = NULL; /**< declare message set */
+    uint32_t max_msgs;              /**< declare max number of msgs to get */
+    bcmos_bool invert_filter;       /**< declare filter invert flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_iwf_cfg cfg;\n");
+    bcmcli_log("bcmolt_gpon_iwf_key key = {  };\n");
+    bcmcli_log("bcmolt_msg_set* msg_set = NULL;\n");
+    bcmcli_log("uint32_t max_msgs;\n");
+    bcmcli_log("bcmos_bool invert_filter;\n");
+    apicli_print_start(session, "bcmolt_cfg_get_multi");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_IWF_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* set max number of msgs from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "max_msgs");
+    if (cli_parm != NULL)
+    {
+        max_msgs = cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "max_msgs is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("max_msgs = %d;\n", max_msgs);
+
+    /* set filter invert flag from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "filter_invert");
+    if (cli_parm != NULL)
+    {
+        invert_filter = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "filter_invert is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("invert_filter = %s;\n", (invert_filter) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* allocate message set */
+    err = apicli_msg_set_alloc(byte_pool, BCMOLT_OBJ_ID_GPON_IWF, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);
+    if (err != BCM_ERR_OK)
+    {
+        return err;
+    }
+
+    bcmcli_log("bcmolt_msg_set_alloc(BCMOLT_OBJ_ID_GPON_IWF, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, gpon_iwf, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, gpon_iwf, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "filter.iwf_mode");
+    if (cli_parm != NULL)
+    {
+        bcmolt_iwf_mode val;
+        val = (bcmolt_iwf_mode) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf, iwf_mode, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf, iwf_mode, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_IWF_CFG_ID_IWF_MODE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "iwf_mode");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf, iwf_mode);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf, iwf_mode);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.us_tpid_per_flow.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_arr_u16_2_hex val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.us_tpid_per_flow.arr");
+        if (cli_parm != NULL)
+        {
+            int32_t i0;
+            if (cli_parm->array_size != 2)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "array filter.us_tpid_per_flow.arr must have 2 elements\n");
+                return BCM_ERR_PARM;
+            }
+
+            for (i0 = 0; i0 < 2; i0++)
+            {
+                val.arr[i0] = cli_parm->values[i0].unumber;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.us_tpid_per_flow.arr is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf, us_tpid_per_flow, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_arr_u16_2_hex val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_IWF_CFG_ID_US_TPID_PER_FLOW, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf, us_tpid_per_flow, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "us_tpid_per_flow");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf, us_tpid_per_flow);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf, us_tpid_per_flow);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.us_otag_direct_tpid");
+    if (cli_parm != NULL)
+    {
+        uint16_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf, us_otag_direct_tpid, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf, us_otag_direct_tpid, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_IWF_CFG_ID_US_OTAG_DIRECT_TPID, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "us_otag_direct_tpid");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf, us_otag_direct_tpid);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf, us_otag_direct_tpid);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.us_otag_direct_pbit");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf, us_otag_direct_pbit, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf, us_otag_direct_pbit, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_IWF_CFG_ID_US_OTAG_DIRECT_PBIT, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "us_otag_direct_pbit");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf, us_otag_direct_pbit);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf, us_otag_direct_pbit);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.ds_tpid.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_arr_u16_5_hex val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.ds_tpid.arr");
+        if (cli_parm != NULL)
+        {
+            int32_t i1;
+            if (cli_parm->array_size != 5)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "array filter.ds_tpid.arr must have 5 elements\n");
+                return BCM_ERR_PARM;
+            }
+
+            for (i1 = 0; i1 < 5; i1++)
+            {
+                val.arr[i1] = cli_parm->values[i1].unumber;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.ds_tpid.arr is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf, ds_tpid, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_arr_u16_5_hex val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_IWF_CFG_ID_DS_TPID, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf, ds_tpid, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ds_tpid");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf, ds_tpid);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf, ds_tpid);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.mac_table_configuration.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_mac_table_configuration val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.mac_table_configuration.miss_fallback");
+        if (cli_parm != NULL)
+        {
+            val.miss_fallback = (bcmolt_mac_table_miss_fallback) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.mac_table_configuration.miss_fallback is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.mac_table_configuration.default_flow_id");
+        if (cli_parm != NULL)
+        {
+            val.default_flow_id = (bcmolt_flow_id) cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.mac_table_configuration.default_flow_id is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.mac_table_configuration.aging_time");
+        if (cli_parm != NULL)
+        {
+            val.aging_time = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.mac_table_configuration.aging_time is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.mac_table_configuration.learning_mode");
+        if (cli_parm != NULL)
+        {
+            val.learning_mode = (bcmolt_mac_table_learning_mode) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.mac_table_configuration.learning_mode is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.mac_table_configuration.automatic_mac_learning");
+        if (cli_parm != NULL)
+        {
+            val.automatic_mac_learning = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.mac_table_configuration.automatic_mac_learning is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.mac_table_configuration.automatic_mac_aging");
+        if (cli_parm != NULL)
+        {
+            val.automatic_mac_aging = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.mac_table_configuration.automatic_mac_aging is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.mac_table_configuration.automatic_mac_move");
+        if (cli_parm != NULL)
+        {
+            val.automatic_mac_move = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.mac_table_configuration.automatic_mac_move is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.mac_table_configuration.automatic_static_mode");
+        if (cli_parm != NULL)
+        {
+            val.automatic_static_mode = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.mac_table_configuration.automatic_static_mode is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf, mac_table_configuration, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_mac_table_configuration val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_IWF_CFG_ID_MAC_TABLE_CONFIGURATION, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf, mac_table_configuration, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mac_table_configuration");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf, mac_table_configuration);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf, mac_table_configuration);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.debug_flow_configuration.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_gpon_iwf_debug_flow_config val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.debug_flow_configuration.learn_untagged_flow_vids");
+        if (cli_parm != NULL)
+        {
+            val.learn_untagged_flow_vids = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.debug_flow_configuration.learn_untagged_flow_vids is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.debug_flow_configuration.untagged_flow_shaping_ms_per_sec");
+        if (cli_parm != NULL)
+        {
+            val.untagged_flow_shaping_ms_per_sec = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.debug_flow_configuration.untagged_flow_shaping_ms_per_sec is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf, debug_flow_configuration, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_gpon_iwf_debug_flow_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_IWF_CFG_ID_DEBUG_FLOW_CONFIGURATION, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf, debug_flow_configuration, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "debug_flow_configuration");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf, debug_flow_configuration);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf, debug_flow_configuration);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.mac_table_count");
+    if (cli_parm != NULL)
+    {
+        uint16_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf, mac_table_count, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf, mac_table_count, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_IWF_CFG_ID_MAC_TABLE_COUNT, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mac_table_count");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf, mac_table_count);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf, mac_table_count);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.forbidden_vlan_flow_gem_range_start");
+    if (cli_parm != NULL)
+    {
+        uint16_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf, forbidden_vlan_flow_gem_range_start, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf, forbidden_vlan_flow_gem_range_start, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_IWF_CFG_ID_FORBIDDEN_VLAN_FLOW_GEM_RANGE_START, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "forbidden_vlan_flow_gem_range_start");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf, forbidden_vlan_flow_gem_range_start);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf, forbidden_vlan_flow_gem_range_start);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_iwf, iwf_mode) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_iwf, us_tpid_per_flow) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_iwf, us_otag_direct_tpid) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_iwf, us_otag_direct_pbit) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_iwf, ds_tpid) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_iwf, mac_table_configuration) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_iwf, debug_flow_configuration) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_iwf, mac_table_count) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_iwf, forbidden_vlan_flow_gem_range_start))
+    {
+        BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf, all_properties);
+        bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);
+    bcmcli_log("bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_iwf_stat_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_iwf_stat stat;      /**< declare main API struct */
+    bcmolt_gpon_iwf_key key = { };  /**< declare key */
+    bcmos_bool clear_on_read;       /**< declare 'clear on read' flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_iwf_stat stat;\n");
+    bcmcli_log("bcmolt_gpon_iwf_key key = {  };\n");
+    bcmcli_log("bcmos_bool clear_on_read;\n");
+    apicli_print_start(session, "bcmolt_stat_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_IWF_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* set stat flags from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "clear");
+    if (cli_parm != NULL)
+    {
+        clear_on_read = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "clear is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("clear_on_read = %s;\n", (clear_on_read) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* init the API struct */
+    BCMOLT_STAT_INIT(&stat, gpon_iwf, key);
+    bcmcli_log("BCMOLT_STAT_INIT(&stat, gpon_iwf, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "ds_hit_event");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_iwf, ds_hit_event);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_iwf, ds_hit_event);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ds_miss_event");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_iwf, ds_miss_event);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_iwf, ds_miss_event);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ds_drop_due_to_miss_event");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_iwf, ds_drop_due_to_miss_event);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_iwf, ds_drop_due_to_miss_event);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ds_drop_due_to_hit_event");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_iwf, ds_drop_due_to_hit_event);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_iwf, ds_drop_due_to_hit_event);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ds_drop_to_disabled_gem");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_iwf, ds_drop_to_disabled_gem);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_iwf, ds_drop_to_disabled_gem);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "new_mac_discovered");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_iwf, new_mac_discovered);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_iwf, new_mac_discovered);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "move_event");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_iwf, move_event);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_iwf, move_event);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "new_mac_drop_due_to_fifo_full");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_iwf, new_mac_drop_due_to_fifo_full);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_iwf, new_mac_drop_due_to_fifo_full);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_STAT_PROP_IS_SET(&stat, gpon_iwf, ds_hit_event) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_iwf, ds_miss_event) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_iwf, ds_drop_due_to_miss_event) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_iwf, ds_drop_due_to_hit_event) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_iwf, ds_drop_to_disabled_gem) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_iwf, new_mac_discovered) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_iwf, move_event) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_iwf, new_mac_drop_due_to_fifo_full))
+    {
+        BCMOLT_STAT_PROP_GET(&stat, gpon_iwf, all_properties);
+        bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_iwf, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_stat_get(device_id, &stat.hdr, clear_on_read);
+    bcmcli_log("bcmolt_stat_get(device_id, &stat.hdr, clear_on_read);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &stat.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, stat.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_iwf_oper_flush_mac_table_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_iwf_flush_mac_table oper;   /**< declare main API struct */
+    bcmolt_gpon_iwf_key key = { };          /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_iwf_flush_mac_table oper;\n");
+    bcmcli_log("bcmolt_gpon_iwf_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_IWF_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, gpon_iwf, flush_mac_table, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, gpon_iwf, flush_mac_table, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "control");
+    if (cli_parm != NULL)
+    {
+        bcmolt_flush_mac_table_option val;
+        val = (bcmolt_flush_mac_table_option) cli_parm->value.enum_val;
+        BCMOLT_OPER_PROP_SET(&oper, gpon_iwf, flush_mac_table, control, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, gpon_iwf, flush_mac_table, control, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF, BCMOLT_MGT_GROUP_OPER, BCMOLT_GPON_IWF_OPER_ID_FLUSH_MAC_TABLE, BCMOLT_GPON_IWF_FLUSH_MAC_TABLE_ID_CONTROL, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "vid");
+    if (cli_parm != NULL)
+    {
+        bcmolt_vlan_id val;
+        val = (bcmolt_vlan_id) cli_parm->value.unumber;
+        BCMOLT_OPER_PROP_SET(&oper, gpon_iwf, flush_mac_table, vid, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, gpon_iwf, flush_mac_table, vid, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF, BCMOLT_MGT_GROUP_OPER, BCMOLT_GPON_IWF_OPER_ID_FLUSH_MAC_TABLE, BCMOLT_GPON_IWF_FLUSH_MAC_TABLE_ID_VID, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "flow_id");
+    if (cli_parm != NULL)
+    {
+        bcmolt_flow_id val;
+        val = (bcmolt_flow_id) cli_parm->value.unumber;
+        BCMOLT_OPER_PROP_SET(&oper, gpon_iwf, flush_mac_table, flow_id, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, gpon_iwf, flush_mac_table, flow_id, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF, BCMOLT_MGT_GROUP_OPER, BCMOLT_GPON_IWF_OPER_ID_FLUSH_MAC_TABLE, BCMOLT_GPON_IWF_FLUSH_MAC_TABLE_ID_FLOW_ID, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_iwf_oper_scan_mac_table_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_iwf_scan_mac_table oper;    /**< declare main API struct */
+    bcmolt_gpon_iwf_key key = { };          /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_iwf_scan_mac_table oper;\n");
+    bcmcli_log("bcmolt_gpon_iwf_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_IWF_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, gpon_iwf, scan_mac_table, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, gpon_iwf, scan_mac_table, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "mac_address");
+    if (cli_parm != NULL)
+    {
+        bcmos_mac_address val;
+        val = cli_parm->value.mac;
+        BCMOLT_OPER_PROP_SET(&oper, gpon_iwf, scan_mac_table, mac_address, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, gpon_iwf, scan_mac_table, mac_address, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF, BCMOLT_MGT_GROUP_OPER, BCMOLT_GPON_IWF_OPER_ID_SCAN_MAC_TABLE, BCMOLT_GPON_IWF_SCAN_MAC_TABLE_ID_MAC_ADDRESS, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_iwf_stat_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_iwf_stat_cfg stat_cfg;  /**< declare main API struct */
+    bcmolt_gpon_iwf_key key = { };      /**< declare key */
+    bcmolt_gpon_iwf_stat_id stat_id;    /**< declare stat ID */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_iwf_stat_cfg stat_cfg;\n");
+    bcmcli_log("bcmolt_gpon_iwf_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_stat_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_IWF_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* set stat ID from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "sub");
+    if (cli_parm != NULL)
+    {
+        stat_id = (bcmolt_gpon_iwf_stat_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    /* init the API struct */
+    switch (stat_id)
+    {
+        case BCMOLT_GPON_IWF_STAT_ID_DS_HIT_EVENT:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_iwf, ds_hit_event, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_iwf, ds_hit_event, key);\n");
+            break;
+        case BCMOLT_GPON_IWF_STAT_ID_DS_MISS_EVENT:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_iwf, ds_miss_event, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_iwf, ds_miss_event, key);\n");
+            break;
+        case BCMOLT_GPON_IWF_STAT_ID_DS_DROP_DUE_TO_MISS_EVENT:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_iwf, ds_drop_due_to_miss_event, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_iwf, ds_drop_due_to_miss_event, key);\n");
+            break;
+        case BCMOLT_GPON_IWF_STAT_ID_DS_DROP_DUE_TO_HIT_EVENT:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_iwf, ds_drop_due_to_hit_event, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_iwf, ds_drop_due_to_hit_event, key);\n");
+            break;
+        case BCMOLT_GPON_IWF_STAT_ID_DS_DROP_TO_DISABLED_GEM:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_iwf, ds_drop_to_disabled_gem, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_iwf, ds_drop_to_disabled_gem, key);\n");
+            break;
+        case BCMOLT_GPON_IWF_STAT_ID_NEW_MAC_DISCOVERED:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_iwf, new_mac_discovered, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_iwf, new_mac_discovered, key);\n");
+            break;
+        case BCMOLT_GPON_IWF_STAT_ID_MOVE_EVENT:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_iwf, move_event, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_iwf, move_event, key);\n");
+            break;
+        case BCMOLT_GPON_IWF_STAT_ID_NEW_MAC_DROP_DUE_TO_FIFO_FULL:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_iwf, new_mac_drop_due_to_fifo_full, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_iwf, new_mac_drop_due_to_fifo_full, key);\n");
+            break;
+        default:
+            apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+            return BCM_ERR_RANGE;
+    }
+
+    /* call API */
+    err = bcmolt_stat_cfg_get(device_id, &stat_cfg.hdr);
+    bcmcli_log("bcmolt_stat_cfg_get(device_id, &stat_cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &stat_cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, stat_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_iwf_stat_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_iwf_stat_cfg stat_cfg;  /**< declare main API struct */
+    bcmolt_gpon_iwf_key key = { };      /**< declare key */
+    bcmolt_gpon_iwf_stat_id stat_id;    /**< declare stat ID */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_iwf_stat_cfg stat_cfg;\n");
+    bcmcli_log("bcmolt_gpon_iwf_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_stat_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_IWF_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* set stat ID from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "sub");
+    if (cli_parm != NULL)
+    {
+        stat_id = (bcmolt_gpon_iwf_stat_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    /* init the API struct */
+    switch (stat_id)
+    {
+        case BCMOLT_GPON_IWF_STAT_ID_DS_HIT_EVENT:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_iwf, ds_hit_event, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_iwf, ds_hit_event, key);\n");
+            break;
+        case BCMOLT_GPON_IWF_STAT_ID_DS_MISS_EVENT:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_iwf, ds_miss_event, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_iwf, ds_miss_event, key);\n");
+            break;
+        case BCMOLT_GPON_IWF_STAT_ID_DS_DROP_DUE_TO_MISS_EVENT:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_iwf, ds_drop_due_to_miss_event, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_iwf, ds_drop_due_to_miss_event, key);\n");
+            break;
+        case BCMOLT_GPON_IWF_STAT_ID_DS_DROP_DUE_TO_HIT_EVENT:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_iwf, ds_drop_due_to_hit_event, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_iwf, ds_drop_due_to_hit_event, key);\n");
+            break;
+        case BCMOLT_GPON_IWF_STAT_ID_DS_DROP_TO_DISABLED_GEM:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_iwf, ds_drop_to_disabled_gem, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_iwf, ds_drop_to_disabled_gem, key);\n");
+            break;
+        case BCMOLT_GPON_IWF_STAT_ID_NEW_MAC_DISCOVERED:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_iwf, new_mac_discovered, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_iwf, new_mac_discovered, key);\n");
+            break;
+        case BCMOLT_GPON_IWF_STAT_ID_MOVE_EVENT:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_iwf, move_event, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_iwf, move_event, key);\n");
+            break;
+        case BCMOLT_GPON_IWF_STAT_ID_NEW_MAC_DROP_DUE_TO_FIFO_FULL:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_iwf, new_mac_drop_due_to_fifo_full, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_iwf, new_mac_drop_due_to_fifo_full, key);\n");
+            break;
+        default:
+            apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+            return BCM_ERR_RANGE;
+    }
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_stat_alarm_config val = { };
+        cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.trigger.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.type");
+            if (cli_parm != NULL)
+            {
+                val.trigger.type = (bcmolt_stat_condition_type) cli_parm->value.enum_val;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.type is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            switch (val.trigger.type)
+            {
+                case BCMOLT_STAT_CONDITION_TYPE_RATE_THRESHOLD:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.rising");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_threshold.rising = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.rising is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.falling");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_threshold.falling = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.falling is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_RATE_RANGE:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.upper");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_range.upper = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.upper is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.lower");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_range.lower = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.lower is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_VALUE_THRESHOLD:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.limit");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.value_threshold.limit = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.limit is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_NONE:
+                    break;
+                default:
+                    apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+                    return BCM_ERR_RANGE;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.soak.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "cfg.soak.active_soak_time");
+            if (cli_parm != NULL)
+            {
+                val.soak.active_soak_time = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak.active_soak_time is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "cfg.soak.clear_soak_time");
+            if (cli_parm != NULL)
+            {
+                val.soak.clear_soak_time = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak.clear_soak_time is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_STAT_CFG_PROP_SET(&stat_cfg, gpon_iwf, cfg, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_stat_alarm_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF, BCMOLT_MGT_GROUP_STAT_CFG, 0, BCMOLT_GPON_IWF_STAT_CFG_ID_CFG, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_STAT_CFG_PROP_SET(&stat_cfg, gpon_iwf, cfg, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    /* call API */
+    err = bcmolt_stat_cfg_set(device_id, &stat_cfg.hdr);
+    bcmcli_log("bcmolt_stat_cfg_set(device_id, &stat_cfg.hdr);\n");
+    apicli_print_complete(session, err, stat_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_iwf_auto_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_iwf_auto_cfg auto_cfg;  /**< declare main API struct */
+    bcmolt_gpon_iwf_key key = { };      /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_iwf_auto_cfg auto_cfg;\n");
+    bcmcli_log("bcmolt_gpon_iwf_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_auto_cfg_get");
+
+    /* init the API struct */
+    BCMOLT_AUTO_CFG_INIT(&auto_cfg, gpon_iwf, key);
+    bcmcli_log("BCMOLT_AUTO_CFG_INIT(&auto_cfg, gpon_iwf, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "flush_mac_table_completed");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_iwf, flush_mac_table_completed);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_iwf, flush_mac_table_completed);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "scan_mac_table_completed");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_iwf, scan_mac_table_completed);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_iwf, scan_mac_table_completed);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_cleared");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_iwf, stat_alarm_cleared);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_iwf, stat_alarm_cleared);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_raised");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_iwf, stat_alarm_raised);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_iwf, stat_alarm_raised);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_iwf, flush_mac_table_completed) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_iwf, scan_mac_table_completed) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_iwf, stat_alarm_cleared) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_iwf, stat_alarm_raised))
+    {
+        BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_iwf, all_properties);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_iwf, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_auto_cfg_get(device_id, &auto_cfg.hdr);
+    bcmcli_log("bcmolt_auto_cfg_get(device_id, &auto_cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &auto_cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, auto_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_iwf_auto_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_iwf_auto_cfg auto_cfg;  /**< declare main API struct */
+    bcmolt_gpon_iwf_key key = { };      /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_iwf_auto_cfg auto_cfg;\n");
+    bcmcli_log("bcmolt_gpon_iwf_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_auto_cfg_set");
+
+    /* init the API struct */
+    BCMOLT_AUTO_CFG_INIT(&auto_cfg, gpon_iwf, key);
+    bcmcli_log("BCMOLT_AUTO_CFG_INIT(&auto_cfg, gpon_iwf, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "flush_mac_table_completed");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_iwf, flush_mac_table_completed, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_iwf, flush_mac_table_completed, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_IWF_AUTO_CFG_ID_FLUSH_MAC_TABLE_COMPLETED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "scan_mac_table_completed");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_iwf, scan_mac_table_completed, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_iwf, scan_mac_table_completed, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_IWF_AUTO_CFG_ID_SCAN_MAC_TABLE_COMPLETED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_cleared");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_iwf, stat_alarm_cleared, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_iwf, stat_alarm_cleared, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_IWF_AUTO_CFG_ID_STAT_ALARM_CLEARED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_raised");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_iwf, stat_alarm_raised, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_iwf, stat_alarm_raised, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_IWF_AUTO_CFG_ID_STAT_ALARM_RAISED, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_auto_cfg_set(device_id, &auto_cfg.hdr);
+    bcmcli_log("bcmolt_auto_cfg_set(device_id, &auto_cfg.hdr);\n");
+    apicli_print_complete(session, err, auto_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_iwf_ds_egress_flow_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_iwf_ds_egress_flow_cfg cfg;         /**< declare main API struct */
+    bcmolt_gpon_iwf_ds_egress_flow_key key = { };   /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_iwf_ds_egress_flow_cfg cfg;\n");
+    bcmcli_log("bcmolt_gpon_iwf_ds_egress_flow_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_DS_EGRESS_FLOW, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_IWF_DS_EGRESS_FLOW_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "flow_id");
+    if (cli_parm != NULL)
+    {
+        key.flow_id = (bcmolt_flow_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "flow_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.flow_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_DS_EGRESS_FLOW, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_IWF_DS_EGRESS_FLOW_KEY_ID_FLOW_ID, &key.flow_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, gpon_iwf_ds_egress_flow, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, gpon_iwf_ds_egress_flow, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "gem_port");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf_ds_egress_flow, gem_port);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf_ds_egress_flow, gem_port);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "pbit_control");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf_ds_egress_flow, pbit_control);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf_ds_egress_flow, pbit_control);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_iwf_ds_egress_flow, gem_port) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_iwf_ds_egress_flow, pbit_control))
+    {
+        BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf_ds_egress_flow, all_properties);
+        bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf_ds_egress_flow, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_get(device_id, &cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_iwf_ds_egress_flow_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_iwf_ds_egress_flow_cfg cfg;         /**< declare main API struct */
+    bcmolt_gpon_iwf_ds_egress_flow_key key = { };   /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_iwf_ds_egress_flow_cfg cfg;\n");
+    bcmcli_log("bcmolt_gpon_iwf_ds_egress_flow_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_DS_EGRESS_FLOW, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_IWF_DS_EGRESS_FLOW_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "flow_id");
+    if (cli_parm != NULL)
+    {
+        key.flow_id = (bcmolt_flow_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "flow_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.flow_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_DS_EGRESS_FLOW, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_IWF_DS_EGRESS_FLOW_KEY_ID_FLOW_ID, &key.flow_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, gpon_iwf_ds_egress_flow, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, gpon_iwf_ds_egress_flow, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "gem_port");
+    if (cli_parm != NULL)
+    {
+        bcmolt_gpon_gem_id val;
+        val = (bcmolt_gpon_gem_id) cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf_ds_egress_flow, gem_port, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf_ds_egress_flow, gem_port, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_DS_EGRESS_FLOW, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_IWF_DS_EGRESS_FLOW_CFG_ID_GEM_PORT, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "pbit_control");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf_ds_egress_flow, pbit_control, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf_ds_egress_flow, pbit_control, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_DS_EGRESS_FLOW, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_IWF_DS_EGRESS_FLOW_CFG_ID_PBIT_CONTROL, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_set(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_set(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_iwf_ds_egress_flow_cfg_clear(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_iwf_ds_egress_flow_cfg cfg;         /**< declare main API struct */
+    bcmolt_gpon_iwf_ds_egress_flow_key key = { };   /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_iwf_ds_egress_flow_cfg cfg;\n");
+    bcmcli_log("bcmolt_gpon_iwf_ds_egress_flow_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_clear");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_DS_EGRESS_FLOW, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_IWF_DS_EGRESS_FLOW_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "flow_id");
+    if (cli_parm != NULL)
+    {
+        key.flow_id = (bcmolt_flow_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "flow_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.flow_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_DS_EGRESS_FLOW, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_IWF_DS_EGRESS_FLOW_KEY_ID_FLOW_ID, &key.flow_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, gpon_iwf_ds_egress_flow, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, gpon_iwf_ds_egress_flow, key);\n");
+
+    /* call API */
+    err = bcmolt_cfg_clear(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_clear(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_iwf_ds_egress_flow_cfg_get_multi(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_iwf_ds_egress_flow_cfg cfg;         /**< declare main API struct */
+    bcmolt_gpon_iwf_ds_egress_flow_key key = { };   /**< declare key */
+    bcmolt_msg_set *msg_set = NULL;                 /**< declare message set */
+    uint32_t max_msgs;          /**< declare max number of msgs to get */
+    bcmos_bool invert_filter;   /**< declare filter invert flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_iwf_ds_egress_flow_cfg cfg;\n");
+    bcmcli_log("bcmolt_gpon_iwf_ds_egress_flow_key key = {  };\n");
+    bcmcli_log("bcmolt_msg_set* msg_set = NULL;\n");
+    bcmcli_log("uint32_t max_msgs;\n");
+    bcmcli_log("bcmos_bool invert_filter;\n");
+    apicli_print_start(session, "bcmolt_cfg_get_multi");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_DS_EGRESS_FLOW, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_IWF_DS_EGRESS_FLOW_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "flow_id");
+    if (cli_parm != NULL)
+    {
+        key.flow_id = (bcmolt_flow_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "flow_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.flow_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_DS_EGRESS_FLOW, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_IWF_DS_EGRESS_FLOW_KEY_ID_FLOW_ID, &key.flow_id);
+    bcmcli_log(";\n");
+
+    /* set max number of msgs from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "max_msgs");
+    if (cli_parm != NULL)
+    {
+        max_msgs = cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "max_msgs is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("max_msgs = %d;\n", max_msgs);
+
+    /* set filter invert flag from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "filter_invert");
+    if (cli_parm != NULL)
+    {
+        invert_filter = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "filter_invert is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("invert_filter = %s;\n", (invert_filter) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* allocate message set */
+    err = apicli_msg_set_alloc(byte_pool, BCMOLT_OBJ_ID_GPON_IWF_DS_EGRESS_FLOW, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);
+    if (err != BCM_ERR_OK)
+    {
+        return err;
+    }
+
+    bcmcli_log("bcmolt_msg_set_alloc(BCMOLT_OBJ_ID_GPON_IWF_DS_EGRESS_FLOW, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, gpon_iwf_ds_egress_flow, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, gpon_iwf_ds_egress_flow, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "filter.gem_port");
+    if (cli_parm != NULL)
+    {
+        bcmolt_gpon_gem_id val;
+        val = (bcmolt_gpon_gem_id) cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf_ds_egress_flow, gem_port, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf_ds_egress_flow, gem_port, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_DS_EGRESS_FLOW, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_IWF_DS_EGRESS_FLOW_CFG_ID_GEM_PORT, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "gem_port");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf_ds_egress_flow, gem_port);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf_ds_egress_flow, gem_port);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.pbit_control");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf_ds_egress_flow, pbit_control, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf_ds_egress_flow, pbit_control, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_DS_EGRESS_FLOW, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_IWF_DS_EGRESS_FLOW_CFG_ID_PBIT_CONTROL, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "pbit_control");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf_ds_egress_flow, pbit_control);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf_ds_egress_flow, pbit_control);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_iwf_ds_egress_flow, gem_port) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_iwf_ds_egress_flow, pbit_control))
+    {
+        BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf_ds_egress_flow, all_properties);
+        bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf_ds_egress_flow, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);
+    bcmcli_log("bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_iwf_ds_ingress_flow_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_iwf_ds_ingress_flow_cfg cfg;        /**< declare main API struct */
+    bcmolt_gpon_iwf_ds_ingress_flow_key key = { };  /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_iwf_ds_ingress_flow_cfg cfg;\n");
+    bcmcli_log("bcmolt_gpon_iwf_ds_ingress_flow_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_DS_INGRESS_FLOW, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_IWF_DS_INGRESS_FLOW_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "vlan_id");
+    if (cli_parm != NULL)
+    {
+        key.vlan_id = (bcmolt_vlan_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "vlan_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.vlan_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_DS_INGRESS_FLOW, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_IWF_DS_INGRESS_FLOW_KEY_ID_VLAN_ID, &key.vlan_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, gpon_iwf_ds_ingress_flow, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, gpon_iwf_ds_ingress_flow, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "mapping_method");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf_ds_ingress_flow, mapping_method);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf_ds_ingress_flow, mapping_method);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mapping_tag");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf_ds_ingress_flow, mapping_tag);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf_ds_ingress_flow, mapping_tag);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "vlan_action");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf_ds_ingress_flow, vlan_action);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf_ds_ingress_flow, vlan_action);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_iwf_ds_ingress_flow, mapping_method) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_iwf_ds_ingress_flow, mapping_tag) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_iwf_ds_ingress_flow, vlan_action))
+    {
+        BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf_ds_ingress_flow, all_properties);
+        bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf_ds_ingress_flow, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_get(device_id, &cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_iwf_ds_ingress_flow_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_iwf_ds_ingress_flow_cfg cfg;        /**< declare main API struct */
+    bcmolt_gpon_iwf_ds_ingress_flow_key key = { };  /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_iwf_ds_ingress_flow_cfg cfg;\n");
+    bcmcli_log("bcmolt_gpon_iwf_ds_ingress_flow_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_DS_INGRESS_FLOW, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_IWF_DS_INGRESS_FLOW_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "vlan_id");
+    if (cli_parm != NULL)
+    {
+        key.vlan_id = (bcmolt_vlan_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "vlan_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.vlan_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_DS_INGRESS_FLOW, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_IWF_DS_INGRESS_FLOW_KEY_ID_VLAN_ID, &key.vlan_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, gpon_iwf_ds_ingress_flow, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, gpon_iwf_ds_ingress_flow, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "mapping_method");
+    if (cli_parm != NULL)
+    {
+        bcmolt_vlan_to_flow_mapping_method val;
+        val = (bcmolt_vlan_to_flow_mapping_method) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf_ds_ingress_flow, mapping_method, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf_ds_ingress_flow, mapping_method, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_DS_INGRESS_FLOW, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_IWF_DS_INGRESS_FLOW_CFG_ID_MAPPING_METHOD, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mapping_tag");
+    if (cli_parm != NULL)
+    {
+        bcmolt_mapping_tag_method val;
+        val = (bcmolt_mapping_tag_method) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf_ds_ingress_flow, mapping_tag, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf_ds_ingress_flow, mapping_tag, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_DS_INGRESS_FLOW, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_IWF_DS_INGRESS_FLOW_CFG_ID_MAPPING_TAG, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "vlan_action");
+    if (cli_parm != NULL)
+    {
+        bcmolt_ds_vlan_action val;
+        val = (bcmolt_ds_vlan_action) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf_ds_ingress_flow, vlan_action, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf_ds_ingress_flow, vlan_action, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_DS_INGRESS_FLOW, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_IWF_DS_INGRESS_FLOW_CFG_ID_VLAN_ACTION, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_set(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_set(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_iwf_ds_ingress_flow_cfg_clear(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_iwf_ds_ingress_flow_cfg cfg;        /**< declare main API struct */
+    bcmolt_gpon_iwf_ds_ingress_flow_key key = { };  /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_iwf_ds_ingress_flow_cfg cfg;\n");
+    bcmcli_log("bcmolt_gpon_iwf_ds_ingress_flow_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_clear");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_DS_INGRESS_FLOW, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_IWF_DS_INGRESS_FLOW_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "vlan_id");
+    if (cli_parm != NULL)
+    {
+        key.vlan_id = (bcmolt_vlan_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "vlan_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.vlan_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_DS_INGRESS_FLOW, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_IWF_DS_INGRESS_FLOW_KEY_ID_VLAN_ID, &key.vlan_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, gpon_iwf_ds_ingress_flow, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, gpon_iwf_ds_ingress_flow, key);\n");
+
+    /* call API */
+    err = bcmolt_cfg_clear(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_clear(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_iwf_ds_ingress_flow_cfg_get_multi(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_iwf_ds_ingress_flow_cfg cfg;        /**< declare main API struct */
+    bcmolt_gpon_iwf_ds_ingress_flow_key key = { };  /**< declare key */
+    bcmolt_msg_set *msg_set = NULL;                 /**< declare message set */
+    uint32_t max_msgs;          /**< declare max number of msgs to get */
+    bcmos_bool invert_filter;   /**< declare filter invert flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_iwf_ds_ingress_flow_cfg cfg;\n");
+    bcmcli_log("bcmolt_gpon_iwf_ds_ingress_flow_key key = {  };\n");
+    bcmcli_log("bcmolt_msg_set* msg_set = NULL;\n");
+    bcmcli_log("uint32_t max_msgs;\n");
+    bcmcli_log("bcmos_bool invert_filter;\n");
+    apicli_print_start(session, "bcmolt_cfg_get_multi");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_DS_INGRESS_FLOW, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_IWF_DS_INGRESS_FLOW_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "vlan_id");
+    if (cli_parm != NULL)
+    {
+        key.vlan_id = (bcmolt_vlan_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "vlan_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.vlan_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_DS_INGRESS_FLOW, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_IWF_DS_INGRESS_FLOW_KEY_ID_VLAN_ID, &key.vlan_id);
+    bcmcli_log(";\n");
+
+    /* set max number of msgs from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "max_msgs");
+    if (cli_parm != NULL)
+    {
+        max_msgs = cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "max_msgs is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("max_msgs = %d;\n", max_msgs);
+
+    /* set filter invert flag from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "filter_invert");
+    if (cli_parm != NULL)
+    {
+        invert_filter = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "filter_invert is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("invert_filter = %s;\n", (invert_filter) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* allocate message set */
+    err = apicli_msg_set_alloc(byte_pool, BCMOLT_OBJ_ID_GPON_IWF_DS_INGRESS_FLOW, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);
+    if (err != BCM_ERR_OK)
+    {
+        return err;
+    }
+
+    bcmcli_log("bcmolt_msg_set_alloc(BCMOLT_OBJ_ID_GPON_IWF_DS_INGRESS_FLOW, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, gpon_iwf_ds_ingress_flow, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, gpon_iwf_ds_ingress_flow, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "filter.mapping_method");
+    if (cli_parm != NULL)
+    {
+        bcmolt_vlan_to_flow_mapping_method val;
+        val = (bcmolt_vlan_to_flow_mapping_method) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf_ds_ingress_flow, mapping_method, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf_ds_ingress_flow, mapping_method, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_DS_INGRESS_FLOW, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_IWF_DS_INGRESS_FLOW_CFG_ID_MAPPING_METHOD, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mapping_method");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf_ds_ingress_flow, mapping_method);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf_ds_ingress_flow, mapping_method);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.mapping_tag");
+    if (cli_parm != NULL)
+    {
+        bcmolt_mapping_tag_method val;
+        val = (bcmolt_mapping_tag_method) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf_ds_ingress_flow, mapping_tag, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf_ds_ingress_flow, mapping_tag, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_DS_INGRESS_FLOW, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_IWF_DS_INGRESS_FLOW_CFG_ID_MAPPING_TAG, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mapping_tag");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf_ds_ingress_flow, mapping_tag);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf_ds_ingress_flow, mapping_tag);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.vlan_action");
+    if (cli_parm != NULL)
+    {
+        bcmolt_ds_vlan_action val;
+        val = (bcmolt_ds_vlan_action) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf_ds_ingress_flow, vlan_action, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf_ds_ingress_flow, vlan_action, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_DS_INGRESS_FLOW, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_IWF_DS_INGRESS_FLOW_CFG_ID_VLAN_ACTION, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "vlan_action");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf_ds_ingress_flow, vlan_action);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf_ds_ingress_flow, vlan_action);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_iwf_ds_ingress_flow, mapping_method) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_iwf_ds_ingress_flow, mapping_tag) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_iwf_ds_ingress_flow, vlan_action))
+    {
+        BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf_ds_ingress_flow, all_properties);
+        bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf_ds_ingress_flow, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);
+    bcmcli_log("bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_iwf_mac_table_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_iwf_mac_table_cfg cfg;  /**< declare main API struct */
+    bcmolt_gpon_iwf_mac_table_key key = { };    /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_iwf_mac_table_cfg cfg;\n");
+    bcmcli_log("bcmolt_gpon_iwf_mac_table_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_MAC_TABLE, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_IWF_MAC_TABLE_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "mac_address");
+    if (cli_parm != NULL)
+    {
+        key.mac_address = cli_parm->value.mac;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "mac_address is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.mac_address = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_MAC_TABLE, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_IWF_MAC_TABLE_KEY_ID_MAC_ADDRESS, &key.mac_address);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "vlan");
+    if (cli_parm != NULL)
+    {
+        key.vlan = (bcmolt_vlan_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "vlan is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.vlan = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_MAC_TABLE, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_IWF_MAC_TABLE_KEY_ID_VLAN, &key.vlan);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, gpon_iwf_mac_table, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, gpon_iwf_mac_table, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "flow_id");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf_mac_table, flow_id);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf_mac_table, flow_id);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf_mac_table, stat);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf_mac_table, stat);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "gem_port_id");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf_mac_table, gem_port_id);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf_mac_table, gem_port_id);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf_mac_table, onu_id);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf_mac_table, onu_id);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_iwf_mac_table, flow_id) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_iwf_mac_table, stat) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_iwf_mac_table, gem_port_id) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_iwf_mac_table, onu_id))
+    {
+        BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf_mac_table, all_properties);
+        bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf_mac_table, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_get(device_id, &cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_iwf_mac_table_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_iwf_mac_table_cfg cfg;          /**< declare main API struct */
+    bcmolt_gpon_iwf_mac_table_key key = { };    /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_iwf_mac_table_cfg cfg;\n");
+    bcmcli_log("bcmolt_gpon_iwf_mac_table_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_MAC_TABLE, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_IWF_MAC_TABLE_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "mac_address");
+    if (cli_parm != NULL)
+    {
+        key.mac_address = cli_parm->value.mac;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "mac_address is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.mac_address = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_MAC_TABLE, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_IWF_MAC_TABLE_KEY_ID_MAC_ADDRESS, &key.mac_address);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "vlan");
+    if (cli_parm != NULL)
+    {
+        key.vlan = (bcmolt_vlan_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "vlan is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.vlan = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_MAC_TABLE, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_IWF_MAC_TABLE_KEY_ID_VLAN, &key.vlan);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, gpon_iwf_mac_table, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, gpon_iwf_mac_table, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "flow_id");
+    if (cli_parm != NULL)
+    {
+        bcmolt_flow_id val;
+        val = (bcmolt_flow_id) cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf_mac_table, flow_id, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf_mac_table, flow_id, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_MAC_TABLE, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_IWF_MAC_TABLE_CFG_ID_FLOW_ID, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf_mac_table, stat, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf_mac_table, stat, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_MAC_TABLE, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_IWF_MAC_TABLE_CFG_ID_STAT, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_set(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_set(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_iwf_mac_table_cfg_clear(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_iwf_mac_table_cfg cfg;          /**< declare main API struct */
+    bcmolt_gpon_iwf_mac_table_key key = { };    /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_iwf_mac_table_cfg cfg;\n");
+    bcmcli_log("bcmolt_gpon_iwf_mac_table_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_clear");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_MAC_TABLE, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_IWF_MAC_TABLE_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "mac_address");
+    if (cli_parm != NULL)
+    {
+        key.mac_address = cli_parm->value.mac;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "mac_address is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.mac_address = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_MAC_TABLE, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_IWF_MAC_TABLE_KEY_ID_MAC_ADDRESS, &key.mac_address);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "vlan");
+    if (cli_parm != NULL)
+    {
+        key.vlan = (bcmolt_vlan_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "vlan is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.vlan = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_MAC_TABLE, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_IWF_MAC_TABLE_KEY_ID_VLAN, &key.vlan);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, gpon_iwf_mac_table, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, gpon_iwf_mac_table, key);\n");
+
+    /* call API */
+    err = bcmolt_cfg_clear(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_clear(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_iwf_mac_table_cfg_get_multi(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_iwf_mac_table_cfg cfg;          /**< declare main API struct */
+    bcmolt_gpon_iwf_mac_table_key key = { };    /**< declare key */
+    bcmolt_msg_set *msg_set = NULL;             /**< declare message set */
+    uint32_t max_msgs;          /**< declare max number of msgs to get */
+    bcmos_bool invert_filter;   /**< declare filter invert flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_iwf_mac_table_cfg cfg;\n");
+    bcmcli_log("bcmolt_gpon_iwf_mac_table_key key = {  };\n");
+    bcmcli_log("bcmolt_msg_set* msg_set = NULL;\n");
+    bcmcli_log("uint32_t max_msgs;\n");
+    bcmcli_log("bcmos_bool invert_filter;\n");
+    apicli_print_start(session, "bcmolt_cfg_get_multi");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_MAC_TABLE, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_IWF_MAC_TABLE_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "mac_address");
+    if (cli_parm != NULL)
+    {
+        key.mac_address = cli_parm->value.mac;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "mac_address is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.mac_address = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_MAC_TABLE, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_IWF_MAC_TABLE_KEY_ID_MAC_ADDRESS, &key.mac_address);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "vlan");
+    if (cli_parm != NULL)
+    {
+        key.vlan = (bcmolt_vlan_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "vlan is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.vlan = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_MAC_TABLE, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_IWF_MAC_TABLE_KEY_ID_VLAN, &key.vlan);
+    bcmcli_log(";\n");
+
+    /* set max number of msgs from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "max_msgs");
+    if (cli_parm != NULL)
+    {
+        max_msgs = cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "max_msgs is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("max_msgs = %d;\n", max_msgs);
+
+    /* set filter invert flag from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "filter_invert");
+    if (cli_parm != NULL)
+    {
+        invert_filter = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "filter_invert is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("invert_filter = %s;\n", (invert_filter) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* allocate message set */
+    err = apicli_msg_set_alloc(byte_pool, BCMOLT_OBJ_ID_GPON_IWF_MAC_TABLE, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);
+    if (err != BCM_ERR_OK)
+    {
+        return err;
+    }
+
+    bcmcli_log("bcmolt_msg_set_alloc(BCMOLT_OBJ_ID_GPON_IWF_MAC_TABLE, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, gpon_iwf_mac_table, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, gpon_iwf_mac_table, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "filter.flow_id");
+    if (cli_parm != NULL)
+    {
+        bcmolt_flow_id val;
+        val = (bcmolt_flow_id) cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf_mac_table, flow_id, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf_mac_table, flow_id, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_MAC_TABLE, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_IWF_MAC_TABLE_CFG_ID_FLOW_ID, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "flow_id");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf_mac_table, flow_id);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf_mac_table, flow_id);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.stat");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf_mac_table, stat, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf_mac_table, stat, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_MAC_TABLE, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_IWF_MAC_TABLE_CFG_ID_STAT, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf_mac_table, stat);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf_mac_table, stat);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.gem_port_id");
+    if (cli_parm != NULL)
+    {
+        bcmolt_gpon_gem_id val;
+        val = (bcmolt_gpon_gem_id) cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf_mac_table, gem_port_id, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf_mac_table, gem_port_id, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_MAC_TABLE, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_IWF_MAC_TABLE_CFG_ID_GEM_PORT_ID, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "gem_port_id");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf_mac_table, gem_port_id);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf_mac_table, gem_port_id);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.onu_id");
+    if (cli_parm != NULL)
+    {
+        bcmolt_gpon_onu_id val;
+        val = (bcmolt_gpon_onu_id) cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf_mac_table, onu_id, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf_mac_table, onu_id, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_MAC_TABLE, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_IWF_MAC_TABLE_CFG_ID_ONU_ID, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf_mac_table, onu_id);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf_mac_table, onu_id);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_iwf_mac_table, flow_id) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_iwf_mac_table, stat) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_iwf_mac_table, gem_port_id) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_iwf_mac_table, onu_id))
+    {
+        BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf_mac_table, all_properties);
+        bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf_mac_table, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);
+    bcmcli_log("bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_iwf_mac_table_auto_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_iwf_mac_table_auto_cfg auto_cfg;    /**< declare main API struct */
+    bcmolt_gpon_iwf_mac_table_key key = { };        /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_iwf_mac_table_auto_cfg auto_cfg;\n");
+    bcmcli_log("bcmolt_gpon_iwf_mac_table_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_auto_cfg_get");
+
+    /* init the API struct */
+    BCMOLT_AUTO_CFG_INIT(&auto_cfg, gpon_iwf_mac_table, key);
+    bcmcli_log("BCMOLT_AUTO_CFG_INIT(&auto_cfg, gpon_iwf_mac_table, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "mac_aged");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_iwf_mac_table, mac_aged);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_iwf_mac_table, mac_aged);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mac_dropped");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_iwf_mac_table, mac_dropped);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_iwf_mac_table, mac_dropped);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mac_move");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_iwf_mac_table, mac_move);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_iwf_mac_table, mac_move);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "new_mac");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_iwf_mac_table, new_mac);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_iwf_mac_table, new_mac);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_iwf_mac_table, mac_aged) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_iwf_mac_table, mac_dropped) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_iwf_mac_table, mac_move) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_iwf_mac_table, new_mac))
+    {
+        BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_iwf_mac_table, all_properties);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_iwf_mac_table, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_auto_cfg_get(device_id, &auto_cfg.hdr);
+    bcmcli_log("bcmolt_auto_cfg_get(device_id, &auto_cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &auto_cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, auto_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_iwf_mac_table_auto_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_iwf_mac_table_auto_cfg auto_cfg;    /**< declare main API struct */
+    bcmolt_gpon_iwf_mac_table_key key = { };        /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_iwf_mac_table_auto_cfg auto_cfg;\n");
+    bcmcli_log("bcmolt_gpon_iwf_mac_table_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_auto_cfg_set");
+
+    /* init the API struct */
+    BCMOLT_AUTO_CFG_INIT(&auto_cfg, gpon_iwf_mac_table, key);
+    bcmcli_log("BCMOLT_AUTO_CFG_INIT(&auto_cfg, gpon_iwf_mac_table, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "mac_aged");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_iwf_mac_table, mac_aged, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_iwf_mac_table, mac_aged, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_MAC_TABLE, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_IWF_MAC_TABLE_AUTO_CFG_ID_MAC_AGED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mac_dropped");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_iwf_mac_table, mac_dropped, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_iwf_mac_table, mac_dropped, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_MAC_TABLE, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_IWF_MAC_TABLE_AUTO_CFG_ID_MAC_DROPPED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mac_move");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_iwf_mac_table, mac_move, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_iwf_mac_table, mac_move, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_MAC_TABLE, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_IWF_MAC_TABLE_AUTO_CFG_ID_MAC_MOVE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "new_mac");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_iwf_mac_table, new_mac, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_iwf_mac_table, new_mac, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_MAC_TABLE, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_IWF_MAC_TABLE_AUTO_CFG_ID_NEW_MAC, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_auto_cfg_set(device_id, &auto_cfg.hdr);
+    bcmcli_log("bcmolt_auto_cfg_set(device_id, &auto_cfg.hdr);\n");
+    apicli_print_complete(session, err, auto_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_iwf_us_flow_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_iwf_us_flow_cfg cfg;        /**< declare main API struct */
+    bcmolt_gpon_iwf_us_flow_key key = { };  /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_iwf_us_flow_cfg cfg;\n");
+    bcmcli_log("bcmolt_gpon_iwf_us_flow_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_US_FLOW, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_IWF_US_FLOW_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "gem_port_id");
+    if (cli_parm != NULL)
+    {
+        key.gem_port_id = (bcmolt_gpon_gem_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "gem_port_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.gem_port_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_US_FLOW, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_IWF_US_FLOW_KEY_ID_GEM_PORT_ID, &key.gem_port_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, gpon_iwf_us_flow, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, gpon_iwf_us_flow, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "flow_id");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf_us_flow, flow_id);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf_us_flow, flow_id);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mac_learning");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf_us_flow, mac_learning);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf_us_flow, mac_learning);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "vlan_action");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf_us_flow, vlan_action);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf_us_flow, vlan_action);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "vlan_tag");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf_us_flow, vlan_tag);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf_us_flow, vlan_tag);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tpid_index");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf_us_flow, tpid_index);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf_us_flow, tpid_index);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_iwf_us_flow, flow_id) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_iwf_us_flow, mac_learning) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_iwf_us_flow, vlan_action) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_iwf_us_flow, vlan_tag) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_iwf_us_flow, tpid_index))
+    {
+        BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf_us_flow, all_properties);
+        bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_iwf_us_flow, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_get(device_id, &cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_iwf_us_flow_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_iwf_us_flow_cfg cfg;        /**< declare main API struct */
+    bcmolt_gpon_iwf_us_flow_key key = { };  /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_iwf_us_flow_cfg cfg;\n");
+    bcmcli_log("bcmolt_gpon_iwf_us_flow_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_US_FLOW, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_IWF_US_FLOW_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "gem_port_id");
+    if (cli_parm != NULL)
+    {
+        key.gem_port_id = (bcmolt_gpon_gem_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "gem_port_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.gem_port_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_US_FLOW, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_IWF_US_FLOW_KEY_ID_GEM_PORT_ID, &key.gem_port_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, gpon_iwf_us_flow, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, gpon_iwf_us_flow, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "flow_id");
+    if (cli_parm != NULL)
+    {
+        bcmolt_flow_id val;
+        val = (bcmolt_flow_id) cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf_us_flow, flow_id, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf_us_flow, flow_id, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_US_FLOW, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_IWF_US_FLOW_CFG_ID_FLOW_ID, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mac_learning");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf_us_flow, mac_learning, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf_us_flow, mac_learning, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_US_FLOW, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_IWF_US_FLOW_CFG_ID_MAC_LEARNING, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "vlan_action");
+    if (cli_parm != NULL)
+    {
+        bcmolt_us_vlan_action val;
+        val = (bcmolt_us_vlan_action) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf_us_flow, vlan_action, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf_us_flow, vlan_action, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_US_FLOW, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_IWF_US_FLOW_CFG_ID_VLAN_ACTION, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "vlan_tag.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_vlan_tag val = { };
+        cli_parm = bcmcli_find_named_parm(session, "vlan_tag.vlan_id");
+        if (cli_parm != NULL)
+        {
+            val.vlan_id = (bcmolt_vlan_id) cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "vlan_tag.vlan_id is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "vlan_tag.pbit");
+        if (cli_parm != NULL)
+        {
+            val.pbit = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "vlan_tag.pbit is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf_us_flow, vlan_tag, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_vlan_tag val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_US_FLOW, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_IWF_US_FLOW_CFG_ID_VLAN_TAG, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf_us_flow, vlan_tag, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tpid_index");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf_us_flow, tpid_index, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf_us_flow, tpid_index, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_US_FLOW, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_IWF_US_FLOW_CFG_ID_TPID_INDEX, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_set(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_set(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_iwf_us_flow_cfg_clear(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_iwf_us_flow_cfg cfg;        /**< declare main API struct */
+    bcmolt_gpon_iwf_us_flow_key key = { };  /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_iwf_us_flow_cfg cfg;\n");
+    bcmcli_log("bcmolt_gpon_iwf_us_flow_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_clear");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_US_FLOW, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_IWF_US_FLOW_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "gem_port_id");
+    if (cli_parm != NULL)
+    {
+        key.gem_port_id = (bcmolt_gpon_gem_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "gem_port_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.gem_port_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_US_FLOW, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_IWF_US_FLOW_KEY_ID_GEM_PORT_ID, &key.gem_port_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, gpon_iwf_us_flow, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, gpon_iwf_us_flow, key);\n");
+
+    /* call API */
+    err = bcmolt_cfg_clear(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_clear(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_iwf_us_flow_cfg_get_multi(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_iwf_us_flow_cfg cfg;        /**< declare main API struct */
+    bcmolt_gpon_iwf_us_flow_key key = { };  /**< declare key */
+    bcmolt_msg_set *msg_set = NULL;         /**< declare message set */
+    uint32_t max_msgs;                      /**< declare max number of msgs to get */
+    bcmos_bool invert_filter;               /**< declare filter invert flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_iwf_us_flow_cfg cfg;\n");
+    bcmcli_log("bcmolt_gpon_iwf_us_flow_key key = {  };\n");
+    bcmcli_log("bcmolt_msg_set* msg_set = NULL;\n");
+    bcmcli_log("uint32_t max_msgs;\n");
+    bcmcli_log("bcmos_bool invert_filter;\n");
+    apicli_print_start(session, "bcmolt_cfg_get_multi");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_US_FLOW, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_IWF_US_FLOW_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "gem_port_id");
+    if (cli_parm != NULL)
+    {
+        key.gem_port_id = (bcmolt_gpon_gem_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "gem_port_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.gem_port_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_US_FLOW, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_IWF_US_FLOW_KEY_ID_GEM_PORT_ID, &key.gem_port_id);
+    bcmcli_log(";\n");
+
+    /* set max number of msgs from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "max_msgs");
+    if (cli_parm != NULL)
+    {
+        max_msgs = cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "max_msgs is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("max_msgs = %d;\n", max_msgs);
+
+    /* set filter invert flag from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "filter_invert");
+    if (cli_parm != NULL)
+    {
+        invert_filter = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "filter_invert is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("invert_filter = %s;\n", (invert_filter) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* allocate message set */
+    err = apicli_msg_set_alloc(byte_pool, BCMOLT_OBJ_ID_GPON_IWF_US_FLOW, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);
+    if (err != BCM_ERR_OK)
+    {
+        return err;
+    }
+
+    bcmcli_log("bcmolt_msg_set_alloc(BCMOLT_OBJ_ID_GPON_IWF_US_FLOW, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, gpon_iwf_us_flow, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, gpon_iwf_us_flow, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "filter.flow_id");
+    if (cli_parm != NULL)
+    {
+        bcmolt_flow_id val;
+        val = (bcmolt_flow_id) cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf_us_flow, flow_id, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf_us_flow, flow_id, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_US_FLOW, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_IWF_US_FLOW_CFG_ID_FLOW_ID, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "flow_id");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf_us_flow, flow_id);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf_us_flow, flow_id);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.mac_learning");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf_us_flow, mac_learning, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf_us_flow, mac_learning, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_US_FLOW, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_IWF_US_FLOW_CFG_ID_MAC_LEARNING, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mac_learning");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf_us_flow, mac_learning);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf_us_flow, mac_learning);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.vlan_action");
+    if (cli_parm != NULL)
+    {
+        bcmolt_us_vlan_action val;
+        val = (bcmolt_us_vlan_action) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf_us_flow, vlan_action, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf_us_flow, vlan_action, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_US_FLOW, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_IWF_US_FLOW_CFG_ID_VLAN_ACTION, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "vlan_action");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf_us_flow, vlan_action);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf_us_flow, vlan_action);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.vlan_tag.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_vlan_tag val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.vlan_tag.vlan_id");
+        if (cli_parm != NULL)
+        {
+            val.vlan_id = (bcmolt_vlan_id) cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.vlan_tag.vlan_id is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.vlan_tag.pbit");
+        if (cli_parm != NULL)
+        {
+            val.pbit = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.vlan_tag.pbit is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf_us_flow, vlan_tag, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_vlan_tag val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_US_FLOW, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_IWF_US_FLOW_CFG_ID_VLAN_TAG, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf_us_flow, vlan_tag, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "vlan_tag");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf_us_flow, vlan_tag);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf_us_flow, vlan_tag);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.tpid_index");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf_us_flow, tpid_index, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_iwf_us_flow, tpid_index, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_IWF_US_FLOW, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_IWF_US_FLOW_CFG_ID_TPID_INDEX, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tpid_index");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf_us_flow, tpid_index);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf_us_flow, tpid_index);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_iwf_us_flow, flow_id) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_iwf_us_flow, mac_learning) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_iwf_us_flow, vlan_action) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_iwf_us_flow, vlan_tag) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_iwf_us_flow, tpid_index))
+    {
+        BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf_us_flow, all_properties);
+        bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_iwf_us_flow, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);
+    bcmcli_log("bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_ni_cfg_get(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_ni_cfg cfg;         /**< declare main API struct */
+    bcmolt_gpon_ni_key key = { };   /**< declare key */
+    uint8_t *list_mem;              /**< declare memory buffer for variable-sized lists */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_ni_cfg cfg;\n");
+    bcmcli_log("bcmolt_gpon_ni_key key = {  };\n");
+    bcmcli_log("uint8_t* list_mem;\n");
+    apicli_print_start(session, "bcmolt_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_NI_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, gpon_ni, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, gpon_ni, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "pon_status");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, pon_status);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, pon_status);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "available_bandwidth");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, available_bandwidth);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, available_bandwidth);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "number_of_active_onus");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, number_of_active_onus);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, number_of_active_onus);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "number_of_active_standby_onus");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, number_of_active_standby_onus);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, number_of_active_standby_onus);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "prbs_status");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, prbs_status);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, prbs_status);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "pon_distance");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, pon_distance);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, pon_distance);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ranging_window_size");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, ranging_window_size);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, ranging_window_size);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "preassigned_equalization_delay");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, preassigned_equalization_delay);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, preassigned_equalization_delay);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "eqd_cycles_number");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, eqd_cycles_number);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, eqd_cycles_number);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "power_level");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, power_level);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, power_level);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ds_fec_mode");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, ds_fec_mode);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, ds_fec_mode);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "drift_control");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, drift_control);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, drift_control);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ds_ber_reporting_interval");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, ds_ber_reporting_interval);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, ds_ber_reporting_interval);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "los_alarm_threshold");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, los_alarm_threshold);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, los_alarm_threshold);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "los_initial_value");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, los_initial_value);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, los_initial_value);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_alarms_thresholds");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, onu_alarms_thresholds);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, onu_alarms_thresholds);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ber_monitor");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, ber_monitor);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, ber_monitor);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ploam_ack_timeout");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, ploam_ack_timeout);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, ploam_ack_timeout);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_activation");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, onu_activation);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, onu_activation);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "sn_acquisition");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, sn_acquisition);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, sn_acquisition);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "key_exchange");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, key_exchange);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, key_exchange);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "protection_switching");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, protection_switching);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, protection_switching);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "cbr_rt_allocation_profile");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, cbr_rt_allocation_profile);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, cbr_rt_allocation_profile);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "cbr_nrt_allocation_profile");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, cbr_nrt_allocation_profile);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, cbr_nrt_allocation_profile);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "dba");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, dba);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, dba);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "power_management");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, power_management);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, power_management);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rogue_onu_detection_process");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, rogue_onu_detection_process);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, rogue_onu_detection_process);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "periodic_standby_pon_monitoring");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, periodic_standby_pon_monitoring);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, periodic_standby_pon_monitoring);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "prbs_checker");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, prbs_checker);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, prbs_checker);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "prbs_generator");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, prbs_generator);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, prbs_generator);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "min_data_alloc_id");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, min_data_alloc_id);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, min_data_alloc_id);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "automatic_onu_deactivation");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, automatic_onu_deactivation);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, automatic_onu_deactivation);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "us_bandwidth_limit");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, us_bandwidth_limit);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, us_bandwidth_limit);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "all_onus");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, all_onus);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, all_onus);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "all_mcast_gem_ports");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, all_mcast_gem_ports);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, all_mcast_gem_ports);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "debug");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, debug);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, debug);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_upgrade_params");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, onu_upgrade_params);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, onu_upgrade_params);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ps_c_wait_before_deactivation_timeout");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, ps_c_wait_before_deactivation_timeout);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, ps_c_wait_before_deactivation_timeout);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "bip32_indication_control");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, bip32_indication_control);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, bip32_indication_control);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_ni, pon_status) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_ni, available_bandwidth) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_ni, number_of_active_onus) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_ni, number_of_active_standby_onus) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_ni, prbs_status) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_ni, pon_distance) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_ni, ranging_window_size) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_ni, preassigned_equalization_delay) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_ni, eqd_cycles_number) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_ni, power_level) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_ni, ds_fec_mode) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_ni, drift_control) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_ni, ds_ber_reporting_interval) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_ni, los_alarm_threshold) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_ni, los_initial_value) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_ni, onu_alarms_thresholds) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_ni, ber_monitor) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_ni, ploam_ack_timeout) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_ni, onu_activation) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_ni, sn_acquisition) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_ni, key_exchange) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_ni, protection_switching) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_ni, cbr_rt_allocation_profile) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_ni, cbr_nrt_allocation_profile) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_ni, dba) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_ni, power_management) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_ni, rogue_onu_detection_process) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_ni, periodic_standby_pon_monitoring) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_ni, prbs_checker) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_ni, prbs_generator) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_ni, min_data_alloc_id) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_ni, automatic_onu_deactivation) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_ni, us_bandwidth_limit) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_ni, all_onus) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_ni, all_mcast_gem_ports) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_ni, debug) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_ni, onu_upgrade_params) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_ni, ps_c_wait_before_deactivation_timeout) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_ni, bip32_indication_control))
+    {
+        BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, all_properties);
+        bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_ni, all_properties);\n");
+    }
+
+    /* set memory to use for variable-sized lists */
+    list_mem = apicli_byte_pool_calloc(byte_pool, APICLI_DYNAMIC_LIST_BUFFER_SIZE);
+    if (list_mem == NULL)
+    {
+        apicli_print_complete(session, BCM_ERR_NOMEM, "\n");
+        return BCM_ERR_NOMEM;
+    }
+
+    bcmcli_log("list_mem = bcmos_calloc(APICLI_DYNAMIC_LIST_BUFFER_SIZE);\n");
+    BCMOLT_CFG_LIST_BUF_SET(&cfg, gpon_ni, list_mem, APICLI_DYNAMIC_LIST_BUFFER_SIZE);
+    bcmcli_log("BCMOLT_CFG_LIST_BUF_SET(&cfg, gpon_ni, list_mem, APICLI_DYNAMIC_LIST_BUFFER_SIZE);\n");
+
+    /* call API */
+    err = bcmolt_cfg_get(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_get(device_id, &cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_ni_cfg_set(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_ni_cfg cfg;         /**< declare main API struct */
+    bcmolt_gpon_ni_key key = { };   /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_ni_cfg cfg;\n");
+    bcmcli_log("bcmolt_gpon_ni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_NI_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, gpon_ni, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, gpon_ni, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_parm_by_prefix(session, "pon_distance.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_pon_distance val = { };
+        cli_parm = bcmcli_find_named_parm(session, "pon_distance.max_log_distance");
+        if (cli_parm != NULL)
+        {
+            val.max_log_distance = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "pon_distance.max_log_distance is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "pon_distance.max_diff_reach");
+        if (cli_parm != NULL)
+        {
+            val.max_diff_reach = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "pon_distance.max_diff_reach is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, pon_distance, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_pon_distance val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_PON_DISTANCE, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, pon_distance, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "preassigned_equalization_delay");
+    if (cli_parm != NULL)
+    {
+        uint32_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, preassigned_equalization_delay, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, preassigned_equalization_delay, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_PREASSIGNED_EQUALIZATION_DELAY, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "eqd_cycles_number");
+    if (cli_parm != NULL)
+    {
+        uint32_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, eqd_cycles_number, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, eqd_cycles_number, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_EQD_CYCLES_NUMBER, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "power_level.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_pon_power_level val = { };
+        cli_parm = bcmcli_find_named_parm(session, "power_level.pls_maximum_allocation_size");
+        if (cli_parm != NULL)
+        {
+            val.pls_maximum_allocation_size = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "power_level.pls_maximum_allocation_size is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "power_level.mode");
+        if (cli_parm != NULL)
+        {
+            val.mode = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "power_level.mode is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, power_level, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_pon_power_level val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_POWER_LEVEL, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, power_level, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ds_fec_mode");
+    if (cli_parm != NULL)
+    {
+        bcmolt_control_state val;
+        val = (bcmolt_control_state) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, ds_fec_mode, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, ds_fec_mode, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_DS_FEC_MODE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "drift_control.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_pon_drift_control val = { };
+        cli_parm = bcmcli_find_named_parm(session, "drift_control.drift_interval");
+        if (cli_parm != NULL)
+        {
+            val.drift_interval = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "drift_control.drift_interval is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "drift_control.drift_limit");
+        if (cli_parm != NULL)
+        {
+            val.drift_limit = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "drift_control.drift_limit is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "drift_control.transmission_control_limit");
+        if (cli_parm != NULL)
+        {
+            val.transmission_control_limit = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "drift_control.transmission_control_limit is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, drift_control, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_pon_drift_control val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_DRIFT_CONTROL, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, drift_control, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ds_ber_reporting_interval");
+    if (cli_parm != NULL)
+    {
+        bcmolt_ber_interval val;
+        val = (bcmolt_ber_interval) cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, ds_ber_reporting_interval, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, ds_ber_reporting_interval, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_DS_BER_REPORTING_INTERVAL, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "los_alarm_threshold");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, los_alarm_threshold, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, los_alarm_threshold, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_LOS_ALARM_THRESHOLD, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "los_initial_value");
+    if (cli_parm != NULL)
+    {
+        bcmolt_status val;
+        val = (bcmolt_status) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, los_initial_value, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, los_initial_value, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_LOS_INITIAL_VALUE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "onu_alarms_thresholds.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_gpon_onu_alarms_thresholds val = { };
+        cli_parm = bcmcli_find_named_parm(session, "onu_alarms_thresholds.losi");
+        if (cli_parm != NULL)
+        {
+            val.losi = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "onu_alarms_thresholds.losi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "onu_alarms_thresholds.lofi");
+        if (cli_parm != NULL)
+        {
+            val.lofi = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "onu_alarms_thresholds.lofi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "onu_alarms_thresholds.loami");
+        if (cli_parm != NULL)
+        {
+            val.loami = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "onu_alarms_thresholds.loami is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, onu_alarms_thresholds, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_gpon_onu_alarms_thresholds val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_ONU_ALARMS_THRESHOLDS, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, onu_alarms_thresholds, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "ber_monitor.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_ber_monitor_params val = { };
+        cli_parm = bcmcli_find_named_parm(session, "ber_monitor.us_ber_interval");
+        if (cli_parm != NULL)
+        {
+            val.us_ber_interval = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "ber_monitor.us_ber_interval is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "ber_monitor.sf_threshold");
+        if (cli_parm != NULL)
+        {
+            val.sf_threshold = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "ber_monitor.sf_threshold is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "ber_monitor.sd_threshold");
+        if (cli_parm != NULL)
+        {
+            val.sd_threshold = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "ber_monitor.sd_threshold is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, ber_monitor, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_ber_monitor_params val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_BER_MONITOR, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, ber_monitor, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ploam_ack_timeout");
+    if (cli_parm != NULL)
+    {
+        uint16_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, ploam_ack_timeout, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, ploam_ack_timeout, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_PLOAM_ACK_TIMEOUT, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "onu_activation.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_gpon_onu_activation val = { };
+        cli_parm = bcmcli_find_named_parm(session, "onu_activation.key_exchange");
+        if (cli_parm != NULL)
+        {
+            val.key_exchange = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "onu_activation.key_exchange is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "onu_activation.password_authentication");
+        if (cli_parm != NULL)
+        {
+            val.password_authentication = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "onu_activation.password_authentication is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "onu_activation.fail_due_to_password_authentication_failure");
+        if (cli_parm != NULL)
+        {
+            val.fail_due_to_password_authentication_failure = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "onu_activation.fail_due_to_password_authentication_failure is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, onu_activation, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_gpon_onu_activation val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_ONU_ACTIVATION, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, onu_activation, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "sn_acquisition.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_gpon_sn_acquisition val = { };
+        cli_parm = bcmcli_find_named_parm(session, "sn_acquisition.interval");
+        if (cli_parm != NULL)
+        {
+            val.interval = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "sn_acquisition.interval is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "sn_acquisition.control");
+        if (cli_parm != NULL)
+        {
+            val.control = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "sn_acquisition.control is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "sn_acquisition.onu_post_discovery_mode");
+        if (cli_parm != NULL)
+        {
+            val.onu_post_discovery_mode = (bcmolt_onu_post_discovery_mode) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "sn_acquisition.onu_post_discovery_mode is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, sn_acquisition, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_gpon_sn_acquisition val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_SN_ACQUISITION, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, sn_acquisition, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "key_exchange.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_gpon_key_exchange val = { };
+        cli_parm = bcmcli_find_named_parm(session, "key_exchange.interval");
+        if (cli_parm != NULL)
+        {
+            val.interval = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "key_exchange.interval is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "key_exchange.control");
+        if (cli_parm != NULL)
+        {
+            val.control = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "key_exchange.control is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "key_exchange.mode");
+        if (cli_parm != NULL)
+        {
+            val.mode = (bcmolt_key_exchange_mode) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "key_exchange.mode is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "key_exchange.encrypted_ports_only");
+        if (cli_parm != NULL)
+        {
+            val.encrypted_ports_only = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "key_exchange.encrypted_ports_only is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, key_exchange, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_gpon_key_exchange val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_KEY_EXCHANGE, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, key_exchange, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "protection_switching.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_pon_protection_switching val = { };
+        cli_parm = bcmcli_find_named_parm(session, "protection_switching.timeout");
+        if (cli_parm != NULL)
+        {
+            val.timeout = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "protection_switching.timeout is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "protection_switching.gpio_pin");
+        if (cli_parm != NULL)
+        {
+            val.gpio_pin = (bcmolt_gpio_pin) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "protection_switching.gpio_pin is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "protection_switching.options");
+        if (cli_parm != NULL)
+        {
+            val.options = (bcmolt_pon_protection_switching_options) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "protection_switching.options is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, protection_switching, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_pon_protection_switching val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_PROTECTION_SWITCHING, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, protection_switching, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "cbr_rt_allocation_profile.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_cbr_rt_allocation_profile val = { };
+        cli_parm = bcmcli_find_named_parm(session, "cbr_rt_allocation_profile.ma_7");
+        if (cli_parm != NULL)
+        {
+            val.ma_7 = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "cbr_rt_allocation_profile.ma_7 is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "cbr_rt_allocation_profile.ma_3");
+        if (cli_parm != NULL)
+        {
+            val.ma_3 = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "cbr_rt_allocation_profile.ma_3 is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "cbr_rt_allocation_profile.ma_1");
+        if (cli_parm != NULL)
+        {
+            val.ma_1 = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "cbr_rt_allocation_profile.ma_1 is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, cbr_rt_allocation_profile, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_cbr_rt_allocation_profile val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_CBR_RT_ALLOCATION_PROFILE, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, cbr_rt_allocation_profile, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "cbr_nrt_allocation_profile.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_arr_u16_2 val = { };
+        cli_parm = bcmcli_find_named_parm(session, "cbr_nrt_allocation_profile.arr");
+        if (cli_parm != NULL)
+        {
+            int32_t i0;
+            if (cli_parm->array_size != 2)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "array cbr_nrt_allocation_profile.arr must have 2 elements\n");
+                return BCM_ERR_PARM;
+            }
+
+            for (i0 = 0; i0 < 2; i0++)
+            {
+                val.arr[i0] = cli_parm->values[i0].unumber;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "cbr_nrt_allocation_profile.arr is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, cbr_nrt_allocation_profile, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_arr_u16_2 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_CBR_NRT_ALLOCATION_PROFILE, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, cbr_nrt_allocation_profile, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "dba.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_pon_dba val = { };
+        cli_parm = bcmcli_find_named_parm(session, "dba.sr_reporting_block_size");
+        if (cli_parm != NULL)
+        {
+            val.sr_reporting_block_size = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "dba.sr_reporting_block_size is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "dba.dba_mode");
+        if (cli_parm != NULL)
+        {
+            val.dba_mode = (bcmolt_dba_mode) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "dba.dba_mode is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, dba, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_pon_dba val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_DBA, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, dba, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "power_management.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_onu_power_management_configuration val = { };
+        cli_parm = bcmcli_find_named_parm(session, "power_management.ilowpower");
+        if (cli_parm != NULL)
+        {
+            val.ilowpower = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "power_management.ilowpower is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "power_management.iaware");
+        if (cli_parm != NULL)
+        {
+            val.iaware = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "power_management.iaware is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "power_management.itransinit");
+        if (cli_parm != NULL)
+        {
+            val.itransinit = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "power_management.itransinit is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "power_management.itxinit");
+        if (cli_parm != NULL)
+        {
+            val.itxinit = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "power_management.itxinit is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "power_management.irxoff");
+        if (cli_parm != NULL)
+        {
+            val.irxoff = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "power_management.irxoff is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "power_management.low_power_clobi");
+        if (cli_parm != NULL)
+        {
+            val.low_power_clobi = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "power_management.low_power_clobi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, power_management, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_onu_power_management_configuration val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_POWER_MANAGEMENT, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, power_management, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "rogue_onu_detection_process.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_rogue_onu_detection_process val = { };
+        cli_parm = bcmcli_find_named_parm(session, "rogue_onu_detection_process.control");
+        if (cli_parm != NULL)
+        {
+            val.control = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "rogue_onu_detection_process.control is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "rogue_onu_detection_process.detection_algorithm.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "rogue_onu_detection_process.detection_algorithm.algorithm_type");
+            if (cli_parm != NULL)
+            {
+                val.detection_algorithm.algorithm_type = (bcmolt_rogue_detection_algorithm_type) cli_parm->value.enum_val;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "rogue_onu_detection_process.detection_algorithm.algorithm_type is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            switch (val.detection_algorithm.algorithm_type)
+            {
+                case BCMOLT_ROGUE_DETECTION_ALGORITHM_TYPE_EARLY_ROGUE_DETECTION:
+                    cli_parm = bcmcli_find_named_parm(session, "rogue_onu_detection_process.detection_algorithm.measurement_type");
+                    if (cli_parm != NULL)
+                    {
+                        val.detection_algorithm.u.early_rogue_detection.measurement_type = (bcmolt_rogue_detection_window) cli_parm->value.enum_val;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "rogue_onu_detection_process.detection_algorithm.measurement_type is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "rogue_onu_detection_process.detection_algorithm.interval");
+                    if (cli_parm != NULL)
+                    {
+                        val.detection_algorithm.u.early_rogue_detection.interval = cli_parm->value.unumber;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "rogue_onu_detection_process.detection_algorithm.interval is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "rogue_onu_detection_process.detection_algorithm.second_ranging_window");
+                    if (cli_parm != NULL)
+                    {
+                        val.detection_algorithm.u.early_rogue_detection.second_ranging_window = cli_parm->value.number;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "rogue_onu_detection_process.detection_algorithm.second_ranging_window is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "rogue_onu_detection_process.detection_algorithm.alloc_type_to_scan");
+                    if (cli_parm != NULL)
+                    {
+                        val.detection_algorithm.u.early_rogue_detection.alloc_type_to_scan = (bcmolt_alloc_type_to_scan) cli_parm->value.enum_val;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "rogue_onu_detection_process.detection_algorithm.alloc_type_to_scan is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_ROGUE_DETECTION_ALGORITHM_TYPE_SPECIAL_MAP:
+                    cli_parm = bcmcli_find_parm_by_prefix(session, "rogue_onu_detection_process.detection_algorithm.accesses.");
+                    if (cli_parm != NULL)
+                    {
+                        int32_t i1;
+                        val.detection_algorithm.u.special_map.accesses.val = apicli_byte_pool_calloc(byte_pool, cli_parm->array_size * sizeof(*val.detection_algorithm.u.special_map.accesses.val));
+                        if (val.detection_algorithm.u.special_map.accesses.val == NULL)
+                        {
+                            apicli_print_complete(session, BCM_ERR_NOMEM, "\n");
+                            return BCM_ERR_NOMEM;
+                        }
+
+                        val.detection_algorithm.u.special_map.accesses.len = cli_parm->array_size;
+                        cli_parm = bcmcli_find_named_parm(session, "rogue_onu_detection_process.detection_algorithm.accesses.plo_size");
+                        if (cli_parm != NULL)
+                        {
+                            if (cli_parm->array_size != val.detection_algorithm.u.special_map.accesses.len)
+                            {
+                                apicli_print_complete(session, BCM_ERR_PARM, "rogue_onu_detection_process.detection_algorithm.accesses.plo_size is a different size than other arrays in the struct\n");
+                                return BCM_ERR_PARM;
+                            }
+
+                            for (i1 = 0; i1 < val.detection_algorithm.u.special_map.accesses.len; i1++)
+                            {
+                                val.detection_algorithm.u.special_map.accesses.val[i1].plo_size = cli_parm->values[i1].unumber;
+                            }
+                        }
+
+                        cli_parm = bcmcli_find_named_parm(session, "rogue_onu_detection_process.detection_algorithm.accesses.alloc_id");
+                        if (cli_parm != NULL)
+                        {
+                            if (cli_parm->array_size != val.detection_algorithm.u.special_map.accesses.len)
+                            {
+                                apicli_print_complete(session, BCM_ERR_PARM, "rogue_onu_detection_process.detection_algorithm.accesses.alloc_id is a different size than other arrays in the struct\n");
+                                return BCM_ERR_PARM;
+                            }
+
+                            for (i1 = 0; i1 < val.detection_algorithm.u.special_map.accesses.len; i1++)
+                            {
+                                val.detection_algorithm.u.special_map.accesses.val[i1].alloc_id = (bcmolt_pon_alloc_id) cli_parm->values[i1].unumber;
+                            }
+                        }
+
+                        cli_parm = bcmcli_find_named_parm(session, "rogue_onu_detection_process.detection_algorithm.accesses.onu_id");
+                        if (cli_parm != NULL)
+                        {
+                            if (cli_parm->array_size != val.detection_algorithm.u.special_map.accesses.len)
+                            {
+                                apicli_print_complete(session, BCM_ERR_PARM, "rogue_onu_detection_process.detection_algorithm.accesses.onu_id is a different size than other arrays in the struct\n");
+                                return BCM_ERR_PARM;
+                            }
+
+                            for (i1 = 0; i1 < val.detection_algorithm.u.special_map.accesses.len; i1++)
+                            {
+                                val.detection_algorithm.u.special_map.accesses.val[i1].onu_id = (bcmolt_pon_onu_id) cli_parm->values[i1].unumber;
+                            }
+                        }
+
+                        cli_parm = bcmcli_find_named_parm(session, "rogue_onu_detection_process.detection_algorithm.accesses.access_size");
+                        if (cli_parm != NULL)
+                        {
+                            if (cli_parm->array_size != val.detection_algorithm.u.special_map.accesses.len)
+                            {
+                                apicli_print_complete(session, BCM_ERR_PARM, "rogue_onu_detection_process.detection_algorithm.accesses.access_size is a different size than other arrays in the struct\n");
+                                return BCM_ERR_PARM;
+                            }
+
+                            for (i1 = 0; i1 < val.detection_algorithm.u.special_map.accesses.len; i1++)
+                            {
+                                val.detection_algorithm.u.special_map.accesses.val[i1].access_size = cli_parm->values[i1].unumber;
+                            }
+                        }
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "rogue_onu_detection_process.detection_algorithm.accesses is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_ROGUE_DETECTION_ALGORITHM_TYPE_EXTENDED_GUARD_TIME:
+                    cli_parm = bcmcli_find_named_parm(session, "rogue_onu_detection_process.detection_algorithm.additional_guard_time");
+                    if (cli_parm != NULL)
+                    {
+                        val.detection_algorithm.u.extended_guard_time.additional_guard_time = cli_parm->value.unumber;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "rogue_onu_detection_process.detection_algorithm.additional_guard_time is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                default:
+                    apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+                    return BCM_ERR_RANGE;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "rogue_onu_detection_process.detection_algorithm is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, rogue_onu_detection_process, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_rogue_onu_detection_process val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_ROGUE_ONU_DETECTION_PROCESS, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, rogue_onu_detection_process, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "periodic_standby_pon_monitoring.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_periodic_standby_pon_monitoring val = { };
+        cli_parm = bcmcli_find_named_parm(session, "periodic_standby_pon_monitoring.interval");
+        if (cli_parm != NULL)
+        {
+            val.interval = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "periodic_standby_pon_monitoring.interval is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "periodic_standby_pon_monitoring.control");
+        if (cli_parm != NULL)
+        {
+            val.control = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "periodic_standby_pon_monitoring.control is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, periodic_standby_pon_monitoring, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_periodic_standby_pon_monitoring val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_PERIODIC_STANDBY_PON_MONITORING, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, periodic_standby_pon_monitoring, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "prbs_checker.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_prbs_checker_config val = { };
+        cli_parm = bcmcli_find_named_parm(session, "prbs_checker.polynom");
+        if (cli_parm != NULL)
+        {
+            val.polynom = (bcmolt_prbs_polynomial) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "prbs_checker.polynom is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "prbs_checker.mode");
+        if (cli_parm != NULL)
+        {
+            val.mode = (bcmolt_prbs_checker_mode) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "prbs_checker.mode is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "prbs_checker.data_invert");
+        if (cli_parm != NULL)
+        {
+            val.data_invert = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "prbs_checker.data_invert is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "prbs_checker.control");
+        if (cli_parm != NULL)
+        {
+            val.control = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "prbs_checker.control is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, prbs_checker, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_prbs_checker_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_PRBS_CHECKER, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, prbs_checker, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "prbs_generator.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_prbs_generator_config val = { };
+        cli_parm = bcmcli_find_named_parm(session, "prbs_generator.polynom");
+        if (cli_parm != NULL)
+        {
+            val.polynom = (bcmolt_prbs_polynomial) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "prbs_generator.polynom is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "prbs_generator.error_insert");
+        if (cli_parm != NULL)
+        {
+            val.error_insert = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "prbs_generator.error_insert is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "prbs_generator.invert");
+        if (cli_parm != NULL)
+        {
+            val.invert = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "prbs_generator.invert is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "prbs_generator.control");
+        if (cli_parm != NULL)
+        {
+            val.control = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "prbs_generator.control is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, prbs_generator, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_prbs_generator_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_PRBS_GENERATOR, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, prbs_generator, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "min_data_alloc_id");
+    if (cli_parm != NULL)
+    {
+        bcmolt_gpon_alloc_id val;
+        val = (bcmolt_gpon_alloc_id) cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, min_data_alloc_id, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, min_data_alloc_id, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_MIN_DATA_ALLOC_ID, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "automatic_onu_deactivation.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_automatic_onu_deactivation val = { };
+        cli_parm = bcmcli_find_named_parm(session, "automatic_onu_deactivation.los");
+        if (cli_parm != NULL)
+        {
+            val.los = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "automatic_onu_deactivation.los is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "automatic_onu_deactivation.onu_alarms");
+        if (cli_parm != NULL)
+        {
+            val.onu_alarms = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "automatic_onu_deactivation.onu_alarms is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "automatic_onu_deactivation.tiwi");
+        if (cli_parm != NULL)
+        {
+            val.tiwi = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "automatic_onu_deactivation.tiwi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "automatic_onu_deactivation.ack_timeout");
+        if (cli_parm != NULL)
+        {
+            val.ack_timeout = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "automatic_onu_deactivation.ack_timeout is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "automatic_onu_deactivation.sfi");
+        if (cli_parm != NULL)
+        {
+            val.sfi = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "automatic_onu_deactivation.sfi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "automatic_onu_deactivation.loki");
+        if (cli_parm != NULL)
+        {
+            val.loki = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "automatic_onu_deactivation.loki is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, automatic_onu_deactivation, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_automatic_onu_deactivation val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_AUTOMATIC_ONU_DEACTIVATION, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, automatic_onu_deactivation, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "us_bandwidth_limit");
+    if (cli_parm != NULL)
+    {
+        uint32_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, us_bandwidth_limit, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, us_bandwidth_limit, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_US_BANDWIDTH_LIMIT, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "debug.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_gpon_ni_debug val = { };
+        cli_parm = bcmcli_find_named_parm(session, "debug.number_of_gem_ports_per_onu");
+        if (cli_parm != NULL)
+        {
+            val.number_of_gem_ports_per_onu = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "debug.number_of_gem_ports_per_onu is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, debug, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_gpon_ni_debug val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_DEBUG, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, debug, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "onu_upgrade_params.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_gpon_onu_upgrade_params val = { };
+        cli_parm = bcmcli_find_named_parm(session, "onu_upgrade_params.response_timeout_ms");
+        if (cli_parm != NULL)
+        {
+            val.response_timeout_ms = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "onu_upgrade_params.response_timeout_ms is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "onu_upgrade_params.max_retry_count");
+        if (cli_parm != NULL)
+        {
+            val.max_retry_count = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "onu_upgrade_params.max_retry_count is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "onu_upgrade_params.omci_format");
+        if (cli_parm != NULL)
+        {
+            val.omci_format = (bcmolt_omci_device_id) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "onu_upgrade_params.omci_format is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "onu_upgrade_params.window_size");
+        if (cli_parm != NULL)
+        {
+            val.window_size = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "onu_upgrade_params.window_size is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "onu_upgrade_params.activate_commit");
+        if (cli_parm != NULL)
+        {
+            val.activate_commit = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "onu_upgrade_params.activate_commit is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "onu_upgrade_params.delay_for_commit_ms");
+        if (cli_parm != NULL)
+        {
+            val.delay_for_commit_ms = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "onu_upgrade_params.delay_for_commit_ms is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "onu_upgrade_params.max_activation_attempts");
+        if (cli_parm != NULL)
+        {
+            val.max_activation_attempts = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "onu_upgrade_params.max_activation_attempts is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, onu_upgrade_params, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_gpon_onu_upgrade_params val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_ONU_UPGRADE_PARAMS, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, onu_upgrade_params, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ps_c_wait_before_deactivation_timeout");
+    if (cli_parm != NULL)
+    {
+        uint16_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, ps_c_wait_before_deactivation_timeout, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, ps_c_wait_before_deactivation_timeout, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_PS_C_WAIT_BEFORE_DEACTIVATION_TIMEOUT, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "bip32_indication_control");
+    if (cli_parm != NULL)
+    {
+        bcmolt_control_state val;
+        val = (bcmolt_control_state) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, bip32_indication_control, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, bip32_indication_control, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_BIP32_INDICATION_CONTROL, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_set(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_set(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_ni_cfg_clear(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_ni_cfg cfg;         /**< declare main API struct */
+    bcmolt_gpon_ni_key key = { };   /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_ni_cfg cfg;\n");
+    bcmcli_log("bcmolt_gpon_ni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_clear");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_NI_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, gpon_ni, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, gpon_ni, key);\n");
+
+    /* call API */
+    err = bcmolt_cfg_clear(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_clear(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_ni_cfg_get_multi(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_ni_cfg cfg;         /**< declare main API struct */
+    bcmolt_gpon_ni_key key = { };   /**< declare key */
+    bcmolt_msg_set *msg_set = NULL; /**< declare message set */
+    uint32_t max_msgs;              /**< declare max number of msgs to get */
+    bcmos_bool invert_filter;       /**< declare filter invert flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_ni_cfg cfg;\n");
+    bcmcli_log("bcmolt_gpon_ni_key key = {  };\n");
+    bcmcli_log("bcmolt_msg_set* msg_set = NULL;\n");
+    bcmcli_log("uint32_t max_msgs;\n");
+    bcmcli_log("bcmos_bool invert_filter;\n");
+    apicli_print_start(session, "bcmolt_cfg_get_multi");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_NI_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* set max number of msgs from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "max_msgs");
+    if (cli_parm != NULL)
+    {
+        max_msgs = cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "max_msgs is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("max_msgs = %d;\n", max_msgs);
+
+    /* set filter invert flag from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "filter_invert");
+    if (cli_parm != NULL)
+    {
+        invert_filter = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "filter_invert is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("invert_filter = %s;\n", (invert_filter) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* allocate message set */
+    err = apicli_msg_set_alloc(byte_pool, BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);
+    if (err != BCM_ERR_OK)
+    {
+        return err;
+    }
+
+    bcmcli_log("bcmolt_msg_set_alloc(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, gpon_ni, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, gpon_ni, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.pon_status.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_pon_status val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.pon_status.state");
+        if (cli_parm != NULL)
+        {
+            val.state = (bcmolt_pon_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.pon_status.state is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.pon_status.los_status");
+        if (cli_parm != NULL)
+        {
+            val.los_status = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.pon_status.los_status is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, pon_status, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_pon_status val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_PON_STATUS, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, pon_status, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "pon_status");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, pon_status);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, pon_status);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.available_bandwidth.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_pon_available_bandwidth val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.available_bandwidth.cbr_bw");
+        if (cli_parm != NULL)
+        {
+            val.cbr_bw = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.available_bandwidth.cbr_bw is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.available_bandwidth.total_bw");
+        if (cli_parm != NULL)
+        {
+            val.total_bw = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.available_bandwidth.total_bw is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.available_bandwidth.next_onu_total_bw");
+        if (cli_parm != NULL)
+        {
+            val.next_onu_total_bw = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.available_bandwidth.next_onu_total_bw is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, available_bandwidth, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_pon_available_bandwidth val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_AVAILABLE_BANDWIDTH, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, available_bandwidth, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "available_bandwidth");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, available_bandwidth);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, available_bandwidth);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.number_of_active_onus");
+    if (cli_parm != NULL)
+    {
+        uint16_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, number_of_active_onus, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, number_of_active_onus, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_NUMBER_OF_ACTIVE_ONUS, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "number_of_active_onus");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, number_of_active_onus);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, number_of_active_onus);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.number_of_active_standby_onus");
+    if (cli_parm != NULL)
+    {
+        uint16_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, number_of_active_standby_onus, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, number_of_active_standby_onus, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_NUMBER_OF_ACTIVE_STANDBY_ONUS, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "number_of_active_standby_onus");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, number_of_active_standby_onus);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, number_of_active_standby_onus);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.prbs_status.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_prbs_status val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.prbs_status.lock_state");
+        if (cli_parm != NULL)
+        {
+            val.lock_state = (bcmolt_prbs_lock_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.prbs_status.lock_state is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.prbs_status.error_counts");
+        if (cli_parm != NULL)
+        {
+            val.error_counts = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.prbs_status.error_counts is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, prbs_status, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_prbs_status val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_PRBS_STATUS, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, prbs_status, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "prbs_status");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, prbs_status);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, prbs_status);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.pon_distance.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_pon_distance val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.pon_distance.max_log_distance");
+        if (cli_parm != NULL)
+        {
+            val.max_log_distance = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.pon_distance.max_log_distance is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.pon_distance.max_diff_reach");
+        if (cli_parm != NULL)
+        {
+            val.max_diff_reach = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.pon_distance.max_diff_reach is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, pon_distance, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_pon_distance val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_PON_DISTANCE, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, pon_distance, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "pon_distance");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, pon_distance);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, pon_distance);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.ranging_window_size");
+    if (cli_parm != NULL)
+    {
+        uint32_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, ranging_window_size, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, ranging_window_size, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_RANGING_WINDOW_SIZE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ranging_window_size");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, ranging_window_size);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, ranging_window_size);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.preassigned_equalization_delay");
+    if (cli_parm != NULL)
+    {
+        uint32_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, preassigned_equalization_delay, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, preassigned_equalization_delay, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_PREASSIGNED_EQUALIZATION_DELAY, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "preassigned_equalization_delay");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, preassigned_equalization_delay);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, preassigned_equalization_delay);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.eqd_cycles_number");
+    if (cli_parm != NULL)
+    {
+        uint32_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, eqd_cycles_number, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, eqd_cycles_number, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_EQD_CYCLES_NUMBER, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "eqd_cycles_number");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, eqd_cycles_number);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, eqd_cycles_number);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.power_level.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_pon_power_level val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.power_level.pls_maximum_allocation_size");
+        if (cli_parm != NULL)
+        {
+            val.pls_maximum_allocation_size = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.power_level.pls_maximum_allocation_size is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.power_level.mode");
+        if (cli_parm != NULL)
+        {
+            val.mode = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.power_level.mode is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, power_level, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_pon_power_level val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_POWER_LEVEL, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, power_level, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "power_level");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, power_level);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, power_level);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.ds_fec_mode");
+    if (cli_parm != NULL)
+    {
+        bcmolt_control_state val;
+        val = (bcmolt_control_state) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, ds_fec_mode, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, ds_fec_mode, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_DS_FEC_MODE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ds_fec_mode");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, ds_fec_mode);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, ds_fec_mode);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.drift_control.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_pon_drift_control val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.drift_control.drift_interval");
+        if (cli_parm != NULL)
+        {
+            val.drift_interval = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.drift_control.drift_interval is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.drift_control.drift_limit");
+        if (cli_parm != NULL)
+        {
+            val.drift_limit = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.drift_control.drift_limit is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.drift_control.transmission_control_limit");
+        if (cli_parm != NULL)
+        {
+            val.transmission_control_limit = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.drift_control.transmission_control_limit is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, drift_control, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_pon_drift_control val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_DRIFT_CONTROL, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, drift_control, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "drift_control");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, drift_control);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, drift_control);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.ds_ber_reporting_interval");
+    if (cli_parm != NULL)
+    {
+        bcmolt_ber_interval val;
+        val = (bcmolt_ber_interval) cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, ds_ber_reporting_interval, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, ds_ber_reporting_interval, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_DS_BER_REPORTING_INTERVAL, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ds_ber_reporting_interval");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, ds_ber_reporting_interval);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, ds_ber_reporting_interval);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.los_alarm_threshold");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, los_alarm_threshold, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, los_alarm_threshold, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_LOS_ALARM_THRESHOLD, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "los_alarm_threshold");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, los_alarm_threshold);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, los_alarm_threshold);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.los_initial_value");
+    if (cli_parm != NULL)
+    {
+        bcmolt_status val;
+        val = (bcmolt_status) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, los_initial_value, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, los_initial_value, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_LOS_INITIAL_VALUE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "los_initial_value");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, los_initial_value);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, los_initial_value);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.onu_alarms_thresholds.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_gpon_onu_alarms_thresholds val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.onu_alarms_thresholds.losi");
+        if (cli_parm != NULL)
+        {
+            val.losi = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.onu_alarms_thresholds.losi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.onu_alarms_thresholds.lofi");
+        if (cli_parm != NULL)
+        {
+            val.lofi = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.onu_alarms_thresholds.lofi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.onu_alarms_thresholds.loami");
+        if (cli_parm != NULL)
+        {
+            val.loami = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.onu_alarms_thresholds.loami is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, onu_alarms_thresholds, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_gpon_onu_alarms_thresholds val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_ONU_ALARMS_THRESHOLDS, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, onu_alarms_thresholds, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_alarms_thresholds");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, onu_alarms_thresholds);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, onu_alarms_thresholds);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.ber_monitor.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_ber_monitor_params val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.ber_monitor.us_ber_interval");
+        if (cli_parm != NULL)
+        {
+            val.us_ber_interval = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.ber_monitor.us_ber_interval is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.ber_monitor.sf_threshold");
+        if (cli_parm != NULL)
+        {
+            val.sf_threshold = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.ber_monitor.sf_threshold is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.ber_monitor.sd_threshold");
+        if (cli_parm != NULL)
+        {
+            val.sd_threshold = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.ber_monitor.sd_threshold is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, ber_monitor, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_ber_monitor_params val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_BER_MONITOR, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, ber_monitor, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ber_monitor");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, ber_monitor);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, ber_monitor);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.ploam_ack_timeout");
+    if (cli_parm != NULL)
+    {
+        uint16_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, ploam_ack_timeout, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, ploam_ack_timeout, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_PLOAM_ACK_TIMEOUT, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ploam_ack_timeout");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, ploam_ack_timeout);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, ploam_ack_timeout);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.onu_activation.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_gpon_onu_activation val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.onu_activation.key_exchange");
+        if (cli_parm != NULL)
+        {
+            val.key_exchange = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.onu_activation.key_exchange is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.onu_activation.password_authentication");
+        if (cli_parm != NULL)
+        {
+            val.password_authentication = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.onu_activation.password_authentication is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.onu_activation.fail_due_to_password_authentication_failure");
+        if (cli_parm != NULL)
+        {
+            val.fail_due_to_password_authentication_failure = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.onu_activation.fail_due_to_password_authentication_failure is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, onu_activation, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_gpon_onu_activation val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_ONU_ACTIVATION, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, onu_activation, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_activation");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, onu_activation);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, onu_activation);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.sn_acquisition.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_gpon_sn_acquisition val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.sn_acquisition.interval");
+        if (cli_parm != NULL)
+        {
+            val.interval = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.sn_acquisition.interval is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.sn_acquisition.control");
+        if (cli_parm != NULL)
+        {
+            val.control = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.sn_acquisition.control is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.sn_acquisition.onu_post_discovery_mode");
+        if (cli_parm != NULL)
+        {
+            val.onu_post_discovery_mode = (bcmolt_onu_post_discovery_mode) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.sn_acquisition.onu_post_discovery_mode is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, sn_acquisition, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_gpon_sn_acquisition val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_SN_ACQUISITION, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, sn_acquisition, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "sn_acquisition");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, sn_acquisition);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, sn_acquisition);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.key_exchange.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_gpon_key_exchange val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.key_exchange.interval");
+        if (cli_parm != NULL)
+        {
+            val.interval = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.key_exchange.interval is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.key_exchange.control");
+        if (cli_parm != NULL)
+        {
+            val.control = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.key_exchange.control is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.key_exchange.mode");
+        if (cli_parm != NULL)
+        {
+            val.mode = (bcmolt_key_exchange_mode) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.key_exchange.mode is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.key_exchange.encrypted_ports_only");
+        if (cli_parm != NULL)
+        {
+            val.encrypted_ports_only = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.key_exchange.encrypted_ports_only is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, key_exchange, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_gpon_key_exchange val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_KEY_EXCHANGE, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, key_exchange, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "key_exchange");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, key_exchange);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, key_exchange);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.protection_switching.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_pon_protection_switching val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.protection_switching.timeout");
+        if (cli_parm != NULL)
+        {
+            val.timeout = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.protection_switching.timeout is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.protection_switching.gpio_pin");
+        if (cli_parm != NULL)
+        {
+            val.gpio_pin = (bcmolt_gpio_pin) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.protection_switching.gpio_pin is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.protection_switching.options");
+        if (cli_parm != NULL)
+        {
+            val.options = (bcmolt_pon_protection_switching_options) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.protection_switching.options is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, protection_switching, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_pon_protection_switching val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_PROTECTION_SWITCHING, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, protection_switching, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "protection_switching");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, protection_switching);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, protection_switching);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.cbr_rt_allocation_profile.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_cbr_rt_allocation_profile val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.cbr_rt_allocation_profile.ma_7");
+        if (cli_parm != NULL)
+        {
+            val.ma_7 = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.cbr_rt_allocation_profile.ma_7 is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.cbr_rt_allocation_profile.ma_3");
+        if (cli_parm != NULL)
+        {
+            val.ma_3 = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.cbr_rt_allocation_profile.ma_3 is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.cbr_rt_allocation_profile.ma_1");
+        if (cli_parm != NULL)
+        {
+            val.ma_1 = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.cbr_rt_allocation_profile.ma_1 is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, cbr_rt_allocation_profile, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_cbr_rt_allocation_profile val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_CBR_RT_ALLOCATION_PROFILE, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, cbr_rt_allocation_profile, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "cbr_rt_allocation_profile");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, cbr_rt_allocation_profile);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, cbr_rt_allocation_profile);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.cbr_nrt_allocation_profile.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_arr_u16_2 val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.cbr_nrt_allocation_profile.arr");
+        if (cli_parm != NULL)
+        {
+            int32_t i0;
+            if (cli_parm->array_size != 2)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "array filter.cbr_nrt_allocation_profile.arr must have 2 elements\n");
+                return BCM_ERR_PARM;
+            }
+
+            for (i0 = 0; i0 < 2; i0++)
+            {
+                val.arr[i0] = cli_parm->values[i0].unumber;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.cbr_nrt_allocation_profile.arr is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, cbr_nrt_allocation_profile, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_arr_u16_2 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_CBR_NRT_ALLOCATION_PROFILE, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, cbr_nrt_allocation_profile, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "cbr_nrt_allocation_profile");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, cbr_nrt_allocation_profile);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, cbr_nrt_allocation_profile);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.dba.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_pon_dba val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.dba.sr_reporting_block_size");
+        if (cli_parm != NULL)
+        {
+            val.sr_reporting_block_size = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.dba.sr_reporting_block_size is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.dba.dba_mode");
+        if (cli_parm != NULL)
+        {
+            val.dba_mode = (bcmolt_dba_mode) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.dba.dba_mode is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, dba, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_pon_dba val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_DBA, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, dba, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "dba");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, dba);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, dba);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.power_management.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_onu_power_management_configuration val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.power_management.ilowpower");
+        if (cli_parm != NULL)
+        {
+            val.ilowpower = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.power_management.ilowpower is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.power_management.iaware");
+        if (cli_parm != NULL)
+        {
+            val.iaware = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.power_management.iaware is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.power_management.itransinit");
+        if (cli_parm != NULL)
+        {
+            val.itransinit = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.power_management.itransinit is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.power_management.itxinit");
+        if (cli_parm != NULL)
+        {
+            val.itxinit = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.power_management.itxinit is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.power_management.irxoff");
+        if (cli_parm != NULL)
+        {
+            val.irxoff = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.power_management.irxoff is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.power_management.low_power_clobi");
+        if (cli_parm != NULL)
+        {
+            val.low_power_clobi = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.power_management.low_power_clobi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, power_management, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_onu_power_management_configuration val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_POWER_MANAGEMENT, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, power_management, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "power_management");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, power_management);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, power_management);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.rogue_onu_detection_process.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_rogue_onu_detection_process val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.rogue_onu_detection_process.control");
+        if (cli_parm != NULL)
+        {
+            val.control = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.rogue_onu_detection_process.control is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "filter.rogue_onu_detection_process.detection_algorithm.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "filter.rogue_onu_detection_process.detection_algorithm.algorithm_type");
+            if (cli_parm != NULL)
+            {
+                val.detection_algorithm.algorithm_type = (bcmolt_rogue_detection_algorithm_type) cli_parm->value.enum_val;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.rogue_onu_detection_process.detection_algorithm.algorithm_type is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            switch (val.detection_algorithm.algorithm_type)
+            {
+                case BCMOLT_ROGUE_DETECTION_ALGORITHM_TYPE_EARLY_ROGUE_DETECTION:
+                    cli_parm = bcmcli_find_named_parm(session, "filter.rogue_onu_detection_process.detection_algorithm.measurement_type");
+                    if (cli_parm != NULL)
+                    {
+                        val.detection_algorithm.u.early_rogue_detection.measurement_type = (bcmolt_rogue_detection_window) cli_parm->value.enum_val;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "filter.rogue_onu_detection_process.detection_algorithm.measurement_type is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "filter.rogue_onu_detection_process.detection_algorithm.interval");
+                    if (cli_parm != NULL)
+                    {
+                        val.detection_algorithm.u.early_rogue_detection.interval = cli_parm->value.unumber;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "filter.rogue_onu_detection_process.detection_algorithm.interval is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "filter.rogue_onu_detection_process.detection_algorithm.second_ranging_window");
+                    if (cli_parm != NULL)
+                    {
+                        val.detection_algorithm.u.early_rogue_detection.second_ranging_window = cli_parm->value.number;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "filter.rogue_onu_detection_process.detection_algorithm.second_ranging_window is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "filter.rogue_onu_detection_process.detection_algorithm.alloc_type_to_scan");
+                    if (cli_parm != NULL)
+                    {
+                        val.detection_algorithm.u.early_rogue_detection.alloc_type_to_scan = (bcmolt_alloc_type_to_scan) cli_parm->value.enum_val;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "filter.rogue_onu_detection_process.detection_algorithm.alloc_type_to_scan is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_ROGUE_DETECTION_ALGORITHM_TYPE_SPECIAL_MAP:
+                    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.rogue_onu_detection_process.detection_algorithm.accesses.");
+                    if (cli_parm != NULL)
+                    {
+                        int32_t i1;
+                        val.detection_algorithm.u.special_map.accesses.val = apicli_byte_pool_calloc(byte_pool, cli_parm->array_size * sizeof(*val.detection_algorithm.u.special_map.accesses.val));
+                        if (val.detection_algorithm.u.special_map.accesses.val == NULL)
+                        {
+                            apicli_print_complete(session, BCM_ERR_NOMEM, "\n");
+                            return BCM_ERR_NOMEM;
+                        }
+
+                        val.detection_algorithm.u.special_map.accesses.len = cli_parm->array_size;
+                        cli_parm = bcmcli_find_named_parm(session, "filter.rogue_onu_detection_process.detection_algorithm.accesses.plo_size");
+                        if (cli_parm != NULL)
+                        {
+                            if (cli_parm->array_size != val.detection_algorithm.u.special_map.accesses.len)
+                            {
+                                apicli_print_complete(session, BCM_ERR_PARM, "filter.rogue_onu_detection_process.detection_algorithm.accesses.plo_size is a different size than other arrays in the struct\n");
+                                return BCM_ERR_PARM;
+                            }
+
+                            for (i1 = 0; i1 < val.detection_algorithm.u.special_map.accesses.len; i1++)
+                            {
+                                val.detection_algorithm.u.special_map.accesses.val[i1].plo_size = cli_parm->values[i1].unumber;
+                            }
+                        }
+
+                        cli_parm = bcmcli_find_named_parm(session, "filter.rogue_onu_detection_process.detection_algorithm.accesses.alloc_id");
+                        if (cli_parm != NULL)
+                        {
+                            if (cli_parm->array_size != val.detection_algorithm.u.special_map.accesses.len)
+                            {
+                                apicli_print_complete(session, BCM_ERR_PARM, "filter.rogue_onu_detection_process.detection_algorithm.accesses.alloc_id is a different size than other arrays in the struct\n");
+                                return BCM_ERR_PARM;
+                            }
+
+                            for (i1 = 0; i1 < val.detection_algorithm.u.special_map.accesses.len; i1++)
+                            {
+                                val.detection_algorithm.u.special_map.accesses.val[i1].alloc_id = (bcmolt_pon_alloc_id) cli_parm->values[i1].unumber;
+                            }
+                        }
+
+                        cli_parm = bcmcli_find_named_parm(session, "filter.rogue_onu_detection_process.detection_algorithm.accesses.onu_id");
+                        if (cli_parm != NULL)
+                        {
+                            if (cli_parm->array_size != val.detection_algorithm.u.special_map.accesses.len)
+                            {
+                                apicli_print_complete(session, BCM_ERR_PARM, "filter.rogue_onu_detection_process.detection_algorithm.accesses.onu_id is a different size than other arrays in the struct\n");
+                                return BCM_ERR_PARM;
+                            }
+
+                            for (i1 = 0; i1 < val.detection_algorithm.u.special_map.accesses.len; i1++)
+                            {
+                                val.detection_algorithm.u.special_map.accesses.val[i1].onu_id = (bcmolt_pon_onu_id) cli_parm->values[i1].unumber;
+                            }
+                        }
+
+                        cli_parm = bcmcli_find_named_parm(session, "filter.rogue_onu_detection_process.detection_algorithm.accesses.access_size");
+                        if (cli_parm != NULL)
+                        {
+                            if (cli_parm->array_size != val.detection_algorithm.u.special_map.accesses.len)
+                            {
+                                apicli_print_complete(session, BCM_ERR_PARM, "filter.rogue_onu_detection_process.detection_algorithm.accesses.access_size is a different size than other arrays in the struct\n");
+                                return BCM_ERR_PARM;
+                            }
+
+                            for (i1 = 0; i1 < val.detection_algorithm.u.special_map.accesses.len; i1++)
+                            {
+                                val.detection_algorithm.u.special_map.accesses.val[i1].access_size = cli_parm->values[i1].unumber;
+                            }
+                        }
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "filter.rogue_onu_detection_process.detection_algorithm.accesses is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_ROGUE_DETECTION_ALGORITHM_TYPE_EXTENDED_GUARD_TIME:
+                    cli_parm = bcmcli_find_named_parm(session, "filter.rogue_onu_detection_process.detection_algorithm.additional_guard_time");
+                    if (cli_parm != NULL)
+                    {
+                        val.detection_algorithm.u.extended_guard_time.additional_guard_time = cli_parm->value.unumber;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "filter.rogue_onu_detection_process.detection_algorithm.additional_guard_time is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                default:
+                    apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+                    return BCM_ERR_RANGE;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.rogue_onu_detection_process.detection_algorithm is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, rogue_onu_detection_process, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_rogue_onu_detection_process val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_ROGUE_ONU_DETECTION_PROCESS, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, rogue_onu_detection_process, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rogue_onu_detection_process");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, rogue_onu_detection_process);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, rogue_onu_detection_process);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.periodic_standby_pon_monitoring.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_periodic_standby_pon_monitoring val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.periodic_standby_pon_monitoring.interval");
+        if (cli_parm != NULL)
+        {
+            val.interval = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.periodic_standby_pon_monitoring.interval is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.periodic_standby_pon_monitoring.control");
+        if (cli_parm != NULL)
+        {
+            val.control = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.periodic_standby_pon_monitoring.control is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, periodic_standby_pon_monitoring, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_periodic_standby_pon_monitoring val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_PERIODIC_STANDBY_PON_MONITORING, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, periodic_standby_pon_monitoring, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "periodic_standby_pon_monitoring");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, periodic_standby_pon_monitoring);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, periodic_standby_pon_monitoring);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.prbs_checker.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_prbs_checker_config val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.prbs_checker.polynom");
+        if (cli_parm != NULL)
+        {
+            val.polynom = (bcmolt_prbs_polynomial) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.prbs_checker.polynom is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.prbs_checker.mode");
+        if (cli_parm != NULL)
+        {
+            val.mode = (bcmolt_prbs_checker_mode) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.prbs_checker.mode is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.prbs_checker.data_invert");
+        if (cli_parm != NULL)
+        {
+            val.data_invert = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.prbs_checker.data_invert is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.prbs_checker.control");
+        if (cli_parm != NULL)
+        {
+            val.control = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.prbs_checker.control is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, prbs_checker, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_prbs_checker_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_PRBS_CHECKER, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, prbs_checker, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "prbs_checker");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, prbs_checker);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, prbs_checker);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.prbs_generator.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_prbs_generator_config val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.prbs_generator.polynom");
+        if (cli_parm != NULL)
+        {
+            val.polynom = (bcmolt_prbs_polynomial) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.prbs_generator.polynom is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.prbs_generator.error_insert");
+        if (cli_parm != NULL)
+        {
+            val.error_insert = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.prbs_generator.error_insert is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.prbs_generator.invert");
+        if (cli_parm != NULL)
+        {
+            val.invert = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.prbs_generator.invert is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.prbs_generator.control");
+        if (cli_parm != NULL)
+        {
+            val.control = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.prbs_generator.control is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, prbs_generator, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_prbs_generator_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_PRBS_GENERATOR, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, prbs_generator, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "prbs_generator");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, prbs_generator);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, prbs_generator);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.min_data_alloc_id");
+    if (cli_parm != NULL)
+    {
+        bcmolt_gpon_alloc_id val;
+        val = (bcmolt_gpon_alloc_id) cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, min_data_alloc_id, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, min_data_alloc_id, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_MIN_DATA_ALLOC_ID, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "min_data_alloc_id");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, min_data_alloc_id);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, min_data_alloc_id);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.automatic_onu_deactivation.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_automatic_onu_deactivation val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.automatic_onu_deactivation.los");
+        if (cli_parm != NULL)
+        {
+            val.los = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.automatic_onu_deactivation.los is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.automatic_onu_deactivation.onu_alarms");
+        if (cli_parm != NULL)
+        {
+            val.onu_alarms = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.automatic_onu_deactivation.onu_alarms is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.automatic_onu_deactivation.tiwi");
+        if (cli_parm != NULL)
+        {
+            val.tiwi = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.automatic_onu_deactivation.tiwi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.automatic_onu_deactivation.ack_timeout");
+        if (cli_parm != NULL)
+        {
+            val.ack_timeout = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.automatic_onu_deactivation.ack_timeout is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.automatic_onu_deactivation.sfi");
+        if (cli_parm != NULL)
+        {
+            val.sfi = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.automatic_onu_deactivation.sfi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.automatic_onu_deactivation.loki");
+        if (cli_parm != NULL)
+        {
+            val.loki = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.automatic_onu_deactivation.loki is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, automatic_onu_deactivation, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_automatic_onu_deactivation val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_AUTOMATIC_ONU_DEACTIVATION, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, automatic_onu_deactivation, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "automatic_onu_deactivation");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, automatic_onu_deactivation);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, automatic_onu_deactivation);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.us_bandwidth_limit");
+    if (cli_parm != NULL)
+    {
+        uint32_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, us_bandwidth_limit, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, us_bandwidth_limit, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_US_BANDWIDTH_LIMIT, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "us_bandwidth_limit");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, us_bandwidth_limit);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, us_bandwidth_limit);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.all_onus.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_gpon_onu_with_state_list_u16_max_128 val = { };
+        int32_t i2;
+        val.val = apicli_byte_pool_calloc(byte_pool, cli_parm->array_size * sizeof(*val.val));
+        if (val.val == NULL)
+        {
+            apicli_print_complete(session, BCM_ERR_NOMEM, "\n");
+            return BCM_ERR_NOMEM;
+        }
+
+        val.len = cli_parm->array_size;
+        cli_parm = bcmcli_find_named_parm(session, "filter.all_onus.onu_id");
+        if (cli_parm != NULL)
+        {
+            if (cli_parm->array_size != val.len)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.all_onus.onu_id is a different size than other arrays in the struct\n");
+                return BCM_ERR_PARM;
+            }
+
+            for (i2 = 0; i2 < val.len; i2++)
+            {
+                val.val[i2].onu_id = (bcmolt_gpon_onu_id) cli_parm->values[i2].unumber;
+            }
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.all_onus.state");
+        if (cli_parm != NULL)
+        {
+            if (cli_parm->array_size != val.len)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.all_onus.state is a different size than other arrays in the struct\n");
+                return BCM_ERR_PARM;
+            }
+
+            for (i2 = 0; i2 < val.len; i2++)
+            {
+                val.val[i2].state = (bcmolt_onu_state) cli_parm->values[i2].enum_val;
+            }
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, all_onus, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_gpon_onu_with_state_list_u16_max_128 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_ALL_ONUS, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, all_onus, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "all_onus");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, all_onus);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, all_onus);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.all_mcast_gem_ports.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_gpon_gem_port_with_state_list_u16_max_128 val = { };
+        int32_t i3;
+        val.val = apicli_byte_pool_calloc(byte_pool, cli_parm->array_size * sizeof(*val.val));
+        if (val.val == NULL)
+        {
+            apicli_print_complete(session, BCM_ERR_NOMEM, "\n");
+            return BCM_ERR_NOMEM;
+        }
+
+        val.len = cli_parm->array_size;
+        cli_parm = bcmcli_find_named_parm(session, "filter.all_mcast_gem_ports.gem_id");
+        if (cli_parm != NULL)
+        {
+            if (cli_parm->array_size != val.len)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.all_mcast_gem_ports.gem_id is a different size than other arrays in the struct\n");
+                return BCM_ERR_PARM;
+            }
+
+            for (i3 = 0; i3 < val.len; i3++)
+            {
+                val.val[i3].gem_id = (bcmolt_gpon_gem_id) cli_parm->values[i3].unumber;
+            }
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.all_mcast_gem_ports.state");
+        if (cli_parm != NULL)
+        {
+            if (cli_parm->array_size != val.len)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.all_mcast_gem_ports.state is a different size than other arrays in the struct\n");
+                return BCM_ERR_PARM;
+            }
+
+            for (i3 = 0; i3 < val.len; i3++)
+            {
+                val.val[i3].state = (bcmolt_gpon_gem_port_state) cli_parm->values[i3].enum_val;
+            }
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, all_mcast_gem_ports, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_gpon_gem_port_with_state_list_u16_max_128 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_ALL_MCAST_GEM_PORTS, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, all_mcast_gem_ports, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "all_mcast_gem_ports");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, all_mcast_gem_ports);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, all_mcast_gem_ports);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.debug.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_gpon_ni_debug val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.debug.number_of_gem_ports_per_onu");
+        if (cli_parm != NULL)
+        {
+            val.number_of_gem_ports_per_onu = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.debug.number_of_gem_ports_per_onu is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, debug, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_gpon_ni_debug val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_DEBUG, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, debug, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "debug");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, debug);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, debug);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.onu_upgrade_params.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_gpon_onu_upgrade_params val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.onu_upgrade_params.response_timeout_ms");
+        if (cli_parm != NULL)
+        {
+            val.response_timeout_ms = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.onu_upgrade_params.response_timeout_ms is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.onu_upgrade_params.max_retry_count");
+        if (cli_parm != NULL)
+        {
+            val.max_retry_count = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.onu_upgrade_params.max_retry_count is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.onu_upgrade_params.omci_format");
+        if (cli_parm != NULL)
+        {
+            val.omci_format = (bcmolt_omci_device_id) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.onu_upgrade_params.omci_format is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.onu_upgrade_params.window_size");
+        if (cli_parm != NULL)
+        {
+            val.window_size = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.onu_upgrade_params.window_size is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.onu_upgrade_params.activate_commit");
+        if (cli_parm != NULL)
+        {
+            val.activate_commit = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.onu_upgrade_params.activate_commit is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.onu_upgrade_params.delay_for_commit_ms");
+        if (cli_parm != NULL)
+        {
+            val.delay_for_commit_ms = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.onu_upgrade_params.delay_for_commit_ms is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.onu_upgrade_params.max_activation_attempts");
+        if (cli_parm != NULL)
+        {
+            val.max_activation_attempts = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.onu_upgrade_params.max_activation_attempts is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, onu_upgrade_params, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_gpon_onu_upgrade_params val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_ONU_UPGRADE_PARAMS, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, onu_upgrade_params, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_upgrade_params");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, onu_upgrade_params);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, onu_upgrade_params);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.ps_c_wait_before_deactivation_timeout");
+    if (cli_parm != NULL)
+    {
+        uint16_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, ps_c_wait_before_deactivation_timeout, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, ps_c_wait_before_deactivation_timeout, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_PS_C_WAIT_BEFORE_DEACTIVATION_TIMEOUT, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ps_c_wait_before_deactivation_timeout");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, ps_c_wait_before_deactivation_timeout);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, ps_c_wait_before_deactivation_timeout);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.bip32_indication_control");
+    if (cli_parm != NULL)
+    {
+        bcmolt_control_state val;
+        val = (bcmolt_control_state) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, bip32_indication_control, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_ni, bip32_indication_control, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_NI_CFG_ID_BIP32_INDICATION_CONTROL, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "bip32_indication_control");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, bip32_indication_control);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, bip32_indication_control);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_ni, pon_status) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_ni, available_bandwidth) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_ni, number_of_active_onus) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_ni, number_of_active_standby_onus) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_ni, prbs_status) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_ni, pon_distance) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_ni, ranging_window_size) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_ni, preassigned_equalization_delay) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_ni, eqd_cycles_number) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_ni, power_level) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_ni, ds_fec_mode) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_ni, drift_control) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_ni, ds_ber_reporting_interval) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_ni, los_alarm_threshold) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_ni, los_initial_value) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_ni, onu_alarms_thresholds) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_ni, ber_monitor) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_ni, ploam_ack_timeout) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_ni, onu_activation) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_ni, sn_acquisition) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_ni, key_exchange) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_ni, protection_switching) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_ni, cbr_rt_allocation_profile) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_ni, cbr_nrt_allocation_profile) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_ni, dba) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_ni, power_management) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_ni, rogue_onu_detection_process) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_ni, periodic_standby_pon_monitoring) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_ni, prbs_checker) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_ni, prbs_generator) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_ni, min_data_alloc_id) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_ni, automatic_onu_deactivation) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_ni, us_bandwidth_limit) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_ni, all_onus) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_ni, all_mcast_gem_ports) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_ni, debug) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_ni, onu_upgrade_params) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_ni, ps_c_wait_before_deactivation_timeout) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_ni, bip32_indication_control))
+    {
+        BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, all_properties);
+        bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_ni, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);
+    bcmcli_log("bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_ni_stat_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_ni_stat stat;       /**< declare main API struct */
+    bcmolt_gpon_ni_key key = { };   /**< declare key */
+    bcmos_bool clear_on_read;       /**< declare 'clear on read' flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_ni_stat stat;\n");
+    bcmcli_log("bcmolt_gpon_ni_key key = {  };\n");
+    bcmcli_log("bcmos_bool clear_on_read;\n");
+    apicli_print_start(session, "bcmolt_stat_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_NI_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* set stat flags from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "clear");
+    if (cli_parm != NULL)
+    {
+        clear_on_read = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "clear is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("clear_on_read = %s;\n", (clear_on_read) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* init the API struct */
+    BCMOLT_STAT_INIT(&stat, gpon_ni, key);
+    bcmcli_log("BCMOLT_STAT_INIT(&stat, gpon_ni, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "fec_codewords");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_ni, fec_codewords);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_ni, fec_codewords);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "fec_codewords_uncorrected");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_ni, fec_codewords_uncorrected);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_ni, fec_codewords_uncorrected);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "bip8_bytes");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_ni, bip8_bytes);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_ni, bip8_bytes);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "bip8_errors");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_ni, bip8_errors);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_ni, bip8_errors);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_gem_packets");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_ni, rx_gem_packets);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_ni, rx_gem_packets);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_gem_dropped");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_ni, rx_gem_dropped);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_ni, rx_gem_dropped);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_gem_idle");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_ni, rx_gem_idle);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_ni, rx_gem_idle);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_gem_corrected");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_ni, rx_gem_corrected);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_ni, rx_gem_corrected);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_gem_illegal");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_ni, rx_gem_illegal);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_ni, rx_gem_illegal);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_allocations_valid");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_ni, rx_allocations_valid);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_ni, rx_allocations_valid);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_allocations_invalid");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_ni, rx_allocations_invalid);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_ni, rx_allocations_invalid);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_allocations_disabled");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_ni, rx_allocations_disabled);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_ni, rx_allocations_disabled);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_ploams");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_ni, rx_ploams);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_ni, rx_ploams);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_ploams_non_idle");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_ni, rx_ploams_non_idle);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_ni, rx_ploams_non_idle);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_ploams_error");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_ni, rx_ploams_error);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_ni, rx_ploams_error);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_ploams_dropped");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_ni, rx_ploams_dropped);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_ni, rx_ploams_dropped);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_cpu");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_ni, rx_cpu);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_ni, rx_cpu);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_omci");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_ni, rx_omci);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_ni, rx_omci);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_omci_packets_crc_error");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_ni, rx_omci_packets_crc_error);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_ni, rx_omci_packets_crc_error);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_dropped_too_short");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_ni, rx_dropped_too_short);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_ni, rx_dropped_too_short);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_dropped_too_long");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_ni, rx_dropped_too_long);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_ni, rx_dropped_too_long);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_crc_errors");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_ni, rx_crc_errors);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_ni, rx_crc_errors);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_key_errors");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_ni, rx_key_errors);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_ni, rx_key_errors);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_fragments_errors");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_ni, rx_fragments_errors);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_ni, rx_fragments_errors);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_packets_dropped");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_ni, rx_packets_dropped);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_ni, rx_packets_dropped);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_gem");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_ni, tx_gem);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_ni, tx_gem);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_ploams");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_ni, tx_ploams);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_ni, tx_ploams);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_gem_fragments");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_ni, tx_gem_fragments);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_ni, tx_gem_fragments);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_cpu");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_ni, tx_cpu);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_ni, tx_cpu);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_omci");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_ni, tx_omci);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_ni, tx_omci);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_cpu_omci_packets_dropped");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_ni, tx_cpu_omci_packets_dropped);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_ni, tx_cpu_omci_packets_dropped);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_dropped_illegal_length");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_ni, tx_dropped_illegal_length);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_ni, tx_dropped_illegal_length);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_dropped_tpid_miss");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_ni, tx_dropped_tpid_miss);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_ni, tx_dropped_tpid_miss);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_dropped_vid_miss");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_ni, tx_dropped_vid_miss);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_ni, tx_dropped_vid_miss);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_STAT_PROP_IS_SET(&stat, gpon_ni, fec_codewords) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_ni, fec_codewords_uncorrected) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_ni, bip8_bytes) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_ni, bip8_errors) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_ni, rx_gem_packets) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_ni, rx_gem_dropped) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_ni, rx_gem_idle) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_ni, rx_gem_corrected) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_ni, rx_gem_illegal) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_ni, rx_allocations_valid) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_ni, rx_allocations_invalid) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_ni, rx_allocations_disabled) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_ni, rx_ploams) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_ni, rx_ploams_non_idle) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_ni, rx_ploams_error) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_ni, rx_ploams_dropped) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_ni, rx_cpu) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_ni, rx_omci) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_ni, rx_omci_packets_crc_error) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_ni, rx_dropped_too_short) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_ni, rx_dropped_too_long) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_ni, rx_crc_errors) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_ni, rx_key_errors) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_ni, rx_fragments_errors) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_ni, rx_packets_dropped) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_ni, tx_gem) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_ni, tx_ploams) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_ni, tx_gem_fragments) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_ni, tx_cpu) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_ni, tx_omci) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_ni, tx_cpu_omci_packets_dropped) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_ni, tx_dropped_illegal_length) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_ni, tx_dropped_tpid_miss) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_ni, tx_dropped_vid_miss))
+    {
+        BCMOLT_STAT_PROP_GET(&stat, gpon_ni, all_properties);
+        bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_ni, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_stat_get(device_id, &stat.hdr, clear_on_read);
+    bcmcli_log("bcmolt_stat_get(device_id, &stat.hdr, clear_on_read);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &stat.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, stat.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_ni_oper_set_pon_state_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_ni_set_pon_state oper;  /**< declare main API struct */
+    bcmolt_gpon_ni_key key = { };       /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_ni_set_pon_state oper;\n");
+    bcmcli_log("bcmolt_gpon_ni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_NI_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, gpon_ni, set_pon_state, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, gpon_ni, set_pon_state, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "pon_state");
+    if (cli_parm != NULL)
+    {
+        bcmolt_pon_operation val;
+        val = (bcmolt_pon_operation) cli_parm->value.enum_val;
+        BCMOLT_OPER_PROP_SET(&oper, gpon_ni, set_pon_state, pon_state, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, gpon_ni, set_pon_state, pon_state, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_OPER, BCMOLT_GPON_NI_OPER_ID_SET_PON_STATE, BCMOLT_GPON_NI_SET_PON_STATE_ID_PON_STATE, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_ni_oper_reset_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_ni_reset oper;      /**< declare main API struct */
+    bcmolt_gpon_ni_key key = { };   /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_ni_reset oper;\n");
+    bcmcli_log("bcmolt_gpon_ni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_NI_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, gpon_ni, reset, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, gpon_ni, reset, key);\n");
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_ni_oper_disable_serial_number_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_ni_disable_serial_number oper;  /**< declare main API struct */
+    bcmolt_gpon_ni_key key = { };               /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_ni_disable_serial_number oper;\n");
+    bcmcli_log("bcmolt_gpon_ni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_NI_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, gpon_ni, disable_serial_number, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, gpon_ni, disable_serial_number, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "control");
+    if (cli_parm != NULL)
+    {
+        bcmolt_disable_serial_number_control val;
+        val = (bcmolt_disable_serial_number_control) cli_parm->value.enum_val;
+        BCMOLT_OPER_PROP_SET(&oper, gpon_ni, disable_serial_number, control, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, gpon_ni, disable_serial_number, control, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_OPER, BCMOLT_GPON_NI_OPER_ID_DISABLE_SERIAL_NUMBER, BCMOLT_GPON_NI_DISABLE_SERIAL_NUMBER_ID_CONTROL, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "serial_number.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_serial_number val = { };
+        cli_parm = bcmcli_find_named_parm(session, "serial_number.vendor_id");
+        if (cli_parm != NULL)
+        {
+            if (bcmolt_buf_get_used(&cli_parm->value.buffer) != 4)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "buffer serial_number.vendor_id must have 4 bytes\n");
+                return BCM_ERR_PARM;
+            }
+
+            bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+            bcmolt_buf_read(&cli_parm->value.buffer, val.vendor_id, 4);
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "serial_number.vendor_id is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "serial_number.vendor_specific");
+        if (cli_parm != NULL)
+        {
+            if (bcmolt_buf_get_used(&cli_parm->value.buffer) != 4)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "buffer serial_number.vendor_specific must have 4 bytes\n");
+                return BCM_ERR_PARM;
+            }
+
+            bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+            bcmolt_buf_read(&cli_parm->value.buffer, val.vendor_specific, 4);
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "serial_number.vendor_specific is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_OPER_PROP_SET(&oper, gpon_ni, disable_serial_number, serial_number, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_serial_number val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_OPER, BCMOLT_GPON_NI_OPER_ID_DISABLE_SERIAL_NUMBER, BCMOLT_GPON_NI_DISABLE_SERIAL_NUMBER_ID_SERIAL_NUMBER, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, gpon_ni, disable_serial_number, serial_number, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_ni_oper_single_request_standby_pon_monitoring_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_ni_single_request_standby_pon_monitoring oper;  /**< declare main API struct */
+    bcmolt_gpon_ni_key key = { };   /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_ni_single_request_standby_pon_monitoring oper;\n");
+    bcmcli_log("bcmolt_gpon_ni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_NI_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, gpon_ni, single_request_standby_pon_monitoring, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, gpon_ni, single_request_standby_pon_monitoring, key);\n");
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_ni_oper_set_onu_state_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_ni_set_onu_state oper;  /**< declare main API struct */
+    bcmolt_gpon_ni_key key = { };       /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_ni_set_onu_state oper;\n");
+    bcmcli_log("bcmolt_gpon_ni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_NI_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, gpon_ni, set_onu_state, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, gpon_ni, set_onu_state, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "onu_state");
+    if (cli_parm != NULL)
+    {
+        bcmolt_onu_operation val;
+        val = (bcmolt_onu_operation) cli_parm->value.enum_val;
+        BCMOLT_OPER_PROP_SET(&oper, gpon_ni, set_onu_state, onu_state, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, gpon_ni, set_onu_state, onu_state, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_OPER, BCMOLT_GPON_NI_OPER_ID_SET_ONU_STATE, BCMOLT_GPON_NI_SET_ONU_STATE_ID_ONU_STATE, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_ni_proxy_cpu_packets_send(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_ni_cpu_packets proxy;   /**< declare main API struct */
+    bcmolt_gpon_ni_key key = { };       /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_ni_cpu_packets proxy;\n");
+    bcmcli_log("bcmolt_gpon_ni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_proxy_send");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_NI_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_PROXY_INIT(&proxy, gpon_ni, cpu_packets, key);
+    bcmcli_log("BCMOLT_PROXY_INIT(&proxy, gpon_ni, cpu_packets, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "packet_type");
+    if (cli_parm != NULL)
+    {
+        bcmolt_packet_type val;
+        val = (bcmolt_packet_type) cli_parm->value.enum_val;
+        BCMOLT_PROXY_PROP_SET(&proxy, gpon_ni, cpu_packets, packet_type, val);
+        bcmcli_log("BCMOLT_PROXY_PROP_SET(&proxy, gpon_ni, cpu_packets, packet_type, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_PROXY, BCMOLT_GPON_NI_PROXY_ID_CPU_PACKETS, BCMOLT_GPON_NI_CPU_PACKETS_ID_PACKET_TYPE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "calc_crc");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_PROXY_PROP_SET(&proxy, gpon_ni, cpu_packets, calc_crc, val);
+        bcmcli_log("BCMOLT_PROXY_PROP_SET(&proxy, gpon_ni, cpu_packets, calc_crc, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_PROXY, BCMOLT_GPON_NI_PROXY_ID_CPU_PACKETS, BCMOLT_GPON_NI_CPU_PACKETS_ID_CALC_CRC, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "gem_port_list");
+    if (cli_parm != NULL)
+    {
+        bcmolt_gpon_gem_id_list_u8_max_16 val = { };
+        int32_t i0;
+        val.val = apicli_byte_pool_calloc(byte_pool, cli_parm->array_size * sizeof(*val.val));
+        if (val.val == NULL)
+        {
+            apicli_print_complete(session, BCM_ERR_NOMEM, "\n");
+            return BCM_ERR_NOMEM;
+        }
+
+        val.len = cli_parm->array_size;
+        for (i0 = 0; i0 < val.len; i0++)
+        {
+            val.val[i0] = (bcmolt_gpon_gem_id) cli_parm->values[i0].unumber;
+        }
+
+        BCMOLT_PROXY_PROP_SET(&proxy, gpon_ni, cpu_packets, gem_port_list, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_gpon_gem_id_list_u8_max_16 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_PROXY, BCMOLT_GPON_NI_PROXY_ID_CPU_PACKETS, BCMOLT_GPON_NI_CPU_PACKETS_ID_GEM_PORT_LIST, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_PROXY_PROP_SET(&proxy, gpon_ni, cpu_packets, gem_port_list, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "buffer");
+    if (cli_parm != NULL)
+    {
+        bcmolt_u8_list_u32_max_2048 val = { };
+        val.len = bcmolt_buf_get_used(&cli_parm->value.buffer);
+        val.val = apicli_byte_pool_calloc(byte_pool, val.len);
+        if (val.val == NULL)
+        {
+            apicli_print_complete(session, BCM_ERR_NOMEM, "\n");
+            return BCM_ERR_NOMEM;
+        }
+
+        bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+        bcmolt_buf_read(&cli_parm->value.buffer, val.val, val.len);
+        BCMOLT_PROXY_PROP_SET(&proxy, gpon_ni, cpu_packets, buffer, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_u8_list_u32_max_2048 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_PROXY, BCMOLT_GPON_NI_PROXY_ID_CPU_PACKETS, BCMOLT_GPON_NI_CPU_PACKETS_ID_BUFFER, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_PROXY_PROP_SET(&proxy, gpon_ni, cpu_packets, buffer, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    /* call API */
+    err = bcmolt_proxy_send(device_id, &proxy.hdr);
+    bcmcli_log("bcmolt_proxy_send(device_id, &proxy.hdr);\n");
+    apicli_print_complete(session, err, proxy.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_ni_proxy_broadcast_ploam_packet_send(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_ni_broadcast_ploam_packet proxy;    /**< declare main API struct */
+    bcmolt_gpon_ni_key key = { };                   /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_ni_broadcast_ploam_packet proxy;\n");
+    bcmcli_log("bcmolt_gpon_ni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_proxy_send");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_NI_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_PROXY_INIT(&proxy, gpon_ni, broadcast_ploam_packet, key);
+    bcmcli_log("BCMOLT_PROXY_INIT(&proxy, gpon_ni, broadcast_ploam_packet, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_parm_by_prefix(session, "ploam.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_arr_u8_12 val = { };
+        cli_parm = bcmcli_find_named_parm(session, "ploam.arr");
+        if (cli_parm != NULL)
+        {
+            if (bcmolt_buf_get_used(&cli_parm->value.buffer) != 12)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "buffer ploam.arr must have 12 bytes\n");
+                return BCM_ERR_PARM;
+            }
+
+            bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+            bcmolt_buf_read(&cli_parm->value.buffer, val.arr, 12);
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "ploam.arr is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_PROXY_PROP_SET(&proxy, gpon_ni, broadcast_ploam_packet, ploam, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_arr_u8_12 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_PROXY, BCMOLT_GPON_NI_PROXY_ID_BROADCAST_PLOAM_PACKET, BCMOLT_GPON_NI_BROADCAST_PLOAM_PACKET_ID_PLOAM, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_PROXY_PROP_SET(&proxy, gpon_ni, broadcast_ploam_packet, ploam, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    /* call API */
+    err = bcmolt_proxy_send(device_id, &proxy.hdr);
+    bcmcli_log("bcmolt_proxy_send(device_id, &proxy.hdr);\n");
+    apicli_print_complete(session, err, proxy.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_ni_oper_rogue_detection_window_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_ni_rogue_detection_window oper; /**< declare main API struct */
+    bcmolt_gpon_ni_key key = { };               /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_ni_rogue_detection_window oper;\n");
+    bcmcli_log("bcmolt_gpon_ni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_NI_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, gpon_ni, rogue_detection_window, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, gpon_ni, rogue_detection_window, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "window_type");
+    if (cli_parm != NULL)
+    {
+        bcmolt_rogue_detection_window val;
+        val = (bcmolt_rogue_detection_window) cli_parm->value.enum_val;
+        BCMOLT_OPER_PROP_SET(&oper, gpon_ni, rogue_detection_window, window_type, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, gpon_ni, rogue_detection_window, window_type, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_OPER, BCMOLT_GPON_NI_OPER_ID_ROGUE_DETECTION_WINDOW, BCMOLT_GPON_NI_ROGUE_DETECTION_WINDOW_ID_WINDOW_TYPE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "alloc_id");
+    if (cli_parm != NULL)
+    {
+        bcmolt_gpon_alloc_id val;
+        val = (bcmolt_gpon_alloc_id) cli_parm->value.unumber;
+        BCMOLT_OPER_PROP_SET(&oper, gpon_ni, rogue_detection_window, alloc_id, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, gpon_ni, rogue_detection_window, alloc_id, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_OPER, BCMOLT_GPON_NI_OPER_ID_ROGUE_DETECTION_WINDOW, BCMOLT_GPON_NI_ROGUE_DETECTION_WINDOW_ID_ALLOC_ID, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        bcmolt_gpon_onu_id val;
+        val = (bcmolt_gpon_onu_id) cli_parm->value.unumber;
+        BCMOLT_OPER_PROP_SET(&oper, gpon_ni, rogue_detection_window, onu_id, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, gpon_ni, rogue_detection_window, onu_id, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_OPER, BCMOLT_GPON_NI_OPER_ID_ROGUE_DETECTION_WINDOW, BCMOLT_GPON_NI_ROGUE_DETECTION_WINDOW_ID_ONU_ID, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "second_ranging_window");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_OPER_PROP_SET(&oper, gpon_ni, rogue_detection_window, second_ranging_window, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, gpon_ni, rogue_detection_window, second_ranging_window, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_OPER, BCMOLT_GPON_NI_OPER_ID_ROGUE_DETECTION_WINDOW, BCMOLT_GPON_NI_ROGUE_DETECTION_WINDOW_ID_SECOND_RANGING_WINDOW, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_ni_oper_tod_request_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_ni_tod_request oper;    /**< declare main API struct */
+    bcmolt_gpon_ni_key key = { };       /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_ni_tod_request oper;\n");
+    bcmcli_log("bcmolt_gpon_ni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_NI_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, gpon_ni, tod_request, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, gpon_ni, tod_request, key);\n");
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_ni_oper_protection_switching_type_c_set_multiple_onu_state_submit(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_ni_protection_switching_type_c_set_multiple_onu_state oper; /**< declare main API struct */
+    bcmolt_gpon_ni_key key = { };   /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_ni_protection_switching_type_c_set_multiple_onu_state oper;\n");
+    bcmcli_log("bcmolt_gpon_ni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_NI_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, gpon_ni, protection_switching_type_c_set_multiple_onu_state, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, gpon_ni, protection_switching_type_c_set_multiple_onu_state, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "onu_state");
+    if (cli_parm != NULL)
+    {
+        bcmolt_switch_over_type_c_onu_state val;
+        val = (bcmolt_switch_over_type_c_onu_state) cli_parm->value.enum_val;
+        BCMOLT_OPER_PROP_SET(&oper, gpon_ni, protection_switching_type_c_set_multiple_onu_state, onu_state, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, gpon_ni, protection_switching_type_c_set_multiple_onu_state, onu_state, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_OPER, BCMOLT_GPON_NI_OPER_ID_PROTECTION_SWITCHING_TYPE_C_SET_MULTIPLE_ONU_STATE, BCMOLT_GPON_NI_PROTECTION_SWITCHING_TYPE_C_SET_MULTIPLE_ONU_STATE_ID_ONU_STATE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_list");
+    if (cli_parm != NULL)
+    {
+        bcmolt_gpon_onu_id_list_u32_max_256 val = { };
+        int32_t i0;
+        val.val = apicli_byte_pool_calloc(byte_pool, cli_parm->array_size * sizeof(*val.val));
+        if (val.val == NULL)
+        {
+            apicli_print_complete(session, BCM_ERR_NOMEM, "\n");
+            return BCM_ERR_NOMEM;
+        }
+
+        val.len = cli_parm->array_size;
+        for (i0 = 0; i0 < val.len; i0++)
+        {
+            val.val[i0] = (bcmolt_gpon_onu_id) cli_parm->values[i0].unumber;
+        }
+
+        BCMOLT_OPER_PROP_SET(&oper, gpon_ni, protection_switching_type_c_set_multiple_onu_state, onu_list, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_gpon_onu_id_list_u32_max_256 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_OPER, BCMOLT_GPON_NI_OPER_ID_PROTECTION_SWITCHING_TYPE_C_SET_MULTIPLE_ONU_STATE, BCMOLT_GPON_NI_PROTECTION_SWITCHING_TYPE_C_SET_MULTIPLE_ONU_STATE_ID_ONU_LIST, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, gpon_ni, protection_switching_type_c_set_multiple_onu_state, onu_list, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_ni_oper_start_onu_upgrade_submit(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_ni_start_onu_upgrade oper;  /**< declare main API struct */
+    bcmolt_gpon_ni_key key = { };           /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_ni_start_onu_upgrade oper;\n");
+    bcmcli_log("bcmolt_gpon_ni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_NI_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, gpon_ni, start_onu_upgrade, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, gpon_ni, start_onu_upgrade, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "list_of_onu_ids");
+    if (cli_parm != NULL)
+    {
+        bcmolt_pon_onu_id_list_u32 val = { };
+        int32_t i0;
+        val.val = apicli_byte_pool_calloc(byte_pool, cli_parm->array_size * sizeof(*val.val));
+        if (val.val == NULL)
+        {
+            apicli_print_complete(session, BCM_ERR_NOMEM, "\n");
+            return BCM_ERR_NOMEM;
+        }
+
+        val.len = cli_parm->array_size;
+        for (i0 = 0; i0 < val.len; i0++)
+        {
+            val.val[i0] = (bcmolt_pon_onu_id) cli_parm->values[i0].unumber;
+        }
+
+        BCMOLT_OPER_PROP_SET(&oper, gpon_ni, start_onu_upgrade, list_of_onu_ids, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_pon_onu_id_list_u32 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_OPER, BCMOLT_GPON_NI_OPER_ID_START_ONU_UPGRADE, BCMOLT_GPON_NI_START_ONU_UPGRADE_ID_LIST_OF_ONU_IDS, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, gpon_ni, start_onu_upgrade, list_of_onu_ids, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_ni_stat_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_ni_stat_cfg stat_cfg;   /**< declare main API struct */
+    bcmolt_gpon_ni_key key = { };       /**< declare key */
+    bcmolt_gpon_ni_stat_id stat_id;     /**< declare stat ID */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_ni_stat_cfg stat_cfg;\n");
+    bcmcli_log("bcmolt_gpon_ni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_stat_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_NI_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* set stat ID from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "sub");
+    if (cli_parm != NULL)
+    {
+        stat_id = (bcmolt_gpon_ni_stat_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    /* init the API struct */
+    switch (stat_id)
+    {
+        case BCMOLT_GPON_NI_STAT_ID_FEC_CODEWORDS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, fec_codewords, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, fec_codewords, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_FEC_CODEWORDS_UNCORRECTED:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, fec_codewords_uncorrected, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, fec_codewords_uncorrected, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_BIP8_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, bip8_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, bip8_bytes, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_BIP8_ERRORS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, bip8_errors, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, bip8_errors, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_RX_GEM_PACKETS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_gem_packets, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_gem_packets, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_RX_GEM_DROPPED:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_gem_dropped, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_gem_dropped, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_RX_GEM_IDLE:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_gem_idle, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_gem_idle, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_RX_GEM_CORRECTED:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_gem_corrected, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_gem_corrected, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_RX_GEM_ILLEGAL:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_gem_illegal, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_gem_illegal, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_RX_ALLOCATIONS_VALID:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_allocations_valid, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_allocations_valid, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_RX_ALLOCATIONS_INVALID:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_allocations_invalid, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_allocations_invalid, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_RX_ALLOCATIONS_DISABLED:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_allocations_disabled, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_allocations_disabled, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_RX_PLOAMS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_ploams, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_ploams, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_RX_PLOAMS_NON_IDLE:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_ploams_non_idle, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_ploams_non_idle, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_RX_PLOAMS_ERROR:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_ploams_error, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_ploams_error, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_RX_PLOAMS_DROPPED:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_ploams_dropped, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_ploams_dropped, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_RX_CPU:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_cpu, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_cpu, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_RX_OMCI:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_omci, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_omci, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_RX_OMCI_PACKETS_CRC_ERROR:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_omci_packets_crc_error, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_omci_packets_crc_error, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_RX_DROPPED_TOO_SHORT:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_dropped_too_short, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_dropped_too_short, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_RX_DROPPED_TOO_LONG:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_dropped_too_long, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_dropped_too_long, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_RX_CRC_ERRORS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_crc_errors, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_crc_errors, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_RX_KEY_ERRORS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_key_errors, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_key_errors, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_RX_FRAGMENTS_ERRORS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_fragments_errors, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_fragments_errors, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_RX_PACKETS_DROPPED:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_packets_dropped, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_packets_dropped, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_TX_GEM:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, tx_gem, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, tx_gem, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_TX_PLOAMS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, tx_ploams, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, tx_ploams, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_TX_GEM_FRAGMENTS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, tx_gem_fragments, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, tx_gem_fragments, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_TX_CPU:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, tx_cpu, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, tx_cpu, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_TX_OMCI:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, tx_omci, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, tx_omci, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_TX_CPU_OMCI_PACKETS_DROPPED:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, tx_cpu_omci_packets_dropped, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, tx_cpu_omci_packets_dropped, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_TX_DROPPED_ILLEGAL_LENGTH:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, tx_dropped_illegal_length, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, tx_dropped_illegal_length, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_TX_DROPPED_TPID_MISS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, tx_dropped_tpid_miss, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, tx_dropped_tpid_miss, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_TX_DROPPED_VID_MISS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, tx_dropped_vid_miss, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, tx_dropped_vid_miss, key);\n");
+            break;
+        default:
+            apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+            return BCM_ERR_RANGE;
+    }
+
+    /* call API */
+    err = bcmolt_stat_cfg_get(device_id, &stat_cfg.hdr);
+    bcmcli_log("bcmolt_stat_cfg_get(device_id, &stat_cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &stat_cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, stat_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_ni_stat_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_ni_stat_cfg stat_cfg;   /**< declare main API struct */
+    bcmolt_gpon_ni_key key = { };       /**< declare key */
+    bcmolt_gpon_ni_stat_id stat_id;     /**< declare stat ID */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_ni_stat_cfg stat_cfg;\n");
+    bcmcli_log("bcmolt_gpon_ni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_stat_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_NI_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* set stat ID from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "sub");
+    if (cli_parm != NULL)
+    {
+        stat_id = (bcmolt_gpon_ni_stat_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    /* init the API struct */
+    switch (stat_id)
+    {
+        case BCMOLT_GPON_NI_STAT_ID_FEC_CODEWORDS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, fec_codewords, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, fec_codewords, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_FEC_CODEWORDS_UNCORRECTED:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, fec_codewords_uncorrected, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, fec_codewords_uncorrected, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_BIP8_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, bip8_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, bip8_bytes, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_BIP8_ERRORS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, bip8_errors, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, bip8_errors, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_RX_GEM_PACKETS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_gem_packets, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_gem_packets, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_RX_GEM_DROPPED:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_gem_dropped, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_gem_dropped, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_RX_GEM_IDLE:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_gem_idle, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_gem_idle, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_RX_GEM_CORRECTED:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_gem_corrected, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_gem_corrected, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_RX_GEM_ILLEGAL:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_gem_illegal, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_gem_illegal, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_RX_ALLOCATIONS_VALID:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_allocations_valid, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_allocations_valid, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_RX_ALLOCATIONS_INVALID:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_allocations_invalid, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_allocations_invalid, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_RX_ALLOCATIONS_DISABLED:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_allocations_disabled, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_allocations_disabled, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_RX_PLOAMS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_ploams, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_ploams, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_RX_PLOAMS_NON_IDLE:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_ploams_non_idle, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_ploams_non_idle, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_RX_PLOAMS_ERROR:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_ploams_error, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_ploams_error, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_RX_PLOAMS_DROPPED:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_ploams_dropped, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_ploams_dropped, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_RX_CPU:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_cpu, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_cpu, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_RX_OMCI:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_omci, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_omci, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_RX_OMCI_PACKETS_CRC_ERROR:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_omci_packets_crc_error, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_omci_packets_crc_error, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_RX_DROPPED_TOO_SHORT:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_dropped_too_short, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_dropped_too_short, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_RX_DROPPED_TOO_LONG:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_dropped_too_long, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_dropped_too_long, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_RX_CRC_ERRORS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_crc_errors, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_crc_errors, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_RX_KEY_ERRORS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_key_errors, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_key_errors, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_RX_FRAGMENTS_ERRORS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_fragments_errors, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_fragments_errors, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_RX_PACKETS_DROPPED:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_packets_dropped, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, rx_packets_dropped, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_TX_GEM:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, tx_gem, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, tx_gem, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_TX_PLOAMS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, tx_ploams, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, tx_ploams, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_TX_GEM_FRAGMENTS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, tx_gem_fragments, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, tx_gem_fragments, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_TX_CPU:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, tx_cpu, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, tx_cpu, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_TX_OMCI:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, tx_omci, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, tx_omci, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_TX_CPU_OMCI_PACKETS_DROPPED:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, tx_cpu_omci_packets_dropped, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, tx_cpu_omci_packets_dropped, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_TX_DROPPED_ILLEGAL_LENGTH:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, tx_dropped_illegal_length, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, tx_dropped_illegal_length, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_TX_DROPPED_TPID_MISS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, tx_dropped_tpid_miss, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, tx_dropped_tpid_miss, key);\n");
+            break;
+        case BCMOLT_GPON_NI_STAT_ID_TX_DROPPED_VID_MISS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, tx_dropped_vid_miss, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_ni, tx_dropped_vid_miss, key);\n");
+            break;
+        default:
+            apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+            return BCM_ERR_RANGE;
+    }
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_stat_alarm_config val = { };
+        cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.trigger.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.type");
+            if (cli_parm != NULL)
+            {
+                val.trigger.type = (bcmolt_stat_condition_type) cli_parm->value.enum_val;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.type is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            switch (val.trigger.type)
+            {
+                case BCMOLT_STAT_CONDITION_TYPE_RATE_THRESHOLD:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.rising");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_threshold.rising = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.rising is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.falling");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_threshold.falling = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.falling is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_RATE_RANGE:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.upper");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_range.upper = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.upper is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.lower");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_range.lower = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.lower is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_VALUE_THRESHOLD:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.limit");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.value_threshold.limit = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.limit is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_NONE:
+                    break;
+                default:
+                    apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+                    return BCM_ERR_RANGE;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.soak.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "cfg.soak.active_soak_time");
+            if (cli_parm != NULL)
+            {
+                val.soak.active_soak_time = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak.active_soak_time is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "cfg.soak.clear_soak_time");
+            if (cli_parm != NULL)
+            {
+                val.soak.clear_soak_time = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak.clear_soak_time is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_STAT_CFG_PROP_SET(&stat_cfg, gpon_ni, cfg, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_stat_alarm_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_STAT_CFG, 0, BCMOLT_GPON_NI_STAT_CFG_ID_CFG, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_STAT_CFG_PROP_SET(&stat_cfg, gpon_ni, cfg, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    /* call API */
+    err = bcmolt_stat_cfg_set(device_id, &stat_cfg.hdr);
+    bcmcli_log("bcmolt_stat_cfg_set(device_id, &stat_cfg.hdr);\n");
+    apicli_print_complete(session, err, stat_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_ni_auto_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_ni_auto_cfg auto_cfg;   /**< declare main API struct */
+    bcmolt_gpon_ni_key key = { };       /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_ni_auto_cfg auto_cfg;\n");
+    bcmcli_log("bcmolt_gpon_ni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_auto_cfg_get");
+
+    /* init the API struct */
+    BCMOLT_AUTO_CFG_INIT(&auto_cfg, gpon_ni, key);
+    bcmcli_log("BCMOLT_AUTO_CFG_INIT(&auto_cfg, gpon_ni, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "activate_all_onus_completed");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_ni, activate_all_onus_completed);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_ni, activate_all_onus_completed);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "cpu_packets_failure");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_ni, cpu_packets_failure);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_ni, cpu_packets_failure);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "deactivate_all_onus_completed");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_ni, deactivate_all_onus_completed);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_ni, deactivate_all_onus_completed);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "disable_all_onus_completed");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_ni, disable_all_onus_completed);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_ni, disable_all_onus_completed);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "enable_all_onus_completed");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_ni, enable_all_onus_completed);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_ni, enable_all_onus_completed);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "los");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_ni, los);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_ni, los);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_discovered");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_ni, onu_discovered);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_ni, onu_discovered);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_upgrade_complete");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_ni, onu_upgrade_complete);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_ni, onu_upgrade_complete);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "protection_switching_onus_ranged");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_ni, protection_switching_onus_ranged);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_ni, protection_switching_onus_ranged);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "protection_switching_switchover_completed");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_ni, protection_switching_switchover_completed);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_ni, protection_switching_switchover_completed);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "protection_switching_traffic_resume");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_ni, protection_switching_traffic_resume);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_ni, protection_switching_traffic_resume);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rogue_detection_completed");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_ni, rogue_detection_completed);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_ni, rogue_detection_completed);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rogue_onu_special_map_cycle_start");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_ni, rogue_onu_special_map_cycle_start);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_ni, rogue_onu_special_map_cycle_start);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "serial_number_acquisition_cycle_start");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_ni, serial_number_acquisition_cycle_start);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_ni, serial_number_acquisition_cycle_start);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "standby_pon_monitoring_cycle_completed");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_ni, standby_pon_monitoring_cycle_completed);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_ni, standby_pon_monitoring_cycle_completed);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_cleared");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_ni, stat_alarm_cleared);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_ni, stat_alarm_cleared);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_raised");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_ni, stat_alarm_raised);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_ni, stat_alarm_raised);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "state_change_completed");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_ni, state_change_completed);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_ni, state_change_completed);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tod_request_completed");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_ni, tod_request_completed);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_ni, tod_request_completed);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_ni, activate_all_onus_completed) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_ni, cpu_packets_failure) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_ni, deactivate_all_onus_completed) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_ni, disable_all_onus_completed) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_ni, enable_all_onus_completed) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_ni, los) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_ni, onu_discovered) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_ni, onu_upgrade_complete) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_ni, protection_switching_onus_ranged) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_ni, protection_switching_switchover_completed) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_ni, protection_switching_traffic_resume) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_ni, rogue_detection_completed) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_ni, rogue_onu_special_map_cycle_start) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_ni, serial_number_acquisition_cycle_start) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_ni, standby_pon_monitoring_cycle_completed) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_ni, stat_alarm_cleared) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_ni, stat_alarm_raised) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_ni, state_change_completed) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_ni, tod_request_completed))
+    {
+        BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_ni, all_properties);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_ni, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_auto_cfg_get(device_id, &auto_cfg.hdr);
+    bcmcli_log("bcmolt_auto_cfg_get(device_id, &auto_cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &auto_cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, auto_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_ni_auto_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_ni_auto_cfg auto_cfg;   /**< declare main API struct */
+    bcmolt_gpon_ni_key key = { };       /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_ni_auto_cfg auto_cfg;\n");
+    bcmcli_log("bcmolt_gpon_ni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_auto_cfg_set");
+
+    /* init the API struct */
+    BCMOLT_AUTO_CFG_INIT(&auto_cfg, gpon_ni, key);
+    bcmcli_log("BCMOLT_AUTO_CFG_INIT(&auto_cfg, gpon_ni, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "activate_all_onus_completed");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_ni, activate_all_onus_completed, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_ni, activate_all_onus_completed, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_NI_AUTO_CFG_ID_ACTIVATE_ALL_ONUS_COMPLETED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "cpu_packets_failure");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_ni, cpu_packets_failure, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_ni, cpu_packets_failure, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_NI_AUTO_CFG_ID_CPU_PACKETS_FAILURE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "deactivate_all_onus_completed");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_ni, deactivate_all_onus_completed, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_ni, deactivate_all_onus_completed, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_NI_AUTO_CFG_ID_DEACTIVATE_ALL_ONUS_COMPLETED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "disable_all_onus_completed");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_ni, disable_all_onus_completed, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_ni, disable_all_onus_completed, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_NI_AUTO_CFG_ID_DISABLE_ALL_ONUS_COMPLETED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "enable_all_onus_completed");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_ni, enable_all_onus_completed, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_ni, enable_all_onus_completed, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_NI_AUTO_CFG_ID_ENABLE_ALL_ONUS_COMPLETED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "los");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_ni, los, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_ni, los, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_NI_AUTO_CFG_ID_LOS, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_discovered");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_ni, onu_discovered, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_ni, onu_discovered, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_NI_AUTO_CFG_ID_ONU_DISCOVERED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_upgrade_complete");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_ni, onu_upgrade_complete, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_ni, onu_upgrade_complete, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_NI_AUTO_CFG_ID_ONU_UPGRADE_COMPLETE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "protection_switching_onus_ranged");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_ni, protection_switching_onus_ranged, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_ni, protection_switching_onus_ranged, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_NI_AUTO_CFG_ID_PROTECTION_SWITCHING_ONUS_RANGED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "protection_switching_switchover_completed");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_ni, protection_switching_switchover_completed, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_ni, protection_switching_switchover_completed, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_NI_AUTO_CFG_ID_PROTECTION_SWITCHING_SWITCHOVER_COMPLETED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "protection_switching_traffic_resume");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_ni, protection_switching_traffic_resume, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_ni, protection_switching_traffic_resume, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_NI_AUTO_CFG_ID_PROTECTION_SWITCHING_TRAFFIC_RESUME, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rogue_detection_completed");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_ni, rogue_detection_completed, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_ni, rogue_detection_completed, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_NI_AUTO_CFG_ID_ROGUE_DETECTION_COMPLETED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rogue_onu_special_map_cycle_start");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_ni, rogue_onu_special_map_cycle_start, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_ni, rogue_onu_special_map_cycle_start, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_NI_AUTO_CFG_ID_ROGUE_ONU_SPECIAL_MAP_CYCLE_START, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "serial_number_acquisition_cycle_start");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_ni, serial_number_acquisition_cycle_start, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_ni, serial_number_acquisition_cycle_start, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_NI_AUTO_CFG_ID_SERIAL_NUMBER_ACQUISITION_CYCLE_START, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "standby_pon_monitoring_cycle_completed");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_ni, standby_pon_monitoring_cycle_completed, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_ni, standby_pon_monitoring_cycle_completed, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_NI_AUTO_CFG_ID_STANDBY_PON_MONITORING_CYCLE_COMPLETED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_cleared");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_ni, stat_alarm_cleared, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_ni, stat_alarm_cleared, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_NI_AUTO_CFG_ID_STAT_ALARM_CLEARED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_raised");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_ni, stat_alarm_raised, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_ni, stat_alarm_raised, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_NI_AUTO_CFG_ID_STAT_ALARM_RAISED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "state_change_completed");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_ni, state_change_completed, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_ni, state_change_completed, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_NI_AUTO_CFG_ID_STATE_CHANGE_COMPLETED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tod_request_completed");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_ni, tod_request_completed, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_ni, tod_request_completed, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_NI, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_NI_AUTO_CFG_ID_TOD_REQUEST_COMPLETED, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_auto_cfg_set(device_id, &auto_cfg.hdr);
+    bcmcli_log("bcmolt_auto_cfg_set(device_id, &auto_cfg.hdr);\n");
+    apicli_print_complete(session, err, auto_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_onu_cfg_get(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_onu_cfg cfg;        /**< declare main API struct */
+    bcmolt_gpon_onu_key key = { };  /**< declare key */
+    uint8_t *list_mem;              /**< declare memory buffer for variable-sized lists */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_onu_cfg cfg;\n");
+    bcmcli_log("bcmolt_gpon_onu_key key = {  };\n");
+    bcmcli_log("uint8_t* list_mem;\n");
+    apicli_print_start(session, "bcmolt_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_ONU_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        key.onu_id = (bcmolt_gpon_onu_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "onu_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.onu_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_ONU_KEY_ID_ONU_ID, &key.onu_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, gpon_onu, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, gpon_onu, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "onu_state");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_onu, onu_state);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_onu, onu_state);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "serial_number");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_onu, serial_number);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_onu, serial_number);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "password");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_onu, password);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_onu, password);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "auto_password_learning");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_onu, auto_password_learning);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_onu, auto_password_learning);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "us_fec");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_onu, us_fec);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_onu, us_fec);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "omci_port_id");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_onu, omci_port_id);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_onu, omci_port_id);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ds_ber_reporting_interval");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_onu, ds_ber_reporting_interval);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_onu, ds_ber_reporting_interval);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "aes_encryption_key");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_onu, aes_encryption_key);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_onu, aes_encryption_key);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "alarm_state");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_onu, alarm_state);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_onu, alarm_state);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ranging_time");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_onu, ranging_time);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_onu, ranging_time);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "disabled_after_discovery");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_onu, disabled_after_discovery);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_onu, disabled_after_discovery);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "deactivation_reason");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_onu, deactivation_reason);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_onu, deactivation_reason);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "all_gem_ports");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_onu, all_gem_ports);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_onu, all_gem_ports);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "all_allocs");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_onu, all_allocs);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_onu, all_allocs);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_ps_type_c");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_onu, onu_ps_type_c);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_onu, onu_ps_type_c);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "extended_guard_time");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_onu, extended_guard_time);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_onu, extended_guard_time);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_onu, onu_state) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_onu, serial_number) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_onu, password) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_onu, auto_password_learning) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_onu, us_fec) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_onu, omci_port_id) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_onu, ds_ber_reporting_interval) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_onu, aes_encryption_key) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_onu, alarm_state) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_onu, ranging_time) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_onu, disabled_after_discovery) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_onu, deactivation_reason) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_onu, all_gem_ports) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_onu, all_allocs) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_onu, onu_ps_type_c) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_onu, extended_guard_time))
+    {
+        BCMOLT_CFG_PROP_GET(&cfg, gpon_onu, all_properties);
+        bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_onu, all_properties);\n");
+    }
+
+    /* set memory to use for variable-sized lists */
+    list_mem = apicli_byte_pool_calloc(byte_pool, APICLI_DYNAMIC_LIST_BUFFER_SIZE);
+    if (list_mem == NULL)
+    {
+        apicli_print_complete(session, BCM_ERR_NOMEM, "\n");
+        return BCM_ERR_NOMEM;
+    }
+
+    bcmcli_log("list_mem = bcmos_calloc(APICLI_DYNAMIC_LIST_BUFFER_SIZE);\n");
+    BCMOLT_CFG_LIST_BUF_SET(&cfg, gpon_onu, list_mem, APICLI_DYNAMIC_LIST_BUFFER_SIZE);
+    bcmcli_log("BCMOLT_CFG_LIST_BUF_SET(&cfg, gpon_onu, list_mem, APICLI_DYNAMIC_LIST_BUFFER_SIZE);\n");
+
+    /* call API */
+    err = bcmolt_cfg_get(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_get(device_id, &cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_onu_cfg_set(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_onu_cfg cfg;        /**< declare main API struct */
+    bcmolt_gpon_onu_key key = { };  /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_onu_cfg cfg;\n");
+    bcmcli_log("bcmolt_gpon_onu_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_ONU_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        key.onu_id = (bcmolt_gpon_onu_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "onu_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.onu_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_ONU_KEY_ID_ONU_ID, &key.onu_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, gpon_onu, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, gpon_onu, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_parm_by_prefix(session, "serial_number.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_serial_number val = { };
+        cli_parm = bcmcli_find_named_parm(session, "serial_number.vendor_id");
+        if (cli_parm != NULL)
+        {
+            if (bcmolt_buf_get_used(&cli_parm->value.buffer) != 4)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "buffer serial_number.vendor_id must have 4 bytes\n");
+                return BCM_ERR_PARM;
+            }
+
+            bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+            bcmolt_buf_read(&cli_parm->value.buffer, val.vendor_id, 4);
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "serial_number.vendor_id is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "serial_number.vendor_specific");
+        if (cli_parm != NULL)
+        {
+            if (bcmolt_buf_get_used(&cli_parm->value.buffer) != 4)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "buffer serial_number.vendor_specific must have 4 bytes\n");
+                return BCM_ERR_PARM;
+            }
+
+            bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+            bcmolt_buf_read(&cli_parm->value.buffer, val.vendor_specific, 4);
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "serial_number.vendor_specific is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_onu, serial_number, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_serial_number val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_ONU_CFG_ID_SERIAL_NUMBER, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_onu, serial_number, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "password.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_arr_u8_10 val = { };
+        cli_parm = bcmcli_find_named_parm(session, "password.arr");
+        if (cli_parm != NULL)
+        {
+            if (bcmolt_buf_get_used(&cli_parm->value.buffer) != 10)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "buffer password.arr must have 10 bytes\n");
+                return BCM_ERR_PARM;
+            }
+
+            bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+            bcmolt_buf_read(&cli_parm->value.buffer, val.arr, 10);
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "password.arr is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_onu, password, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_arr_u8_10 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_ONU_CFG_ID_PASSWORD, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_onu, password, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "auto_password_learning");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_onu, auto_password_learning, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_onu, auto_password_learning, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_ONU_CFG_ID_AUTO_PASSWORD_LEARNING, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "us_fec");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_onu, us_fec, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_onu, us_fec, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_ONU_CFG_ID_US_FEC, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "omci_port_id");
+    if (cli_parm != NULL)
+    {
+        bcmolt_gpon_gem_id val;
+        val = (bcmolt_gpon_gem_id) cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_onu, omci_port_id, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_onu, omci_port_id, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_ONU_CFG_ID_OMCI_PORT_ID, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ds_ber_reporting_interval");
+    if (cli_parm != NULL)
+    {
+        bcmolt_ber_interval val;
+        val = (bcmolt_ber_interval) cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_onu, ds_ber_reporting_interval, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_onu, ds_ber_reporting_interval, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_ONU_CFG_ID_DS_BER_REPORTING_INTERVAL, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "aes_encryption_key.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_aes_key val = { };
+        cli_parm = bcmcli_find_named_parm(session, "aes_encryption_key.bytes");
+        if (cli_parm != NULL)
+        {
+            if (bcmolt_buf_get_used(&cli_parm->value.buffer) != 16)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "buffer aes_encryption_key.bytes must have 16 bytes\n");
+                return BCM_ERR_PARM;
+            }
+
+            bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+            bcmolt_buf_read(&cli_parm->value.buffer, val.bytes, 16);
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "aes_encryption_key.bytes is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_onu, aes_encryption_key, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_aes_key val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_ONU_CFG_ID_AES_ENCRYPTION_KEY, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_onu, aes_encryption_key, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "alarm_state.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_gpon_onu_alarm_state val = { };
+        cli_parm = bcmcli_find_named_parm(session, "alarm_state.losi");
+        if (cli_parm != NULL)
+        {
+            val.losi = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "alarm_state.losi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "alarm_state.lofi");
+        if (cli_parm != NULL)
+        {
+            val.lofi = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "alarm_state.lofi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "alarm_state.loami");
+        if (cli_parm != NULL)
+        {
+            val.loami = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "alarm_state.loami is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "alarm_state.dgi");
+        if (cli_parm != NULL)
+        {
+            val.dgi = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "alarm_state.dgi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "alarm_state.tiwi");
+        if (cli_parm != NULL)
+        {
+            val.tiwi = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "alarm_state.tiwi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "alarm_state.dowi");
+        if (cli_parm != NULL)
+        {
+            val.dowi = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "alarm_state.dowi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "alarm_state.sufi");
+        if (cli_parm != NULL)
+        {
+            val.sufi = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "alarm_state.sufi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "alarm_state.sfi");
+        if (cli_parm != NULL)
+        {
+            val.sfi = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "alarm_state.sfi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "alarm_state.sdi");
+        if (cli_parm != NULL)
+        {
+            val.sdi = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "alarm_state.sdi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "alarm_state.dfi");
+        if (cli_parm != NULL)
+        {
+            val.dfi = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "alarm_state.dfi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "alarm_state.loai");
+        if (cli_parm != NULL)
+        {
+            val.loai = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "alarm_state.loai is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "alarm_state.loki");
+        if (cli_parm != NULL)
+        {
+            val.loki = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "alarm_state.loki is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_onu, alarm_state, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_gpon_onu_alarm_state val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_ONU_CFG_ID_ALARM_STATE, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_onu, alarm_state, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ranging_time");
+    if (cli_parm != NULL)
+    {
+        uint32_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_onu, ranging_time, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_onu, ranging_time, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_ONU_CFG_ID_RANGING_TIME, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_ps_type_c");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_onu, onu_ps_type_c, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_onu, onu_ps_type_c, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_ONU_CFG_ID_ONU_PS_TYPE_C, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "extended_guard_time.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_extended_guard_time val = { };
+        cli_parm = bcmcli_find_named_parm(session, "extended_guard_time.additional_preburst_guard_time");
+        if (cli_parm != NULL)
+        {
+            val.additional_preburst_guard_time = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "extended_guard_time.additional_preburst_guard_time is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "extended_guard_time.additional_postburst_guard_time");
+        if (cli_parm != NULL)
+        {
+            val.additional_postburst_guard_time = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "extended_guard_time.additional_postburst_guard_time is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_onu, extended_guard_time, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_extended_guard_time val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_ONU_CFG_ID_EXTENDED_GUARD_TIME, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_onu, extended_guard_time, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_set(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_set(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_onu_cfg_clear(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_onu_cfg cfg;        /**< declare main API struct */
+    bcmolt_gpon_onu_key key = { };  /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_onu_cfg cfg;\n");
+    bcmcli_log("bcmolt_gpon_onu_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_clear");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_ONU_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        key.onu_id = (bcmolt_gpon_onu_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "onu_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.onu_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_ONU_KEY_ID_ONU_ID, &key.onu_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, gpon_onu, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, gpon_onu, key);\n");
+
+    /* call API */
+    err = bcmolt_cfg_clear(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_clear(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_onu_cfg_get_multi(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_onu_cfg cfg;        /**< declare main API struct */
+    bcmolt_gpon_onu_key key = { };  /**< declare key */
+    bcmolt_msg_set *msg_set = NULL; /**< declare message set */
+    uint32_t max_msgs;              /**< declare max number of msgs to get */
+    bcmos_bool invert_filter;       /**< declare filter invert flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_onu_cfg cfg;\n");
+    bcmcli_log("bcmolt_gpon_onu_key key = {  };\n");
+    bcmcli_log("bcmolt_msg_set* msg_set = NULL;\n");
+    bcmcli_log("uint32_t max_msgs;\n");
+    bcmcli_log("bcmos_bool invert_filter;\n");
+    apicli_print_start(session, "bcmolt_cfg_get_multi");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_ONU_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        key.onu_id = (bcmolt_gpon_onu_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "onu_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.onu_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_ONU_KEY_ID_ONU_ID, &key.onu_id);
+    bcmcli_log(";\n");
+
+    /* set max number of msgs from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "max_msgs");
+    if (cli_parm != NULL)
+    {
+        max_msgs = cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "max_msgs is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("max_msgs = %d;\n", max_msgs);
+
+    /* set filter invert flag from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "filter_invert");
+    if (cli_parm != NULL)
+    {
+        invert_filter = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "filter_invert is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("invert_filter = %s;\n", (invert_filter) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* allocate message set */
+    err = apicli_msg_set_alloc(byte_pool, BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);
+    if (err != BCM_ERR_OK)
+    {
+        return err;
+    }
+
+    bcmcli_log("bcmolt_msg_set_alloc(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, gpon_onu, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, gpon_onu, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "filter.onu_state");
+    if (cli_parm != NULL)
+    {
+        bcmolt_onu_state val;
+        val = (bcmolt_onu_state) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_onu, onu_state, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_onu, onu_state, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_ONU_CFG_ID_ONU_STATE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_state");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_onu, onu_state);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_onu, onu_state);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.serial_number.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_serial_number val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.serial_number.vendor_id");
+        if (cli_parm != NULL)
+        {
+            if (bcmolt_buf_get_used(&cli_parm->value.buffer) != 4)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "buffer filter.serial_number.vendor_id must have 4 bytes\n");
+                return BCM_ERR_PARM;
+            }
+
+            bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+            bcmolt_buf_read(&cli_parm->value.buffer, val.vendor_id, 4);
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.serial_number.vendor_id is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.serial_number.vendor_specific");
+        if (cli_parm != NULL)
+        {
+            if (bcmolt_buf_get_used(&cli_parm->value.buffer) != 4)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "buffer filter.serial_number.vendor_specific must have 4 bytes\n");
+                return BCM_ERR_PARM;
+            }
+
+            bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+            bcmolt_buf_read(&cli_parm->value.buffer, val.vendor_specific, 4);
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.serial_number.vendor_specific is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_onu, serial_number, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_serial_number val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_ONU_CFG_ID_SERIAL_NUMBER, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_onu, serial_number, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "serial_number");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_onu, serial_number);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_onu, serial_number);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.password.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_arr_u8_10 val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.password.arr");
+        if (cli_parm != NULL)
+        {
+            if (bcmolt_buf_get_used(&cli_parm->value.buffer) != 10)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "buffer filter.password.arr must have 10 bytes\n");
+                return BCM_ERR_PARM;
+            }
+
+            bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+            bcmolt_buf_read(&cli_parm->value.buffer, val.arr, 10);
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.password.arr is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_onu, password, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_arr_u8_10 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_ONU_CFG_ID_PASSWORD, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_onu, password, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "password");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_onu, password);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_onu, password);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.auto_password_learning");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_onu, auto_password_learning, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_onu, auto_password_learning, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_ONU_CFG_ID_AUTO_PASSWORD_LEARNING, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "auto_password_learning");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_onu, auto_password_learning);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_onu, auto_password_learning);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.us_fec");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_onu, us_fec, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_onu, us_fec, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_ONU_CFG_ID_US_FEC, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "us_fec");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_onu, us_fec);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_onu, us_fec);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.omci_port_id");
+    if (cli_parm != NULL)
+    {
+        bcmolt_gpon_gem_id val;
+        val = (bcmolt_gpon_gem_id) cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_onu, omci_port_id, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_onu, omci_port_id, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_ONU_CFG_ID_OMCI_PORT_ID, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "omci_port_id");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_onu, omci_port_id);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_onu, omci_port_id);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.ds_ber_reporting_interval");
+    if (cli_parm != NULL)
+    {
+        bcmolt_ber_interval val;
+        val = (bcmolt_ber_interval) cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_onu, ds_ber_reporting_interval, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_onu, ds_ber_reporting_interval, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_ONU_CFG_ID_DS_BER_REPORTING_INTERVAL, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ds_ber_reporting_interval");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_onu, ds_ber_reporting_interval);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_onu, ds_ber_reporting_interval);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.aes_encryption_key.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_aes_key val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.aes_encryption_key.bytes");
+        if (cli_parm != NULL)
+        {
+            if (bcmolt_buf_get_used(&cli_parm->value.buffer) != 16)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "buffer filter.aes_encryption_key.bytes must have 16 bytes\n");
+                return BCM_ERR_PARM;
+            }
+
+            bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+            bcmolt_buf_read(&cli_parm->value.buffer, val.bytes, 16);
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.aes_encryption_key.bytes is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_onu, aes_encryption_key, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_aes_key val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_ONU_CFG_ID_AES_ENCRYPTION_KEY, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_onu, aes_encryption_key, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "aes_encryption_key");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_onu, aes_encryption_key);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_onu, aes_encryption_key);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.alarm_state.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_gpon_onu_alarm_state val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.alarm_state.losi");
+        if (cli_parm != NULL)
+        {
+            val.losi = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.alarm_state.losi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.alarm_state.lofi");
+        if (cli_parm != NULL)
+        {
+            val.lofi = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.alarm_state.lofi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.alarm_state.loami");
+        if (cli_parm != NULL)
+        {
+            val.loami = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.alarm_state.loami is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.alarm_state.dgi");
+        if (cli_parm != NULL)
+        {
+            val.dgi = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.alarm_state.dgi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.alarm_state.tiwi");
+        if (cli_parm != NULL)
+        {
+            val.tiwi = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.alarm_state.tiwi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.alarm_state.dowi");
+        if (cli_parm != NULL)
+        {
+            val.dowi = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.alarm_state.dowi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.alarm_state.sufi");
+        if (cli_parm != NULL)
+        {
+            val.sufi = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.alarm_state.sufi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.alarm_state.sfi");
+        if (cli_parm != NULL)
+        {
+            val.sfi = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.alarm_state.sfi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.alarm_state.sdi");
+        if (cli_parm != NULL)
+        {
+            val.sdi = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.alarm_state.sdi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.alarm_state.dfi");
+        if (cli_parm != NULL)
+        {
+            val.dfi = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.alarm_state.dfi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.alarm_state.loai");
+        if (cli_parm != NULL)
+        {
+            val.loai = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.alarm_state.loai is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.alarm_state.loki");
+        if (cli_parm != NULL)
+        {
+            val.loki = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.alarm_state.loki is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_onu, alarm_state, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_gpon_onu_alarm_state val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_ONU_CFG_ID_ALARM_STATE, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_onu, alarm_state, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "alarm_state");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_onu, alarm_state);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_onu, alarm_state);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.ranging_time");
+    if (cli_parm != NULL)
+    {
+        uint32_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_onu, ranging_time, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_onu, ranging_time, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_ONU_CFG_ID_RANGING_TIME, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ranging_time");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_onu, ranging_time);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_onu, ranging_time);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.disabled_after_discovery");
+    if (cli_parm != NULL)
+    {
+        bcmolt_status val;
+        val = (bcmolt_status) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_onu, disabled_after_discovery, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_onu, disabled_after_discovery, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_ONU_CFG_ID_DISABLED_AFTER_DISCOVERY, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "disabled_after_discovery");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_onu, disabled_after_discovery);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_onu, disabled_after_discovery);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.deactivation_reason");
+    if (cli_parm != NULL)
+    {
+        bcmolt_deactivation_reason val;
+        val = (bcmolt_deactivation_reason) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_onu, deactivation_reason, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_onu, deactivation_reason, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_ONU_CFG_ID_DEACTIVATION_REASON, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "deactivation_reason");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_onu, deactivation_reason);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_onu, deactivation_reason);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.all_gem_ports.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_gpon_gem_port_with_state_list_u16_max_256 val = { };
+        int32_t i0;
+        val.val = apicli_byte_pool_calloc(byte_pool, cli_parm->array_size * sizeof(*val.val));
+        if (val.val == NULL)
+        {
+            apicli_print_complete(session, BCM_ERR_NOMEM, "\n");
+            return BCM_ERR_NOMEM;
+        }
+
+        val.len = cli_parm->array_size;
+        cli_parm = bcmcli_find_named_parm(session, "filter.all_gem_ports.gem_id");
+        if (cli_parm != NULL)
+        {
+            if (cli_parm->array_size != val.len)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.all_gem_ports.gem_id is a different size than other arrays in the struct\n");
+                return BCM_ERR_PARM;
+            }
+
+            for (i0 = 0; i0 < val.len; i0++)
+            {
+                val.val[i0].gem_id = (bcmolt_gpon_gem_id) cli_parm->values[i0].unumber;
+            }
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.all_gem_ports.state");
+        if (cli_parm != NULL)
+        {
+            if (cli_parm->array_size != val.len)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.all_gem_ports.state is a different size than other arrays in the struct\n");
+                return BCM_ERR_PARM;
+            }
+
+            for (i0 = 0; i0 < val.len; i0++)
+            {
+                val.val[i0].state = (bcmolt_gpon_gem_port_state) cli_parm->values[i0].enum_val;
+            }
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_onu, all_gem_ports, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_gpon_gem_port_with_state_list_u16_max_256 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_ONU_CFG_ID_ALL_GEM_PORTS, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_onu, all_gem_ports, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "all_gem_ports");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_onu, all_gem_ports);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_onu, all_gem_ports);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.all_allocs.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_gpon_alloc_with_state_list_u16_max_32 val = { };
+        int32_t i1;
+        val.val = apicli_byte_pool_calloc(byte_pool, cli_parm->array_size * sizeof(*val.val));
+        if (val.val == NULL)
+        {
+            apicli_print_complete(session, BCM_ERR_NOMEM, "\n");
+            return BCM_ERR_NOMEM;
+        }
+
+        val.len = cli_parm->array_size;
+        cli_parm = bcmcli_find_named_parm(session, "filter.all_allocs.alloc_id");
+        if (cli_parm != NULL)
+        {
+            if (cli_parm->array_size != val.len)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.all_allocs.alloc_id is a different size than other arrays in the struct\n");
+                return BCM_ERR_PARM;
+            }
+
+            for (i1 = 0; i1 < val.len; i1++)
+            {
+                val.val[i1].alloc_id = (bcmolt_gpon_alloc_id) cli_parm->values[i1].unumber;
+            }
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.all_allocs.state");
+        if (cli_parm != NULL)
+        {
+            if (cli_parm->array_size != val.len)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.all_allocs.state is a different size than other arrays in the struct\n");
+                return BCM_ERR_PARM;
+            }
+
+            for (i1 = 0; i1 < val.len; i1++)
+            {
+                val.val[i1].state = (bcmolt_alloc_state) cli_parm->values[i1].enum_val;
+            }
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_onu, all_allocs, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_gpon_alloc_with_state_list_u16_max_32 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_ONU_CFG_ID_ALL_ALLOCS, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_onu, all_allocs, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "all_allocs");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_onu, all_allocs);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_onu, all_allocs);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.onu_ps_type_c");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_onu, onu_ps_type_c, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_onu, onu_ps_type_c, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_ONU_CFG_ID_ONU_PS_TYPE_C, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_ps_type_c");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_onu, onu_ps_type_c);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_onu, onu_ps_type_c);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.extended_guard_time.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_extended_guard_time val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.extended_guard_time.additional_preburst_guard_time");
+        if (cli_parm != NULL)
+        {
+            val.additional_preburst_guard_time = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.extended_guard_time.additional_preburst_guard_time is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.extended_guard_time.additional_postburst_guard_time");
+        if (cli_parm != NULL)
+        {
+            val.additional_postburst_guard_time = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.extended_guard_time.additional_postburst_guard_time is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_onu, extended_guard_time, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_extended_guard_time val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_ONU_CFG_ID_EXTENDED_GUARD_TIME, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_onu, extended_guard_time, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "extended_guard_time");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_onu, extended_guard_time);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_onu, extended_guard_time);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_onu, onu_state) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_onu, serial_number) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_onu, password) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_onu, auto_password_learning) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_onu, us_fec) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_onu, omci_port_id) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_onu, ds_ber_reporting_interval) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_onu, aes_encryption_key) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_onu, alarm_state) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_onu, ranging_time) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_onu, disabled_after_discovery) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_onu, deactivation_reason) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_onu, all_gem_ports) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_onu, all_allocs) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_onu, onu_ps_type_c) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_onu, extended_guard_time))
+    {
+        BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_onu, all_properties);
+        bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_onu, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);
+    bcmcli_log("bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_onu_stat_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_onu_stat stat;      /**< declare main API struct */
+    bcmolt_gpon_onu_key key = { };  /**< declare key */
+    bcmos_bool clear_on_read;       /**< declare 'clear on read' flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_onu_stat stat;\n");
+    bcmcli_log("bcmolt_gpon_onu_key key = {  };\n");
+    bcmcli_log("bcmos_bool clear_on_read;\n");
+    apicli_print_start(session, "bcmolt_stat_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_ONU_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        key.onu_id = (bcmolt_gpon_onu_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "onu_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.onu_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_ONU_KEY_ID_ONU_ID, &key.onu_id);
+    bcmcli_log(";\n");
+
+    /* set stat flags from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "clear");
+    if (cli_parm != NULL)
+    {
+        clear_on_read = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "clear is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("clear_on_read = %s;\n", (clear_on_read) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* init the API struct */
+    BCMOLT_STAT_INIT(&stat, gpon_onu, key);
+    bcmcli_log("BCMOLT_STAT_INIT(&stat, gpon_onu, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "fec_codewords");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_onu, fec_codewords);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_onu, fec_codewords);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "fec_bytes_corrected");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_onu, fec_bytes_corrected);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_onu, fec_bytes_corrected);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "fec_codewords_corrected");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_onu, fec_codewords_corrected);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_onu, fec_codewords_corrected);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "fec_codewords_uncorrected");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_onu, fec_codewords_uncorrected);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_onu, fec_codewords_uncorrected);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "bip8_bytes");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_onu, bip8_bytes);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_onu, bip8_bytes);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "bip8_errors");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_onu, bip8_errors);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_onu, bip8_errors);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_ploams_crc_error");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_onu, rx_ploams_crc_error);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_onu, rx_ploams_crc_error);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_ploams_non_idle");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_onu, rx_ploams_non_idle);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_onu, rx_ploams_non_idle);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "positive_drift");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_onu, positive_drift);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_onu, positive_drift);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "negative_drift");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_onu, negative_drift);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_onu, negative_drift);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_omci");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_onu, rx_omci);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_onu, rx_omci);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_omci_packets_crc_error");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_onu, rx_omci_packets_crc_error);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_onu, rx_omci_packets_crc_error);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ber_reported");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_onu, ber_reported);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_onu, ber_reported);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "unreceived_burst");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_onu, unreceived_burst);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_onu, unreceived_burst);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "lcdg_errors");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_onu, lcdg_errors);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_onu, lcdg_errors);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rdi_errors");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_onu, rdi_errors);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_onu, rdi_errors);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_bytes");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_onu, rx_bytes);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_onu, rx_bytes);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_packets");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_onu, rx_packets);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_onu, rx_packets);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_bytes");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_onu, tx_bytes);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_onu, tx_bytes);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_packets");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, gpon_onu, tx_packets);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_onu, tx_packets);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_STAT_PROP_IS_SET(&stat, gpon_onu, fec_codewords) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_onu, fec_bytes_corrected) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_onu, fec_codewords_corrected) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_onu, fec_codewords_uncorrected) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_onu, bip8_bytes) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_onu, bip8_errors) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_onu, rx_ploams_crc_error) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_onu, rx_ploams_non_idle) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_onu, positive_drift) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_onu, negative_drift) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_onu, rx_omci) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_onu, rx_omci_packets_crc_error) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_onu, ber_reported) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_onu, unreceived_burst) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_onu, lcdg_errors) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_onu, rdi_errors) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_onu, rx_bytes) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_onu, rx_packets) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_onu, tx_bytes) && !BCMOLT_STAT_PROP_IS_SET(&stat, gpon_onu, tx_packets))
+    {
+        BCMOLT_STAT_PROP_GET(&stat, gpon_onu, all_properties);
+        bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, gpon_onu, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_stat_get(device_id, &stat.hdr, clear_on_read);
+    bcmcli_log("bcmolt_stat_get(device_id, &stat.hdr, clear_on_read);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &stat.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, stat.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_onu_oper_set_onu_state_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_onu_set_onu_state oper; /**< declare main API struct */
+    bcmolt_gpon_onu_key key = { };      /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_onu_set_onu_state oper;\n");
+    bcmcli_log("bcmolt_gpon_onu_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_ONU_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        key.onu_id = (bcmolt_gpon_onu_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "onu_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.onu_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_ONU_KEY_ID_ONU_ID, &key.onu_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, gpon_onu, set_onu_state, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, gpon_onu, set_onu_state, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "onu_state");
+    if (cli_parm != NULL)
+    {
+        bcmolt_onu_operation val;
+        val = (bcmolt_onu_operation) cli_parm->value.enum_val;
+        BCMOLT_OPER_PROP_SET(&oper, gpon_onu, set_onu_state, onu_state, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, gpon_onu, set_onu_state, onu_state, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_OPER, BCMOLT_GPON_ONU_OPER_ID_SET_ONU_STATE, BCMOLT_GPON_ONU_SET_ONU_STATE_ID_ONU_STATE, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_onu_oper_rssi_measurement_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_onu_rssi_measurement oper;  /**< declare main API struct */
+    bcmolt_gpon_onu_key key = { };          /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_onu_rssi_measurement oper;\n");
+    bcmcli_log("bcmolt_gpon_onu_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_ONU_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        key.onu_id = (bcmolt_gpon_onu_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "onu_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.onu_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_ONU_KEY_ID_ONU_ID, &key.onu_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, gpon_onu, rssi_measurement, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, gpon_onu, rssi_measurement, key);\n");
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_onu_oper_change_power_level_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_onu_change_power_level oper;    /**< declare main API struct */
+    bcmolt_gpon_onu_key key = { };              /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_onu_change_power_level oper;\n");
+    bcmcli_log("bcmolt_gpon_onu_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_ONU_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        key.onu_id = (bcmolt_gpon_onu_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "onu_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.onu_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_ONU_KEY_ID_ONU_ID, &key.onu_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, gpon_onu, change_power_level, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, gpon_onu, change_power_level, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "power_level_action");
+    if (cli_parm != NULL)
+    {
+        bcmolt_onu_power_level val;
+        val = (bcmolt_onu_power_level) cli_parm->value.enum_val;
+        BCMOLT_OPER_PROP_SET(&oper, gpon_onu, change_power_level, power_level_action, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, gpon_onu, change_power_level, power_level_action, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_OPER, BCMOLT_GPON_ONU_OPER_ID_CHANGE_POWER_LEVEL, BCMOLT_GPON_ONU_CHANGE_POWER_LEVEL_ID_POWER_LEVEL_ACTION, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_onu_proxy_cpu_packets_send(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_onu_cpu_packets proxy;  /**< declare main API struct */
+    bcmolt_gpon_onu_key key = { };      /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_onu_cpu_packets proxy;\n");
+    bcmcli_log("bcmolt_gpon_onu_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_proxy_send");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_ONU_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        key.onu_id = (bcmolt_gpon_onu_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "onu_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.onu_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_ONU_KEY_ID_ONU_ID, &key.onu_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_PROXY_INIT(&proxy, gpon_onu, cpu_packets, key);
+    bcmcli_log("BCMOLT_PROXY_INIT(&proxy, gpon_onu, cpu_packets, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "packet_type");
+    if (cli_parm != NULL)
+    {
+        bcmolt_packet_type val;
+        val = (bcmolt_packet_type) cli_parm->value.enum_val;
+        BCMOLT_PROXY_PROP_SET(&proxy, gpon_onu, cpu_packets, packet_type, val);
+        bcmcli_log("BCMOLT_PROXY_PROP_SET(&proxy, gpon_onu, cpu_packets, packet_type, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_PROXY, BCMOLT_GPON_ONU_PROXY_ID_CPU_PACKETS, BCMOLT_GPON_ONU_CPU_PACKETS_ID_PACKET_TYPE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "calc_crc");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_PROXY_PROP_SET(&proxy, gpon_onu, cpu_packets, calc_crc, val);
+        bcmcli_log("BCMOLT_PROXY_PROP_SET(&proxy, gpon_onu, cpu_packets, calc_crc, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_PROXY, BCMOLT_GPON_ONU_PROXY_ID_CPU_PACKETS, BCMOLT_GPON_ONU_CPU_PACKETS_ID_CALC_CRC, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "number_of_packets");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_PROXY_PROP_SET(&proxy, gpon_onu, cpu_packets, number_of_packets, val);
+        bcmcli_log("BCMOLT_PROXY_PROP_SET(&proxy, gpon_onu, cpu_packets, number_of_packets, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_PROXY, BCMOLT_GPON_ONU_PROXY_ID_CPU_PACKETS, BCMOLT_GPON_ONU_CPU_PACKETS_ID_NUMBER_OF_PACKETS, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "packet_size");
+    if (cli_parm != NULL)
+    {
+        uint16_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_PROXY_PROP_SET(&proxy, gpon_onu, cpu_packets, packet_size, val);
+        bcmcli_log("BCMOLT_PROXY_PROP_SET(&proxy, gpon_onu, cpu_packets, packet_size, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_PROXY, BCMOLT_GPON_ONU_PROXY_ID_CPU_PACKETS, BCMOLT_GPON_ONU_CPU_PACKETS_ID_PACKET_SIZE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "buffer");
+    if (cli_parm != NULL)
+    {
+        bcmolt_u8_list_u32_max_2048 val = { };
+        val.len = bcmolt_buf_get_used(&cli_parm->value.buffer);
+        val.val = apicli_byte_pool_calloc(byte_pool, val.len);
+        if (val.val == NULL)
+        {
+            apicli_print_complete(session, BCM_ERR_NOMEM, "\n");
+            return BCM_ERR_NOMEM;
+        }
+
+        bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+        bcmolt_buf_read(&cli_parm->value.buffer, val.val, val.len);
+        BCMOLT_PROXY_PROP_SET(&proxy, gpon_onu, cpu_packets, buffer, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_u8_list_u32_max_2048 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_PROXY, BCMOLT_GPON_ONU_PROXY_ID_CPU_PACKETS, BCMOLT_GPON_ONU_CPU_PACKETS_ID_BUFFER, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_PROXY_PROP_SET(&proxy, gpon_onu, cpu_packets, buffer, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    /* call API */
+    err = bcmolt_proxy_send(device_id, &proxy.hdr);
+    bcmcli_log("bcmolt_proxy_send(device_id, &proxy.hdr);\n");
+    apicli_print_complete(session, err, proxy.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_onu_proxy_ploam_packet_send(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_onu_ploam_packet proxy; /**< declare main API struct */
+    bcmolt_gpon_onu_key key = { };      /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_onu_ploam_packet proxy;\n");
+    bcmcli_log("bcmolt_gpon_onu_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_proxy_send");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_ONU_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        key.onu_id = (bcmolt_gpon_onu_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "onu_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.onu_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_ONU_KEY_ID_ONU_ID, &key.onu_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_PROXY_INIT(&proxy, gpon_onu, ploam_packet, key);
+    bcmcli_log("BCMOLT_PROXY_INIT(&proxy, gpon_onu, ploam_packet, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_parm_by_prefix(session, "ploam.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_arr_u8_12 val = { };
+        cli_parm = bcmcli_find_named_parm(session, "ploam.arr");
+        if (cli_parm != NULL)
+        {
+            if (bcmolt_buf_get_used(&cli_parm->value.buffer) != 12)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "buffer ploam.arr must have 12 bytes\n");
+                return BCM_ERR_PARM;
+            }
+
+            bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+            bcmolt_buf_read(&cli_parm->value.buffer, val.arr, 12);
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "ploam.arr is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_PROXY_PROP_SET(&proxy, gpon_onu, ploam_packet, ploam, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_arr_u8_12 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_PROXY, BCMOLT_GPON_ONU_PROXY_ID_PLOAM_PACKET, BCMOLT_GPON_ONU_PLOAM_PACKET_ID_PLOAM, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_PROXY_PROP_SET(&proxy, gpon_onu, ploam_packet, ploam, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    /* call API */
+    err = bcmolt_proxy_send(device_id, &proxy.hdr);
+    bcmcli_log("bcmolt_proxy_send(device_id, &proxy.hdr);\n");
+    apicli_print_complete(session, err, proxy.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_onu_stat_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_onu_stat_cfg stat_cfg;  /**< declare main API struct */
+    bcmolt_gpon_onu_key key = { };      /**< declare key */
+    bcmolt_gpon_onu_stat_id stat_id;    /**< declare stat ID */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_onu_stat_cfg stat_cfg;\n");
+    bcmcli_log("bcmolt_gpon_onu_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_stat_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_ONU_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        key.onu_id = (bcmolt_gpon_onu_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "onu_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.onu_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_ONU_KEY_ID_ONU_ID, &key.onu_id);
+    bcmcli_log(";\n");
+
+    /* set stat ID from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "sub");
+    if (cli_parm != NULL)
+    {
+        stat_id = (bcmolt_gpon_onu_stat_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    /* init the API struct */
+    switch (stat_id)
+    {
+        case BCMOLT_GPON_ONU_STAT_ID_FEC_CODEWORDS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, fec_codewords, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, fec_codewords, key);\n");
+            break;
+        case BCMOLT_GPON_ONU_STAT_ID_FEC_BYTES_CORRECTED:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, fec_bytes_corrected, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, fec_bytes_corrected, key);\n");
+            break;
+        case BCMOLT_GPON_ONU_STAT_ID_FEC_CODEWORDS_CORRECTED:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, fec_codewords_corrected, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, fec_codewords_corrected, key);\n");
+            break;
+        case BCMOLT_GPON_ONU_STAT_ID_FEC_CODEWORDS_UNCORRECTED:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, fec_codewords_uncorrected, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, fec_codewords_uncorrected, key);\n");
+            break;
+        case BCMOLT_GPON_ONU_STAT_ID_BIP8_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, bip8_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, bip8_bytes, key);\n");
+            break;
+        case BCMOLT_GPON_ONU_STAT_ID_BIP8_ERRORS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, bip8_errors, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, bip8_errors, key);\n");
+            break;
+        case BCMOLT_GPON_ONU_STAT_ID_RX_PLOAMS_CRC_ERROR:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, rx_ploams_crc_error, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, rx_ploams_crc_error, key);\n");
+            break;
+        case BCMOLT_GPON_ONU_STAT_ID_RX_PLOAMS_NON_IDLE:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, rx_ploams_non_idle, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, rx_ploams_non_idle, key);\n");
+            break;
+        case BCMOLT_GPON_ONU_STAT_ID_POSITIVE_DRIFT:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, positive_drift, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, positive_drift, key);\n");
+            break;
+        case BCMOLT_GPON_ONU_STAT_ID_NEGATIVE_DRIFT:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, negative_drift, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, negative_drift, key);\n");
+            break;
+        case BCMOLT_GPON_ONU_STAT_ID_RX_OMCI:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, rx_omci, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, rx_omci, key);\n");
+            break;
+        case BCMOLT_GPON_ONU_STAT_ID_RX_OMCI_PACKETS_CRC_ERROR:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, rx_omci_packets_crc_error, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, rx_omci_packets_crc_error, key);\n");
+            break;
+        case BCMOLT_GPON_ONU_STAT_ID_BER_REPORTED:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, ber_reported, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, ber_reported, key);\n");
+            break;
+        case BCMOLT_GPON_ONU_STAT_ID_UNRECEIVED_BURST:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, unreceived_burst, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, unreceived_burst, key);\n");
+            break;
+        case BCMOLT_GPON_ONU_STAT_ID_LCDG_ERRORS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, lcdg_errors, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, lcdg_errors, key);\n");
+            break;
+        case BCMOLT_GPON_ONU_STAT_ID_RDI_ERRORS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, rdi_errors, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, rdi_errors, key);\n");
+            break;
+        case BCMOLT_GPON_ONU_STAT_ID_RX_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, rx_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, rx_bytes, key);\n");
+            break;
+        case BCMOLT_GPON_ONU_STAT_ID_RX_PACKETS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, rx_packets, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, rx_packets, key);\n");
+            break;
+        case BCMOLT_GPON_ONU_STAT_ID_TX_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, tx_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, tx_bytes, key);\n");
+            break;
+        case BCMOLT_GPON_ONU_STAT_ID_TX_PACKETS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, tx_packets, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, tx_packets, key);\n");
+            break;
+        default:
+            apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+            return BCM_ERR_RANGE;
+    }
+
+    /* call API */
+    err = bcmolt_stat_cfg_get(device_id, &stat_cfg.hdr);
+    bcmcli_log("bcmolt_stat_cfg_get(device_id, &stat_cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &stat_cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, stat_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_onu_stat_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_onu_stat_cfg stat_cfg;  /**< declare main API struct */
+    bcmolt_gpon_onu_key key = { };      /**< declare key */
+    bcmolt_gpon_onu_stat_id stat_id;    /**< declare stat ID */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_onu_stat_cfg stat_cfg;\n");
+    bcmcli_log("bcmolt_gpon_onu_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_stat_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_ONU_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        key.onu_id = (bcmolt_gpon_onu_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "onu_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.onu_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_ONU_KEY_ID_ONU_ID, &key.onu_id);
+    bcmcli_log(";\n");
+
+    /* set stat ID from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "sub");
+    if (cli_parm != NULL)
+    {
+        stat_id = (bcmolt_gpon_onu_stat_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    /* init the API struct */
+    switch (stat_id)
+    {
+        case BCMOLT_GPON_ONU_STAT_ID_FEC_CODEWORDS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, fec_codewords, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, fec_codewords, key);\n");
+            break;
+        case BCMOLT_GPON_ONU_STAT_ID_FEC_BYTES_CORRECTED:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, fec_bytes_corrected, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, fec_bytes_corrected, key);\n");
+            break;
+        case BCMOLT_GPON_ONU_STAT_ID_FEC_CODEWORDS_CORRECTED:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, fec_codewords_corrected, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, fec_codewords_corrected, key);\n");
+            break;
+        case BCMOLT_GPON_ONU_STAT_ID_FEC_CODEWORDS_UNCORRECTED:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, fec_codewords_uncorrected, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, fec_codewords_uncorrected, key);\n");
+            break;
+        case BCMOLT_GPON_ONU_STAT_ID_BIP8_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, bip8_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, bip8_bytes, key);\n");
+            break;
+        case BCMOLT_GPON_ONU_STAT_ID_BIP8_ERRORS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, bip8_errors, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, bip8_errors, key);\n");
+            break;
+        case BCMOLT_GPON_ONU_STAT_ID_RX_PLOAMS_CRC_ERROR:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, rx_ploams_crc_error, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, rx_ploams_crc_error, key);\n");
+            break;
+        case BCMOLT_GPON_ONU_STAT_ID_RX_PLOAMS_NON_IDLE:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, rx_ploams_non_idle, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, rx_ploams_non_idle, key);\n");
+            break;
+        case BCMOLT_GPON_ONU_STAT_ID_POSITIVE_DRIFT:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, positive_drift, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, positive_drift, key);\n");
+            break;
+        case BCMOLT_GPON_ONU_STAT_ID_NEGATIVE_DRIFT:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, negative_drift, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, negative_drift, key);\n");
+            break;
+        case BCMOLT_GPON_ONU_STAT_ID_RX_OMCI:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, rx_omci, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, rx_omci, key);\n");
+            break;
+        case BCMOLT_GPON_ONU_STAT_ID_RX_OMCI_PACKETS_CRC_ERROR:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, rx_omci_packets_crc_error, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, rx_omci_packets_crc_error, key);\n");
+            break;
+        case BCMOLT_GPON_ONU_STAT_ID_BER_REPORTED:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, ber_reported, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, ber_reported, key);\n");
+            break;
+        case BCMOLT_GPON_ONU_STAT_ID_UNRECEIVED_BURST:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, unreceived_burst, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, unreceived_burst, key);\n");
+            break;
+        case BCMOLT_GPON_ONU_STAT_ID_LCDG_ERRORS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, lcdg_errors, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, lcdg_errors, key);\n");
+            break;
+        case BCMOLT_GPON_ONU_STAT_ID_RDI_ERRORS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, rdi_errors, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, rdi_errors, key);\n");
+            break;
+        case BCMOLT_GPON_ONU_STAT_ID_RX_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, rx_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, rx_bytes, key);\n");
+            break;
+        case BCMOLT_GPON_ONU_STAT_ID_RX_PACKETS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, rx_packets, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, rx_packets, key);\n");
+            break;
+        case BCMOLT_GPON_ONU_STAT_ID_TX_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, tx_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, tx_bytes, key);\n");
+            break;
+        case BCMOLT_GPON_ONU_STAT_ID_TX_PACKETS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, tx_packets, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, gpon_onu, tx_packets, key);\n");
+            break;
+        default:
+            apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+            return BCM_ERR_RANGE;
+    }
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_stat_alarm_config val = { };
+        cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.trigger.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.type");
+            if (cli_parm != NULL)
+            {
+                val.trigger.type = (bcmolt_stat_condition_type) cli_parm->value.enum_val;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.type is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            switch (val.trigger.type)
+            {
+                case BCMOLT_STAT_CONDITION_TYPE_RATE_THRESHOLD:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.rising");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_threshold.rising = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.rising is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.falling");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_threshold.falling = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.falling is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_RATE_RANGE:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.upper");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_range.upper = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.upper is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.lower");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_range.lower = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.lower is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_VALUE_THRESHOLD:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.limit");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.value_threshold.limit = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.limit is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_NONE:
+                    break;
+                default:
+                    apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+                    return BCM_ERR_RANGE;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.soak.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "cfg.soak.active_soak_time");
+            if (cli_parm != NULL)
+            {
+                val.soak.active_soak_time = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak.active_soak_time is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "cfg.soak.clear_soak_time");
+            if (cli_parm != NULL)
+            {
+                val.soak.clear_soak_time = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak.clear_soak_time is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_STAT_CFG_PROP_SET(&stat_cfg, gpon_onu, cfg, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_stat_alarm_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_STAT_CFG, 0, BCMOLT_GPON_ONU_STAT_CFG_ID_CFG, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_STAT_CFG_PROP_SET(&stat_cfg, gpon_onu, cfg, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    /* call API */
+    err = bcmolt_stat_cfg_set(device_id, &stat_cfg.hdr);
+    bcmcli_log("bcmolt_stat_cfg_set(device_id, &stat_cfg.hdr);\n");
+    apicli_print_complete(session, err, stat_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_onu_auto_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_onu_auto_cfg auto_cfg;  /**< declare main API struct */
+    bcmolt_gpon_onu_key key = { };      /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_onu_auto_cfg auto_cfg;\n");
+    bcmcli_log("bcmolt_gpon_onu_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_auto_cfg_get");
+
+    /* init the API struct */
+    BCMOLT_AUTO_CFG_INIT(&auto_cfg, gpon_onu, key);
+    bcmcli_log("BCMOLT_AUTO_CFG_INIT(&auto_cfg, gpon_onu, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "ber_interval_configuration_completed");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, ber_interval_configuration_completed);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, ber_interval_configuration_completed);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "dfi");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, dfi);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, dfi);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "dgi");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, dgi);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, dgi);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "dowi");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, dowi);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, dowi);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "err");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, err);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, err);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "invalid_dbru_report");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, invalid_dbru_report);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, invalid_dbru_report);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "key_exchange_completed");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, key_exchange_completed);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, key_exchange_completed);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "key_exchange_cycle_skipped");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, key_exchange_cycle_skipped);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, key_exchange_cycle_skipped);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "key_exchange_decrypt_required");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, key_exchange_decrypt_required);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, key_exchange_decrypt_required);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "key_exchange_key_mismatch");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, key_exchange_key_mismatch);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, key_exchange_key_mismatch);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "key_exchange_key_request_timeout");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, key_exchange_key_request_timeout);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, key_exchange_key_request_timeout);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "key_exchange_unconsecutive_index");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, key_exchange_unconsecutive_index);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, key_exchange_unconsecutive_index);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "loai");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, loai);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, loai);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "loki");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, loki);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, loki);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "memi");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, memi);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, memi);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "omci_port_id_configuration_completed");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, omci_port_id_configuration_completed);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, omci_port_id_configuration_completed);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_activation_completed");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, onu_activation_completed);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, onu_activation_completed);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_activation_standby_completed");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, onu_activation_standby_completed);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, onu_activation_standby_completed);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_alarm");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, onu_alarm);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, onu_alarm);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_deactivation_completed");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, onu_deactivation_completed);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, onu_deactivation_completed);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_disable_completed");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, onu_disable_completed);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, onu_disable_completed);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_enable_completed");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, onu_enable_completed);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, onu_enable_completed);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "optical_reflection");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, optical_reflection);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, optical_reflection);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "password_authentication_completed");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, password_authentication_completed);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, password_authentication_completed);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "pee");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, pee);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, pee);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "possible_drift");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, possible_drift);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, possible_drift);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "power_management_state_change");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, power_management_state_change);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, power_management_state_change);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "pst");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, pst);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, pst);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ranging_completed");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, ranging_completed);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, ranging_completed);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rei");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, rei);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, rei);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rssi_measurement_completed");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, rssi_measurement_completed);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, rssi_measurement_completed);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "sdi");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, sdi);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, sdi);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "sfi");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, sfi);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, sfi);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_cleared");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, stat_alarm_cleared);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, stat_alarm_cleared);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_raised");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, stat_alarm_raised);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, stat_alarm_raised);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "sufi");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, sufi);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, sufi);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tiwi");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, tiwi);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, tiwi);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_onu, ber_interval_configuration_completed) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_onu, dfi) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_onu, dgi) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_onu, dowi) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_onu, err) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_onu, invalid_dbru_report) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_onu, key_exchange_completed) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_onu, key_exchange_cycle_skipped) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_onu, key_exchange_decrypt_required) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_onu, key_exchange_key_mismatch) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_onu, key_exchange_key_request_timeout) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_onu, key_exchange_unconsecutive_index) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_onu, loai) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_onu, loki) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_onu, memi) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_onu, omci_port_id_configuration_completed) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_onu, onu_activation_completed) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_onu, onu_activation_standby_completed) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_onu, onu_alarm) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_onu, onu_deactivation_completed) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_onu, onu_disable_completed) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_onu, onu_enable_completed) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_onu, optical_reflection) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_onu, password_authentication_completed) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_onu, pee) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_onu, possible_drift) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_onu, power_management_state_change) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_onu, pst) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_onu, ranging_completed) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_onu, rei) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_onu, rssi_measurement_completed) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_onu, sdi) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_onu, sfi) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_onu, stat_alarm_cleared) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_onu, stat_alarm_raised) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_onu, sufi) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, gpon_onu, tiwi))
+    {
+        BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, all_properties);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, gpon_onu, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_auto_cfg_get(device_id, &auto_cfg.hdr);
+    bcmcli_log("bcmolt_auto_cfg_get(device_id, &auto_cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &auto_cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, auto_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_onu_auto_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_onu_auto_cfg auto_cfg;  /**< declare main API struct */
+    bcmolt_gpon_onu_key key = { };      /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_onu_auto_cfg auto_cfg;\n");
+    bcmcli_log("bcmolt_gpon_onu_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_auto_cfg_set");
+
+    /* init the API struct */
+    BCMOLT_AUTO_CFG_INIT(&auto_cfg, gpon_onu, key);
+    bcmcli_log("BCMOLT_AUTO_CFG_INIT(&auto_cfg, gpon_onu, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "ber_interval_configuration_completed");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, ber_interval_configuration_completed, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, ber_interval_configuration_completed, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_ONU_AUTO_CFG_ID_BER_INTERVAL_CONFIGURATION_COMPLETED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "dfi");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, dfi, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, dfi, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_ONU_AUTO_CFG_ID_DFI, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "dgi");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, dgi, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, dgi, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_ONU_AUTO_CFG_ID_DGI, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "dowi");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, dowi, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, dowi, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_ONU_AUTO_CFG_ID_DOWI, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "err");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, err, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, err, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_ONU_AUTO_CFG_ID_ERR, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "invalid_dbru_report");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, invalid_dbru_report, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, invalid_dbru_report, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_ONU_AUTO_CFG_ID_INVALID_DBRU_REPORT, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "key_exchange_completed");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, key_exchange_completed, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, key_exchange_completed, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_ONU_AUTO_CFG_ID_KEY_EXCHANGE_COMPLETED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "key_exchange_cycle_skipped");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, key_exchange_cycle_skipped, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, key_exchange_cycle_skipped, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_ONU_AUTO_CFG_ID_KEY_EXCHANGE_CYCLE_SKIPPED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "key_exchange_decrypt_required");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, key_exchange_decrypt_required, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, key_exchange_decrypt_required, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_ONU_AUTO_CFG_ID_KEY_EXCHANGE_DECRYPT_REQUIRED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "key_exchange_key_mismatch");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, key_exchange_key_mismatch, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, key_exchange_key_mismatch, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_ONU_AUTO_CFG_ID_KEY_EXCHANGE_KEY_MISMATCH, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "key_exchange_key_request_timeout");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, key_exchange_key_request_timeout, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, key_exchange_key_request_timeout, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_ONU_AUTO_CFG_ID_KEY_EXCHANGE_KEY_REQUEST_TIMEOUT, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "key_exchange_unconsecutive_index");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, key_exchange_unconsecutive_index, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, key_exchange_unconsecutive_index, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_ONU_AUTO_CFG_ID_KEY_EXCHANGE_UNCONSECUTIVE_INDEX, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "loai");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, loai, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, loai, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_ONU_AUTO_CFG_ID_LOAI, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "loki");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, loki, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, loki, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_ONU_AUTO_CFG_ID_LOKI, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "memi");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, memi, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, memi, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_ONU_AUTO_CFG_ID_MEMI, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "omci_port_id_configuration_completed");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, omci_port_id_configuration_completed, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, omci_port_id_configuration_completed, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_ONU_AUTO_CFG_ID_OMCI_PORT_ID_CONFIGURATION_COMPLETED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_activation_completed");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, onu_activation_completed, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, onu_activation_completed, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_ONU_AUTO_CFG_ID_ONU_ACTIVATION_COMPLETED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_activation_standby_completed");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, onu_activation_standby_completed, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, onu_activation_standby_completed, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_ONU_AUTO_CFG_ID_ONU_ACTIVATION_STANDBY_COMPLETED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_alarm");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, onu_alarm, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, onu_alarm, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_ONU_AUTO_CFG_ID_ONU_ALARM, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_deactivation_completed");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, onu_deactivation_completed, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, onu_deactivation_completed, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_ONU_AUTO_CFG_ID_ONU_DEACTIVATION_COMPLETED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_disable_completed");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, onu_disable_completed, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, onu_disable_completed, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_ONU_AUTO_CFG_ID_ONU_DISABLE_COMPLETED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_enable_completed");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, onu_enable_completed, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, onu_enable_completed, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_ONU_AUTO_CFG_ID_ONU_ENABLE_COMPLETED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "optical_reflection");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, optical_reflection, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, optical_reflection, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_ONU_AUTO_CFG_ID_OPTICAL_REFLECTION, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "password_authentication_completed");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, password_authentication_completed, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, password_authentication_completed, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_ONU_AUTO_CFG_ID_PASSWORD_AUTHENTICATION_COMPLETED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "pee");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, pee, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, pee, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_ONU_AUTO_CFG_ID_PEE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "possible_drift");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, possible_drift, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, possible_drift, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_ONU_AUTO_CFG_ID_POSSIBLE_DRIFT, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "power_management_state_change");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, power_management_state_change, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, power_management_state_change, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_ONU_AUTO_CFG_ID_POWER_MANAGEMENT_STATE_CHANGE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "pst");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, pst, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, pst, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_ONU_AUTO_CFG_ID_PST, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ranging_completed");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, ranging_completed, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, ranging_completed, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_ONU_AUTO_CFG_ID_RANGING_COMPLETED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rei");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, rei, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, rei, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_ONU_AUTO_CFG_ID_REI, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rssi_measurement_completed");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, rssi_measurement_completed, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, rssi_measurement_completed, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_ONU_AUTO_CFG_ID_RSSI_MEASUREMENT_COMPLETED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "sdi");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, sdi, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, sdi, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_ONU_AUTO_CFG_ID_SDI, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "sfi");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, sfi, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, sfi, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_ONU_AUTO_CFG_ID_SFI, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_cleared");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, stat_alarm_cleared, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, stat_alarm_cleared, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_ONU_AUTO_CFG_ID_STAT_ALARM_CLEARED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_raised");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, stat_alarm_raised, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, stat_alarm_raised, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_ONU_AUTO_CFG_ID_STAT_ALARM_RAISED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "sufi");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, sufi, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, sufi, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_ONU_AUTO_CFG_ID_SUFI, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tiwi");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, tiwi, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, gpon_onu, tiwi, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_GPON_ONU_AUTO_CFG_ID_TIWI, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_auto_cfg_set(device_id, &auto_cfg.hdr);
+    bcmcli_log("bcmolt_auto_cfg_set(device_id, &auto_cfg.hdr);\n");
+    apicli_print_complete(session, err, auto_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_trx_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_trx_cfg cfg;        /**< declare main API struct */
+    bcmolt_gpon_trx_key key = { };  /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_trx_cfg cfg;\n");
+    bcmcli_log("bcmolt_gpon_trx_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_TRX, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_TRX_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, gpon_trx, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, gpon_trx, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "transceiver_type");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_trx, transceiver_type);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_trx, transceiver_type);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "la_configuration");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_trx, la_configuration);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_trx, la_configuration);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "bcdr");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_trx, bcdr);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_trx, bcdr);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "la_ranging_after_no_ed_resync");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_trx, la_ranging_after_no_ed_resync);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_trx, la_ranging_after_no_ed_resync);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "bcdr_ranging_after_no_ed_resync");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_trx, bcdr_ranging_after_no_ed_resync);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_trx, bcdr_ranging_after_no_ed_resync);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "la_ranging_after_ed_resync");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_trx, la_ranging_after_ed_resync);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_trx, la_ranging_after_ed_resync);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "bcdr_ranging_after_ed_resync");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_trx, bcdr_ranging_after_ed_resync);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_trx, bcdr_ranging_after_ed_resync);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "la_resync_polarity");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_trx, la_resync_polarity);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_trx, la_resync_polarity);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "bcdr_resync_polarity");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_trx, bcdr_resync_polarity);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_trx, bcdr_resync_polarity);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "bcdr_ranging_resync_conditions");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_trx, bcdr_ranging_resync_conditions);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_trx, bcdr_ranging_resync_conditions);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "la_ranging_resync_conditions");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_trx, la_ranging_resync_conditions);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_trx, la_ranging_resync_conditions);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_configuration");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_trx, rx_configuration);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_trx, rx_configuration);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ranging_control_stages_configuration");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_trx, ranging_control_stages_configuration);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_trx, ranging_control_stages_configuration);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "energy_detect");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_trx, energy_detect);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_trx, energy_detect);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "end_of_burst_data_pattern");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_trx, end_of_burst_data_pattern);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_trx, end_of_burst_data_pattern);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "end_of_burst_ranging_pattern");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_trx, end_of_burst_ranging_pattern);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_trx, end_of_burst_ranging_pattern);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "preamble");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_trx, preamble);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_trx, preamble);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "delimiter");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_trx, delimiter);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_trx, delimiter);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "guard_bits");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_trx, guard_bits);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_trx, guard_bits);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "serdes_configuration");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_trx, serdes_configuration);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_trx, serdes_configuration);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "plo_ranging");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_trx, plo_ranging);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_trx, plo_ranging);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "plo_data");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_trx, plo_data);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_trx, plo_data);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rssi_normal_config");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_trx, rssi_normal_config);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_trx, rssi_normal_config);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ranging_rssi_resync_control");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, gpon_trx, ranging_rssi_resync_control);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_trx, ranging_rssi_resync_control);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_trx, transceiver_type) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_trx, la_configuration) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_trx, bcdr) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_trx, la_ranging_after_no_ed_resync) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_trx, bcdr_ranging_after_no_ed_resync) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_trx, la_ranging_after_ed_resync) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_trx, bcdr_ranging_after_ed_resync) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_trx, la_resync_polarity) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_trx, bcdr_resync_polarity) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_trx, bcdr_ranging_resync_conditions) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_trx, la_ranging_resync_conditions) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_trx, rx_configuration) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_trx, ranging_control_stages_configuration) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_trx, energy_detect) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_trx, end_of_burst_data_pattern) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_trx, end_of_burst_ranging_pattern) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_trx, preamble) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_trx, delimiter) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_trx, guard_bits) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_trx, serdes_configuration) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_trx, plo_ranging) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_trx, plo_data) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_trx, rssi_normal_config) && !BCMOLT_CFG_PROP_IS_SET(&cfg, gpon_trx, ranging_rssi_resync_control))
+    {
+        BCMOLT_CFG_PROP_GET(&cfg, gpon_trx, all_properties);
+        bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, gpon_trx, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_get(device_id, &cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_trx_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_trx_cfg cfg;        /**< declare main API struct */
+    bcmolt_gpon_trx_key key = { };  /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_trx_cfg cfg;\n");
+    bcmcli_log("bcmolt_gpon_trx_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_TRX, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_TRX_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, gpon_trx, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, gpon_trx, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "transceiver_type");
+    if (cli_parm != NULL)
+    {
+        bcmolt_trx_type val;
+        val = (bcmolt_trx_type) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, transceiver_type, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, transceiver_type, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_TRX_CFG_ID_TRANSCEIVER_TYPE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "la_configuration.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_la_resync_pattern_configuration val = { };
+        cli_parm = bcmcli_find_parm_by_prefix(session, "la_configuration.resync_control.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "la_configuration.resync_control.start_pattern");
+            if (cli_parm != NULL)
+            {
+                val.resync_control.start_pattern = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "la_configuration.resync_control.start_pattern is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "la_configuration.resync_control.middle_pattern");
+            if (cli_parm != NULL)
+            {
+                val.resync_control.middle_pattern = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "la_configuration.resync_control.middle_pattern is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "la_configuration.resync_control.last_pattern");
+            if (cli_parm != NULL)
+            {
+                val.resync_control.last_pattern = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "la_configuration.resync_control.last_pattern is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "la_configuration.resync_control.middle_repetition");
+            if (cli_parm != NULL)
+            {
+                val.resync_control.middle_repetition = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "la_configuration.resync_control.middle_repetition is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "la_configuration.resync_control.location");
+            if (cli_parm != NULL)
+            {
+                val.resync_control.location = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "la_configuration.resync_control.location is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "la_configuration.resync_control is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "la_configuration.ranging_resync_control.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "la_configuration.ranging_resync_control.start_pattern");
+            if (cli_parm != NULL)
+            {
+                val.ranging_resync_control.start_pattern = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "la_configuration.ranging_resync_control.start_pattern is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "la_configuration.ranging_resync_control.middle_pattern");
+            if (cli_parm != NULL)
+            {
+                val.ranging_resync_control.middle_pattern = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "la_configuration.ranging_resync_control.middle_pattern is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "la_configuration.ranging_resync_control.last_pattern");
+            if (cli_parm != NULL)
+            {
+                val.ranging_resync_control.last_pattern = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "la_configuration.ranging_resync_control.last_pattern is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "la_configuration.ranging_resync_control.middle_repetition");
+            if (cli_parm != NULL)
+            {
+                val.ranging_resync_control.middle_repetition = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "la_configuration.ranging_resync_control.middle_repetition is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "la_configuration.ranging_resync_control.location");
+            if (cli_parm != NULL)
+            {
+                val.ranging_resync_control.location = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "la_configuration.ranging_resync_control.location is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "la_configuration.ranging_resync_control is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, la_configuration, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_la_resync_pattern_configuration val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_TRX_CFG_ID_LA_CONFIGURATION, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, la_configuration, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "bcdr.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_bcdr_resync_pattern_configuration val = { };
+        cli_parm = bcmcli_find_parm_by_prefix(session, "bcdr.resync_control.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "bcdr.resync_control.start_pattern");
+            if (cli_parm != NULL)
+            {
+                val.resync_control.start_pattern = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "bcdr.resync_control.start_pattern is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "bcdr.resync_control.middle_pattern");
+            if (cli_parm != NULL)
+            {
+                val.resync_control.middle_pattern = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "bcdr.resync_control.middle_pattern is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "bcdr.resync_control.last_pattern");
+            if (cli_parm != NULL)
+            {
+                val.resync_control.last_pattern = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "bcdr.resync_control.last_pattern is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "bcdr.resync_control.middle_repetition");
+            if (cli_parm != NULL)
+            {
+                val.resync_control.middle_repetition = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "bcdr.resync_control.middle_repetition is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "bcdr.resync_control.location");
+            if (cli_parm != NULL)
+            {
+                val.resync_control.location = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "bcdr.resync_control.location is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "bcdr.resync_control is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "bcdr.ranging_resync_control.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "bcdr.ranging_resync_control.start_pattern");
+            if (cli_parm != NULL)
+            {
+                val.ranging_resync_control.start_pattern = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "bcdr.ranging_resync_control.start_pattern is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "bcdr.ranging_resync_control.middle_pattern");
+            if (cli_parm != NULL)
+            {
+                val.ranging_resync_control.middle_pattern = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "bcdr.ranging_resync_control.middle_pattern is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "bcdr.ranging_resync_control.last_pattern");
+            if (cli_parm != NULL)
+            {
+                val.ranging_resync_control.last_pattern = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "bcdr.ranging_resync_control.last_pattern is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "bcdr.ranging_resync_control.middle_repetition");
+            if (cli_parm != NULL)
+            {
+                val.ranging_resync_control.middle_repetition = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "bcdr.ranging_resync_control.middle_repetition is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "bcdr.ranging_resync_control.location");
+            if (cli_parm != NULL)
+            {
+                val.ranging_resync_control.location = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "bcdr.ranging_resync_control.location is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "bcdr.ranging_resync_control is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, bcdr, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_bcdr_resync_pattern_configuration val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_TRX_CFG_ID_BCDR, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, bcdr, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "la_ranging_after_no_ed_resync.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_resync_control val = { };
+        cli_parm = bcmcli_find_named_parm(session, "la_ranging_after_no_ed_resync.start_pattern");
+        if (cli_parm != NULL)
+        {
+            val.start_pattern = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "la_ranging_after_no_ed_resync.start_pattern is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "la_ranging_after_no_ed_resync.middle_pattern");
+        if (cli_parm != NULL)
+        {
+            val.middle_pattern = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "la_ranging_after_no_ed_resync.middle_pattern is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "la_ranging_after_no_ed_resync.last_pattern");
+        if (cli_parm != NULL)
+        {
+            val.last_pattern = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "la_ranging_after_no_ed_resync.last_pattern is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "la_ranging_after_no_ed_resync.middle_repetition");
+        if (cli_parm != NULL)
+        {
+            val.middle_repetition = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "la_ranging_after_no_ed_resync.middle_repetition is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "la_ranging_after_no_ed_resync.location");
+        if (cli_parm != NULL)
+        {
+            val.location = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "la_ranging_after_no_ed_resync.location is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, la_ranging_after_no_ed_resync, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_resync_control val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_TRX_CFG_ID_LA_RANGING_AFTER_NO_ED_RESYNC, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, la_ranging_after_no_ed_resync, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "bcdr_ranging_after_no_ed_resync.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_resync_control val = { };
+        cli_parm = bcmcli_find_named_parm(session, "bcdr_ranging_after_no_ed_resync.start_pattern");
+        if (cli_parm != NULL)
+        {
+            val.start_pattern = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "bcdr_ranging_after_no_ed_resync.start_pattern is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "bcdr_ranging_after_no_ed_resync.middle_pattern");
+        if (cli_parm != NULL)
+        {
+            val.middle_pattern = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "bcdr_ranging_after_no_ed_resync.middle_pattern is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "bcdr_ranging_after_no_ed_resync.last_pattern");
+        if (cli_parm != NULL)
+        {
+            val.last_pattern = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "bcdr_ranging_after_no_ed_resync.last_pattern is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "bcdr_ranging_after_no_ed_resync.middle_repetition");
+        if (cli_parm != NULL)
+        {
+            val.middle_repetition = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "bcdr_ranging_after_no_ed_resync.middle_repetition is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "bcdr_ranging_after_no_ed_resync.location");
+        if (cli_parm != NULL)
+        {
+            val.location = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "bcdr_ranging_after_no_ed_resync.location is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, bcdr_ranging_after_no_ed_resync, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_resync_control val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_TRX_CFG_ID_BCDR_RANGING_AFTER_NO_ED_RESYNC, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, bcdr_ranging_after_no_ed_resync, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "la_ranging_after_ed_resync.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_resync_control val = { };
+        cli_parm = bcmcli_find_named_parm(session, "la_ranging_after_ed_resync.start_pattern");
+        if (cli_parm != NULL)
+        {
+            val.start_pattern = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "la_ranging_after_ed_resync.start_pattern is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "la_ranging_after_ed_resync.middle_pattern");
+        if (cli_parm != NULL)
+        {
+            val.middle_pattern = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "la_ranging_after_ed_resync.middle_pattern is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "la_ranging_after_ed_resync.last_pattern");
+        if (cli_parm != NULL)
+        {
+            val.last_pattern = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "la_ranging_after_ed_resync.last_pattern is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "la_ranging_after_ed_resync.middle_repetition");
+        if (cli_parm != NULL)
+        {
+            val.middle_repetition = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "la_ranging_after_ed_resync.middle_repetition is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "la_ranging_after_ed_resync.location");
+        if (cli_parm != NULL)
+        {
+            val.location = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "la_ranging_after_ed_resync.location is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, la_ranging_after_ed_resync, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_resync_control val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_TRX_CFG_ID_LA_RANGING_AFTER_ED_RESYNC, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, la_ranging_after_ed_resync, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "bcdr_ranging_after_ed_resync.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_resync_control val = { };
+        cli_parm = bcmcli_find_named_parm(session, "bcdr_ranging_after_ed_resync.start_pattern");
+        if (cli_parm != NULL)
+        {
+            val.start_pattern = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "bcdr_ranging_after_ed_resync.start_pattern is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "bcdr_ranging_after_ed_resync.middle_pattern");
+        if (cli_parm != NULL)
+        {
+            val.middle_pattern = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "bcdr_ranging_after_ed_resync.middle_pattern is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "bcdr_ranging_after_ed_resync.last_pattern");
+        if (cli_parm != NULL)
+        {
+            val.last_pattern = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "bcdr_ranging_after_ed_resync.last_pattern is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "bcdr_ranging_after_ed_resync.middle_repetition");
+        if (cli_parm != NULL)
+        {
+            val.middle_repetition = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "bcdr_ranging_after_ed_resync.middle_repetition is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "bcdr_ranging_after_ed_resync.location");
+        if (cli_parm != NULL)
+        {
+            val.location = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "bcdr_ranging_after_ed_resync.location is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, bcdr_ranging_after_ed_resync, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_resync_control val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_TRX_CFG_ID_BCDR_RANGING_AFTER_ED_RESYNC, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, bcdr_ranging_after_ed_resync, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "la_resync_polarity");
+    if (cli_parm != NULL)
+    {
+        bcmolt_polarity val;
+        val = (bcmolt_polarity) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, la_resync_polarity, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, la_resync_polarity, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_TRX_CFG_ID_LA_RESYNC_POLARITY, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "bcdr_resync_polarity");
+    if (cli_parm != NULL)
+    {
+        bcmolt_polarity val;
+        val = (bcmolt_polarity) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, bcdr_resync_polarity, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, bcdr_resync_polarity, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_TRX_CFG_ID_BCDR_RESYNC_POLARITY, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "bcdr_ranging_resync_conditions.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_ranging_resync_conditions val = { };
+        cli_parm = bcmcli_find_named_parm(session, "bcdr_ranging_resync_conditions.after_init");
+        if (cli_parm != NULL)
+        {
+            val.after_init = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "bcdr_ranging_resync_conditions.after_init is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "bcdr_ranging_resync_conditions.after_no_ed");
+        if (cli_parm != NULL)
+        {
+            val.after_no_ed = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "bcdr_ranging_resync_conditions.after_no_ed is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "bcdr_ranging_resync_conditions.after_ed");
+        if (cli_parm != NULL)
+        {
+            val.after_ed = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "bcdr_ranging_resync_conditions.after_ed is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "bcdr_ranging_resync_conditions.after_no_del");
+        if (cli_parm != NULL)
+        {
+            val.after_no_del = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "bcdr_ranging_resync_conditions.after_no_del is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "bcdr_ranging_resync_conditions.after_ranging_access");
+        if (cli_parm != NULL)
+        {
+            val.after_ranging_access = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "bcdr_ranging_resync_conditions.after_ranging_access is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "bcdr_ranging_resync_conditions.med_val");
+        if (cli_parm != NULL)
+        {
+            val.med_val = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "bcdr_ranging_resync_conditions.med_val is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, bcdr_ranging_resync_conditions, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_ranging_resync_conditions val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_TRX_CFG_ID_BCDR_RANGING_RESYNC_CONDITIONS, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, bcdr_ranging_resync_conditions, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "la_ranging_resync_conditions.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_ranging_resync_conditions val = { };
+        cli_parm = bcmcli_find_named_parm(session, "la_ranging_resync_conditions.after_init");
+        if (cli_parm != NULL)
+        {
+            val.after_init = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "la_ranging_resync_conditions.after_init is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "la_ranging_resync_conditions.after_no_ed");
+        if (cli_parm != NULL)
+        {
+            val.after_no_ed = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "la_ranging_resync_conditions.after_no_ed is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "la_ranging_resync_conditions.after_ed");
+        if (cli_parm != NULL)
+        {
+            val.after_ed = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "la_ranging_resync_conditions.after_ed is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "la_ranging_resync_conditions.after_no_del");
+        if (cli_parm != NULL)
+        {
+            val.after_no_del = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "la_ranging_resync_conditions.after_no_del is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "la_ranging_resync_conditions.after_ranging_access");
+        if (cli_parm != NULL)
+        {
+            val.after_ranging_access = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "la_ranging_resync_conditions.after_ranging_access is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "la_ranging_resync_conditions.med_val");
+        if (cli_parm != NULL)
+        {
+            val.med_val = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "la_ranging_resync_conditions.med_val is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, la_ranging_resync_conditions, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_ranging_resync_conditions val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_TRX_CFG_ID_LA_RANGING_RESYNC_CONDITIONS, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, la_ranging_resync_conditions, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "rx_configuration.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_trx_rx_configuration val = { };
+        cli_parm = bcmcli_find_named_parm(session, "rx_configuration.wait_window_size");
+        if (cli_parm != NULL)
+        {
+            val.wait_window_size = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "rx_configuration.wait_window_size is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "rx_configuration.ranging_access_window_size");
+        if (cli_parm != NULL)
+        {
+            val.ranging_access_window_size = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "rx_configuration.ranging_access_window_size is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, rx_configuration, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_trx_rx_configuration val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_TRX_CFG_ID_RX_CONFIGURATION, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, rx_configuration, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "ranging_control_stages_configuration.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_ranging_control_configuration val = { };
+        cli_parm = bcmcli_find_named_parm(session, "ranging_control_stages_configuration.wait_state_1_window_size");
+        if (cli_parm != NULL)
+        {
+            val.wait_state_1_window_size = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "ranging_control_stages_configuration.wait_state_1_window_size is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "ranging_control_stages_configuration.wait_state_2_window_size");
+        if (cli_parm != NULL)
+        {
+            val.wait_state_2_window_size = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "ranging_control_stages_configuration.wait_state_2_window_size is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "ranging_control_stages_configuration.wait_after_resync_4");
+        if (cli_parm != NULL)
+        {
+            val.wait_after_resync_4 = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "ranging_control_stages_configuration.wait_after_resync_4 is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, ranging_control_stages_configuration, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_ranging_control_configuration val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_TRX_CFG_ID_RANGING_CONTROL_STAGES_CONFIGURATION, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, ranging_control_stages_configuration, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "energy_detect.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_trx_energy_detect val = { };
+        cli_parm = bcmcli_find_named_parm(session, "energy_detect.ranging_ed_source");
+        if (cli_parm != NULL)
+        {
+            val.ranging_ed_source = (bcmolt_energy_detect_source) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "energy_detect.ranging_ed_source is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "energy_detect.delimiter_ed_source");
+        if (cli_parm != NULL)
+        {
+            val.delimiter_ed_source = (bcmolt_energy_detect_source) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "energy_detect.delimiter_ed_source is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "energy_detect.minimum_threshold");
+        if (cli_parm != NULL)
+        {
+            val.minimum_threshold = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "energy_detect.minimum_threshold is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "energy_detect.maximum_threshold");
+        if (cli_parm != NULL)
+        {
+            val.maximum_threshold = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "energy_detect.maximum_threshold is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "energy_detect.ed_pattern");
+        if (cli_parm != NULL)
+        {
+            val.ed_pattern = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "energy_detect.ed_pattern is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "energy_detect.ed_pattern_size");
+        if (cli_parm != NULL)
+        {
+            val.ed_pattern_size = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "energy_detect.ed_pattern_size is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "energy_detect.window_size");
+        if (cli_parm != NULL)
+        {
+            val.window_size = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "energy_detect.window_size is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "energy_detect.inversion");
+        if (cli_parm != NULL)
+        {
+            val.inversion = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "energy_detect.inversion is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "energy_detect.no_ed_threshold");
+        if (cli_parm != NULL)
+        {
+            val.no_ed_threshold = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "energy_detect.no_ed_threshold is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, energy_detect, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_trx_energy_detect val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_TRX_CFG_ID_ENERGY_DETECT, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, energy_detect, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "end_of_burst_data_pattern.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_resync_control val = { };
+        cli_parm = bcmcli_find_named_parm(session, "end_of_burst_data_pattern.start_pattern");
+        if (cli_parm != NULL)
+        {
+            val.start_pattern = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "end_of_burst_data_pattern.start_pattern is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "end_of_burst_data_pattern.middle_pattern");
+        if (cli_parm != NULL)
+        {
+            val.middle_pattern = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "end_of_burst_data_pattern.middle_pattern is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "end_of_burst_data_pattern.last_pattern");
+        if (cli_parm != NULL)
+        {
+            val.last_pattern = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "end_of_burst_data_pattern.last_pattern is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "end_of_burst_data_pattern.middle_repetition");
+        if (cli_parm != NULL)
+        {
+            val.middle_repetition = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "end_of_burst_data_pattern.middle_repetition is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "end_of_burst_data_pattern.location");
+        if (cli_parm != NULL)
+        {
+            val.location = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "end_of_burst_data_pattern.location is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, end_of_burst_data_pattern, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_resync_control val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_TRX_CFG_ID_END_OF_BURST_DATA_PATTERN, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, end_of_burst_data_pattern, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "end_of_burst_ranging_pattern.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_resync_control val = { };
+        cli_parm = bcmcli_find_named_parm(session, "end_of_burst_ranging_pattern.start_pattern");
+        if (cli_parm != NULL)
+        {
+            val.start_pattern = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "end_of_burst_ranging_pattern.start_pattern is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "end_of_burst_ranging_pattern.middle_pattern");
+        if (cli_parm != NULL)
+        {
+            val.middle_pattern = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "end_of_burst_ranging_pattern.middle_pattern is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "end_of_burst_ranging_pattern.last_pattern");
+        if (cli_parm != NULL)
+        {
+            val.last_pattern = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "end_of_burst_ranging_pattern.last_pattern is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "end_of_burst_ranging_pattern.middle_repetition");
+        if (cli_parm != NULL)
+        {
+            val.middle_repetition = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "end_of_burst_ranging_pattern.middle_repetition is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "end_of_burst_ranging_pattern.location");
+        if (cli_parm != NULL)
+        {
+            val.location = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "end_of_burst_ranging_pattern.location is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, end_of_burst_ranging_pattern, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_resync_control val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_TRX_CFG_ID_END_OF_BURST_RANGING_PATTERN, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, end_of_burst_ranging_pattern, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "preamble.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_trx_preamble val = { };
+        cli_parm = bcmcli_find_named_parm(session, "preamble.type_1_size");
+        if (cli_parm != NULL)
+        {
+            val.type_1_size = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "preamble.type_1_size is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "preamble.type_2_size");
+        if (cli_parm != NULL)
+        {
+            val.type_2_size = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "preamble.type_2_size is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "preamble.type_3_pre_ranging_size");
+        if (cli_parm != NULL)
+        {
+            val.type_3_pre_ranging_size = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "preamble.type_3_pre_ranging_size is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "preamble.type_3_post_ranging_size");
+        if (cli_parm != NULL)
+        {
+            val.type_3_post_ranging_size = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "preamble.type_3_post_ranging_size is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "preamble.type_3_pattern");
+        if (cli_parm != NULL)
+        {
+            val.type_3_pattern = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "preamble.type_3_pattern is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, preamble, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_trx_preamble val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_TRX_CFG_ID_PREAMBLE, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, preamble, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "delimiter.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_trx_delimiter val = { };
+        cli_parm = bcmcli_find_named_parm(session, "delimiter.pattern");
+        if (cli_parm != NULL)
+        {
+            if (bcmolt_buf_get_used(&cli_parm->value.buffer) != 3)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "buffer delimiter.pattern must have 3 bytes\n");
+                return BCM_ERR_PARM;
+            }
+
+            bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+            bcmolt_buf_read(&cli_parm->value.buffer, val.pattern, 3);
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "delimiter.pattern is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "delimiter.size");
+        if (cli_parm != NULL)
+        {
+            val.size = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "delimiter.size is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "delimiter.window_size");
+        if (cli_parm != NULL)
+        {
+            val.window_size = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "delimiter.window_size is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, delimiter, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_trx_delimiter val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_TRX_CFG_ID_DELIMITER, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, delimiter, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "guard_bits");
+    if (cli_parm != NULL)
+    {
+        uint32_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, guard_bits, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, guard_bits, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_TRX_CFG_ID_GUARD_BITS, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "serdes_configuration.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_serdes_configuration val = { };
+        cli_parm = bcmcli_find_named_parm(session, "serdes_configuration.ranging_mode");
+        if (cli_parm != NULL)
+        {
+            val.ranging_mode = (bcmolt_serdes_ranging_mode) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "serdes_configuration.ranging_mode is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "serdes_configuration.multi_ed_mode");
+        if (cli_parm != NULL)
+        {
+            val.multi_ed_mode = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "serdes_configuration.multi_ed_mode is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "serdes_configuration.burst_enable_start_offset");
+        if (cli_parm != NULL)
+        {
+            val.burst_enable_start_offset = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "serdes_configuration.burst_enable_start_offset is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "serdes_configuration.burst_enable_end_offset");
+        if (cli_parm != NULL)
+        {
+            val.burst_enable_end_offset = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "serdes_configuration.burst_enable_end_offset is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "serdes_configuration.ed_invertion");
+        if (cli_parm != NULL)
+        {
+            val.ed_invertion = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "serdes_configuration.ed_invertion is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, serdes_configuration, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_serdes_configuration val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_TRX_CFG_ID_SERDES_CONFIGURATION, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, serdes_configuration, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "rssi_normal_config.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_gpon_rssi_general_configuration val = { };
+        cli_parm = bcmcli_find_named_parm(session, "rssi_normal_config.location");
+        if (cli_parm != NULL)
+        {
+            val.location = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "rssi_normal_config.location is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "rssi_normal_config.location_sign");
+        if (cli_parm != NULL)
+        {
+            val.location_sign = (bcmolt_rssi_location_sign) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "rssi_normal_config.location_sign is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "rssi_normal_config.start_pattern");
+        if (cli_parm != NULL)
+        {
+            val.start_pattern = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "rssi_normal_config.start_pattern is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "rssi_normal_config.middle_pattern");
+        if (cli_parm != NULL)
+        {
+            val.middle_pattern = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "rssi_normal_config.middle_pattern is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "rssi_normal_config.last_pattern");
+        if (cli_parm != NULL)
+        {
+            val.last_pattern = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "rssi_normal_config.last_pattern is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "rssi_normal_config.middle_repertition");
+        if (cli_parm != NULL)
+        {
+            val.middle_repertition = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "rssi_normal_config.middle_repertition is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "rssi_normal_config.minimum_burst");
+        if (cli_parm != NULL)
+        {
+            val.minimum_burst = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "rssi_normal_config.minimum_burst is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, rssi_normal_config, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_gpon_rssi_general_configuration val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_TRX_CFG_ID_RSSI_NORMAL_CONFIG, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, rssi_normal_config, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "ranging_rssi_resync_control.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_ranging_rssi_control val = { };
+        cli_parm = bcmcli_find_named_parm(session, "ranging_rssi_resync_control.after_no_ed");
+        if (cli_parm != NULL)
+        {
+            val.after_no_ed = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "ranging_rssi_resync_control.after_no_ed is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "ranging_rssi_resync_control.after_ed");
+        if (cli_parm != NULL)
+        {
+            val.after_ed = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "ranging_rssi_resync_control.after_ed is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "ranging_rssi_resync_control.after_reset_3");
+        if (cli_parm != NULL)
+        {
+            val.after_reset_3 = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "ranging_rssi_resync_control.after_reset_3 is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, ranging_rssi_resync_control, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_ranging_rssi_control val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_TRX_CFG_ID_RANGING_RSSI_RESYNC_CONTROL, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, ranging_rssi_resync_control, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_set(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_set(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_trx_cfg_clear(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_trx_cfg cfg;        /**< declare main API struct */
+    bcmolt_gpon_trx_key key = { };  /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_trx_cfg cfg;\n");
+    bcmcli_log("bcmolt_gpon_trx_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_clear");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_TRX, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_TRX_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, gpon_trx, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, gpon_trx, key);\n");
+
+    /* call API */
+    err = bcmolt_cfg_clear(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_clear(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_gpon_trx_cfg_get_multi(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_gpon_trx_cfg cfg;        /**< declare main API struct */
+    bcmolt_gpon_trx_key key = { };  /**< declare key */
+    bcmolt_msg_set *msg_set = NULL; /**< declare message set */
+    uint32_t max_msgs;              /**< declare max number of msgs to get */
+    bcmos_bool invert_filter;       /**< declare filter invert flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_gpon_trx_cfg cfg;\n");
+    bcmcli_log("bcmolt_gpon_trx_key key = {  };\n");
+    bcmcli_log("bcmolt_msg_set* msg_set = NULL;\n");
+    bcmcli_log("uint32_t max_msgs;\n");
+    bcmcli_log("bcmos_bool invert_filter;\n");
+    apicli_print_start(session, "bcmolt_cfg_get_multi");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_gpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_TRX, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_GPON_TRX_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* set max number of msgs from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "max_msgs");
+    if (cli_parm != NULL)
+    {
+        max_msgs = cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "max_msgs is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("max_msgs = %d;\n", max_msgs);
+
+    /* set filter invert flag from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "filter_invert");
+    if (cli_parm != NULL)
+    {
+        invert_filter = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "filter_invert is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("invert_filter = %s;\n", (invert_filter) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* allocate message set */
+    err = apicli_msg_set_alloc(byte_pool, BCMOLT_OBJ_ID_GPON_TRX, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);
+    if (err != BCM_ERR_OK)
+    {
+        return err;
+    }
+
+    bcmcli_log("bcmolt_msg_set_alloc(BCMOLT_OBJ_ID_GPON_TRX, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, gpon_trx, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, gpon_trx, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "filter.transceiver_type");
+    if (cli_parm != NULL)
+    {
+        bcmolt_trx_type val;
+        val = (bcmolt_trx_type) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, transceiver_type, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, transceiver_type, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_TRX_CFG_ID_TRANSCEIVER_TYPE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "transceiver_type");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_trx, transceiver_type);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_trx, transceiver_type);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.la_configuration.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_la_resync_pattern_configuration val = { };
+        cli_parm = bcmcli_find_parm_by_prefix(session, "filter.la_configuration.resync_control.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "filter.la_configuration.resync_control.start_pattern");
+            if (cli_parm != NULL)
+            {
+                val.resync_control.start_pattern = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.la_configuration.resync_control.start_pattern is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.la_configuration.resync_control.middle_pattern");
+            if (cli_parm != NULL)
+            {
+                val.resync_control.middle_pattern = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.la_configuration.resync_control.middle_pattern is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.la_configuration.resync_control.last_pattern");
+            if (cli_parm != NULL)
+            {
+                val.resync_control.last_pattern = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.la_configuration.resync_control.last_pattern is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.la_configuration.resync_control.middle_repetition");
+            if (cli_parm != NULL)
+            {
+                val.resync_control.middle_repetition = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.la_configuration.resync_control.middle_repetition is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.la_configuration.resync_control.location");
+            if (cli_parm != NULL)
+            {
+                val.resync_control.location = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.la_configuration.resync_control.location is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.la_configuration.resync_control is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "filter.la_configuration.ranging_resync_control.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "filter.la_configuration.ranging_resync_control.start_pattern");
+            if (cli_parm != NULL)
+            {
+                val.ranging_resync_control.start_pattern = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.la_configuration.ranging_resync_control.start_pattern is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.la_configuration.ranging_resync_control.middle_pattern");
+            if (cli_parm != NULL)
+            {
+                val.ranging_resync_control.middle_pattern = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.la_configuration.ranging_resync_control.middle_pattern is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.la_configuration.ranging_resync_control.last_pattern");
+            if (cli_parm != NULL)
+            {
+                val.ranging_resync_control.last_pattern = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.la_configuration.ranging_resync_control.last_pattern is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.la_configuration.ranging_resync_control.middle_repetition");
+            if (cli_parm != NULL)
+            {
+                val.ranging_resync_control.middle_repetition = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.la_configuration.ranging_resync_control.middle_repetition is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.la_configuration.ranging_resync_control.location");
+            if (cli_parm != NULL)
+            {
+                val.ranging_resync_control.location = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.la_configuration.ranging_resync_control.location is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.la_configuration.ranging_resync_control is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, la_configuration, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_la_resync_pattern_configuration val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_TRX_CFG_ID_LA_CONFIGURATION, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, la_configuration, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "la_configuration");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_trx, la_configuration);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_trx, la_configuration);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.bcdr.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_bcdr_resync_pattern_configuration val = { };
+        cli_parm = bcmcli_find_parm_by_prefix(session, "filter.bcdr.resync_control.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "filter.bcdr.resync_control.start_pattern");
+            if (cli_parm != NULL)
+            {
+                val.resync_control.start_pattern = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.bcdr.resync_control.start_pattern is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.bcdr.resync_control.middle_pattern");
+            if (cli_parm != NULL)
+            {
+                val.resync_control.middle_pattern = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.bcdr.resync_control.middle_pattern is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.bcdr.resync_control.last_pattern");
+            if (cli_parm != NULL)
+            {
+                val.resync_control.last_pattern = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.bcdr.resync_control.last_pattern is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.bcdr.resync_control.middle_repetition");
+            if (cli_parm != NULL)
+            {
+                val.resync_control.middle_repetition = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.bcdr.resync_control.middle_repetition is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.bcdr.resync_control.location");
+            if (cli_parm != NULL)
+            {
+                val.resync_control.location = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.bcdr.resync_control.location is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.bcdr.resync_control is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "filter.bcdr.ranging_resync_control.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "filter.bcdr.ranging_resync_control.start_pattern");
+            if (cli_parm != NULL)
+            {
+                val.ranging_resync_control.start_pattern = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.bcdr.ranging_resync_control.start_pattern is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.bcdr.ranging_resync_control.middle_pattern");
+            if (cli_parm != NULL)
+            {
+                val.ranging_resync_control.middle_pattern = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.bcdr.ranging_resync_control.middle_pattern is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.bcdr.ranging_resync_control.last_pattern");
+            if (cli_parm != NULL)
+            {
+                val.ranging_resync_control.last_pattern = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.bcdr.ranging_resync_control.last_pattern is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.bcdr.ranging_resync_control.middle_repetition");
+            if (cli_parm != NULL)
+            {
+                val.ranging_resync_control.middle_repetition = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.bcdr.ranging_resync_control.middle_repetition is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.bcdr.ranging_resync_control.location");
+            if (cli_parm != NULL)
+            {
+                val.ranging_resync_control.location = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.bcdr.ranging_resync_control.location is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.bcdr.ranging_resync_control is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, bcdr, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_bcdr_resync_pattern_configuration val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_TRX_CFG_ID_BCDR, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, bcdr, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "bcdr");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_trx, bcdr);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_trx, bcdr);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.la_ranging_after_no_ed_resync.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_resync_control val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.la_ranging_after_no_ed_resync.start_pattern");
+        if (cli_parm != NULL)
+        {
+            val.start_pattern = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.la_ranging_after_no_ed_resync.start_pattern is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.la_ranging_after_no_ed_resync.middle_pattern");
+        if (cli_parm != NULL)
+        {
+            val.middle_pattern = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.la_ranging_after_no_ed_resync.middle_pattern is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.la_ranging_after_no_ed_resync.last_pattern");
+        if (cli_parm != NULL)
+        {
+            val.last_pattern = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.la_ranging_after_no_ed_resync.last_pattern is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.la_ranging_after_no_ed_resync.middle_repetition");
+        if (cli_parm != NULL)
+        {
+            val.middle_repetition = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.la_ranging_after_no_ed_resync.middle_repetition is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.la_ranging_after_no_ed_resync.location");
+        if (cli_parm != NULL)
+        {
+            val.location = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.la_ranging_after_no_ed_resync.location is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, la_ranging_after_no_ed_resync, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_resync_control val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_TRX_CFG_ID_LA_RANGING_AFTER_NO_ED_RESYNC, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, la_ranging_after_no_ed_resync, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "la_ranging_after_no_ed_resync");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_trx, la_ranging_after_no_ed_resync);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_trx, la_ranging_after_no_ed_resync);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.bcdr_ranging_after_no_ed_resync.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_resync_control val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.bcdr_ranging_after_no_ed_resync.start_pattern");
+        if (cli_parm != NULL)
+        {
+            val.start_pattern = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.bcdr_ranging_after_no_ed_resync.start_pattern is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.bcdr_ranging_after_no_ed_resync.middle_pattern");
+        if (cli_parm != NULL)
+        {
+            val.middle_pattern = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.bcdr_ranging_after_no_ed_resync.middle_pattern is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.bcdr_ranging_after_no_ed_resync.last_pattern");
+        if (cli_parm != NULL)
+        {
+            val.last_pattern = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.bcdr_ranging_after_no_ed_resync.last_pattern is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.bcdr_ranging_after_no_ed_resync.middle_repetition");
+        if (cli_parm != NULL)
+        {
+            val.middle_repetition = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.bcdr_ranging_after_no_ed_resync.middle_repetition is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.bcdr_ranging_after_no_ed_resync.location");
+        if (cli_parm != NULL)
+        {
+            val.location = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.bcdr_ranging_after_no_ed_resync.location is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, bcdr_ranging_after_no_ed_resync, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_resync_control val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_TRX_CFG_ID_BCDR_RANGING_AFTER_NO_ED_RESYNC, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, bcdr_ranging_after_no_ed_resync, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "bcdr_ranging_after_no_ed_resync");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_trx, bcdr_ranging_after_no_ed_resync);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_trx, bcdr_ranging_after_no_ed_resync);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.la_ranging_after_ed_resync.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_resync_control val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.la_ranging_after_ed_resync.start_pattern");
+        if (cli_parm != NULL)
+        {
+            val.start_pattern = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.la_ranging_after_ed_resync.start_pattern is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.la_ranging_after_ed_resync.middle_pattern");
+        if (cli_parm != NULL)
+        {
+            val.middle_pattern = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.la_ranging_after_ed_resync.middle_pattern is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.la_ranging_after_ed_resync.last_pattern");
+        if (cli_parm != NULL)
+        {
+            val.last_pattern = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.la_ranging_after_ed_resync.last_pattern is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.la_ranging_after_ed_resync.middle_repetition");
+        if (cli_parm != NULL)
+        {
+            val.middle_repetition = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.la_ranging_after_ed_resync.middle_repetition is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.la_ranging_after_ed_resync.location");
+        if (cli_parm != NULL)
+        {
+            val.location = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.la_ranging_after_ed_resync.location is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, la_ranging_after_ed_resync, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_resync_control val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_TRX_CFG_ID_LA_RANGING_AFTER_ED_RESYNC, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, la_ranging_after_ed_resync, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "la_ranging_after_ed_resync");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_trx, la_ranging_after_ed_resync);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_trx, la_ranging_after_ed_resync);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.bcdr_ranging_after_ed_resync.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_resync_control val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.bcdr_ranging_after_ed_resync.start_pattern");
+        if (cli_parm != NULL)
+        {
+            val.start_pattern = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.bcdr_ranging_after_ed_resync.start_pattern is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.bcdr_ranging_after_ed_resync.middle_pattern");
+        if (cli_parm != NULL)
+        {
+            val.middle_pattern = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.bcdr_ranging_after_ed_resync.middle_pattern is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.bcdr_ranging_after_ed_resync.last_pattern");
+        if (cli_parm != NULL)
+        {
+            val.last_pattern = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.bcdr_ranging_after_ed_resync.last_pattern is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.bcdr_ranging_after_ed_resync.middle_repetition");
+        if (cli_parm != NULL)
+        {
+            val.middle_repetition = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.bcdr_ranging_after_ed_resync.middle_repetition is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.bcdr_ranging_after_ed_resync.location");
+        if (cli_parm != NULL)
+        {
+            val.location = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.bcdr_ranging_after_ed_resync.location is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, bcdr_ranging_after_ed_resync, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_resync_control val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_TRX_CFG_ID_BCDR_RANGING_AFTER_ED_RESYNC, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, bcdr_ranging_after_ed_resync, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "bcdr_ranging_after_ed_resync");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_trx, bcdr_ranging_after_ed_resync);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_trx, bcdr_ranging_after_ed_resync);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.la_resync_polarity");
+    if (cli_parm != NULL)
+    {
+        bcmolt_polarity val;
+        val = (bcmolt_polarity) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, la_resync_polarity, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, la_resync_polarity, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_TRX_CFG_ID_LA_RESYNC_POLARITY, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "la_resync_polarity");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_trx, la_resync_polarity);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_trx, la_resync_polarity);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.bcdr_resync_polarity");
+    if (cli_parm != NULL)
+    {
+        bcmolt_polarity val;
+        val = (bcmolt_polarity) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, bcdr_resync_polarity, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, bcdr_resync_polarity, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_TRX_CFG_ID_BCDR_RESYNC_POLARITY, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "bcdr_resync_polarity");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_trx, bcdr_resync_polarity);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_trx, bcdr_resync_polarity);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.bcdr_ranging_resync_conditions.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_ranging_resync_conditions val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.bcdr_ranging_resync_conditions.after_init");
+        if (cli_parm != NULL)
+        {
+            val.after_init = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.bcdr_ranging_resync_conditions.after_init is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.bcdr_ranging_resync_conditions.after_no_ed");
+        if (cli_parm != NULL)
+        {
+            val.after_no_ed = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.bcdr_ranging_resync_conditions.after_no_ed is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.bcdr_ranging_resync_conditions.after_ed");
+        if (cli_parm != NULL)
+        {
+            val.after_ed = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.bcdr_ranging_resync_conditions.after_ed is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.bcdr_ranging_resync_conditions.after_no_del");
+        if (cli_parm != NULL)
+        {
+            val.after_no_del = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.bcdr_ranging_resync_conditions.after_no_del is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.bcdr_ranging_resync_conditions.after_ranging_access");
+        if (cli_parm != NULL)
+        {
+            val.after_ranging_access = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.bcdr_ranging_resync_conditions.after_ranging_access is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.bcdr_ranging_resync_conditions.med_val");
+        if (cli_parm != NULL)
+        {
+            val.med_val = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.bcdr_ranging_resync_conditions.med_val is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, bcdr_ranging_resync_conditions, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_ranging_resync_conditions val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_TRX_CFG_ID_BCDR_RANGING_RESYNC_CONDITIONS, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, bcdr_ranging_resync_conditions, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "bcdr_ranging_resync_conditions");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_trx, bcdr_ranging_resync_conditions);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_trx, bcdr_ranging_resync_conditions);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.la_ranging_resync_conditions.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_ranging_resync_conditions val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.la_ranging_resync_conditions.after_init");
+        if (cli_parm != NULL)
+        {
+            val.after_init = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.la_ranging_resync_conditions.after_init is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.la_ranging_resync_conditions.after_no_ed");
+        if (cli_parm != NULL)
+        {
+            val.after_no_ed = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.la_ranging_resync_conditions.after_no_ed is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.la_ranging_resync_conditions.after_ed");
+        if (cli_parm != NULL)
+        {
+            val.after_ed = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.la_ranging_resync_conditions.after_ed is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.la_ranging_resync_conditions.after_no_del");
+        if (cli_parm != NULL)
+        {
+            val.after_no_del = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.la_ranging_resync_conditions.after_no_del is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.la_ranging_resync_conditions.after_ranging_access");
+        if (cli_parm != NULL)
+        {
+            val.after_ranging_access = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.la_ranging_resync_conditions.after_ranging_access is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.la_ranging_resync_conditions.med_val");
+        if (cli_parm != NULL)
+        {
+            val.med_val = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.la_ranging_resync_conditions.med_val is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, la_ranging_resync_conditions, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_ranging_resync_conditions val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_TRX_CFG_ID_LA_RANGING_RESYNC_CONDITIONS, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, la_ranging_resync_conditions, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "la_ranging_resync_conditions");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_trx, la_ranging_resync_conditions);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_trx, la_ranging_resync_conditions);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.rx_configuration.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_trx_rx_configuration val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.rx_configuration.wait_window_size");
+        if (cli_parm != NULL)
+        {
+            val.wait_window_size = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.rx_configuration.wait_window_size is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.rx_configuration.ranging_access_window_size");
+        if (cli_parm != NULL)
+        {
+            val.ranging_access_window_size = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.rx_configuration.ranging_access_window_size is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, rx_configuration, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_trx_rx_configuration val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_TRX_CFG_ID_RX_CONFIGURATION, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, rx_configuration, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_configuration");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_trx, rx_configuration);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_trx, rx_configuration);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.ranging_control_stages_configuration.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_ranging_control_configuration val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.ranging_control_stages_configuration.wait_state_1_window_size");
+        if (cli_parm != NULL)
+        {
+            val.wait_state_1_window_size = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.ranging_control_stages_configuration.wait_state_1_window_size is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.ranging_control_stages_configuration.wait_state_2_window_size");
+        if (cli_parm != NULL)
+        {
+            val.wait_state_2_window_size = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.ranging_control_stages_configuration.wait_state_2_window_size is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.ranging_control_stages_configuration.wait_after_resync_4");
+        if (cli_parm != NULL)
+        {
+            val.wait_after_resync_4 = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.ranging_control_stages_configuration.wait_after_resync_4 is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, ranging_control_stages_configuration, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_ranging_control_configuration val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_TRX_CFG_ID_RANGING_CONTROL_STAGES_CONFIGURATION, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, ranging_control_stages_configuration, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ranging_control_stages_configuration");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_trx, ranging_control_stages_configuration);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_trx, ranging_control_stages_configuration);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.energy_detect.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_trx_energy_detect val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.energy_detect.ranging_ed_source");
+        if (cli_parm != NULL)
+        {
+            val.ranging_ed_source = (bcmolt_energy_detect_source) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.energy_detect.ranging_ed_source is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.energy_detect.delimiter_ed_source");
+        if (cli_parm != NULL)
+        {
+            val.delimiter_ed_source = (bcmolt_energy_detect_source) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.energy_detect.delimiter_ed_source is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.energy_detect.minimum_threshold");
+        if (cli_parm != NULL)
+        {
+            val.minimum_threshold = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.energy_detect.minimum_threshold is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.energy_detect.maximum_threshold");
+        if (cli_parm != NULL)
+        {
+            val.maximum_threshold = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.energy_detect.maximum_threshold is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.energy_detect.ed_pattern");
+        if (cli_parm != NULL)
+        {
+            val.ed_pattern = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.energy_detect.ed_pattern is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.energy_detect.ed_pattern_size");
+        if (cli_parm != NULL)
+        {
+            val.ed_pattern_size = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.energy_detect.ed_pattern_size is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.energy_detect.window_size");
+        if (cli_parm != NULL)
+        {
+            val.window_size = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.energy_detect.window_size is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.energy_detect.inversion");
+        if (cli_parm != NULL)
+        {
+            val.inversion = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.energy_detect.inversion is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.energy_detect.no_ed_threshold");
+        if (cli_parm != NULL)
+        {
+            val.no_ed_threshold = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.energy_detect.no_ed_threshold is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, energy_detect, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_trx_energy_detect val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_TRX_CFG_ID_ENERGY_DETECT, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, energy_detect, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "energy_detect");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_trx, energy_detect);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_trx, energy_detect);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.end_of_burst_data_pattern.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_resync_control val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.end_of_burst_data_pattern.start_pattern");
+        if (cli_parm != NULL)
+        {
+            val.start_pattern = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.end_of_burst_data_pattern.start_pattern is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.end_of_burst_data_pattern.middle_pattern");
+        if (cli_parm != NULL)
+        {
+            val.middle_pattern = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.end_of_burst_data_pattern.middle_pattern is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.end_of_burst_data_pattern.last_pattern");
+        if (cli_parm != NULL)
+        {
+            val.last_pattern = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.end_of_burst_data_pattern.last_pattern is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.end_of_burst_data_pattern.middle_repetition");
+        if (cli_parm != NULL)
+        {
+            val.middle_repetition = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.end_of_burst_data_pattern.middle_repetition is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.end_of_burst_data_pattern.location");
+        if (cli_parm != NULL)
+        {
+            val.location = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.end_of_burst_data_pattern.location is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, end_of_burst_data_pattern, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_resync_control val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_TRX_CFG_ID_END_OF_BURST_DATA_PATTERN, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, end_of_burst_data_pattern, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "end_of_burst_data_pattern");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_trx, end_of_burst_data_pattern);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_trx, end_of_burst_data_pattern);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.end_of_burst_ranging_pattern.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_resync_control val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.end_of_burst_ranging_pattern.start_pattern");
+        if (cli_parm != NULL)
+        {
+            val.start_pattern = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.end_of_burst_ranging_pattern.start_pattern is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.end_of_burst_ranging_pattern.middle_pattern");
+        if (cli_parm != NULL)
+        {
+            val.middle_pattern = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.end_of_burst_ranging_pattern.middle_pattern is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.end_of_burst_ranging_pattern.last_pattern");
+        if (cli_parm != NULL)
+        {
+            val.last_pattern = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.end_of_burst_ranging_pattern.last_pattern is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.end_of_burst_ranging_pattern.middle_repetition");
+        if (cli_parm != NULL)
+        {
+            val.middle_repetition = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.end_of_burst_ranging_pattern.middle_repetition is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.end_of_burst_ranging_pattern.location");
+        if (cli_parm != NULL)
+        {
+            val.location = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.end_of_burst_ranging_pattern.location is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, end_of_burst_ranging_pattern, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_resync_control val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_TRX_CFG_ID_END_OF_BURST_RANGING_PATTERN, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, end_of_burst_ranging_pattern, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "end_of_burst_ranging_pattern");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_trx, end_of_burst_ranging_pattern);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_trx, end_of_burst_ranging_pattern);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.preamble.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_trx_preamble val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.preamble.type_1_size");
+        if (cli_parm != NULL)
+        {
+            val.type_1_size = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.preamble.type_1_size is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.preamble.type_2_size");
+        if (cli_parm != NULL)
+        {
+            val.type_2_size = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.preamble.type_2_size is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.preamble.type_3_pre_ranging_size");
+        if (cli_parm != NULL)
+        {
+            val.type_3_pre_ranging_size = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.preamble.type_3_pre_ranging_size is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.preamble.type_3_post_ranging_size");
+        if (cli_parm != NULL)
+        {
+            val.type_3_post_ranging_size = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.preamble.type_3_post_ranging_size is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.preamble.type_3_pattern");
+        if (cli_parm != NULL)
+        {
+            val.type_3_pattern = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.preamble.type_3_pattern is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, preamble, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_trx_preamble val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_TRX_CFG_ID_PREAMBLE, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, preamble, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "preamble");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_trx, preamble);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_trx, preamble);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.delimiter.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_trx_delimiter val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.delimiter.pattern");
+        if (cli_parm != NULL)
+        {
+            if (bcmolt_buf_get_used(&cli_parm->value.buffer) != 3)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "buffer filter.delimiter.pattern must have 3 bytes\n");
+                return BCM_ERR_PARM;
+            }
+
+            bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+            bcmolt_buf_read(&cli_parm->value.buffer, val.pattern, 3);
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.delimiter.pattern is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.delimiter.size");
+        if (cli_parm != NULL)
+        {
+            val.size = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.delimiter.size is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.delimiter.window_size");
+        if (cli_parm != NULL)
+        {
+            val.window_size = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.delimiter.window_size is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, delimiter, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_trx_delimiter val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_TRX_CFG_ID_DELIMITER, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, delimiter, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "delimiter");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_trx, delimiter);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_trx, delimiter);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.guard_bits");
+    if (cli_parm != NULL)
+    {
+        uint32_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, guard_bits, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, guard_bits, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_TRX_CFG_ID_GUARD_BITS, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "guard_bits");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_trx, guard_bits);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_trx, guard_bits);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.serdes_configuration.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_serdes_configuration val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.serdes_configuration.ranging_mode");
+        if (cli_parm != NULL)
+        {
+            val.ranging_mode = (bcmolt_serdes_ranging_mode) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.serdes_configuration.ranging_mode is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.serdes_configuration.multi_ed_mode");
+        if (cli_parm != NULL)
+        {
+            val.multi_ed_mode = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.serdes_configuration.multi_ed_mode is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.serdes_configuration.burst_enable_start_offset");
+        if (cli_parm != NULL)
+        {
+            val.burst_enable_start_offset = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.serdes_configuration.burst_enable_start_offset is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.serdes_configuration.burst_enable_end_offset");
+        if (cli_parm != NULL)
+        {
+            val.burst_enable_end_offset = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.serdes_configuration.burst_enable_end_offset is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.serdes_configuration.ed_invertion");
+        if (cli_parm != NULL)
+        {
+            val.ed_invertion = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.serdes_configuration.ed_invertion is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, serdes_configuration, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_serdes_configuration val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_TRX_CFG_ID_SERDES_CONFIGURATION, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, serdes_configuration, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "serdes_configuration");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_trx, serdes_configuration);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_trx, serdes_configuration);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.plo_ranging");
+    if (cli_parm != NULL)
+    {
+        uint32_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, plo_ranging, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, plo_ranging, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_TRX_CFG_ID_PLO_RANGING, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "plo_ranging");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_trx, plo_ranging);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_trx, plo_ranging);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.plo_data");
+    if (cli_parm != NULL)
+    {
+        uint32_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, plo_data, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, plo_data, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_TRX_CFG_ID_PLO_DATA, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "plo_data");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_trx, plo_data);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_trx, plo_data);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.rssi_normal_config.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_gpon_rssi_general_configuration val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.rssi_normal_config.location");
+        if (cli_parm != NULL)
+        {
+            val.location = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.rssi_normal_config.location is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.rssi_normal_config.location_sign");
+        if (cli_parm != NULL)
+        {
+            val.location_sign = (bcmolt_rssi_location_sign) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.rssi_normal_config.location_sign is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.rssi_normal_config.start_pattern");
+        if (cli_parm != NULL)
+        {
+            val.start_pattern = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.rssi_normal_config.start_pattern is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.rssi_normal_config.middle_pattern");
+        if (cli_parm != NULL)
+        {
+            val.middle_pattern = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.rssi_normal_config.middle_pattern is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.rssi_normal_config.last_pattern");
+        if (cli_parm != NULL)
+        {
+            val.last_pattern = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.rssi_normal_config.last_pattern is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.rssi_normal_config.middle_repertition");
+        if (cli_parm != NULL)
+        {
+            val.middle_repertition = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.rssi_normal_config.middle_repertition is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.rssi_normal_config.minimum_burst");
+        if (cli_parm != NULL)
+        {
+            val.minimum_burst = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.rssi_normal_config.minimum_burst is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, rssi_normal_config, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_gpon_rssi_general_configuration val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_TRX_CFG_ID_RSSI_NORMAL_CONFIG, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, rssi_normal_config, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rssi_normal_config");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_trx, rssi_normal_config);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_trx, rssi_normal_config);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.ranging_rssi_resync_control.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_ranging_rssi_control val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.ranging_rssi_resync_control.after_no_ed");
+        if (cli_parm != NULL)
+        {
+            val.after_no_ed = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.ranging_rssi_resync_control.after_no_ed is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.ranging_rssi_resync_control.after_ed");
+        if (cli_parm != NULL)
+        {
+            val.after_ed = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.ranging_rssi_resync_control.after_ed is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.ranging_rssi_resync_control.after_reset_3");
+        if (cli_parm != NULL)
+        {
+            val.after_reset_3 = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.ranging_rssi_resync_control.after_reset_3 is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, ranging_rssi_resync_control, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_ranging_rssi_control val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_GPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_GPON_TRX_CFG_ID_RANGING_RSSI_RESYNC_CONTROL, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, gpon_trx, ranging_rssi_resync_control, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ranging_rssi_resync_control");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_trx, ranging_rssi_resync_control);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_trx, ranging_rssi_resync_control);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_trx, transceiver_type) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_trx, la_configuration) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_trx, bcdr) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_trx, la_ranging_after_no_ed_resync) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_trx, bcdr_ranging_after_no_ed_resync) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_trx, la_ranging_after_ed_resync) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_trx, bcdr_ranging_after_ed_resync) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_trx, la_resync_polarity) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_trx, bcdr_resync_polarity) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_trx, bcdr_ranging_resync_conditions) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_trx, la_ranging_resync_conditions) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_trx, rx_configuration) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_trx, ranging_control_stages_configuration) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_trx, energy_detect) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_trx, end_of_burst_data_pattern) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_trx, end_of_burst_ranging_pattern) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_trx, preamble) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_trx, delimiter) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_trx, guard_bits) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_trx, serdes_configuration) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_trx, plo_ranging) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_trx, plo_data) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_trx, rssi_normal_config) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, gpon_trx, ranging_rssi_resync_control))
+    {
+        BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_trx, all_properties);
+        bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, gpon_trx, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);
+    bcmcli_log("bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_log_entry_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_log_entry_cfg cfg;       /**< declare main API struct */
+    bcmolt_log_entry_key key = { }; /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_log_entry_cfg cfg;\n");
+    bcmcli_log("bcmolt_log_entry_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "log_id");
+    if (cli_parm != NULL)
+    {
+        key.log_id = cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "log_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.log_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_LOG_ENTRY, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_LOG_ENTRY_KEY_ID_LOG_ID, &key.log_id);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_parm_by_prefix(session, "name.");
+    if (cli_parm != NULL)
+    {
+        cli_parm = bcmcli_find_named_parm(session, "name.str");
+        if (cli_parm != NULL)
+        {
+            snprintf(key.name.str, 100, "%s", cli_parm->value.string);
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "name.str is not set\n");
+            return BCM_ERR_PARM;
+        }
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "name is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.name = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_LOG_ENTRY, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_LOG_ENTRY_KEY_ID_NAME, &key.name);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, log_entry, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, log_entry, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "default_log_level");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, log_entry, default_log_level);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, log_entry, default_log_level);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "default_log_type");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, log_entry, default_log_type);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, log_entry, default_log_type);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "log_level_print");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, log_entry, log_level_print);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, log_entry, log_level_print);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "log_level_save");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, log_entry, log_level_save);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, log_entry, log_level_save);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "log_type");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, log_entry, log_type);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, log_entry, log_type);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "log_style");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, log_entry, log_style);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, log_entry, log_style);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "log_name");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, log_entry, log_name);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, log_entry, log_name);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_CFG_PROP_IS_SET(&cfg, log_entry, default_log_level) && !BCMOLT_CFG_PROP_IS_SET(&cfg, log_entry, default_log_type) && !BCMOLT_CFG_PROP_IS_SET(&cfg, log_entry, log_level_print) && !BCMOLT_CFG_PROP_IS_SET(&cfg, log_entry, log_level_save) && !BCMOLT_CFG_PROP_IS_SET(&cfg, log_entry, log_type) && !BCMOLT_CFG_PROP_IS_SET(&cfg, log_entry, log_style) && !BCMOLT_CFG_PROP_IS_SET(&cfg, log_entry, log_name))
+    {
+        BCMOLT_CFG_PROP_GET(&cfg, log_entry, all_properties);
+        bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, log_entry, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_get(device_id, &cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_log_entry_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_log_entry_cfg cfg;       /**< declare main API struct */
+    bcmolt_log_entry_key key = { }; /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_log_entry_cfg cfg;\n");
+    bcmcli_log("bcmolt_log_entry_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "log_id");
+    if (cli_parm != NULL)
+    {
+        key.log_id = cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "log_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.log_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_LOG_ENTRY, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_LOG_ENTRY_KEY_ID_LOG_ID, &key.log_id);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_parm_by_prefix(session, "name.");
+    if (cli_parm != NULL)
+    {
+        cli_parm = bcmcli_find_named_parm(session, "name.str");
+        if (cli_parm != NULL)
+        {
+            snprintf(key.name.str, 100, "%s", cli_parm->value.string);
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "name.str is not set\n");
+            return BCM_ERR_PARM;
+        }
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "name is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.name = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_LOG_ENTRY, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_LOG_ENTRY_KEY_ID_NAME, &key.name);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, log_entry, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, log_entry, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "log_level_print");
+    if (cli_parm != NULL)
+    {
+        bcmolt_log_level val;
+        val = (bcmolt_log_level) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, log_entry, log_level_print, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, log_entry, log_level_print, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_LOG_ENTRY, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_LOG_ENTRY_CFG_ID_LOG_LEVEL_PRINT, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "log_level_save");
+    if (cli_parm != NULL)
+    {
+        bcmolt_log_level val;
+        val = (bcmolt_log_level) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, log_entry, log_level_save, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, log_entry, log_level_save, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_LOG_ENTRY, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_LOG_ENTRY_CFG_ID_LOG_LEVEL_SAVE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "log_type");
+    if (cli_parm != NULL)
+    {
+        bcmolt_log_type val;
+        val = (bcmolt_log_type) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, log_entry, log_type, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, log_entry, log_type, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_LOG_ENTRY, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_LOG_ENTRY_CFG_ID_LOG_TYPE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "log_style");
+    if (cli_parm != NULL)
+    {
+        bcmolt_log_style val;
+        val = (bcmolt_log_style) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, log_entry, log_style, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, log_entry, log_style, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_LOG_ENTRY, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_LOG_ENTRY_CFG_ID_LOG_STYLE, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_set(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_set(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_log_entry_cfg_clear(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_log_entry_cfg cfg;       /**< declare main API struct */
+    bcmolt_log_entry_key key = { }; /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_log_entry_cfg cfg;\n");
+    bcmcli_log("bcmolt_log_entry_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_clear");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "log_id");
+    if (cli_parm != NULL)
+    {
+        key.log_id = cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "log_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.log_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_LOG_ENTRY, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_LOG_ENTRY_KEY_ID_LOG_ID, &key.log_id);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_parm_by_prefix(session, "name.");
+    if (cli_parm != NULL)
+    {
+        cli_parm = bcmcli_find_named_parm(session, "name.str");
+        if (cli_parm != NULL)
+        {
+            snprintf(key.name.str, 100, "%s", cli_parm->value.string);
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "name.str is not set\n");
+            return BCM_ERR_PARM;
+        }
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "name is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.name = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_LOG_ENTRY, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_LOG_ENTRY_KEY_ID_NAME, &key.name);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, log_entry, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, log_entry, key);\n");
+
+    /* call API */
+    err = bcmolt_cfg_clear(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_clear(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_log_entry_cfg_get_multi(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_log_entry_cfg cfg;       /**< declare main API struct */
+    bcmolt_log_entry_key key = { }; /**< declare key */
+    bcmolt_msg_set *msg_set = NULL; /**< declare message set */
+    uint32_t max_msgs;              /**< declare max number of msgs to get */
+    bcmos_bool invert_filter;       /**< declare filter invert flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_log_entry_cfg cfg;\n");
+    bcmcli_log("bcmolt_log_entry_key key = {  };\n");
+    bcmcli_log("bcmolt_msg_set* msg_set = NULL;\n");
+    bcmcli_log("uint32_t max_msgs;\n");
+    bcmcli_log("bcmos_bool invert_filter;\n");
+    apicli_print_start(session, "bcmolt_cfg_get_multi");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "log_id");
+    if (cli_parm != NULL)
+    {
+        key.log_id = cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "log_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.log_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_LOG_ENTRY, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_LOG_ENTRY_KEY_ID_LOG_ID, &key.log_id);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_parm_by_prefix(session, "name.");
+    if (cli_parm != NULL)
+    {
+        cli_parm = bcmcli_find_named_parm(session, "name.str");
+        if (cli_parm != NULL)
+        {
+            snprintf(key.name.str, 100, "%s", cli_parm->value.string);
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "name.str is not set\n");
+            return BCM_ERR_PARM;
+        }
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "name is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.name = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_LOG_ENTRY, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_LOG_ENTRY_KEY_ID_NAME, &key.name);
+    bcmcli_log(";\n");
+
+    /* set max number of msgs from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "max_msgs");
+    if (cli_parm != NULL)
+    {
+        max_msgs = cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "max_msgs is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("max_msgs = %d;\n", max_msgs);
+
+    /* set filter invert flag from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "filter_invert");
+    if (cli_parm != NULL)
+    {
+        invert_filter = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "filter_invert is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("invert_filter = %s;\n", (invert_filter) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* allocate message set */
+    err = apicli_msg_set_alloc(byte_pool, BCMOLT_OBJ_ID_LOG_ENTRY, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);
+    if (err != BCM_ERR_OK)
+    {
+        return err;
+    }
+
+    bcmcli_log("bcmolt_msg_set_alloc(BCMOLT_OBJ_ID_LOG_ENTRY, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, log_entry, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, log_entry, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "filter.default_log_level");
+    if (cli_parm != NULL)
+    {
+        bcmolt_log_level val;
+        val = (bcmolt_log_level) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, log_entry, default_log_level, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, log_entry, default_log_level, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_LOG_ENTRY, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_LOG_ENTRY_CFG_ID_DEFAULT_LOG_LEVEL, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "default_log_level");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, log_entry, default_log_level);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, log_entry, default_log_level);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.default_log_type");
+    if (cli_parm != NULL)
+    {
+        bcmolt_log_type val;
+        val = (bcmolt_log_type) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, log_entry, default_log_type, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, log_entry, default_log_type, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_LOG_ENTRY, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_LOG_ENTRY_CFG_ID_DEFAULT_LOG_TYPE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "default_log_type");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, log_entry, default_log_type);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, log_entry, default_log_type);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.log_level_print");
+    if (cli_parm != NULL)
+    {
+        bcmolt_log_level val;
+        val = (bcmolt_log_level) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, log_entry, log_level_print, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, log_entry, log_level_print, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_LOG_ENTRY, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_LOG_ENTRY_CFG_ID_LOG_LEVEL_PRINT, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "log_level_print");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, log_entry, log_level_print);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, log_entry, log_level_print);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.log_level_save");
+    if (cli_parm != NULL)
+    {
+        bcmolt_log_level val;
+        val = (bcmolt_log_level) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, log_entry, log_level_save, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, log_entry, log_level_save, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_LOG_ENTRY, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_LOG_ENTRY_CFG_ID_LOG_LEVEL_SAVE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "log_level_save");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, log_entry, log_level_save);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, log_entry, log_level_save);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.log_type");
+    if (cli_parm != NULL)
+    {
+        bcmolt_log_type val;
+        val = (bcmolt_log_type) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, log_entry, log_type, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, log_entry, log_type, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_LOG_ENTRY, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_LOG_ENTRY_CFG_ID_LOG_TYPE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "log_type");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, log_entry, log_type);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, log_entry, log_type);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.log_style");
+    if (cli_parm != NULL)
+    {
+        bcmolt_log_style val;
+        val = (bcmolt_log_style) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, log_entry, log_style, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, log_entry, log_style, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_LOG_ENTRY, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_LOG_ENTRY_CFG_ID_LOG_STYLE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "log_style");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, log_entry, log_style);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, log_entry, log_style);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.log_name.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_str_100 val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.log_name.str");
+        if (cli_parm != NULL)
+        {
+            snprintf(val.str, 100, "%s", cli_parm->value.string);
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.log_name.str is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, log_entry, log_name, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_str_100 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_LOG_ENTRY, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_LOG_ENTRY_CFG_ID_LOG_NAME, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, log_entry, log_name, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "log_name");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, log_entry, log_name);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, log_entry, log_name);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, log_entry, default_log_level) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, log_entry, default_log_type) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, log_entry, log_level_print) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, log_entry, log_level_save) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, log_entry, log_type) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, log_entry, log_style) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, log_entry, log_name))
+    {
+        BCMOLT_MSGSET_CFG_PROP_GET(msg_set, log_entry, all_properties);
+        bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, log_entry, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);
+    bcmcli_log("bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_log_entry_stat_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_log_entry_stat stat;     /**< declare main API struct */
+    bcmolt_log_entry_key key = { }; /**< declare key */
+    bcmos_bool clear_on_read;       /**< declare 'clear on read' flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_log_entry_stat stat;\n");
+    bcmcli_log("bcmolt_log_entry_key key = {  };\n");
+    bcmcli_log("bcmos_bool clear_on_read;\n");
+    apicli_print_start(session, "bcmolt_stat_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "log_id");
+    if (cli_parm != NULL)
+    {
+        key.log_id = cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "log_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.log_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_LOG_ENTRY, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_LOG_ENTRY_KEY_ID_LOG_ID, &key.log_id);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_parm_by_prefix(session, "name.");
+    if (cli_parm != NULL)
+    {
+        cli_parm = bcmcli_find_named_parm(session, "name.str");
+        if (cli_parm != NULL)
+        {
+            snprintf(key.name.str, 100, "%s", cli_parm->value.string);
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "name.str is not set\n");
+            return BCM_ERR_PARM;
+        }
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "name is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.name = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_LOG_ENTRY, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_LOG_ENTRY_KEY_ID_NAME, &key.name);
+    bcmcli_log(";\n");
+
+    /* set stat flags from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "clear");
+    if (cli_parm != NULL)
+    {
+        clear_on_read = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "clear is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("clear_on_read = %s;\n", (clear_on_read) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* init the API struct */
+    BCMOLT_STAT_INIT(&stat, log_entry, key);
+    bcmcli_log("BCMOLT_STAT_INIT(&stat, log_entry, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "msg_count");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, log_entry, msg_count);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, log_entry, msg_count);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "lost_msg_count");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, log_entry, lost_msg_count);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, log_entry, lost_msg_count);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_STAT_PROP_IS_SET(&stat, log_entry, msg_count) && !BCMOLT_STAT_PROP_IS_SET(&stat, log_entry, lost_msg_count))
+    {
+        BCMOLT_STAT_PROP_GET(&stat, log_entry, all_properties);
+        bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, log_entry, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_stat_get(device_id, &stat.hdr, clear_on_read);
+    bcmcli_log("bcmolt_stat_get(device_id, &stat.hdr, clear_on_read);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &stat.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, stat.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_log_entry_stat_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_log_entry_stat_cfg stat_cfg; /**< declare main API struct */
+    bcmolt_log_entry_key key = { };     /**< declare key */
+    bcmolt_log_entry_stat_id stat_id;   /**< declare stat ID */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_log_entry_stat_cfg stat_cfg;\n");
+    bcmcli_log("bcmolt_log_entry_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_stat_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "log_id");
+    if (cli_parm != NULL)
+    {
+        key.log_id = cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "log_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.log_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_LOG_ENTRY, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_LOG_ENTRY_KEY_ID_LOG_ID, &key.log_id);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_parm_by_prefix(session, "name.");
+    if (cli_parm != NULL)
+    {
+        cli_parm = bcmcli_find_named_parm(session, "name.str");
+        if (cli_parm != NULL)
+        {
+            snprintf(key.name.str, 100, "%s", cli_parm->value.string);
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "name.str is not set\n");
+            return BCM_ERR_PARM;
+        }
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "name is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.name = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_LOG_ENTRY, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_LOG_ENTRY_KEY_ID_NAME, &key.name);
+    bcmcli_log(";\n");
+
+    /* set stat ID from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "sub");
+    if (cli_parm != NULL)
+    {
+        stat_id = (bcmolt_log_entry_stat_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    /* init the API struct */
+    switch (stat_id)
+    {
+        case BCMOLT_LOG_ENTRY_STAT_ID_MSG_COUNT:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, log_entry, msg_count, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, log_entry, msg_count, key);\n");
+            break;
+        case BCMOLT_LOG_ENTRY_STAT_ID_LOST_MSG_COUNT:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, log_entry, lost_msg_count, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, log_entry, lost_msg_count, key);\n");
+            break;
+        default:
+            apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+            return BCM_ERR_RANGE;
+    }
+
+    /* call API */
+    err = bcmolt_stat_cfg_get(device_id, &stat_cfg.hdr);
+    bcmcli_log("bcmolt_stat_cfg_get(device_id, &stat_cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &stat_cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, stat_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_log_entry_stat_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_log_entry_stat_cfg stat_cfg; /**< declare main API struct */
+    bcmolt_log_entry_key key = { };     /**< declare key */
+    bcmolt_log_entry_stat_id stat_id;   /**< declare stat ID */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_log_entry_stat_cfg stat_cfg;\n");
+    bcmcli_log("bcmolt_log_entry_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_stat_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "log_id");
+    if (cli_parm != NULL)
+    {
+        key.log_id = cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "log_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.log_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_LOG_ENTRY, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_LOG_ENTRY_KEY_ID_LOG_ID, &key.log_id);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_parm_by_prefix(session, "name.");
+    if (cli_parm != NULL)
+    {
+        cli_parm = bcmcli_find_named_parm(session, "name.str");
+        if (cli_parm != NULL)
+        {
+            snprintf(key.name.str, 100, "%s", cli_parm->value.string);
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "name.str is not set\n");
+            return BCM_ERR_PARM;
+        }
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "name is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.name = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_LOG_ENTRY, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_LOG_ENTRY_KEY_ID_NAME, &key.name);
+    bcmcli_log(";\n");
+
+    /* set stat ID from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "sub");
+    if (cli_parm != NULL)
+    {
+        stat_id = (bcmolt_log_entry_stat_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    /* init the API struct */
+    switch (stat_id)
+    {
+        case BCMOLT_LOG_ENTRY_STAT_ID_MSG_COUNT:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, log_entry, msg_count, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, log_entry, msg_count, key);\n");
+            break;
+        case BCMOLT_LOG_ENTRY_STAT_ID_LOST_MSG_COUNT:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, log_entry, lost_msg_count, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, log_entry, lost_msg_count, key);\n");
+            break;
+        default:
+            apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+            return BCM_ERR_RANGE;
+    }
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_stat_alarm_config val = { };
+        cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.trigger.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.type");
+            if (cli_parm != NULL)
+            {
+                val.trigger.type = (bcmolt_stat_condition_type) cli_parm->value.enum_val;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.type is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            switch (val.trigger.type)
+            {
+                case BCMOLT_STAT_CONDITION_TYPE_RATE_THRESHOLD:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.rising");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_threshold.rising = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.rising is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.falling");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_threshold.falling = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.falling is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_RATE_RANGE:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.upper");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_range.upper = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.upper is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.lower");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_range.lower = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.lower is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_VALUE_THRESHOLD:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.limit");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.value_threshold.limit = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.limit is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_NONE:
+                    break;
+                default:
+                    apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+                    return BCM_ERR_RANGE;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.soak.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "cfg.soak.active_soak_time");
+            if (cli_parm != NULL)
+            {
+                val.soak.active_soak_time = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak.active_soak_time is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "cfg.soak.clear_soak_time");
+            if (cli_parm != NULL)
+            {
+                val.soak.clear_soak_time = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak.clear_soak_time is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_STAT_CFG_PROP_SET(&stat_cfg, log_entry, cfg, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_stat_alarm_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_LOG_ENTRY, BCMOLT_MGT_GROUP_STAT_CFG, 0, BCMOLT_LOG_ENTRY_STAT_CFG_ID_CFG, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_STAT_CFG_PROP_SET(&stat_cfg, log_entry, cfg, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    /* call API */
+    err = bcmolt_stat_cfg_set(device_id, &stat_cfg.hdr);
+    bcmcli_log("bcmolt_stat_cfg_set(device_id, &stat_cfg.hdr);\n");
+    apicli_print_complete(session, err, stat_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_log_entry_auto_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_log_entry_auto_cfg auto_cfg; /**< declare main API struct */
+    bcmolt_log_entry_key key = { };     /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_log_entry_auto_cfg auto_cfg;\n");
+    bcmcli_log("bcmolt_log_entry_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_auto_cfg_get");
+
+    /* init the API struct */
+    BCMOLT_AUTO_CFG_INIT(&auto_cfg, log_entry, key);
+    bcmcli_log("BCMOLT_AUTO_CFG_INIT(&auto_cfg, log_entry, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_cleared");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, log_entry, stat_alarm_cleared);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, log_entry, stat_alarm_cleared);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_raised");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, log_entry, stat_alarm_raised);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, log_entry, stat_alarm_raised);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, log_entry, stat_alarm_cleared) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, log_entry, stat_alarm_raised))
+    {
+        BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, log_entry, all_properties);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, log_entry, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_auto_cfg_get(device_id, &auto_cfg.hdr);
+    bcmcli_log("bcmolt_auto_cfg_get(device_id, &auto_cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &auto_cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, auto_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_log_entry_auto_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_log_entry_auto_cfg auto_cfg; /**< declare main API struct */
+    bcmolt_log_entry_key key = { };     /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_log_entry_auto_cfg auto_cfg;\n");
+    bcmcli_log("bcmolt_log_entry_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_auto_cfg_set");
+
+    /* init the API struct */
+    BCMOLT_AUTO_CFG_INIT(&auto_cfg, log_entry, key);
+    bcmcli_log("BCMOLT_AUTO_CFG_INIT(&auto_cfg, log_entry, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_cleared");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, log_entry, stat_alarm_cleared, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, log_entry, stat_alarm_cleared, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_LOG_ENTRY, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_LOG_ENTRY_AUTO_CFG_ID_STAT_ALARM_CLEARED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_raised");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, log_entry, stat_alarm_raised, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, log_entry, stat_alarm_raised, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_LOG_ENTRY, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_LOG_ENTRY_AUTO_CFG_ID_STAT_ALARM_RAISED, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_auto_cfg_set(device_id, &auto_cfg.hdr);
+    bcmcli_log("bcmolt_auto_cfg_set(device_id, &auto_cfg.hdr);\n");
+    apicli_print_complete(session, err, auto_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_logger_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_logger_cfg cfg;          /**< declare main API struct */
+    bcmolt_logger_key key = { };    /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_logger_cfg cfg;\n");
+    bcmcli_log("bcmolt_logger_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "file_id");
+    if (cli_parm != NULL)
+    {
+        key.file_id = (bcmolt_log_file_id) cli_parm->value.enum_val;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "file_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.file_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_LOGGER, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_LOGGER_KEY_ID_FILE_ID, &key.file_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, logger, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, logger, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "buffer");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, logger, buffer);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, logger, buffer);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "wrap_around");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, logger, wrap_around);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, logger, wrap_around);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "clear_after_read");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, logger, clear_after_read);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, logger, clear_after_read);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "enable_log");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, logger, enable_log);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, logger, enable_log);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "log_names");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, logger, log_names);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, logger, log_names);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_CFG_PROP_IS_SET(&cfg, logger, buffer) && !BCMOLT_CFG_PROP_IS_SET(&cfg, logger, wrap_around) && !BCMOLT_CFG_PROP_IS_SET(&cfg, logger, clear_after_read) && !BCMOLT_CFG_PROP_IS_SET(&cfg, logger, enable_log) && !BCMOLT_CFG_PROP_IS_SET(&cfg, logger, log_names))
+    {
+        BCMOLT_CFG_PROP_GET(&cfg, logger, all_properties);
+        bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, logger, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_get(device_id, &cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_logger_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_logger_cfg cfg;          /**< declare main API struct */
+    bcmolt_logger_key key = { };    /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_logger_cfg cfg;\n");
+    bcmcli_log("bcmolt_logger_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "file_id");
+    if (cli_parm != NULL)
+    {
+        key.file_id = (bcmolt_log_file_id) cli_parm->value.enum_val;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "file_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.file_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_LOGGER, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_LOGGER_KEY_ID_FILE_ID, &key.file_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, logger, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, logger, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "wrap_around");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, logger, wrap_around, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, logger, wrap_around, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_LOGGER, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_LOGGER_CFG_ID_WRAP_AROUND, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "clear_after_read");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, logger, clear_after_read, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, logger, clear_after_read, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_LOGGER, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_LOGGER_CFG_ID_CLEAR_AFTER_READ, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "enable_log");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, logger, enable_log, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, logger, enable_log, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_LOGGER, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_LOGGER_CFG_ID_ENABLE_LOG, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_set(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_set(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_logger_cfg_clear(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_logger_cfg cfg;          /**< declare main API struct */
+    bcmolt_logger_key key = { };    /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_logger_cfg cfg;\n");
+    bcmcli_log("bcmolt_logger_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_clear");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "file_id");
+    if (cli_parm != NULL)
+    {
+        key.file_id = (bcmolt_log_file_id) cli_parm->value.enum_val;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "file_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.file_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_LOGGER, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_LOGGER_KEY_ID_FILE_ID, &key.file_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, logger, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, logger, key);\n");
+
+    /* call API */
+    err = bcmolt_cfg_clear(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_clear(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_logger_cfg_get_multi(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_logger_cfg cfg;          /**< declare main API struct */
+    bcmolt_logger_key key = { };    /**< declare key */
+    bcmolt_msg_set *msg_set = NULL; /**< declare message set */
+    uint32_t max_msgs;              /**< declare max number of msgs to get */
+    bcmos_bool invert_filter;       /**< declare filter invert flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_logger_cfg cfg;\n");
+    bcmcli_log("bcmolt_logger_key key = {  };\n");
+    bcmcli_log("bcmolt_msg_set* msg_set = NULL;\n");
+    bcmcli_log("uint32_t max_msgs;\n");
+    bcmcli_log("bcmos_bool invert_filter;\n");
+    apicli_print_start(session, "bcmolt_cfg_get_multi");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "file_id");
+    if (cli_parm != NULL)
+    {
+        key.file_id = (bcmolt_log_file_id) cli_parm->value.enum_val;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "file_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.file_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_LOGGER, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_LOGGER_KEY_ID_FILE_ID, &key.file_id);
+    bcmcli_log(";\n");
+
+    /* set max number of msgs from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "max_msgs");
+    if (cli_parm != NULL)
+    {
+        max_msgs = cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "max_msgs is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("max_msgs = %d;\n", max_msgs);
+
+    /* set filter invert flag from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "filter_invert");
+    if (cli_parm != NULL)
+    {
+        invert_filter = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "filter_invert is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("invert_filter = %s;\n", (invert_filter) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* allocate message set */
+    err = apicli_msg_set_alloc(byte_pool, BCMOLT_OBJ_ID_LOGGER, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);
+    if (err != BCM_ERR_OK)
+    {
+        return err;
+    }
+
+    bcmcli_log("bcmolt_msg_set_alloc(BCMOLT_OBJ_ID_LOGGER, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, logger, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, logger, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.buffer.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_log_buffer val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.buffer.buff");
+        if (cli_parm != NULL)
+        {
+            snprintf(val.buff, 2048, "%s", cli_parm->value.string);
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.buffer.buff is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.buffer.msg_to_read");
+        if (cli_parm != NULL)
+        {
+            val.msg_to_read = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.buffer.msg_to_read is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, logger, buffer, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_log_buffer val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_LOGGER, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_LOGGER_CFG_ID_BUFFER, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, logger, buffer, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "buffer");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, logger, buffer);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, logger, buffer);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.wrap_around");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, logger, wrap_around, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, logger, wrap_around, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_LOGGER, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_LOGGER_CFG_ID_WRAP_AROUND, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "wrap_around");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, logger, wrap_around);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, logger, wrap_around);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.clear_after_read");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, logger, clear_after_read, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, logger, clear_after_read, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_LOGGER, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_LOGGER_CFG_ID_CLEAR_AFTER_READ, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "clear_after_read");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, logger, clear_after_read);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, logger, clear_after_read);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.enable_log");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, logger, enable_log, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, logger, enable_log, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_LOGGER, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_LOGGER_CFG_ID_ENABLE_LOG, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "enable_log");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, logger, enable_log);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, logger, enable_log);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.log_names.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_str_1000 val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.log_names.str");
+        if (cli_parm != NULL)
+        {
+            snprintf(val.str, 1000, "%s", cli_parm->value.string);
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.log_names.str is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, logger, log_names, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_str_1000 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_LOGGER, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_LOGGER_CFG_ID_LOG_NAMES, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, logger, log_names, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "log_names");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, logger, log_names);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, logger, log_names);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, logger, buffer) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, logger, wrap_around) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, logger, clear_after_read) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, logger, enable_log) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, logger, log_names))
+    {
+        BCMOLT_MSGSET_CFG_PROP_GET(msg_set, logger, all_properties);
+        bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, logger, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);
+    bcmcli_log("bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_logger_stat_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_logger_stat stat;        /**< declare main API struct */
+    bcmolt_logger_key key = { };    /**< declare key */
+    bcmos_bool clear_on_read;       /**< declare 'clear on read' flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_logger_stat stat;\n");
+    bcmcli_log("bcmolt_logger_key key = {  };\n");
+    bcmcli_log("bcmos_bool clear_on_read;\n");
+    apicli_print_start(session, "bcmolt_stat_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "file_id");
+    if (cli_parm != NULL)
+    {
+        key.file_id = (bcmolt_log_file_id) cli_parm->value.enum_val;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "file_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.file_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_LOGGER, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_LOGGER_KEY_ID_FILE_ID, &key.file_id);
+    bcmcli_log(";\n");
+
+    /* set stat flags from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "clear");
+    if (cli_parm != NULL)
+    {
+        clear_on_read = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "clear is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("clear_on_read = %s;\n", (clear_on_read) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* init the API struct */
+    BCMOLT_STAT_INIT(&stat, logger, key);
+    bcmcli_log("BCMOLT_STAT_INIT(&stat, logger, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "lines_in_log");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, logger, lines_in_log);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, logger, lines_in_log);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_STAT_PROP_IS_SET(&stat, logger, lines_in_log))
+    {
+        BCMOLT_STAT_PROP_GET(&stat, logger, all_properties);
+        bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, logger, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_stat_get(device_id, &stat.hdr, clear_on_read);
+    bcmcli_log("bcmolt_stat_get(device_id, &stat.hdr, clear_on_read);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &stat.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, stat.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_logger_oper_clear_log_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_logger_clear_log oper;   /**< declare main API struct */
+    bcmolt_logger_key key = { };    /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_logger_clear_log oper;\n");
+    bcmcli_log("bcmolt_logger_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "file_id");
+    if (cli_parm != NULL)
+    {
+        key.file_id = (bcmolt_log_file_id) cli_parm->value.enum_val;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "file_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.file_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_LOGGER, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_LOGGER_KEY_ID_FILE_ID, &key.file_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, logger, clear_log, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, logger, clear_log, key);\n");
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_logger_stat_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_logger_stat_cfg stat_cfg;    /**< declare main API struct */
+    bcmolt_logger_key key = { };        /**< declare key */
+    bcmolt_logger_stat_id stat_id;      /**< declare stat ID */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_logger_stat_cfg stat_cfg;\n");
+    bcmcli_log("bcmolt_logger_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_stat_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "file_id");
+    if (cli_parm != NULL)
+    {
+        key.file_id = (bcmolt_log_file_id) cli_parm->value.enum_val;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "file_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.file_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_LOGGER, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_LOGGER_KEY_ID_FILE_ID, &key.file_id);
+    bcmcli_log(";\n");
+
+    /* set stat ID from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "sub");
+    if (cli_parm != NULL)
+    {
+        stat_id = (bcmolt_logger_stat_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    /* init the API struct */
+    switch (stat_id)
+    {
+        case BCMOLT_LOGGER_STAT_ID_LINES_IN_LOG:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, logger, lines_in_log, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, logger, lines_in_log, key);\n");
+            break;
+        default:
+            apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+            return BCM_ERR_RANGE;
+    }
+
+    /* call API */
+    err = bcmolt_stat_cfg_get(device_id, &stat_cfg.hdr);
+    bcmcli_log("bcmolt_stat_cfg_get(device_id, &stat_cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &stat_cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, stat_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_logger_stat_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_logger_stat_cfg stat_cfg;    /**< declare main API struct */
+    bcmolt_logger_key key = { };        /**< declare key */
+    bcmolt_logger_stat_id stat_id;      /**< declare stat ID */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_logger_stat_cfg stat_cfg;\n");
+    bcmcli_log("bcmolt_logger_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_stat_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "file_id");
+    if (cli_parm != NULL)
+    {
+        key.file_id = (bcmolt_log_file_id) cli_parm->value.enum_val;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "file_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.file_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_LOGGER, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_LOGGER_KEY_ID_FILE_ID, &key.file_id);
+    bcmcli_log(";\n");
+
+    /* set stat ID from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "sub");
+    if (cli_parm != NULL)
+    {
+        stat_id = (bcmolt_logger_stat_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    /* init the API struct */
+    switch (stat_id)
+    {
+        case BCMOLT_LOGGER_STAT_ID_LINES_IN_LOG:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, logger, lines_in_log, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, logger, lines_in_log, key);\n");
+            break;
+        default:
+            apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+            return BCM_ERR_RANGE;
+    }
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_stat_alarm_config val = { };
+        cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.trigger.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.type");
+            if (cli_parm != NULL)
+            {
+                val.trigger.type = (bcmolt_stat_condition_type) cli_parm->value.enum_val;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.type is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            switch (val.trigger.type)
+            {
+                case BCMOLT_STAT_CONDITION_TYPE_RATE_THRESHOLD:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.rising");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_threshold.rising = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.rising is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.falling");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_threshold.falling = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.falling is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_RATE_RANGE:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.upper");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_range.upper = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.upper is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.lower");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_range.lower = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.lower is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_VALUE_THRESHOLD:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.limit");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.value_threshold.limit = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.limit is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_NONE:
+                    break;
+                default:
+                    apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+                    return BCM_ERR_RANGE;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.soak.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "cfg.soak.active_soak_time");
+            if (cli_parm != NULL)
+            {
+                val.soak.active_soak_time = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak.active_soak_time is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "cfg.soak.clear_soak_time");
+            if (cli_parm != NULL)
+            {
+                val.soak.clear_soak_time = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak.clear_soak_time is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_STAT_CFG_PROP_SET(&stat_cfg, logger, cfg, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_stat_alarm_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_LOGGER, BCMOLT_MGT_GROUP_STAT_CFG, 0, BCMOLT_LOGGER_STAT_CFG_ID_CFG, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_STAT_CFG_PROP_SET(&stat_cfg, logger, cfg, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    /* call API */
+    err = bcmolt_stat_cfg_set(device_id, &stat_cfg.hdr);
+    bcmcli_log("bcmolt_stat_cfg_set(device_id, &stat_cfg.hdr);\n");
+    apicli_print_complete(session, err, stat_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_logger_auto_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_logger_auto_cfg auto_cfg;    /**< declare main API struct */
+    bcmolt_logger_key key = { };        /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_logger_auto_cfg auto_cfg;\n");
+    bcmcli_log("bcmolt_logger_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_auto_cfg_get");
+
+    /* init the API struct */
+    BCMOLT_AUTO_CFG_INIT(&auto_cfg, logger, key);
+    bcmcli_log("BCMOLT_AUTO_CFG_INIT(&auto_cfg, logger, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_cleared");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, logger, stat_alarm_cleared);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, logger, stat_alarm_cleared);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_raised");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, logger, stat_alarm_raised);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, logger, stat_alarm_raised);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, logger, stat_alarm_cleared) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, logger, stat_alarm_raised))
+    {
+        BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, logger, all_properties);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, logger, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_auto_cfg_get(device_id, &auto_cfg.hdr);
+    bcmcli_log("bcmolt_auto_cfg_get(device_id, &auto_cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &auto_cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, auto_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_logger_auto_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_logger_auto_cfg auto_cfg;    /**< declare main API struct */
+    bcmolt_logger_key key = { };        /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_logger_auto_cfg auto_cfg;\n");
+    bcmcli_log("bcmolt_logger_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_auto_cfg_set");
+
+    /* init the API struct */
+    BCMOLT_AUTO_CFG_INIT(&auto_cfg, logger, key);
+    bcmcli_log("BCMOLT_AUTO_CFG_INIT(&auto_cfg, logger, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_cleared");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, logger, stat_alarm_cleared, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, logger, stat_alarm_cleared, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_LOGGER, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_LOGGER_AUTO_CFG_ID_STAT_ALARM_CLEARED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_raised");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, logger, stat_alarm_raised, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, logger, stat_alarm_raised, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_LOGGER, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_LOGGER_AUTO_CFG_ID_STAT_ALARM_RAISED, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_auto_cfg_set(device_id, &auto_cfg.hdr);
+    bcmcli_log("bcmolt_auto_cfg_set(device_id, &auto_cfg.hdr);\n");
+    apicli_print_complete(session, err, auto_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_nni_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_nni_cfg cfg;         /**< declare main API struct */
+    bcmolt_nni_key key = { };   /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_nni_cfg cfg;\n");
+    bcmcli_log("bcmolt_nni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_pon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_NNI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_NNI_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, nni, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, nni, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "remote_loopback");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, nni, remote_loopback);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, nni, remote_loopback);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "line_loopback");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, nni, line_loopback);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, nni, line_loopback);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mac_address");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, nni, mac_address);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, nni, mac_address);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "nni_status");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, nni, nni_status);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, nni, nni_status);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "nni_backup_status");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, nni, nni_backup_status);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, nni, nni_backup_status);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "active_nni");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, nni, active_nni);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, nni, active_nni);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "nni_status_polling_interval_ms");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, nni, nni_status_polling_interval_ms);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, nni, nni_status_polling_interval_ms);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "autoswitch");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, nni, autoswitch);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, nni, autoswitch);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "flow_control");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, nni, flow_control);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, nni, flow_control);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_CFG_PROP_IS_SET(&cfg, nni, remote_loopback) && !BCMOLT_CFG_PROP_IS_SET(&cfg, nni, line_loopback) && !BCMOLT_CFG_PROP_IS_SET(&cfg, nni, mac_address) && !BCMOLT_CFG_PROP_IS_SET(&cfg, nni, nni_status) && !BCMOLT_CFG_PROP_IS_SET(&cfg, nni, nni_backup_status) && !BCMOLT_CFG_PROP_IS_SET(&cfg, nni, active_nni) && !BCMOLT_CFG_PROP_IS_SET(&cfg, nni, nni_status_polling_interval_ms) && !BCMOLT_CFG_PROP_IS_SET(&cfg, nni, autoswitch) && !BCMOLT_CFG_PROP_IS_SET(&cfg, nni, flow_control))
+    {
+        BCMOLT_CFG_PROP_GET(&cfg, nni, all_properties);
+        bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, nni, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_get(device_id, &cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_nni_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_nni_cfg cfg;         /**< declare main API struct */
+    bcmolt_nni_key key = { };   /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_nni_cfg cfg;\n");
+    bcmcli_log("bcmolt_nni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_pon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_NNI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_NNI_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, nni, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, nni, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "remote_loopback");
+    if (cli_parm != NULL)
+    {
+        bcmolt_control_state val;
+        val = (bcmolt_control_state) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, nni, remote_loopback, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, nni, remote_loopback, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_NNI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_NNI_CFG_ID_REMOTE_LOOPBACK, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "line_loopback");
+    if (cli_parm != NULL)
+    {
+        bcmolt_control_state val;
+        val = (bcmolt_control_state) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, nni, line_loopback, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, nni, line_loopback, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_NNI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_NNI_CFG_ID_LINE_LOOPBACK, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mac_address");
+    if (cli_parm != NULL)
+    {
+        bcmos_mac_address val;
+        val = cli_parm->value.mac;
+        BCMOLT_CFG_PROP_SET(&cfg, nni, mac_address, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, nni, mac_address, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_NNI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_NNI_CFG_ID_MAC_ADDRESS, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "active_nni");
+    if (cli_parm != NULL)
+    {
+        bcmolt_nni_connection val;
+        val = (bcmolt_nni_connection) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, nni, active_nni, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, nni, active_nni, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_NNI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_NNI_CFG_ID_ACTIVE_NNI, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "nni_status_polling_interval_ms");
+    if (cli_parm != NULL)
+    {
+        uint32_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, nni, nni_status_polling_interval_ms, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, nni, nni_status_polling_interval_ms, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_NNI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_NNI_CFG_ID_NNI_STATUS_POLLING_INTERVAL_MS, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "autoswitch");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, nni, autoswitch, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, nni, autoswitch, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_NNI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_NNI_CFG_ID_AUTOSWITCH, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "flow_control");
+    if (cli_parm != NULL)
+    {
+        bcmolt_control_state val;
+        val = (bcmolt_control_state) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, nni, flow_control, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, nni, flow_control, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_NNI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_NNI_CFG_ID_FLOW_CONTROL, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_set(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_set(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_nni_cfg_clear(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_nni_cfg cfg;         /**< declare main API struct */
+    bcmolt_nni_key key = { };   /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_nni_cfg cfg;\n");
+    bcmcli_log("bcmolt_nni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_clear");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_pon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_NNI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_NNI_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, nni, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, nni, key);\n");
+
+    /* call API */
+    err = bcmolt_cfg_clear(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_clear(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_nni_cfg_get_multi(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_nni_cfg cfg;             /**< declare main API struct */
+    bcmolt_nni_key key = { };       /**< declare key */
+    bcmolt_msg_set *msg_set = NULL; /**< declare message set */
+    uint32_t max_msgs;              /**< declare max number of msgs to get */
+    bcmos_bool invert_filter;       /**< declare filter invert flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_nni_cfg cfg;\n");
+    bcmcli_log("bcmolt_nni_key key = {  };\n");
+    bcmcli_log("bcmolt_msg_set* msg_set = NULL;\n");
+    bcmcli_log("uint32_t max_msgs;\n");
+    bcmcli_log("bcmos_bool invert_filter;\n");
+    apicli_print_start(session, "bcmolt_cfg_get_multi");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_pon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_NNI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_NNI_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* set max number of msgs from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "max_msgs");
+    if (cli_parm != NULL)
+    {
+        max_msgs = cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "max_msgs is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("max_msgs = %d;\n", max_msgs);
+
+    /* set filter invert flag from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "filter_invert");
+    if (cli_parm != NULL)
+    {
+        invert_filter = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "filter_invert is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("invert_filter = %s;\n", (invert_filter) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* allocate message set */
+    err = apicli_msg_set_alloc(byte_pool, BCMOLT_OBJ_ID_NNI, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);
+    if (err != BCM_ERR_OK)
+    {
+        return err;
+    }
+
+    bcmcli_log("bcmolt_msg_set_alloc(BCMOLT_OBJ_ID_NNI, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, nni, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, nni, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "filter.remote_loopback");
+    if (cli_parm != NULL)
+    {
+        bcmolt_control_state val;
+        val = (bcmolt_control_state) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, nni, remote_loopback, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, nni, remote_loopback, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_NNI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_NNI_CFG_ID_REMOTE_LOOPBACK, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "remote_loopback");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, nni, remote_loopback);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, nni, remote_loopback);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.line_loopback");
+    if (cli_parm != NULL)
+    {
+        bcmolt_control_state val;
+        val = (bcmolt_control_state) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, nni, line_loopback, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, nni, line_loopback, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_NNI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_NNI_CFG_ID_LINE_LOOPBACK, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "line_loopback");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, nni, line_loopback);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, nni, line_loopback);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.mac_address");
+    if (cli_parm != NULL)
+    {
+        bcmos_mac_address val;
+        val = cli_parm->value.mac;
+        BCMOLT_CFG_PROP_SET(&cfg, nni, mac_address, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, nni, mac_address, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_NNI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_NNI_CFG_ID_MAC_ADDRESS, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mac_address");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, nni, mac_address);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, nni, mac_address);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.nni_status.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_nni_link_status val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.nni_status.link_status");
+        if (cli_parm != NULL)
+        {
+            val.link_status = (bcmolt_trivalent) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.nni_status.link_status is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.nni_status.signal_detected");
+        if (cli_parm != NULL)
+        {
+            val.signal_detected = (bcmolt_trivalent) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.nni_status.signal_detected is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.nni_status.pmd_locked");
+        if (cli_parm != NULL)
+        {
+            val.pmd_locked = (bcmolt_trivalent) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.nni_status.pmd_locked is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, nni, nni_status, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_nni_link_status val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_NNI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_NNI_CFG_ID_NNI_STATUS, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, nni, nni_status, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "nni_status");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, nni, nni_status);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, nni, nni_status);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.nni_backup_status.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_nni_link_status val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.nni_backup_status.link_status");
+        if (cli_parm != NULL)
+        {
+            val.link_status = (bcmolt_trivalent) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.nni_backup_status.link_status is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.nni_backup_status.signal_detected");
+        if (cli_parm != NULL)
+        {
+            val.signal_detected = (bcmolt_trivalent) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.nni_backup_status.signal_detected is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.nni_backup_status.pmd_locked");
+        if (cli_parm != NULL)
+        {
+            val.pmd_locked = (bcmolt_trivalent) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.nni_backup_status.pmd_locked is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, nni, nni_backup_status, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_nni_link_status val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_NNI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_NNI_CFG_ID_NNI_BACKUP_STATUS, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, nni, nni_backup_status, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "nni_backup_status");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, nni, nni_backup_status);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, nni, nni_backup_status);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.active_nni");
+    if (cli_parm != NULL)
+    {
+        bcmolt_nni_connection val;
+        val = (bcmolt_nni_connection) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, nni, active_nni, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, nni, active_nni, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_NNI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_NNI_CFG_ID_ACTIVE_NNI, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "active_nni");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, nni, active_nni);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, nni, active_nni);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.nni_status_polling_interval_ms");
+    if (cli_parm != NULL)
+    {
+        uint32_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, nni, nni_status_polling_interval_ms, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, nni, nni_status_polling_interval_ms, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_NNI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_NNI_CFG_ID_NNI_STATUS_POLLING_INTERVAL_MS, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "nni_status_polling_interval_ms");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, nni, nni_status_polling_interval_ms);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, nni, nni_status_polling_interval_ms);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.autoswitch");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, nni, autoswitch, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, nni, autoswitch, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_NNI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_NNI_CFG_ID_AUTOSWITCH, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "autoswitch");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, nni, autoswitch);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, nni, autoswitch);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.flow_control");
+    if (cli_parm != NULL)
+    {
+        bcmolt_control_state val;
+        val = (bcmolt_control_state) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, nni, flow_control, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, nni, flow_control, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_NNI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_NNI_CFG_ID_FLOW_CONTROL, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "flow_control");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, nni, flow_control);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, nni, flow_control);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, nni, remote_loopback) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, nni, line_loopback) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, nni, mac_address) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, nni, nni_status) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, nni, nni_backup_status) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, nni, active_nni) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, nni, nni_status_polling_interval_ms) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, nni, autoswitch) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, nni, flow_control))
+    {
+        BCMOLT_MSGSET_CFG_PROP_GET(msg_set, nni, all_properties);
+        bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, nni, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);
+    bcmcli_log("bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_nni_stat_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_nni_stat stat;       /**< declare main API struct */
+    bcmolt_nni_key key = { };   /**< declare key */
+    bcmos_bool clear_on_read;   /**< declare 'clear on read' flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_nni_stat stat;\n");
+    bcmcli_log("bcmolt_nni_key key = {  };\n");
+    bcmcli_log("bcmos_bool clear_on_read;\n");
+    apicli_print_start(session, "bcmolt_stat_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_pon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_NNI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_NNI_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* set stat flags from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "clear");
+    if (cli_parm != NULL)
+    {
+        clear_on_read = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "clear is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("clear_on_read = %s;\n", (clear_on_read) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* init the API struct */
+    BCMOLT_STAT_INIT(&stat, nni, key);
+    bcmcli_log("BCMOLT_STAT_INIT(&stat, nni, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "rx_frames_64");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, rx_frames_64);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, rx_frames_64);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_frames_65_127");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, rx_frames_65_127);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, rx_frames_65_127);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_frames_128_255");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, rx_frames_128_255);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, rx_frames_128_255);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_frames_256_511");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, rx_frames_256_511);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, rx_frames_256_511);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_frames_512_1023");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, rx_frames_512_1023);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, rx_frames_512_1023);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_frames_1024_1518");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, rx_frames_1024_1518);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, rx_frames_1024_1518);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_frames_1519_2047");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, rx_frames_1519_2047);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, rx_frames_1519_2047);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_frames_2048_4095");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, rx_frames_2048_4095);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, rx_frames_2048_4095);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_frames_4096_9216");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, rx_frames_4096_9216);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, rx_frames_4096_9216);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_frames_9217_16383");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, rx_frames_9217_16383);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, rx_frames_9217_16383);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, rx_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, rx_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_bytes");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, rx_bytes);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, rx_bytes);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_good_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, rx_good_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, rx_good_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_unicast_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, rx_unicast_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, rx_unicast_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_multicast_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, rx_multicast_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, rx_multicast_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_broadcast_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, rx_broadcast_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, rx_broadcast_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_fcs_errors");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, rx_fcs_errors);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, rx_fcs_errors);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_control_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, rx_control_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, rx_control_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_pause_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, rx_pause_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, rx_pause_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_pfc_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, rx_pfc_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, rx_pfc_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_unsupported_opcode");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, rx_unsupported_opcode);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, rx_unsupported_opcode);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_unsupported_da");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, rx_unsupported_da);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, rx_unsupported_da);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_alignment_errors");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, rx_alignment_errors);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, rx_alignment_errors);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_length_out_of_range");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, rx_length_out_of_range);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, rx_length_out_of_range);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_code_errors");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, rx_code_errors);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, rx_code_errors);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_oversized_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, rx_oversized_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, rx_oversized_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_jabber_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, rx_jabber_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, rx_jabber_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_mtu_check_errors");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, rx_mtu_check_errors);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, rx_mtu_check_errors);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_promiscuous_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, rx_promiscuous_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, rx_promiscuous_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_vlan_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, rx_vlan_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, rx_vlan_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_double_vlan_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, rx_double_vlan_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, rx_double_vlan_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_truncated_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, rx_truncated_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, rx_truncated_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_undersize_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, rx_undersize_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, rx_undersize_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_fragmented_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, rx_fragmented_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, rx_fragmented_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_runt_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, rx_runt_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, rx_runt_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_frames_64");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, tx_frames_64);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, tx_frames_64);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_frames_65_127");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, tx_frames_65_127);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, tx_frames_65_127);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_frames_128_255");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, tx_frames_128_255);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, tx_frames_128_255);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_frames_256_511");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, tx_frames_256_511);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, tx_frames_256_511);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_frames_512_1023");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, tx_frames_512_1023);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, tx_frames_512_1023);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_frames_1024_1518");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, tx_frames_1024_1518);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, tx_frames_1024_1518);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_frames_1519_2047");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, tx_frames_1519_2047);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, tx_frames_1519_2047);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_frames_2048_4095");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, tx_frames_2048_4095);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, tx_frames_2048_4095);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_frames_4096_9216");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, tx_frames_4096_9216);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, tx_frames_4096_9216);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_frames_9217_16383");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, tx_frames_9217_16383);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, tx_frames_9217_16383);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, tx_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, tx_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_bytes");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, tx_bytes);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, tx_bytes);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_good_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, tx_good_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, tx_good_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_unicast_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, tx_unicast_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, tx_unicast_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_multicast_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, tx_multicast_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, tx_multicast_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_broadcast_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, tx_broadcast_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, tx_broadcast_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_pause_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, tx_pause_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, tx_pause_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_pfc_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, tx_pfc_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, tx_pfc_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_jabber_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, tx_jabber_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, tx_jabber_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_fcs_errors");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, tx_fcs_errors);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, tx_fcs_errors);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_control_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, tx_control_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, tx_control_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_oversize_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, tx_oversize_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, tx_oversize_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_fragmented_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, tx_fragmented_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, tx_fragmented_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_error_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, tx_error_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, tx_error_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_vlan_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, tx_vlan_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, tx_vlan_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_double_vlan_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, tx_double_vlan_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, tx_double_vlan_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_runt_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, tx_runt_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, tx_runt_frames);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_underrun_frames");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, nni, tx_underrun_frames);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, tx_underrun_frames);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_STAT_PROP_IS_SET(&stat, nni, rx_frames_64) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, rx_frames_65_127) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, rx_frames_128_255) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, rx_frames_256_511) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, rx_frames_512_1023) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, rx_frames_1024_1518) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, rx_frames_1519_2047) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, rx_frames_2048_4095) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, rx_frames_4096_9216) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, rx_frames_9217_16383) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, rx_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, rx_bytes) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, rx_good_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, rx_unicast_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, rx_multicast_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, rx_broadcast_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, rx_fcs_errors) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, rx_control_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, rx_pause_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, rx_pfc_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, rx_unsupported_opcode) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, rx_unsupported_da) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, rx_alignment_errors) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, rx_length_out_of_range) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, rx_code_errors) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, rx_oversized_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, rx_jabber_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, rx_mtu_check_errors) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, rx_promiscuous_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, rx_vlan_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, rx_double_vlan_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, rx_truncated_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, rx_undersize_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, rx_fragmented_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, rx_runt_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, tx_frames_64) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, tx_frames_65_127) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, tx_frames_128_255) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, tx_frames_256_511) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, tx_frames_512_1023) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, tx_frames_1024_1518) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, tx_frames_1519_2047) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, tx_frames_2048_4095) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, tx_frames_4096_9216) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, tx_frames_9217_16383) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, tx_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, tx_bytes) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, tx_good_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, tx_unicast_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, tx_multicast_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, tx_broadcast_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, tx_pause_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, tx_pfc_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, tx_jabber_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, tx_fcs_errors) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, tx_control_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, tx_oversize_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, tx_fragmented_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, tx_error_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, tx_vlan_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, tx_double_vlan_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, tx_runt_frames) && !BCMOLT_STAT_PROP_IS_SET(&stat, nni, tx_underrun_frames))
+    {
+        BCMOLT_STAT_PROP_GET(&stat, nni, all_properties);
+        bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, nni, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_stat_get(device_id, &stat.hdr, clear_on_read);
+    bcmcli_log("bcmolt_stat_get(device_id, &stat.hdr, clear_on_read);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &stat.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, stat.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_nni_stat_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_nni_stat_cfg stat_cfg;   /**< declare main API struct */
+    bcmolt_nni_key key = { };       /**< declare key */
+    bcmolt_nni_stat_id stat_id;     /**< declare stat ID */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_nni_stat_cfg stat_cfg;\n");
+    bcmcli_log("bcmolt_nni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_stat_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_pon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_NNI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_NNI_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* set stat ID from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "sub");
+    if (cli_parm != NULL)
+    {
+        stat_id = (bcmolt_nni_stat_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    /* init the API struct */
+    switch (stat_id)
+    {
+        case BCMOLT_NNI_STAT_ID_RX_FRAMES_64:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_frames_64, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_frames_64, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_FRAMES_65_127:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_frames_65_127, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_frames_65_127, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_FRAMES_128_255:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_frames_128_255, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_frames_128_255, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_FRAMES_256_511:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_frames_256_511, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_frames_256_511, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_FRAMES_512_1023:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_frames_512_1023, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_frames_512_1023, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_FRAMES_1024_1518:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_frames_1024_1518, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_frames_1024_1518, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_FRAMES_1519_2047:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_frames_1519_2047, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_frames_1519_2047, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_FRAMES_2048_4095:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_frames_2048_4095, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_frames_2048_4095, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_FRAMES_4096_9216:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_frames_4096_9216, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_frames_4096_9216, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_FRAMES_9217_16383:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_frames_9217_16383, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_frames_9217_16383, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_bytes, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_GOOD_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_good_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_good_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_UNICAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_unicast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_unicast_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_MULTICAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_multicast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_multicast_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_BROADCAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_broadcast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_broadcast_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_FCS_ERRORS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_fcs_errors, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_fcs_errors, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_CONTROL_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_control_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_control_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_PAUSE_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_pause_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_pause_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_PFC_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_pfc_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_pfc_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_UNSUPPORTED_OPCODE:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_unsupported_opcode, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_unsupported_opcode, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_UNSUPPORTED_DA:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_unsupported_da, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_unsupported_da, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_ALIGNMENT_ERRORS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_alignment_errors, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_alignment_errors, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_LENGTH_OUT_OF_RANGE:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_length_out_of_range, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_length_out_of_range, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_CODE_ERRORS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_code_errors, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_code_errors, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_OVERSIZED_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_oversized_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_oversized_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_JABBER_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_jabber_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_jabber_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_MTU_CHECK_ERRORS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_mtu_check_errors, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_mtu_check_errors, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_PROMISCUOUS_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_promiscuous_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_promiscuous_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_VLAN_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_vlan_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_vlan_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_DOUBLE_VLAN_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_double_vlan_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_double_vlan_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_TRUNCATED_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_truncated_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_truncated_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_UNDERSIZE_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_undersize_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_undersize_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_FRAGMENTED_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_fragmented_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_fragmented_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_RUNT_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_runt_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_runt_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_FRAMES_64:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_frames_64, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_frames_64, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_FRAMES_65_127:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_frames_65_127, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_frames_65_127, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_FRAMES_128_255:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_frames_128_255, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_frames_128_255, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_FRAMES_256_511:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_frames_256_511, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_frames_256_511, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_FRAMES_512_1023:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_frames_512_1023, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_frames_512_1023, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_FRAMES_1024_1518:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_frames_1024_1518, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_frames_1024_1518, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_FRAMES_1519_2047:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_frames_1519_2047, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_frames_1519_2047, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_FRAMES_2048_4095:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_frames_2048_4095, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_frames_2048_4095, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_FRAMES_4096_9216:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_frames_4096_9216, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_frames_4096_9216, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_FRAMES_9217_16383:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_frames_9217_16383, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_frames_9217_16383, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_bytes, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_GOOD_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_good_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_good_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_UNICAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_unicast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_unicast_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_MULTICAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_multicast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_multicast_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_BROADCAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_broadcast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_broadcast_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_PAUSE_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_pause_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_pause_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_PFC_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_pfc_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_pfc_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_JABBER_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_jabber_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_jabber_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_FCS_ERRORS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_fcs_errors, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_fcs_errors, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_CONTROL_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_control_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_control_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_OVERSIZE_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_oversize_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_oversize_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_FRAGMENTED_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_fragmented_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_fragmented_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_ERROR_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_error_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_error_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_VLAN_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_vlan_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_vlan_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_DOUBLE_VLAN_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_double_vlan_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_double_vlan_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_RUNT_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_runt_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_runt_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_UNDERRUN_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_underrun_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_underrun_frames, key);\n");
+            break;
+        default:
+            apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+            return BCM_ERR_RANGE;
+    }
+
+    /* call API */
+    err = bcmolt_stat_cfg_get(device_id, &stat_cfg.hdr);
+    bcmcli_log("bcmolt_stat_cfg_get(device_id, &stat_cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &stat_cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, stat_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_nni_stat_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_nni_stat_cfg stat_cfg;   /**< declare main API struct */
+    bcmolt_nni_key key = { };       /**< declare key */
+    bcmolt_nni_stat_id stat_id;     /**< declare stat ID */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_nni_stat_cfg stat_cfg;\n");
+    bcmcli_log("bcmolt_nni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_stat_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_pon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_NNI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_NNI_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* set stat ID from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "sub");
+    if (cli_parm != NULL)
+    {
+        stat_id = (bcmolt_nni_stat_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    /* init the API struct */
+    switch (stat_id)
+    {
+        case BCMOLT_NNI_STAT_ID_RX_FRAMES_64:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_frames_64, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_frames_64, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_FRAMES_65_127:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_frames_65_127, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_frames_65_127, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_FRAMES_128_255:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_frames_128_255, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_frames_128_255, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_FRAMES_256_511:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_frames_256_511, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_frames_256_511, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_FRAMES_512_1023:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_frames_512_1023, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_frames_512_1023, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_FRAMES_1024_1518:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_frames_1024_1518, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_frames_1024_1518, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_FRAMES_1519_2047:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_frames_1519_2047, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_frames_1519_2047, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_FRAMES_2048_4095:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_frames_2048_4095, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_frames_2048_4095, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_FRAMES_4096_9216:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_frames_4096_9216, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_frames_4096_9216, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_FRAMES_9217_16383:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_frames_9217_16383, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_frames_9217_16383, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_bytes, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_GOOD_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_good_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_good_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_UNICAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_unicast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_unicast_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_MULTICAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_multicast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_multicast_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_BROADCAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_broadcast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_broadcast_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_FCS_ERRORS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_fcs_errors, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_fcs_errors, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_CONTROL_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_control_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_control_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_PAUSE_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_pause_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_pause_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_PFC_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_pfc_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_pfc_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_UNSUPPORTED_OPCODE:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_unsupported_opcode, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_unsupported_opcode, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_UNSUPPORTED_DA:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_unsupported_da, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_unsupported_da, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_ALIGNMENT_ERRORS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_alignment_errors, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_alignment_errors, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_LENGTH_OUT_OF_RANGE:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_length_out_of_range, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_length_out_of_range, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_CODE_ERRORS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_code_errors, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_code_errors, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_OVERSIZED_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_oversized_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_oversized_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_JABBER_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_jabber_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_jabber_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_MTU_CHECK_ERRORS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_mtu_check_errors, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_mtu_check_errors, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_PROMISCUOUS_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_promiscuous_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_promiscuous_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_VLAN_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_vlan_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_vlan_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_DOUBLE_VLAN_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_double_vlan_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_double_vlan_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_TRUNCATED_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_truncated_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_truncated_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_UNDERSIZE_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_undersize_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_undersize_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_FRAGMENTED_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_fragmented_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_fragmented_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_RX_RUNT_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_runt_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, rx_runt_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_FRAMES_64:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_frames_64, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_frames_64, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_FRAMES_65_127:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_frames_65_127, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_frames_65_127, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_FRAMES_128_255:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_frames_128_255, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_frames_128_255, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_FRAMES_256_511:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_frames_256_511, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_frames_256_511, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_FRAMES_512_1023:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_frames_512_1023, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_frames_512_1023, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_FRAMES_1024_1518:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_frames_1024_1518, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_frames_1024_1518, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_FRAMES_1519_2047:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_frames_1519_2047, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_frames_1519_2047, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_FRAMES_2048_4095:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_frames_2048_4095, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_frames_2048_4095, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_FRAMES_4096_9216:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_frames_4096_9216, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_frames_4096_9216, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_FRAMES_9217_16383:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_frames_9217_16383, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_frames_9217_16383, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_bytes, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_GOOD_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_good_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_good_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_UNICAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_unicast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_unicast_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_MULTICAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_multicast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_multicast_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_BROADCAST_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_broadcast_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_broadcast_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_PAUSE_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_pause_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_pause_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_PFC_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_pfc_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_pfc_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_JABBER_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_jabber_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_jabber_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_FCS_ERRORS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_fcs_errors, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_fcs_errors, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_CONTROL_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_control_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_control_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_OVERSIZE_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_oversize_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_oversize_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_FRAGMENTED_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_fragmented_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_fragmented_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_ERROR_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_error_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_error_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_VLAN_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_vlan_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_vlan_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_DOUBLE_VLAN_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_double_vlan_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_double_vlan_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_RUNT_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_runt_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_runt_frames, key);\n");
+            break;
+        case BCMOLT_NNI_STAT_ID_TX_UNDERRUN_FRAMES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_underrun_frames, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, nni, tx_underrun_frames, key);\n");
+            break;
+        default:
+            apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+            return BCM_ERR_RANGE;
+    }
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_stat_alarm_config val = { };
+        cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.trigger.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.type");
+            if (cli_parm != NULL)
+            {
+                val.trigger.type = (bcmolt_stat_condition_type) cli_parm->value.enum_val;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.type is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            switch (val.trigger.type)
+            {
+                case BCMOLT_STAT_CONDITION_TYPE_RATE_THRESHOLD:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.rising");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_threshold.rising = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.rising is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.falling");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_threshold.falling = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.falling is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_RATE_RANGE:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.upper");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_range.upper = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.upper is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.lower");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_range.lower = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.lower is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_VALUE_THRESHOLD:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.limit");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.value_threshold.limit = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.limit is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_NONE:
+                    break;
+                default:
+                    apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+                    return BCM_ERR_RANGE;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.soak.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "cfg.soak.active_soak_time");
+            if (cli_parm != NULL)
+            {
+                val.soak.active_soak_time = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak.active_soak_time is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "cfg.soak.clear_soak_time");
+            if (cli_parm != NULL)
+            {
+                val.soak.clear_soak_time = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak.clear_soak_time is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_STAT_CFG_PROP_SET(&stat_cfg, nni, cfg, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_stat_alarm_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_NNI, BCMOLT_MGT_GROUP_STAT_CFG, 0, BCMOLT_NNI_STAT_CFG_ID_CFG, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_STAT_CFG_PROP_SET(&stat_cfg, nni, cfg, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    /* call API */
+    err = bcmolt_stat_cfg_set(device_id, &stat_cfg.hdr);
+    bcmcli_log("bcmolt_stat_cfg_set(device_id, &stat_cfg.hdr);\n");
+    apicli_print_complete(session, err, stat_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_nni_auto_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_nni_auto_cfg auto_cfg;   /**< declare main API struct */
+    bcmolt_nni_key key = { };       /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_nni_auto_cfg auto_cfg;\n");
+    bcmcli_log("bcmolt_nni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_auto_cfg_get");
+
+    /* init the API struct */
+    BCMOLT_AUTO_CFG_INIT(&auto_cfg, nni, key);
+    bcmcli_log("BCMOLT_AUTO_CFG_INIT(&auto_cfg, nni, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_cleared");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, nni, stat_alarm_cleared);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, nni, stat_alarm_cleared);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_raised");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, nni, stat_alarm_raised);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, nni, stat_alarm_raised);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "status_changed");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, nni, status_changed);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, nni, status_changed);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, nni, stat_alarm_cleared) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, nni, stat_alarm_raised) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, nni, status_changed))
+    {
+        BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, nni, all_properties);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, nni, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_auto_cfg_get(device_id, &auto_cfg.hdr);
+    bcmcli_log("bcmolt_auto_cfg_get(device_id, &auto_cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &auto_cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, auto_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_nni_auto_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_nni_auto_cfg auto_cfg;   /**< declare main API struct */
+    bcmolt_nni_key key = { };       /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_nni_auto_cfg auto_cfg;\n");
+    bcmcli_log("bcmolt_nni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_auto_cfg_set");
+
+    /* init the API struct */
+    BCMOLT_AUTO_CFG_INIT(&auto_cfg, nni, key);
+    bcmcli_log("BCMOLT_AUTO_CFG_INIT(&auto_cfg, nni, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_cleared");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, nni, stat_alarm_cleared, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, nni, stat_alarm_cleared, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_NNI, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_NNI_AUTO_CFG_ID_STAT_ALARM_CLEARED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_raised");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, nni, stat_alarm_raised, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, nni, stat_alarm_raised, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_NNI, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_NNI_AUTO_CFG_ID_STAT_ALARM_RAISED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "status_changed");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, nni, status_changed, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, nni, status_changed, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_NNI, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_NNI_AUTO_CFG_ID_STATUS_CHANGED, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_auto_cfg_set(device_id, &auto_cfg.hdr);
+    bcmcli_log("bcmolt_auto_cfg_set(device_id, &auto_cfg.hdr);\n");
+    apicli_print_complete(session, err, auto_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_nni_serdes_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_nni_serdes_cfg cfg;          /**< declare main API struct */
+    bcmolt_nni_serdes_key key = { };    /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_nni_serdes_cfg cfg;\n");
+    bcmcli_log("bcmolt_nni_serdes_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_pon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_NNI_SERDES, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_NNI_SERDES_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "instance");
+    if (cli_parm != NULL)
+    {
+        key.instance = (bcmolt_serdes_instance) cli_parm->value.enum_val;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "instance is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.instance = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_NNI_SERDES, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_NNI_SERDES_KEY_ID_INSTANCE, &key.instance);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, nni_serdes, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, nni_serdes, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "rx_vga");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, nni_serdes, rx_vga);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, nni_serdes, rx_vga);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_pf");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, nni_serdes, rx_pf);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, nni_serdes, rx_pf);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_lfpf");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, nni_serdes, rx_lfpf);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, nni_serdes, rx_lfpf);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_dfe1");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, nni_serdes, rx_dfe1);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, nni_serdes, rx_dfe1);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_dfe2");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, nni_serdes, rx_dfe2);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, nni_serdes, rx_dfe2);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_dfe3");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, nni_serdes, rx_dfe3);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, nni_serdes, rx_dfe3);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_dfe4");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, nni_serdes, rx_dfe4);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, nni_serdes, rx_dfe4);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_dfe5");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, nni_serdes, rx_dfe5);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, nni_serdes, rx_dfe5);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_pre");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, nni_serdes, tx_pre);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, nni_serdes, tx_pre);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_main");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, nni_serdes, tx_main);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, nni_serdes, tx_main);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_post1");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, nni_serdes, tx_post1);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, nni_serdes, tx_post1);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_post2");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, nni_serdes, tx_post2);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, nni_serdes, tx_post2);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_post3");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, nni_serdes, tx_post3);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, nni_serdes, tx_post3);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_amp");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, nni_serdes, tx_amp);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, nni_serdes, tx_amp);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_CFG_PROP_IS_SET(&cfg, nni_serdes, rx_vga) && !BCMOLT_CFG_PROP_IS_SET(&cfg, nni_serdes, rx_pf) && !BCMOLT_CFG_PROP_IS_SET(&cfg, nni_serdes, rx_lfpf) && !BCMOLT_CFG_PROP_IS_SET(&cfg, nni_serdes, rx_dfe1) && !BCMOLT_CFG_PROP_IS_SET(&cfg, nni_serdes, rx_dfe2) && !BCMOLT_CFG_PROP_IS_SET(&cfg, nni_serdes, rx_dfe3) && !BCMOLT_CFG_PROP_IS_SET(&cfg, nni_serdes, rx_dfe4) && !BCMOLT_CFG_PROP_IS_SET(&cfg, nni_serdes, rx_dfe5) && !BCMOLT_CFG_PROP_IS_SET(&cfg, nni_serdes, tx_pre) && !BCMOLT_CFG_PROP_IS_SET(&cfg, nni_serdes, tx_main) && !BCMOLT_CFG_PROP_IS_SET(&cfg, nni_serdes, tx_post1) && !BCMOLT_CFG_PROP_IS_SET(&cfg, nni_serdes, tx_post2) && !BCMOLT_CFG_PROP_IS_SET(&cfg, nni_serdes, tx_post3) && !BCMOLT_CFG_PROP_IS_SET(&cfg, nni_serdes, tx_amp))
+    {
+        BCMOLT_CFG_PROP_GET(&cfg, nni_serdes, all_properties);
+        bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, nni_serdes, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_get(device_id, &cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_nni_serdes_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_nni_serdes_cfg cfg;          /**< declare main API struct */
+    bcmolt_nni_serdes_key key = { };    /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_nni_serdes_cfg cfg;\n");
+    bcmcli_log("bcmolt_nni_serdes_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_pon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_NNI_SERDES, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_NNI_SERDES_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "instance");
+    if (cli_parm != NULL)
+    {
+        key.instance = (bcmolt_serdes_instance) cli_parm->value.enum_val;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "instance is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.instance = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_NNI_SERDES, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_NNI_SERDES_KEY_ID_INSTANCE, &key.instance);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, nni_serdes, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, nni_serdes, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "rx_vga");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, rx_vga, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, rx_vga, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_NNI_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_NNI_SERDES_CFG_ID_RX_VGA, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_pf");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, rx_pf, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, rx_pf, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_NNI_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_NNI_SERDES_CFG_ID_RX_PF, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_lfpf");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, rx_lfpf, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, rx_lfpf, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_NNI_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_NNI_SERDES_CFG_ID_RX_LFPF, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_dfe1");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, rx_dfe1, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, rx_dfe1, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_NNI_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_NNI_SERDES_CFG_ID_RX_DFE1, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_dfe2");
+    if (cli_parm != NULL)
+    {
+        int8_t val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, rx_dfe2, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, rx_dfe2, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_NNI_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_NNI_SERDES_CFG_ID_RX_DFE2, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_dfe3");
+    if (cli_parm != NULL)
+    {
+        int8_t val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, rx_dfe3, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, rx_dfe3, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_NNI_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_NNI_SERDES_CFG_ID_RX_DFE3, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_dfe4");
+    if (cli_parm != NULL)
+    {
+        int8_t val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, rx_dfe4, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, rx_dfe4, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_NNI_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_NNI_SERDES_CFG_ID_RX_DFE4, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_dfe5");
+    if (cli_parm != NULL)
+    {
+        int8_t val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, rx_dfe5, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, rx_dfe5, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_NNI_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_NNI_SERDES_CFG_ID_RX_DFE5, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_pre");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, tx_pre, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, tx_pre, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_NNI_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_NNI_SERDES_CFG_ID_TX_PRE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_main");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, tx_main, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, tx_main, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_NNI_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_NNI_SERDES_CFG_ID_TX_MAIN, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_post1");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, tx_post1, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, tx_post1, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_NNI_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_NNI_SERDES_CFG_ID_TX_POST1, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_post2");
+    if (cli_parm != NULL)
+    {
+        int8_t val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, tx_post2, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, tx_post2, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_NNI_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_NNI_SERDES_CFG_ID_TX_POST2, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_post3");
+    if (cli_parm != NULL)
+    {
+        int8_t val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, tx_post3, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, tx_post3, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_NNI_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_NNI_SERDES_CFG_ID_TX_POST3, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_amp");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, tx_amp, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, tx_amp, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_NNI_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_NNI_SERDES_CFG_ID_TX_AMP, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_set(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_set(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_nni_serdes_cfg_clear(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_nni_serdes_cfg cfg;          /**< declare main API struct */
+    bcmolt_nni_serdes_key key = { };    /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_nni_serdes_cfg cfg;\n");
+    bcmcli_log("bcmolt_nni_serdes_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_clear");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_pon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_NNI_SERDES, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_NNI_SERDES_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "instance");
+    if (cli_parm != NULL)
+    {
+        key.instance = (bcmolt_serdes_instance) cli_parm->value.enum_val;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "instance is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.instance = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_NNI_SERDES, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_NNI_SERDES_KEY_ID_INSTANCE, &key.instance);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, nni_serdes, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, nni_serdes, key);\n");
+
+    /* call API */
+    err = bcmolt_cfg_clear(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_clear(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_nni_serdes_cfg_get_multi(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_nni_serdes_cfg cfg;          /**< declare main API struct */
+    bcmolt_nni_serdes_key key = { };    /**< declare key */
+    bcmolt_msg_set *msg_set = NULL;     /**< declare message set */
+    uint32_t max_msgs;                  /**< declare max number of msgs to get */
+    bcmos_bool invert_filter;           /**< declare filter invert flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_nni_serdes_cfg cfg;\n");
+    bcmcli_log("bcmolt_nni_serdes_key key = {  };\n");
+    bcmcli_log("bcmolt_msg_set* msg_set = NULL;\n");
+    bcmcli_log("uint32_t max_msgs;\n");
+    bcmcli_log("bcmos_bool invert_filter;\n");
+    apicli_print_start(session, "bcmolt_cfg_get_multi");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_pon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_NNI_SERDES, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_NNI_SERDES_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "instance");
+    if (cli_parm != NULL)
+    {
+        key.instance = (bcmolt_serdes_instance) cli_parm->value.enum_val;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "instance is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.instance = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_NNI_SERDES, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_NNI_SERDES_KEY_ID_INSTANCE, &key.instance);
+    bcmcli_log(";\n");
+
+    /* set max number of msgs from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "max_msgs");
+    if (cli_parm != NULL)
+    {
+        max_msgs = cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "max_msgs is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("max_msgs = %d;\n", max_msgs);
+
+    /* set filter invert flag from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "filter_invert");
+    if (cli_parm != NULL)
+    {
+        invert_filter = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "filter_invert is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("invert_filter = %s;\n", (invert_filter) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* allocate message set */
+    err = apicli_msg_set_alloc(byte_pool, BCMOLT_OBJ_ID_NNI_SERDES, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);
+    if (err != BCM_ERR_OK)
+    {
+        return err;
+    }
+
+    bcmcli_log("bcmolt_msg_set_alloc(BCMOLT_OBJ_ID_NNI_SERDES, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, nni_serdes, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, nni_serdes, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "filter.rx_vga");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, rx_vga, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, rx_vga, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_NNI_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_NNI_SERDES_CFG_ID_RX_VGA, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_vga");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, nni_serdes, rx_vga);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, nni_serdes, rx_vga);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.rx_pf");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, rx_pf, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, rx_pf, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_NNI_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_NNI_SERDES_CFG_ID_RX_PF, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_pf");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, nni_serdes, rx_pf);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, nni_serdes, rx_pf);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.rx_lfpf");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, rx_lfpf, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, rx_lfpf, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_NNI_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_NNI_SERDES_CFG_ID_RX_LFPF, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_lfpf");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, nni_serdes, rx_lfpf);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, nni_serdes, rx_lfpf);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.rx_dfe1");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, rx_dfe1, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, rx_dfe1, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_NNI_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_NNI_SERDES_CFG_ID_RX_DFE1, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_dfe1");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, nni_serdes, rx_dfe1);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, nni_serdes, rx_dfe1);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.rx_dfe2");
+    if (cli_parm != NULL)
+    {
+        int8_t val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, rx_dfe2, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, rx_dfe2, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_NNI_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_NNI_SERDES_CFG_ID_RX_DFE2, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_dfe2");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, nni_serdes, rx_dfe2);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, nni_serdes, rx_dfe2);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.rx_dfe3");
+    if (cli_parm != NULL)
+    {
+        int8_t val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, rx_dfe3, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, rx_dfe3, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_NNI_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_NNI_SERDES_CFG_ID_RX_DFE3, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_dfe3");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, nni_serdes, rx_dfe3);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, nni_serdes, rx_dfe3);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.rx_dfe4");
+    if (cli_parm != NULL)
+    {
+        int8_t val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, rx_dfe4, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, rx_dfe4, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_NNI_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_NNI_SERDES_CFG_ID_RX_DFE4, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_dfe4");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, nni_serdes, rx_dfe4);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, nni_serdes, rx_dfe4);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.rx_dfe5");
+    if (cli_parm != NULL)
+    {
+        int8_t val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, rx_dfe5, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, rx_dfe5, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_NNI_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_NNI_SERDES_CFG_ID_RX_DFE5, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_dfe5");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, nni_serdes, rx_dfe5);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, nni_serdes, rx_dfe5);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.tx_pre");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, tx_pre, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, tx_pre, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_NNI_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_NNI_SERDES_CFG_ID_TX_PRE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_pre");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, nni_serdes, tx_pre);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, nni_serdes, tx_pre);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.tx_main");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, tx_main, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, tx_main, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_NNI_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_NNI_SERDES_CFG_ID_TX_MAIN, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_main");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, nni_serdes, tx_main);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, nni_serdes, tx_main);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.tx_post1");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, tx_post1, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, tx_post1, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_NNI_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_NNI_SERDES_CFG_ID_TX_POST1, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_post1");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, nni_serdes, tx_post1);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, nni_serdes, tx_post1);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.tx_post2");
+    if (cli_parm != NULL)
+    {
+        int8_t val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, tx_post2, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, tx_post2, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_NNI_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_NNI_SERDES_CFG_ID_TX_POST2, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_post2");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, nni_serdes, tx_post2);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, nni_serdes, tx_post2);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.tx_post3");
+    if (cli_parm != NULL)
+    {
+        int8_t val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, tx_post3, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, tx_post3, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_NNI_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_NNI_SERDES_CFG_ID_TX_POST3, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_post3");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, nni_serdes, tx_post3);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, nni_serdes, tx_post3);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.tx_amp");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, tx_amp, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, nni_serdes, tx_amp, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_NNI_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_NNI_SERDES_CFG_ID_TX_AMP, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_amp");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, nni_serdes, tx_amp);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, nni_serdes, tx_amp);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, nni_serdes, rx_vga) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, nni_serdes, rx_pf) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, nni_serdes, rx_lfpf) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, nni_serdes, rx_dfe1) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, nni_serdes, rx_dfe2) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, nni_serdes, rx_dfe3) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, nni_serdes, rx_dfe4) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, nni_serdes, rx_dfe5) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, nni_serdes, tx_pre) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, nni_serdes, tx_main) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, nni_serdes, tx_post1) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, nni_serdes, tx_post2) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, nni_serdes, tx_post3) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, nni_serdes, tx_amp))
+    {
+        BCMOLT_MSGSET_CFG_PROP_GET(msg_set, nni_serdes, all_properties);
+        bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, nni_serdes, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);
+    bcmcli_log("bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_software_error_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_software_error_cfg cfg;          /**< declare main API struct */
+    bcmolt_software_error_key key = { };    /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_software_error_cfg cfg;\n");
+    bcmcli_log("bcmolt_software_error_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "idx");
+    if (cli_parm != NULL)
+    {
+        key.idx = cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "idx is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.idx = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_SOFTWARE_ERROR, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_SOFTWARE_ERROR_KEY_ID_IDX, &key.idx);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, software_error, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, software_error, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "entry");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, software_error, entry);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, software_error, entry);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_CFG_PROP_IS_SET(&cfg, software_error, entry))
+    {
+        BCMOLT_CFG_PROP_GET(&cfg, software_error, all_properties);
+        bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, software_error, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_get(device_id, &cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_software_error_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_software_error_cfg cfg;          /**< declare main API struct */
+    bcmolt_software_error_key key = { };    /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_software_error_cfg cfg;\n");
+    bcmcli_log("bcmolt_software_error_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "idx");
+    if (cli_parm != NULL)
+    {
+        key.idx = cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "idx is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.idx = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_SOFTWARE_ERROR, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_SOFTWARE_ERROR_KEY_ID_IDX, &key.idx);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, software_error, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, software_error, key);\n");
+
+    /* decode API parameters from CLI */
+
+    /* call API */
+    err = bcmolt_cfg_set(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_set(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_software_error_cfg_clear(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_software_error_cfg cfg;          /**< declare main API struct */
+    bcmolt_software_error_key key = { };    /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_software_error_cfg cfg;\n");
+    bcmcli_log("bcmolt_software_error_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_clear");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "idx");
+    if (cli_parm != NULL)
+    {
+        key.idx = cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "idx is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.idx = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_SOFTWARE_ERROR, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_SOFTWARE_ERROR_KEY_ID_IDX, &key.idx);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, software_error, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, software_error, key);\n");
+
+    /* call API */
+    err = bcmolt_cfg_clear(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_clear(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_software_error_cfg_get_multi(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_software_error_cfg cfg;          /**< declare main API struct */
+    bcmolt_software_error_key key = { };    /**< declare key */
+    bcmolt_msg_set *msg_set = NULL;         /**< declare message set */
+    uint32_t max_msgs;                      /**< declare max number of msgs to get */
+    bcmos_bool invert_filter;               /**< declare filter invert flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_software_error_cfg cfg;\n");
+    bcmcli_log("bcmolt_software_error_key key = {  };\n");
+    bcmcli_log("bcmolt_msg_set* msg_set = NULL;\n");
+    bcmcli_log("uint32_t max_msgs;\n");
+    bcmcli_log("bcmos_bool invert_filter;\n");
+    apicli_print_start(session, "bcmolt_cfg_get_multi");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "idx");
+    if (cli_parm != NULL)
+    {
+        key.idx = cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "idx is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.idx = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_SOFTWARE_ERROR, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_SOFTWARE_ERROR_KEY_ID_IDX, &key.idx);
+    bcmcli_log(";\n");
+
+    /* set max number of msgs from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "max_msgs");
+    if (cli_parm != NULL)
+    {
+        max_msgs = cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "max_msgs is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("max_msgs = %d;\n", max_msgs);
+
+    /* set filter invert flag from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "filter_invert");
+    if (cli_parm != NULL)
+    {
+        invert_filter = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "filter_invert is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("invert_filter = %s;\n", (invert_filter) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* allocate message set */
+    err = apicli_msg_set_alloc(byte_pool, BCMOLT_OBJ_ID_SOFTWARE_ERROR, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);
+    if (err != BCM_ERR_OK)
+    {
+        return err;
+    }
+
+    bcmcli_log("bcmolt_msg_set_alloc(BCMOLT_OBJ_ID_SOFTWARE_ERROR, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, software_error, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, software_error, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.entry.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_sw_error val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.entry.first_error_time_us");
+        if (cli_parm != NULL)
+        {
+            val.first_error_time_us = cli_parm->value.unumber64;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.entry.first_error_time_us is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.entry.last_error_time_us");
+        if (cli_parm != NULL)
+        {
+            val.last_error_time_us = cli_parm->value.unumber64;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.entry.last_error_time_us is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.entry.line_number");
+        if (cli_parm != NULL)
+        {
+            val.line_number = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.entry.line_number is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.entry.error_counter");
+        if (cli_parm != NULL)
+        {
+            val.error_counter = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.entry.error_counter is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.entry.instance");
+        if (cli_parm != NULL)
+        {
+            val.instance = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.entry.instance is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.entry.filename");
+        if (cli_parm != NULL)
+        {
+            snprintf(val.filename, 64, "%s", cli_parm->value.string);
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.entry.filename is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.entry.task_name");
+        if (cli_parm != NULL)
+        {
+            snprintf(val.task_name, 64, "%s", cli_parm->value.string);
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.entry.task_name is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, software_error, entry, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_sw_error val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_SOFTWARE_ERROR, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_SOFTWARE_ERROR_CFG_ID_ENTRY, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, software_error, entry, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "entry");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, software_error, entry);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, software_error, entry);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, software_error, entry))
+    {
+        BCMOLT_MSGSET_CFG_PROP_GET(msg_set, software_error, all_properties);
+        bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, software_error, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);
+    bcmcli_log("bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_trx_calibration_oper_start_capture_window_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_trx_calibration_start_capture_window oper;   /**< declare main API struct */
+    bcmolt_trx_calibration_key key = { };               /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_trx_calibration_start_capture_window oper;\n");
+    bcmcli_log("bcmolt_trx_calibration_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, trx_calibration, start_capture_window, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, trx_calibration, start_capture_window, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_OPER_PROP_SET(&oper, trx_calibration, start_capture_window, pon_ni, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, trx_calibration, start_capture_window, pon_ni, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_TRX_CALIBRATION, BCMOLT_MGT_GROUP_OPER, BCMOLT_TRX_CALIBRATION_OPER_ID_START_CAPTURE_WINDOW, BCMOLT_TRX_CALIBRATION_START_CAPTURE_WINDOW_ID_PON_NI, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "trigger");
+    if (cli_parm != NULL)
+    {
+        bcmolt_trx_calibration_trigger val;
+        val = (bcmolt_trx_calibration_trigger) cli_parm->value.enum_val;
+        BCMOLT_OPER_PROP_SET(&oper, trx_calibration, start_capture_window, trigger, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, trx_calibration, start_capture_window, trigger, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_TRX_CALIBRATION, BCMOLT_MGT_GROUP_OPER, BCMOLT_TRX_CALIBRATION_OPER_ID_START_CAPTURE_WINDOW, BCMOLT_TRX_CALIBRATION_START_CAPTURE_WINDOW_ID_TRIGGER, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "strobe");
+    if (cli_parm != NULL)
+    {
+        bcmolt_capture_strobe_signal val;
+        val = (bcmolt_capture_strobe_signal) cli_parm->value.enum_val;
+        BCMOLT_OPER_PROP_SET(&oper, trx_calibration, start_capture_window, strobe, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, trx_calibration, start_capture_window, strobe, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_TRX_CALIBRATION, BCMOLT_MGT_GROUP_OPER, BCMOLT_TRX_CALIBRATION_OPER_ID_START_CAPTURE_WINDOW, BCMOLT_TRX_CALIBRATION_START_CAPTURE_WINDOW_ID_STROBE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "window_mode");
+    if (cli_parm != NULL)
+    {
+        bcmolt_trx_calibration_window_mode val;
+        val = (bcmolt_trx_calibration_window_mode) cli_parm->value.enum_val;
+        BCMOLT_OPER_PROP_SET(&oper, trx_calibration, start_capture_window, window_mode, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, trx_calibration, start_capture_window, window_mode, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_TRX_CALIBRATION, BCMOLT_MGT_GROUP_OPER, BCMOLT_TRX_CALIBRATION_OPER_ID_START_CAPTURE_WINDOW, BCMOLT_TRX_CALIBRATION_START_CAPTURE_WINDOW_ID_WINDOW_MODE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        uint16_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_OPER_PROP_SET(&oper, trx_calibration, start_capture_window, onu_id, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, trx_calibration, start_capture_window, onu_id, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_TRX_CALIBRATION, BCMOLT_MGT_GROUP_OPER, BCMOLT_TRX_CALIBRATION_OPER_ID_START_CAPTURE_WINDOW, BCMOLT_TRX_CALIBRATION_START_CAPTURE_WINDOW_ID_ONU_ID, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "trigger_position");
+    if (cli_parm != NULL)
+    {
+        bcmolt_trx_calibration_trigger_position val;
+        val = (bcmolt_trx_calibration_trigger_position) cli_parm->value.enum_val;
+        BCMOLT_OPER_PROP_SET(&oper, trx_calibration, start_capture_window, trigger_position, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, trx_calibration, start_capture_window, trigger_position, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_TRX_CALIBRATION, BCMOLT_MGT_GROUP_OPER, BCMOLT_TRX_CALIBRATION_OPER_ID_START_CAPTURE_WINDOW, BCMOLT_TRX_CALIBRATION_START_CAPTURE_WINDOW_ID_TRIGGER_POSITION, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stop_due_to_corrupt_strobe");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_OPER_PROP_SET(&oper, trx_calibration, start_capture_window, stop_due_to_corrupt_strobe, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, trx_calibration, start_capture_window, stop_due_to_corrupt_strobe, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_TRX_CALIBRATION, BCMOLT_MGT_GROUP_OPER, BCMOLT_TRX_CALIBRATION_OPER_ID_START_CAPTURE_WINDOW, BCMOLT_TRX_CALIBRATION_START_CAPTURE_WINDOW_ID_STOP_DUE_TO_CORRUPT_STROBE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "start_offset");
+    if (cli_parm != NULL)
+    {
+        uint16_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_OPER_PROP_SET(&oper, trx_calibration, start_capture_window, start_offset, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, trx_calibration, start_capture_window, start_offset, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_TRX_CALIBRATION, BCMOLT_MGT_GROUP_OPER, BCMOLT_TRX_CALIBRATION_OPER_ID_START_CAPTURE_WINDOW, BCMOLT_TRX_CALIBRATION_START_CAPTURE_WINDOW_ID_START_OFFSET, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "end_offset");
+    if (cli_parm != NULL)
+    {
+        uint16_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_OPER_PROP_SET(&oper, trx_calibration, start_capture_window, end_offset, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, trx_calibration, start_capture_window, end_offset, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_TRX_CALIBRATION, BCMOLT_MGT_GROUP_OPER, BCMOLT_TRX_CALIBRATION_OPER_ID_START_CAPTURE_WINDOW, BCMOLT_TRX_CALIBRATION_START_CAPTURE_WINDOW_ID_END_OFFSET, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "number_of_cycles");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_OPER_PROP_SET(&oper, trx_calibration, start_capture_window, number_of_cycles, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, trx_calibration, start_capture_window, number_of_cycles, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_TRX_CALIBRATION, BCMOLT_MGT_GROUP_OPER, BCMOLT_TRX_CALIBRATION_OPER_ID_START_CAPTURE_WINDOW, BCMOLT_TRX_CALIBRATION_START_CAPTURE_WINDOW_ID_NUMBER_OF_CYCLES, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_trx_calibration_oper_stop_capture_window_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_trx_calibration_stop_capture_window oper;    /**< declare main API struct */
+    bcmolt_trx_calibration_key key = { };               /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_trx_calibration_stop_capture_window oper;\n");
+    bcmcli_log("bcmolt_trx_calibration_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, trx_calibration, stop_capture_window, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, trx_calibration, stop_capture_window, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_OPER_PROP_SET(&oper, trx_calibration, stop_capture_window, pon_ni, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, trx_calibration, stop_capture_window, pon_ni, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_TRX_CALIBRATION, BCMOLT_MGT_GROUP_OPER, BCMOLT_TRX_CALIBRATION_OPER_ID_STOP_CAPTURE_WINDOW, BCMOLT_TRX_CALIBRATION_STOP_CAPTURE_WINDOW_ID_PON_NI, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_trx_calibration_auto_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_trx_calibration_auto_cfg auto_cfg;   /**< declare main API struct */
+    bcmolt_trx_calibration_key key = { };       /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_trx_calibration_auto_cfg auto_cfg;\n");
+    bcmcli_log("bcmolt_trx_calibration_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_auto_cfg_get");
+
+    /* init the API struct */
+    BCMOLT_AUTO_CFG_INIT(&auto_cfg, trx_calibration, key);
+    bcmcli_log("BCMOLT_AUTO_CFG_INIT(&auto_cfg, trx_calibration, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "capture_window_and_statistic_completed");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, trx_calibration, capture_window_and_statistic_completed);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, trx_calibration, capture_window_and_statistic_completed);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, trx_calibration, capture_window_and_statistic_completed))
+    {
+        BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, trx_calibration, all_properties);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, trx_calibration, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_auto_cfg_get(device_id, &auto_cfg.hdr);
+    bcmcli_log("bcmolt_auto_cfg_get(device_id, &auto_cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &auto_cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, auto_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_trx_calibration_auto_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_trx_calibration_auto_cfg auto_cfg;   /**< declare main API struct */
+    bcmolt_trx_calibration_key key = { };       /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_trx_calibration_auto_cfg auto_cfg;\n");
+    bcmcli_log("bcmolt_trx_calibration_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_auto_cfg_set");
+
+    /* init the API struct */
+    BCMOLT_AUTO_CFG_INIT(&auto_cfg, trx_calibration, key);
+    bcmcli_log("BCMOLT_AUTO_CFG_INIT(&auto_cfg, trx_calibration, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "capture_window_and_statistic_completed");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, trx_calibration, capture_window_and_statistic_completed, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, trx_calibration, capture_window_and_statistic_completed, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_TRX_CALIBRATION, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_TRX_CALIBRATION_AUTO_CFG_ID_CAPTURE_WINDOW_AND_STATISTIC_COMPLETED, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_auto_cfg_set(device_id, &auto_cfg.hdr);
+    bcmcli_log("bcmolt_auto_cfg_set(device_id, &auto_cfg.hdr);\n");
+    apicli_print_complete(session, err, auto_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_alloc_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_alloc_cfg cfg;         /**< declare main API struct */
+    bcmolt_xgpon_alloc_key key = { };   /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_alloc_cfg cfg;\n");
+    bcmcli_log("bcmolt_xgpon_alloc_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ALLOC, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ALLOC_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "alloc_id");
+    if (cli_parm != NULL)
+    {
+        key.alloc_id = (bcmolt_xgpon_alloc_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "alloc_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.alloc_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ALLOC, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ALLOC_KEY_ID_ALLOC_ID, &key.alloc_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, xgpon_alloc, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, xgpon_alloc, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "state");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_alloc, state);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_alloc, state);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "sla");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_alloc, sla);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_alloc, sla);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_alloc, onu_id);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_alloc, onu_id);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "collect_stats");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_alloc, collect_stats);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_alloc, collect_stats);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_alloc, state) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_alloc, sla) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_alloc, onu_id) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_alloc, collect_stats))
+    {
+        BCMOLT_CFG_PROP_GET(&cfg, xgpon_alloc, all_properties);
+        bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_alloc, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_get(device_id, &cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_alloc_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_alloc_cfg cfg;         /**< declare main API struct */
+    bcmolt_xgpon_alloc_key key = { };   /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_alloc_cfg cfg;\n");
+    bcmcli_log("bcmolt_xgpon_alloc_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ALLOC, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ALLOC_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "alloc_id");
+    if (cli_parm != NULL)
+    {
+        key.alloc_id = (bcmolt_xgpon_alloc_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "alloc_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.alloc_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ALLOC, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ALLOC_KEY_ID_ALLOC_ID, &key.alloc_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, xgpon_alloc, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, xgpon_alloc, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_parm_by_prefix(session, "sla.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_pon_alloc_sla val = { };
+        cli_parm = bcmcli_find_named_parm(session, "sla.cbr_rt_bw");
+        if (cli_parm != NULL)
+        {
+            val.cbr_rt_bw = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "sla.cbr_rt_bw is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "sla.cbr_nrt_bw");
+        if (cli_parm != NULL)
+        {
+            val.cbr_nrt_bw = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "sla.cbr_nrt_bw is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "sla.guaranteed_bw");
+        if (cli_parm != NULL)
+        {
+            val.guaranteed_bw = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "sla.guaranteed_bw is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "sla.maximum_bw");
+        if (cli_parm != NULL)
+        {
+            val.maximum_bw = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "sla.maximum_bw is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "sla.additional_bw_eligibility");
+        if (cli_parm != NULL)
+        {
+            val.additional_bw_eligibility = (bcmolt_additional_bw_eligibility) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "sla.additional_bw_eligibility is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "sla.cbr_rt_compensation");
+        if (cli_parm != NULL)
+        {
+            val.cbr_rt_compensation = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "sla.cbr_rt_compensation is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "sla.cbr_rt_ap_index");
+        if (cli_parm != NULL)
+        {
+            val.cbr_rt_ap_index = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "sla.cbr_rt_ap_index is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "sla.cbr_nrt_ap_index");
+        if (cli_parm != NULL)
+        {
+            val.cbr_nrt_ap_index = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "sla.cbr_nrt_ap_index is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "sla.alloc_type");
+        if (cli_parm != NULL)
+        {
+            val.alloc_type = (bcmolt_alloc_type) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "sla.alloc_type is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "sla.weight");
+        if (cli_parm != NULL)
+        {
+            val.weight = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "sla.weight is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "sla.priority");
+        if (cli_parm != NULL)
+        {
+            val.priority = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "sla.priority is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_alloc, sla, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_pon_alloc_sla val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ALLOC, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_ALLOC_CFG_ID_SLA, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_alloc, sla, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_onu_id val;
+        val = (bcmolt_xgpon_onu_id) cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_alloc, onu_id, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_alloc, onu_id, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ALLOC, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_ALLOC_CFG_ID_ONU_ID, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "collect_stats");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_alloc, collect_stats, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_alloc, collect_stats, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ALLOC, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_ALLOC_CFG_ID_COLLECT_STATS, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_set(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_set(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_alloc_cfg_clear(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_alloc_cfg cfg;         /**< declare main API struct */
+    bcmolt_xgpon_alloc_key key = { };   /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_alloc_cfg cfg;\n");
+    bcmcli_log("bcmolt_xgpon_alloc_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_clear");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ALLOC, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ALLOC_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "alloc_id");
+    if (cli_parm != NULL)
+    {
+        key.alloc_id = (bcmolt_xgpon_alloc_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "alloc_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.alloc_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ALLOC, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ALLOC_KEY_ID_ALLOC_ID, &key.alloc_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, xgpon_alloc, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, xgpon_alloc, key);\n");
+
+    /* call API */
+    err = bcmolt_cfg_clear(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_clear(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_alloc_cfg_get_multi(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_alloc_cfg cfg;         /**< declare main API struct */
+    bcmolt_xgpon_alloc_key key = { };   /**< declare key */
+    bcmolt_msg_set *msg_set = NULL;     /**< declare message set */
+    uint32_t max_msgs;                  /**< declare max number of msgs to get */
+    bcmos_bool invert_filter;           /**< declare filter invert flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_alloc_cfg cfg;\n");
+    bcmcli_log("bcmolt_xgpon_alloc_key key = {  };\n");
+    bcmcli_log("bcmolt_msg_set* msg_set = NULL;\n");
+    bcmcli_log("uint32_t max_msgs;\n");
+    bcmcli_log("bcmos_bool invert_filter;\n");
+    apicli_print_start(session, "bcmolt_cfg_get_multi");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ALLOC, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ALLOC_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "alloc_id");
+    if (cli_parm != NULL)
+    {
+        key.alloc_id = (bcmolt_xgpon_alloc_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "alloc_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.alloc_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ALLOC, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ALLOC_KEY_ID_ALLOC_ID, &key.alloc_id);
+    bcmcli_log(";\n");
+
+    /* set max number of msgs from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "max_msgs");
+    if (cli_parm != NULL)
+    {
+        max_msgs = cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "max_msgs is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("max_msgs = %d;\n", max_msgs);
+
+    /* set filter invert flag from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "filter_invert");
+    if (cli_parm != NULL)
+    {
+        invert_filter = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "filter_invert is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("invert_filter = %s;\n", (invert_filter) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* allocate message set */
+    err = apicli_msg_set_alloc(byte_pool, BCMOLT_OBJ_ID_XGPON_ALLOC, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);
+    if (err != BCM_ERR_OK)
+    {
+        return err;
+    }
+
+    bcmcli_log("bcmolt_msg_set_alloc(BCMOLT_OBJ_ID_XGPON_ALLOC, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, xgpon_alloc, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, xgpon_alloc, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "filter.state");
+    if (cli_parm != NULL)
+    {
+        bcmolt_alloc_state val;
+        val = (bcmolt_alloc_state) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_alloc, state, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_alloc, state, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ALLOC, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_ALLOC_CFG_ID_STATE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "state");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_alloc, state);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_alloc, state);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.sla.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_pon_alloc_sla val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.sla.cbr_rt_bw");
+        if (cli_parm != NULL)
+        {
+            val.cbr_rt_bw = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.sla.cbr_rt_bw is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.sla.cbr_nrt_bw");
+        if (cli_parm != NULL)
+        {
+            val.cbr_nrt_bw = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.sla.cbr_nrt_bw is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.sla.guaranteed_bw");
+        if (cli_parm != NULL)
+        {
+            val.guaranteed_bw = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.sla.guaranteed_bw is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.sla.maximum_bw");
+        if (cli_parm != NULL)
+        {
+            val.maximum_bw = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.sla.maximum_bw is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.sla.additional_bw_eligibility");
+        if (cli_parm != NULL)
+        {
+            val.additional_bw_eligibility = (bcmolt_additional_bw_eligibility) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.sla.additional_bw_eligibility is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.sla.cbr_rt_compensation");
+        if (cli_parm != NULL)
+        {
+            val.cbr_rt_compensation = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.sla.cbr_rt_compensation is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.sla.cbr_rt_ap_index");
+        if (cli_parm != NULL)
+        {
+            val.cbr_rt_ap_index = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.sla.cbr_rt_ap_index is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.sla.cbr_nrt_ap_index");
+        if (cli_parm != NULL)
+        {
+            val.cbr_nrt_ap_index = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.sla.cbr_nrt_ap_index is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.sla.alloc_type");
+        if (cli_parm != NULL)
+        {
+            val.alloc_type = (bcmolt_alloc_type) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.sla.alloc_type is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.sla.weight");
+        if (cli_parm != NULL)
+        {
+            val.weight = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.sla.weight is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.sla.priority");
+        if (cli_parm != NULL)
+        {
+            val.priority = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.sla.priority is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_alloc, sla, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_pon_alloc_sla val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ALLOC, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_ALLOC_CFG_ID_SLA, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_alloc, sla, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "sla");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_alloc, sla);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_alloc, sla);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.onu_id");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_onu_id val;
+        val = (bcmolt_xgpon_onu_id) cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_alloc, onu_id, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_alloc, onu_id, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ALLOC, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_ALLOC_CFG_ID_ONU_ID, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_alloc, onu_id);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_alloc, onu_id);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.collect_stats");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_alloc, collect_stats, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_alloc, collect_stats, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ALLOC, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_ALLOC_CFG_ID_COLLECT_STATS, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "collect_stats");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_alloc, collect_stats);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_alloc, collect_stats);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_alloc, state) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_alloc, sla) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_alloc, onu_id) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_alloc, collect_stats))
+    {
+        BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_alloc, all_properties);
+        bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_alloc, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);
+    bcmcli_log("bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_alloc_oper_get_stats_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_alloc_get_stats oper;  /**< declare main API struct */
+    bcmolt_xgpon_alloc_key key = { };   /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_alloc_get_stats oper;\n");
+    bcmcli_log("bcmolt_xgpon_alloc_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ALLOC, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ALLOC_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "alloc_id");
+    if (cli_parm != NULL)
+    {
+        key.alloc_id = (bcmolt_xgpon_alloc_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "alloc_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.alloc_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ALLOC, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ALLOC_KEY_ID_ALLOC_ID, &key.alloc_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, xgpon_alloc, get_stats, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, xgpon_alloc, get_stats, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "num_of_cycles");
+    if (cli_parm != NULL)
+    {
+        uint32_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_OPER_PROP_SET(&oper, xgpon_alloc, get_stats, num_of_cycles, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, xgpon_alloc, get_stats, num_of_cycles, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ALLOC, BCMOLT_MGT_GROUP_OPER, BCMOLT_XGPON_ALLOC_OPER_ID_GET_STATS, BCMOLT_XGPON_ALLOC_GET_STATS_ID_NUM_OF_CYCLES, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_alloc_oper_set_state_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_alloc_set_state oper;  /**< declare main API struct */
+    bcmolt_xgpon_alloc_key key = { };   /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_alloc_set_state oper;\n");
+    bcmcli_log("bcmolt_xgpon_alloc_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ALLOC, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ALLOC_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "alloc_id");
+    if (cli_parm != NULL)
+    {
+        key.alloc_id = (bcmolt_xgpon_alloc_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "alloc_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.alloc_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ALLOC, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ALLOC_KEY_ID_ALLOC_ID, &key.alloc_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, xgpon_alloc, set_state, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, xgpon_alloc, set_state, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "state");
+    if (cli_parm != NULL)
+    {
+        bcmolt_alloc_operation val;
+        val = (bcmolt_alloc_operation) cli_parm->value.enum_val;
+        BCMOLT_OPER_PROP_SET(&oper, xgpon_alloc, set_state, state, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, xgpon_alloc, set_state, state, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ALLOC, BCMOLT_MGT_GROUP_OPER, BCMOLT_XGPON_ALLOC_OPER_ID_SET_STATE, BCMOLT_XGPON_ALLOC_SET_STATE_ID_STATE, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_alloc_stat_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_alloc_stat stat;       /**< declare main API struct */
+    bcmolt_xgpon_alloc_key key = { };   /**< declare key */
+    bcmos_bool clear_on_read;           /**< declare 'clear on read' flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_alloc_stat stat;\n");
+    bcmcli_log("bcmolt_xgpon_alloc_key key = {  };\n");
+    bcmcli_log("bcmos_bool clear_on_read;\n");
+    apicli_print_start(session, "bcmolt_stat_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ALLOC, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ALLOC_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "alloc_id");
+    if (cli_parm != NULL)
+    {
+        key.alloc_id = (bcmolt_xgpon_alloc_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "alloc_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.alloc_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ALLOC, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ALLOC_KEY_ID_ALLOC_ID, &key.alloc_id);
+    bcmcli_log(";\n");
+
+    /* set stat flags from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "clear");
+    if (cli_parm != NULL)
+    {
+        clear_on_read = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "clear is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("clear_on_read = %s;\n", (clear_on_read) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* init the API struct */
+    BCMOLT_STAT_INIT(&stat, xgpon_alloc, key);
+    bcmcli_log("BCMOLT_STAT_INIT(&stat, xgpon_alloc, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "rx_bytes");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_alloc, rx_bytes);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_alloc, rx_bytes);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_alloc, rx_bytes))
+    {
+        BCMOLT_STAT_PROP_GET(&stat, xgpon_alloc, all_properties);
+        bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_alloc, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_stat_get(device_id, &stat.hdr, clear_on_read);
+    bcmcli_log("bcmolt_stat_get(device_id, &stat.hdr, clear_on_read);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &stat.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, stat.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_alloc_stat_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_alloc_stat_cfg stat_cfg;   /**< declare main API struct */
+    bcmolt_xgpon_alloc_key key = { };       /**< declare key */
+    bcmolt_xgpon_alloc_stat_id stat_id;     /**< declare stat ID */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_alloc_stat_cfg stat_cfg;\n");
+    bcmcli_log("bcmolt_xgpon_alloc_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_stat_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ALLOC, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ALLOC_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "alloc_id");
+    if (cli_parm != NULL)
+    {
+        key.alloc_id = (bcmolt_xgpon_alloc_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "alloc_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.alloc_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ALLOC, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ALLOC_KEY_ID_ALLOC_ID, &key.alloc_id);
+    bcmcli_log(";\n");
+
+    /* set stat ID from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "sub");
+    if (cli_parm != NULL)
+    {
+        stat_id = (bcmolt_xgpon_alloc_stat_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    /* init the API struct */
+    switch (stat_id)
+    {
+        case BCMOLT_XGPON_ALLOC_STAT_ID_RX_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_alloc, rx_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_alloc, rx_bytes, key);\n");
+            break;
+        default:
+            apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+            return BCM_ERR_RANGE;
+    }
+
+    /* call API */
+    err = bcmolt_stat_cfg_get(device_id, &stat_cfg.hdr);
+    bcmcli_log("bcmolt_stat_cfg_get(device_id, &stat_cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &stat_cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, stat_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_alloc_stat_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_alloc_stat_cfg stat_cfg;   /**< declare main API struct */
+    bcmolt_xgpon_alloc_key key = { };       /**< declare key */
+    bcmolt_xgpon_alloc_stat_id stat_id;     /**< declare stat ID */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_alloc_stat_cfg stat_cfg;\n");
+    bcmcli_log("bcmolt_xgpon_alloc_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_stat_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ALLOC, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ALLOC_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "alloc_id");
+    if (cli_parm != NULL)
+    {
+        key.alloc_id = (bcmolt_xgpon_alloc_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "alloc_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.alloc_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ALLOC, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ALLOC_KEY_ID_ALLOC_ID, &key.alloc_id);
+    bcmcli_log(";\n");
+
+    /* set stat ID from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "sub");
+    if (cli_parm != NULL)
+    {
+        stat_id = (bcmolt_xgpon_alloc_stat_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    /* init the API struct */
+    switch (stat_id)
+    {
+        case BCMOLT_XGPON_ALLOC_STAT_ID_RX_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_alloc, rx_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_alloc, rx_bytes, key);\n");
+            break;
+        default:
+            apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+            return BCM_ERR_RANGE;
+    }
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_stat_alarm_config val = { };
+        cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.trigger.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.type");
+            if (cli_parm != NULL)
+            {
+                val.trigger.type = (bcmolt_stat_condition_type) cli_parm->value.enum_val;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.type is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            switch (val.trigger.type)
+            {
+                case BCMOLT_STAT_CONDITION_TYPE_RATE_THRESHOLD:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.rising");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_threshold.rising = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.rising is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.falling");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_threshold.falling = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.falling is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_RATE_RANGE:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.upper");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_range.upper = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.upper is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.lower");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_range.lower = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.lower is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_VALUE_THRESHOLD:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.limit");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.value_threshold.limit = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.limit is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_NONE:
+                    break;
+                default:
+                    apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+                    return BCM_ERR_RANGE;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.soak.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "cfg.soak.active_soak_time");
+            if (cli_parm != NULL)
+            {
+                val.soak.active_soak_time = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak.active_soak_time is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "cfg.soak.clear_soak_time");
+            if (cli_parm != NULL)
+            {
+                val.soak.clear_soak_time = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak.clear_soak_time is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_STAT_CFG_PROP_SET(&stat_cfg, xgpon_alloc, cfg, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_stat_alarm_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ALLOC, BCMOLT_MGT_GROUP_STAT_CFG, 0, BCMOLT_XGPON_ALLOC_STAT_CFG_ID_CFG, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_STAT_CFG_PROP_SET(&stat_cfg, xgpon_alloc, cfg, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    /* call API */
+    err = bcmolt_stat_cfg_set(device_id, &stat_cfg.hdr);
+    bcmcli_log("bcmolt_stat_cfg_set(device_id, &stat_cfg.hdr);\n");
+    apicli_print_complete(session, err, stat_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_alloc_auto_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_alloc_auto_cfg auto_cfg;   /**< declare main API struct */
+    bcmolt_xgpon_alloc_key key = { };       /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_alloc_auto_cfg auto_cfg;\n");
+    bcmcli_log("bcmolt_xgpon_alloc_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_auto_cfg_get");
+
+    /* init the API struct */
+    BCMOLT_AUTO_CFG_INIT(&auto_cfg, xgpon_alloc, key);
+    bcmcli_log("BCMOLT_AUTO_CFG_INIT(&auto_cfg, xgpon_alloc, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "configuration_completed");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_alloc, configuration_completed);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_alloc, configuration_completed);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "get_alloc_stats_completed");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_alloc, get_alloc_stats_completed);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_alloc, get_alloc_stats_completed);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_cleared");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_alloc, stat_alarm_cleared);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_alloc, stat_alarm_cleared);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_raised");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_alloc, stat_alarm_raised);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_alloc, stat_alarm_raised);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_alloc, configuration_completed) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_alloc, get_alloc_stats_completed) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_alloc, stat_alarm_cleared) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_alloc, stat_alarm_raised))
+    {
+        BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_alloc, all_properties);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_alloc, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_auto_cfg_get(device_id, &auto_cfg.hdr);
+    bcmcli_log("bcmolt_auto_cfg_get(device_id, &auto_cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &auto_cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, auto_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_alloc_auto_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_alloc_auto_cfg auto_cfg;   /**< declare main API struct */
+    bcmolt_xgpon_alloc_key key = { };       /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_alloc_auto_cfg auto_cfg;\n");
+    bcmcli_log("bcmolt_xgpon_alloc_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_auto_cfg_set");
+
+    /* init the API struct */
+    BCMOLT_AUTO_CFG_INIT(&auto_cfg, xgpon_alloc, key);
+    bcmcli_log("BCMOLT_AUTO_CFG_INIT(&auto_cfg, xgpon_alloc, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "configuration_completed");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_alloc, configuration_completed, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_alloc, configuration_completed, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ALLOC, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_ALLOC_AUTO_CFG_ID_CONFIGURATION_COMPLETED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "get_alloc_stats_completed");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_alloc, get_alloc_stats_completed, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_alloc, get_alloc_stats_completed, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ALLOC, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_ALLOC_AUTO_CFG_ID_GET_ALLOC_STATS_COMPLETED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_cleared");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_alloc, stat_alarm_cleared, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_alloc, stat_alarm_cleared, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ALLOC, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_ALLOC_AUTO_CFG_ID_STAT_ALARM_CLEARED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_raised");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_alloc, stat_alarm_raised, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_alloc, stat_alarm_raised, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ALLOC, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_ALLOC_AUTO_CFG_ID_STAT_ALARM_RAISED, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_auto_cfg_set(device_id, &auto_cfg.hdr);
+    bcmcli_log("bcmolt_auto_cfg_set(device_id, &auto_cfg.hdr);\n");
+    apicli_print_complete(session, err, auto_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_gem_port_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_gem_port_cfg cfg;          /**< declare main API struct */
+    bcmolt_xgpon_gem_port_key key = { };    /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_gem_port_cfg cfg;\n");
+    bcmcli_log("bcmolt_xgpon_gem_port_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_GEM_PORT, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_GEM_PORT_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "gem_port_id");
+    if (cli_parm != NULL)
+    {
+        key.gem_port_id = (bcmolt_xgpon_gem_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "gem_port_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.gem_port_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_GEM_PORT, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_GEM_PORT_KEY_ID_GEM_PORT_ID, &key.gem_port_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, xgpon_gem_port, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, xgpon_gem_port, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "configuration");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_gem_port, configuration);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_gem_port, configuration);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_gem_port, onu_id);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_gem_port, onu_id);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "gem_port_state");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_gem_port, gem_port_state);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_gem_port, gem_port_state);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "encryption_mode");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_gem_port, encryption_mode);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_gem_port, encryption_mode);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "upstream_destination_queue");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_gem_port, upstream_destination_queue);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_gem_port, upstream_destination_queue);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "control");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_gem_port, control);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_gem_port, control);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_gem_port, configuration) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_gem_port, onu_id) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_gem_port, gem_port_state) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_gem_port, encryption_mode) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_gem_port, upstream_destination_queue) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_gem_port, control))
+    {
+        BCMOLT_CFG_PROP_GET(&cfg, xgpon_gem_port, all_properties);
+        bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_gem_port, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_get(device_id, &cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_gem_port_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_gem_port_cfg cfg;          /**< declare main API struct */
+    bcmolt_xgpon_gem_port_key key = { };    /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_gem_port_cfg cfg;\n");
+    bcmcli_log("bcmolt_xgpon_gem_port_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_GEM_PORT, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_GEM_PORT_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "gem_port_id");
+    if (cli_parm != NULL)
+    {
+        key.gem_port_id = (bcmolt_xgpon_gem_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "gem_port_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.gem_port_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_GEM_PORT, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_GEM_PORT_KEY_ID_GEM_PORT_ID, &key.gem_port_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, xgpon_gem_port, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, xgpon_gem_port, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_parm_by_prefix(session, "configuration.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_gem_port_configuration val = { };
+        cli_parm = bcmcli_find_named_parm(session, "configuration.direction");
+        if (cli_parm != NULL)
+        {
+            val.direction = (bcmolt_gem_port_direction) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "configuration.direction is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "configuration.type");
+        if (cli_parm != NULL)
+        {
+            val.type = (bcmolt_gem_port_type) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "configuration.type is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_gem_port, configuration, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_gem_port_configuration val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_GEM_PORT, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_GEM_PORT_CFG_ID_CONFIGURATION, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_gem_port, configuration, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_onu_id val;
+        val = (bcmolt_xgpon_onu_id) cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_gem_port, onu_id, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_gem_port, onu_id, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_GEM_PORT, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_GEM_PORT_CFG_ID_ONU_ID, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "encryption_mode");
+    if (cli_parm != NULL)
+    {
+        bcmolt_control_state val;
+        val = (bcmolt_control_state) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_gem_port, encryption_mode, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_gem_port, encryption_mode, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_GEM_PORT, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_GEM_PORT_CFG_ID_ENCRYPTION_MODE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "upstream_destination_queue");
+    if (cli_parm != NULL)
+    {
+        bcmolt_us_gem_port_destination val;
+        val = (bcmolt_us_gem_port_destination) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_gem_port, upstream_destination_queue, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_gem_port, upstream_destination_queue, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_GEM_PORT, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_GEM_PORT_CFG_ID_UPSTREAM_DESTINATION_QUEUE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "control");
+    if (cli_parm != NULL)
+    {
+        bcmolt_control_state val;
+        val = (bcmolt_control_state) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_gem_port, control, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_gem_port, control, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_GEM_PORT, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_GEM_PORT_CFG_ID_CONTROL, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_set(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_set(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_gem_port_cfg_clear(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_gem_port_cfg cfg;          /**< declare main API struct */
+    bcmolt_xgpon_gem_port_key key = { };    /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_gem_port_cfg cfg;\n");
+    bcmcli_log("bcmolt_xgpon_gem_port_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_clear");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_GEM_PORT, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_GEM_PORT_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "gem_port_id");
+    if (cli_parm != NULL)
+    {
+        key.gem_port_id = (bcmolt_xgpon_gem_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "gem_port_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.gem_port_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_GEM_PORT, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_GEM_PORT_KEY_ID_GEM_PORT_ID, &key.gem_port_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, xgpon_gem_port, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, xgpon_gem_port, key);\n");
+
+    /* call API */
+    err = bcmolt_cfg_clear(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_clear(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_gem_port_cfg_get_multi(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_gem_port_cfg cfg;          /**< declare main API struct */
+    bcmolt_xgpon_gem_port_key key = { };    /**< declare key */
+    bcmolt_msg_set *msg_set = NULL;         /**< declare message set */
+    uint32_t max_msgs;                      /**< declare max number of msgs to get */
+    bcmos_bool invert_filter;               /**< declare filter invert flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_gem_port_cfg cfg;\n");
+    bcmcli_log("bcmolt_xgpon_gem_port_key key = {  };\n");
+    bcmcli_log("bcmolt_msg_set* msg_set = NULL;\n");
+    bcmcli_log("uint32_t max_msgs;\n");
+    bcmcli_log("bcmos_bool invert_filter;\n");
+    apicli_print_start(session, "bcmolt_cfg_get_multi");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_GEM_PORT, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_GEM_PORT_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "gem_port_id");
+    if (cli_parm != NULL)
+    {
+        key.gem_port_id = (bcmolt_xgpon_gem_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "gem_port_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.gem_port_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_GEM_PORT, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_GEM_PORT_KEY_ID_GEM_PORT_ID, &key.gem_port_id);
+    bcmcli_log(";\n");
+
+    /* set max number of msgs from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "max_msgs");
+    if (cli_parm != NULL)
+    {
+        max_msgs = cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "max_msgs is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("max_msgs = %d;\n", max_msgs);
+
+    /* set filter invert flag from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "filter_invert");
+    if (cli_parm != NULL)
+    {
+        invert_filter = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "filter_invert is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("invert_filter = %s;\n", (invert_filter) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* allocate message set */
+    err = apicli_msg_set_alloc(byte_pool, BCMOLT_OBJ_ID_XGPON_GEM_PORT, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);
+    if (err != BCM_ERR_OK)
+    {
+        return err;
+    }
+
+    bcmcli_log("bcmolt_msg_set_alloc(BCMOLT_OBJ_ID_XGPON_GEM_PORT, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, xgpon_gem_port, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, xgpon_gem_port, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.configuration.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_gem_port_configuration val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.configuration.direction");
+        if (cli_parm != NULL)
+        {
+            val.direction = (bcmolt_gem_port_direction) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.configuration.direction is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.configuration.type");
+        if (cli_parm != NULL)
+        {
+            val.type = (bcmolt_gem_port_type) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.configuration.type is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_gem_port, configuration, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_gem_port_configuration val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_GEM_PORT, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_GEM_PORT_CFG_ID_CONFIGURATION, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_gem_port, configuration, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "configuration");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_gem_port, configuration);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_gem_port, configuration);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.onu_id");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_onu_id val;
+        val = (bcmolt_xgpon_onu_id) cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_gem_port, onu_id, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_gem_port, onu_id, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_GEM_PORT, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_GEM_PORT_CFG_ID_ONU_ID, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_gem_port, onu_id);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_gem_port, onu_id);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.gem_port_state");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_gem_port_state val;
+        val = (bcmolt_xgpon_gem_port_state) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_gem_port, gem_port_state, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_gem_port, gem_port_state, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_GEM_PORT, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_GEM_PORT_CFG_ID_GEM_PORT_STATE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "gem_port_state");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_gem_port, gem_port_state);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_gem_port, gem_port_state);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.encryption_mode");
+    if (cli_parm != NULL)
+    {
+        bcmolt_control_state val;
+        val = (bcmolt_control_state) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_gem_port, encryption_mode, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_gem_port, encryption_mode, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_GEM_PORT, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_GEM_PORT_CFG_ID_ENCRYPTION_MODE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "encryption_mode");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_gem_port, encryption_mode);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_gem_port, encryption_mode);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.upstream_destination_queue");
+    if (cli_parm != NULL)
+    {
+        bcmolt_us_gem_port_destination val;
+        val = (bcmolt_us_gem_port_destination) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_gem_port, upstream_destination_queue, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_gem_port, upstream_destination_queue, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_GEM_PORT, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_GEM_PORT_CFG_ID_UPSTREAM_DESTINATION_QUEUE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "upstream_destination_queue");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_gem_port, upstream_destination_queue);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_gem_port, upstream_destination_queue);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.control");
+    if (cli_parm != NULL)
+    {
+        bcmolt_control_state val;
+        val = (bcmolt_control_state) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_gem_port, control, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_gem_port, control, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_GEM_PORT, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_GEM_PORT_CFG_ID_CONTROL, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "control");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_gem_port, control);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_gem_port, control);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_gem_port, configuration) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_gem_port, onu_id) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_gem_port, gem_port_state) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_gem_port, encryption_mode) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_gem_port, upstream_destination_queue) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_gem_port, control))
+    {
+        BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_gem_port, all_properties);
+        bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_gem_port, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);
+    bcmcli_log("bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_gem_port_stat_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_gem_port_stat stat;        /**< declare main API struct */
+    bcmolt_xgpon_gem_port_key key = { };    /**< declare key */
+    bcmos_bool clear_on_read;               /**< declare 'clear on read' flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_gem_port_stat stat;\n");
+    bcmcli_log("bcmolt_xgpon_gem_port_key key = {  };\n");
+    bcmcli_log("bcmos_bool clear_on_read;\n");
+    apicli_print_start(session, "bcmolt_stat_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_GEM_PORT, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_GEM_PORT_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "gem_port_id");
+    if (cli_parm != NULL)
+    {
+        key.gem_port_id = (bcmolt_xgpon_gem_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "gem_port_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.gem_port_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_GEM_PORT, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_GEM_PORT_KEY_ID_GEM_PORT_ID, &key.gem_port_id);
+    bcmcli_log(";\n");
+
+    /* set stat flags from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "clear");
+    if (cli_parm != NULL)
+    {
+        clear_on_read = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "clear is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("clear_on_read = %s;\n", (clear_on_read) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* init the API struct */
+    BCMOLT_STAT_INIT(&stat, xgpon_gem_port, key);
+    bcmcli_log("BCMOLT_STAT_INIT(&stat, xgpon_gem_port, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "tx_bytes");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_gem_port, tx_bytes);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_gem_port, tx_bytes);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_packets");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_gem_port, tx_packets);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_gem_port, tx_packets);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_packets");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_gem_port, rx_packets);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_gem_port, rx_packets);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_bytes");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_gem_port, rx_bytes);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_gem_port, rx_bytes);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_gem_port, tx_bytes) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_gem_port, tx_packets) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_gem_port, rx_packets) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_gem_port, rx_bytes))
+    {
+        BCMOLT_STAT_PROP_GET(&stat, xgpon_gem_port, all_properties);
+        bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_gem_port, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_stat_get(device_id, &stat.hdr, clear_on_read);
+    bcmcli_log("bcmolt_stat_get(device_id, &stat.hdr, clear_on_read);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &stat.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, stat.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_gem_port_stat_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_gem_port_stat_cfg stat_cfg;    /**< declare main API struct */
+    bcmolt_xgpon_gem_port_key key = { };        /**< declare key */
+    bcmolt_xgpon_gem_port_stat_id stat_id;      /**< declare stat ID */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_gem_port_stat_cfg stat_cfg;\n");
+    bcmcli_log("bcmolt_xgpon_gem_port_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_stat_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_GEM_PORT, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_GEM_PORT_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "gem_port_id");
+    if (cli_parm != NULL)
+    {
+        key.gem_port_id = (bcmolt_xgpon_gem_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "gem_port_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.gem_port_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_GEM_PORT, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_GEM_PORT_KEY_ID_GEM_PORT_ID, &key.gem_port_id);
+    bcmcli_log(";\n");
+
+    /* set stat ID from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "sub");
+    if (cli_parm != NULL)
+    {
+        stat_id = (bcmolt_xgpon_gem_port_stat_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    /* init the API struct */
+    switch (stat_id)
+    {
+        case BCMOLT_XGPON_GEM_PORT_STAT_ID_TX_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_gem_port, tx_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_gem_port, tx_bytes, key);\n");
+            break;
+        case BCMOLT_XGPON_GEM_PORT_STAT_ID_TX_PACKETS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_gem_port, tx_packets, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_gem_port, tx_packets, key);\n");
+            break;
+        case BCMOLT_XGPON_GEM_PORT_STAT_ID_RX_PACKETS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_gem_port, rx_packets, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_gem_port, rx_packets, key);\n");
+            break;
+        case BCMOLT_XGPON_GEM_PORT_STAT_ID_RX_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_gem_port, rx_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_gem_port, rx_bytes, key);\n");
+            break;
+        default:
+            apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+            return BCM_ERR_RANGE;
+    }
+
+    /* call API */
+    err = bcmolt_stat_cfg_get(device_id, &stat_cfg.hdr);
+    bcmcli_log("bcmolt_stat_cfg_get(device_id, &stat_cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &stat_cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, stat_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_gem_port_stat_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_gem_port_stat_cfg stat_cfg;    /**< declare main API struct */
+    bcmolt_xgpon_gem_port_key key = { };        /**< declare key */
+    bcmolt_xgpon_gem_port_stat_id stat_id;      /**< declare stat ID */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_gem_port_stat_cfg stat_cfg;\n");
+    bcmcli_log("bcmolt_xgpon_gem_port_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_stat_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_GEM_PORT, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_GEM_PORT_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "gem_port_id");
+    if (cli_parm != NULL)
+    {
+        key.gem_port_id = (bcmolt_xgpon_gem_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "gem_port_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.gem_port_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_GEM_PORT, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_GEM_PORT_KEY_ID_GEM_PORT_ID, &key.gem_port_id);
+    bcmcli_log(";\n");
+
+    /* set stat ID from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "sub");
+    if (cli_parm != NULL)
+    {
+        stat_id = (bcmolt_xgpon_gem_port_stat_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    /* init the API struct */
+    switch (stat_id)
+    {
+        case BCMOLT_XGPON_GEM_PORT_STAT_ID_TX_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_gem_port, tx_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_gem_port, tx_bytes, key);\n");
+            break;
+        case BCMOLT_XGPON_GEM_PORT_STAT_ID_TX_PACKETS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_gem_port, tx_packets, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_gem_port, tx_packets, key);\n");
+            break;
+        case BCMOLT_XGPON_GEM_PORT_STAT_ID_RX_PACKETS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_gem_port, rx_packets, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_gem_port, rx_packets, key);\n");
+            break;
+        case BCMOLT_XGPON_GEM_PORT_STAT_ID_RX_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_gem_port, rx_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_gem_port, rx_bytes, key);\n");
+            break;
+        default:
+            apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+            return BCM_ERR_RANGE;
+    }
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_stat_alarm_config val = { };
+        cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.trigger.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.type");
+            if (cli_parm != NULL)
+            {
+                val.trigger.type = (bcmolt_stat_condition_type) cli_parm->value.enum_val;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.type is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            switch (val.trigger.type)
+            {
+                case BCMOLT_STAT_CONDITION_TYPE_RATE_THRESHOLD:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.rising");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_threshold.rising = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.rising is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.falling");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_threshold.falling = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.falling is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_RATE_RANGE:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.upper");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_range.upper = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.upper is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.lower");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_range.lower = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.lower is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_VALUE_THRESHOLD:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.limit");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.value_threshold.limit = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.limit is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_NONE:
+                    break;
+                default:
+                    apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+                    return BCM_ERR_RANGE;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.soak.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "cfg.soak.active_soak_time");
+            if (cli_parm != NULL)
+            {
+                val.soak.active_soak_time = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak.active_soak_time is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "cfg.soak.clear_soak_time");
+            if (cli_parm != NULL)
+            {
+                val.soak.clear_soak_time = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak.clear_soak_time is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_STAT_CFG_PROP_SET(&stat_cfg, xgpon_gem_port, cfg, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_stat_alarm_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_GEM_PORT, BCMOLT_MGT_GROUP_STAT_CFG, 0, BCMOLT_XGPON_GEM_PORT_STAT_CFG_ID_CFG, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_STAT_CFG_PROP_SET(&stat_cfg, xgpon_gem_port, cfg, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    /* call API */
+    err = bcmolt_stat_cfg_set(device_id, &stat_cfg.hdr);
+    bcmcli_log("bcmolt_stat_cfg_set(device_id, &stat_cfg.hdr);\n");
+    apicli_print_complete(session, err, stat_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_gem_port_auto_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_gem_port_auto_cfg auto_cfg;    /**< declare main API struct */
+    bcmolt_xgpon_gem_port_key key = { };        /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_gem_port_auto_cfg auto_cfg;\n");
+    bcmcli_log("bcmolt_xgpon_gem_port_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_auto_cfg_get");
+
+    /* init the API struct */
+    BCMOLT_AUTO_CFG_INIT(&auto_cfg, xgpon_gem_port, key);
+    bcmcli_log("BCMOLT_AUTO_CFG_INIT(&auto_cfg, xgpon_gem_port, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_cleared");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_gem_port, stat_alarm_cleared);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_gem_port, stat_alarm_cleared);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_raised");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_gem_port, stat_alarm_raised);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_gem_port, stat_alarm_raised);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_gem_port, stat_alarm_cleared) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_gem_port, stat_alarm_raised))
+    {
+        BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_gem_port, all_properties);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_gem_port, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_auto_cfg_get(device_id, &auto_cfg.hdr);
+    bcmcli_log("bcmolt_auto_cfg_get(device_id, &auto_cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &auto_cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, auto_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_gem_port_auto_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_gem_port_auto_cfg auto_cfg;    /**< declare main API struct */
+    bcmolt_xgpon_gem_port_key key = { };        /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_gem_port_auto_cfg auto_cfg;\n");
+    bcmcli_log("bcmolt_xgpon_gem_port_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_auto_cfg_set");
+
+    /* init the API struct */
+    BCMOLT_AUTO_CFG_INIT(&auto_cfg, xgpon_gem_port, key);
+    bcmcli_log("BCMOLT_AUTO_CFG_INIT(&auto_cfg, xgpon_gem_port, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_cleared");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_gem_port, stat_alarm_cleared, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_gem_port, stat_alarm_cleared, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_GEM_PORT, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_GEM_PORT_AUTO_CFG_ID_STAT_ALARM_CLEARED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_raised");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_gem_port, stat_alarm_raised, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_gem_port, stat_alarm_raised, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_GEM_PORT, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_GEM_PORT_AUTO_CFG_ID_STAT_ALARM_RAISED, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_auto_cfg_set(device_id, &auto_cfg.hdr);
+    bcmcli_log("bcmolt_auto_cfg_set(device_id, &auto_cfg.hdr);\n");
+    apicli_print_complete(session, err, auto_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_iwf_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_iwf_cfg cfg;       /**< declare main API struct */
+    bcmolt_xgpon_iwf_key key = { }; /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_iwf_cfg cfg;\n");
+    bcmcli_log("bcmolt_xgpon_iwf_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_IWF, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_IWF_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, xgpon_iwf, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, xgpon_iwf, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "us_otag_direct_tpid");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_iwf, us_otag_direct_tpid);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_iwf, us_otag_direct_tpid);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ds_tpid");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_iwf, ds_tpid);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_iwf, ds_tpid);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_iwf, us_otag_direct_tpid) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_iwf, ds_tpid))
+    {
+        BCMOLT_CFG_PROP_GET(&cfg, xgpon_iwf, all_properties);
+        bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_iwf, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_get(device_id, &cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_iwf_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_iwf_cfg cfg;       /**< declare main API struct */
+    bcmolt_xgpon_iwf_key key = { }; /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_iwf_cfg cfg;\n");
+    bcmcli_log("bcmolt_xgpon_iwf_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_IWF, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_IWF_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, xgpon_iwf, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, xgpon_iwf, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "us_otag_direct_tpid");
+    if (cli_parm != NULL)
+    {
+        uint16_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_iwf, us_otag_direct_tpid, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_iwf, us_otag_direct_tpid, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_IWF, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_IWF_CFG_ID_US_OTAG_DIRECT_TPID, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "ds_tpid.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_arr_u16_5_hex val = { };
+        cli_parm = bcmcli_find_named_parm(session, "ds_tpid.arr");
+        if (cli_parm != NULL)
+        {
+            int32_t i0;
+            if (cli_parm->array_size != 5)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "array ds_tpid.arr must have 5 elements\n");
+                return BCM_ERR_PARM;
+            }
+
+            for (i0 = 0; i0 < 5; i0++)
+            {
+                val.arr[i0] = cli_parm->values[i0].unumber;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "ds_tpid.arr is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_iwf, ds_tpid, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_arr_u16_5_hex val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_IWF, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_IWF_CFG_ID_DS_TPID, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_iwf, ds_tpid, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_set(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_set(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_iwf_cfg_clear(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_iwf_cfg cfg;       /**< declare main API struct */
+    bcmolt_xgpon_iwf_key key = { }; /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_iwf_cfg cfg;\n");
+    bcmcli_log("bcmolt_xgpon_iwf_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_clear");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_IWF, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_IWF_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, xgpon_iwf, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, xgpon_iwf, key);\n");
+
+    /* call API */
+    err = bcmolt_cfg_clear(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_clear(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_iwf_cfg_get_multi(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_iwf_cfg cfg;       /**< declare main API struct */
+    bcmolt_xgpon_iwf_key key = { }; /**< declare key */
+    bcmolt_msg_set *msg_set = NULL; /**< declare message set */
+    uint32_t max_msgs;              /**< declare max number of msgs to get */
+    bcmos_bool invert_filter;       /**< declare filter invert flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_iwf_cfg cfg;\n");
+    bcmcli_log("bcmolt_xgpon_iwf_key key = {  };\n");
+    bcmcli_log("bcmolt_msg_set* msg_set = NULL;\n");
+    bcmcli_log("uint32_t max_msgs;\n");
+    bcmcli_log("bcmos_bool invert_filter;\n");
+    apicli_print_start(session, "bcmolt_cfg_get_multi");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_IWF, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_IWF_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* set max number of msgs from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "max_msgs");
+    if (cli_parm != NULL)
+    {
+        max_msgs = cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "max_msgs is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("max_msgs = %d;\n", max_msgs);
+
+    /* set filter invert flag from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "filter_invert");
+    if (cli_parm != NULL)
+    {
+        invert_filter = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "filter_invert is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("invert_filter = %s;\n", (invert_filter) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* allocate message set */
+    err = apicli_msg_set_alloc(byte_pool, BCMOLT_OBJ_ID_XGPON_IWF, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);
+    if (err != BCM_ERR_OK)
+    {
+        return err;
+    }
+
+    bcmcli_log("bcmolt_msg_set_alloc(BCMOLT_OBJ_ID_XGPON_IWF, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, xgpon_iwf, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, xgpon_iwf, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "filter.us_otag_direct_tpid");
+    if (cli_parm != NULL)
+    {
+        uint16_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_iwf, us_otag_direct_tpid, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_iwf, us_otag_direct_tpid, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_IWF, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_IWF_CFG_ID_US_OTAG_DIRECT_TPID, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "us_otag_direct_tpid");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_iwf, us_otag_direct_tpid);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_iwf, us_otag_direct_tpid);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.ds_tpid.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_arr_u16_5_hex val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.ds_tpid.arr");
+        if (cli_parm != NULL)
+        {
+            int32_t i0;
+            if (cli_parm->array_size != 5)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "array filter.ds_tpid.arr must have 5 elements\n");
+                return BCM_ERR_PARM;
+            }
+
+            for (i0 = 0; i0 < 5; i0++)
+            {
+                val.arr[i0] = cli_parm->values[i0].unumber;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.ds_tpid.arr is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_iwf, ds_tpid, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_arr_u16_5_hex val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_IWF, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_IWF_CFG_ID_DS_TPID, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_iwf, ds_tpid, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ds_tpid");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_iwf, ds_tpid);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_iwf, ds_tpid);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_iwf, us_otag_direct_tpid) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_iwf, ds_tpid))
+    {
+        BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_iwf, all_properties);
+        bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_iwf, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);
+    bcmcli_log("bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_ni_cfg_get(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_ni_cfg cfg;        /**< declare main API struct */
+    bcmolt_xgpon_ni_key key = { };  /**< declare key */
+    uint8_t *list_mem;              /**< declare memory buffer for variable-sized lists */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_ni_cfg cfg;\n");
+    bcmcli_log("bcmolt_xgpon_ni_key key = {  };\n");
+    bcmcli_log("uint8_t* list_mem;\n");
+    apicli_print_start(session, "bcmolt_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_NI_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, xgpon_ni, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, xgpon_ni, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "hw_pon_id");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, hw_pon_id);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, hw_pon_id);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "available_bandwidth");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, available_bandwidth);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, available_bandwidth);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "number_of_active_onus");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, number_of_active_onus);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, number_of_active_onus);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "pon_status");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, pon_status);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, pon_status);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "pon_distance");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, pon_distance);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, pon_distance);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ranging_window_size");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, ranging_window_size);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, ranging_window_size);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "eqd_cycles_number");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, eqd_cycles_number);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, eqd_cycles_number);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "drift_control");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, drift_control);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, drift_control);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "los_alarm_threshold");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, los_alarm_threshold);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, los_alarm_threshold);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "los_initial_value");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, los_initial_value);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, los_initial_value);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_alarms_thresholds");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, onu_alarms_thresholds);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, onu_alarms_thresholds);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ber_monitor");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, ber_monitor);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, ber_monitor);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_activation");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, onu_activation);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, onu_activation);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "sn_acquisition");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, sn_acquisition);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, sn_acquisition);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "key_exchange");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, key_exchange);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, key_exchange);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "protection_switching");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, protection_switching);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, protection_switching);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "protection_switching_debug");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, protection_switching_debug);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, protection_switching_debug);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "cbr_rt_allocation_profile");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, cbr_rt_allocation_profile);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, cbr_rt_allocation_profile);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "cbr_nrt_allocation_profile");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, cbr_nrt_allocation_profile);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, cbr_nrt_allocation_profile);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "power_management");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, power_management);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, power_management);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rogue_onu_detection_process");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, rogue_onu_detection_process);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, rogue_onu_detection_process);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "periodic_standby_pon_monitoring");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, periodic_standby_pon_monitoring);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, periodic_standby_pon_monitoring);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "dba_mode");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, dba_mode);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, dba_mode);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ploam_handling");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, ploam_handling);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, ploam_handling);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "min_data_alloc_id");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, min_data_alloc_id);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, min_data_alloc_id);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "min_data_gem_port_id");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, min_data_gem_port_id);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, min_data_gem_port_id);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "multicast_key");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, multicast_key);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, multicast_key);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "prbs_checker");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, prbs_checker);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, prbs_checker);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "prbs_generator");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, prbs_generator);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, prbs_generator);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "prbs_status");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, prbs_status);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, prbs_status);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "automatic_onu_deactivation");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, automatic_onu_deactivation);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, automatic_onu_deactivation);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "us_bandwidth_limit");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, us_bandwidth_limit);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, us_bandwidth_limit);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "all_onus");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, all_onus);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, all_onus);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "all_mcast_gem_ports");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, all_mcast_gem_ports);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, all_mcast_gem_ports);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "debug");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, debug);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, debug);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_upgrade_params");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, onu_upgrade_params);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, onu_upgrade_params);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ds_fec_mode");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, ds_fec_mode);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, ds_fec_mode);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "dba_type");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, dba_type);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, dba_type);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_tuning");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, onu_tuning);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, onu_tuning);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_ni, hw_pon_id) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_ni, available_bandwidth) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_ni, number_of_active_onus) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_ni, pon_status) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_ni, pon_distance) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_ni, ranging_window_size) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_ni, eqd_cycles_number) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_ni, drift_control) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_ni, los_alarm_threshold) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_ni, los_initial_value) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_ni, onu_alarms_thresholds) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_ni, ber_monitor) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_ni, onu_activation) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_ni, sn_acquisition) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_ni, key_exchange) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_ni, protection_switching) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_ni, protection_switching_debug) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_ni, cbr_rt_allocation_profile) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_ni, cbr_nrt_allocation_profile) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_ni, power_management) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_ni, rogue_onu_detection_process) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_ni, periodic_standby_pon_monitoring) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_ni, dba_mode) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_ni, ploam_handling) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_ni, min_data_alloc_id) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_ni, min_data_gem_port_id) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_ni, multicast_key) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_ni, prbs_checker) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_ni, prbs_generator) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_ni, prbs_status) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_ni, automatic_onu_deactivation) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_ni, us_bandwidth_limit) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_ni, all_onus) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_ni, all_mcast_gem_ports) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_ni, debug) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_ni, onu_upgrade_params) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_ni, ds_fec_mode) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_ni, dba_type) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_ni, onu_tuning))
+    {
+        BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, all_properties);
+        bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_ni, all_properties);\n");
+    }
+
+    /* set memory to use for variable-sized lists */
+    list_mem = apicli_byte_pool_calloc(byte_pool, APICLI_DYNAMIC_LIST_BUFFER_SIZE);
+    if (list_mem == NULL)
+    {
+        apicli_print_complete(session, BCM_ERR_NOMEM, "\n");
+        return BCM_ERR_NOMEM;
+    }
+
+    bcmcli_log("list_mem = bcmos_calloc(APICLI_DYNAMIC_LIST_BUFFER_SIZE);\n");
+    BCMOLT_CFG_LIST_BUF_SET(&cfg, xgpon_ni, list_mem, APICLI_DYNAMIC_LIST_BUFFER_SIZE);
+    bcmcli_log("BCMOLT_CFG_LIST_BUF_SET(&cfg, xgpon_ni, list_mem, APICLI_DYNAMIC_LIST_BUFFER_SIZE);\n");
+
+    /* call API */
+    err = bcmolt_cfg_get(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_get(device_id, &cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_ni_cfg_set(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_ni_cfg cfg;        /**< declare main API struct */
+    bcmolt_xgpon_ni_key key = { };  /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_ni_cfg cfg;\n");
+    bcmcli_log("bcmolt_xgpon_ni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_NI_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, xgpon_ni, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, xgpon_ni, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_parm_by_prefix(session, "hw_pon_id.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_hw_pon_id val = { };
+        cli_parm = bcmcli_find_named_parm(session, "hw_pon_id.pon_id_1");
+        if (cli_parm != NULL)
+        {
+            val.pon_id_1 = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "hw_pon_id.pon_id_1 is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "hw_pon_id.pon_id_2");
+        if (cli_parm != NULL)
+        {
+            val.pon_id_2 = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "hw_pon_id.pon_id_2 is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, hw_pon_id, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_hw_pon_id val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_HW_PON_ID, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, hw_pon_id, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "pon_distance.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_pon_distance val = { };
+        cli_parm = bcmcli_find_named_parm(session, "pon_distance.max_log_distance");
+        if (cli_parm != NULL)
+        {
+            val.max_log_distance = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "pon_distance.max_log_distance is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "pon_distance.max_diff_reach");
+        if (cli_parm != NULL)
+        {
+            val.max_diff_reach = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "pon_distance.max_diff_reach is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, pon_distance, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_pon_distance val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_PON_DISTANCE, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, pon_distance, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "eqd_cycles_number");
+    if (cli_parm != NULL)
+    {
+        uint32_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, eqd_cycles_number, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, eqd_cycles_number, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_EQD_CYCLES_NUMBER, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "drift_control.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_pon_drift_control val = { };
+        cli_parm = bcmcli_find_named_parm(session, "drift_control.drift_interval");
+        if (cli_parm != NULL)
+        {
+            val.drift_interval = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "drift_control.drift_interval is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "drift_control.drift_limit");
+        if (cli_parm != NULL)
+        {
+            val.drift_limit = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "drift_control.drift_limit is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "drift_control.transmission_control_limit");
+        if (cli_parm != NULL)
+        {
+            val.transmission_control_limit = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "drift_control.transmission_control_limit is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, drift_control, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_pon_drift_control val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_DRIFT_CONTROL, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, drift_control, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "los_alarm_threshold");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, los_alarm_threshold, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, los_alarm_threshold, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_LOS_ALARM_THRESHOLD, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "los_initial_value");
+    if (cli_parm != NULL)
+    {
+        bcmolt_status val;
+        val = (bcmolt_status) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, los_initial_value, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, los_initial_value, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_LOS_INITIAL_VALUE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "onu_alarms_thresholds.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_onu_alarms_thresholds val = { };
+        cli_parm = bcmcli_find_named_parm(session, "onu_alarms_thresholds.losi");
+        if (cli_parm != NULL)
+        {
+            val.losi = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "onu_alarms_thresholds.losi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "onu_alarms_thresholds.lobi");
+        if (cli_parm != NULL)
+        {
+            val.lobi = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "onu_alarms_thresholds.lobi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "onu_alarms_thresholds.looci");
+        if (cli_parm != NULL)
+        {
+            val.looci = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "onu_alarms_thresholds.looci is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "onu_alarms_thresholds.lopci");
+        if (cli_parm != NULL)
+        {
+            val.lopci = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "onu_alarms_thresholds.lopci is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, onu_alarms_thresholds, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_xgpon_onu_alarms_thresholds val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_ONU_ALARMS_THRESHOLDS, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, onu_alarms_thresholds, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "ber_monitor.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_ber_monitor_params val = { };
+        cli_parm = bcmcli_find_named_parm(session, "ber_monitor.us_ber_interval");
+        if (cli_parm != NULL)
+        {
+            val.us_ber_interval = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "ber_monitor.us_ber_interval is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "ber_monitor.sf_threshold");
+        if (cli_parm != NULL)
+        {
+            val.sf_threshold = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "ber_monitor.sf_threshold is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "ber_monitor.sd_threshold");
+        if (cli_parm != NULL)
+        {
+            val.sd_threshold = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "ber_monitor.sd_threshold is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, ber_monitor, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_ber_monitor_params val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_BER_MONITOR, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, ber_monitor, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "onu_activation.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_onu_activation val = { };
+        cli_parm = bcmcli_find_named_parm(session, "onu_activation.key_exchange");
+        if (cli_parm != NULL)
+        {
+            val.key_exchange = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "onu_activation.key_exchange is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "onu_activation.fail_due_to_regis_auto_fail");
+        if (cli_parm != NULL)
+        {
+            val.fail_due_to_regis_auto_fail = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "onu_activation.fail_due_to_regis_auto_fail is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, onu_activation, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_xgpon_onu_activation val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_ONU_ACTIVATION, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, onu_activation, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "sn_acquisition.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_sn_acquisition val = { };
+        cli_parm = bcmcli_find_named_parm(session, "sn_acquisition.interval");
+        if (cli_parm != NULL)
+        {
+            val.interval = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "sn_acquisition.interval is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "sn_acquisition.control");
+        if (cli_parm != NULL)
+        {
+            val.control = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "sn_acquisition.control is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "sn_acquisition.onu_post_discovery_mode");
+        if (cli_parm != NULL)
+        {
+            val.onu_post_discovery_mode = (bcmolt_onu_post_discovery_mode) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "sn_acquisition.onu_post_discovery_mode is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "sn_acquisition.burst_profile");
+        if (cli_parm != NULL)
+        {
+            val.burst_profile = (bcmolt_burst_profile_index) cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "sn_acquisition.burst_profile is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, sn_acquisition, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_xgpon_sn_acquisition val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_SN_ACQUISITION, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, sn_acquisition, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "key_exchange.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_key_exchange val = { };
+        cli_parm = bcmcli_find_named_parm(session, "key_exchange.interval");
+        if (cli_parm != NULL)
+        {
+            val.interval = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "key_exchange.interval is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "key_exchange.control");
+        if (cli_parm != NULL)
+        {
+            val.control = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "key_exchange.control is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "key_exchange.encrypted_ports_only");
+        if (cli_parm != NULL)
+        {
+            val.encrypted_ports_only = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "key_exchange.encrypted_ports_only is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, key_exchange, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_xgpon_key_exchange val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_KEY_EXCHANGE, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, key_exchange, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "protection_switching.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_protection_switching val = { };
+        cli_parm = bcmcli_find_named_parm(session, "protection_switching.timeout");
+        if (cli_parm != NULL)
+        {
+            val.timeout = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "protection_switching.timeout is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "protection_switching.gpio_pin");
+        if (cli_parm != NULL)
+        {
+            val.gpio_pin = (bcmolt_gpio_pin) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "protection_switching.gpio_pin is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "protection_switching.fast_ranging");
+        if (cli_parm != NULL)
+        {
+            val.fast_ranging = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "protection_switching.fast_ranging is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, protection_switching, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_xgpon_protection_switching val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_PROTECTION_SWITCHING, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, protection_switching, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "protection_switching_debug.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_protection_switching_debug val = { };
+        cli_parm = bcmcli_find_named_parm(session, "protection_switching_debug.data_map_delay_ms");
+        if (cli_parm != NULL)
+        {
+            val.data_map_delay_ms = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "protection_switching_debug.data_map_delay_ms is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "protection_switching_debug.rerange_send_ranging_time");
+        if (cli_parm != NULL)
+        {
+            val.rerange_send_ranging_time = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "protection_switching_debug.rerange_send_ranging_time is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "protection_switching_debug.rerange_send_ranging_time_delay");
+        if (cli_parm != NULL)
+        {
+            val.rerange_send_ranging_time_delay = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "protection_switching_debug.rerange_send_ranging_time_delay is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, protection_switching_debug, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_xgpon_protection_switching_debug val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_PROTECTION_SWITCHING_DEBUG, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, protection_switching_debug, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "cbr_rt_allocation_profile.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_cbr_rt_allocation_profile val = { };
+        cli_parm = bcmcli_find_named_parm(session, "cbr_rt_allocation_profile.ma_7");
+        if (cli_parm != NULL)
+        {
+            val.ma_7 = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "cbr_rt_allocation_profile.ma_7 is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "cbr_rt_allocation_profile.ma_3");
+        if (cli_parm != NULL)
+        {
+            val.ma_3 = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "cbr_rt_allocation_profile.ma_3 is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "cbr_rt_allocation_profile.ma_1");
+        if (cli_parm != NULL)
+        {
+            val.ma_1 = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "cbr_rt_allocation_profile.ma_1 is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, cbr_rt_allocation_profile, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_cbr_rt_allocation_profile val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_CBR_RT_ALLOCATION_PROFILE, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, cbr_rt_allocation_profile, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "cbr_nrt_allocation_profile.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_arr_u16_2 val = { };
+        cli_parm = bcmcli_find_named_parm(session, "cbr_nrt_allocation_profile.arr");
+        if (cli_parm != NULL)
+        {
+            int32_t i0;
+            if (cli_parm->array_size != 2)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "array cbr_nrt_allocation_profile.arr must have 2 elements\n");
+                return BCM_ERR_PARM;
+            }
+
+            for (i0 = 0; i0 < 2; i0++)
+            {
+                val.arr[i0] = cli_parm->values[i0].unumber;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "cbr_nrt_allocation_profile.arr is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, cbr_nrt_allocation_profile, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_arr_u16_2 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_CBR_NRT_ALLOCATION_PROFILE, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, cbr_nrt_allocation_profile, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "power_management.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_onu_power_management_configuration val = { };
+        cli_parm = bcmcli_find_named_parm(session, "power_management.ilowpower");
+        if (cli_parm != NULL)
+        {
+            val.ilowpower = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "power_management.ilowpower is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "power_management.iaware");
+        if (cli_parm != NULL)
+        {
+            val.iaware = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "power_management.iaware is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "power_management.itransinit");
+        if (cli_parm != NULL)
+        {
+            val.itransinit = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "power_management.itransinit is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "power_management.itxinit");
+        if (cli_parm != NULL)
+        {
+            val.itxinit = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "power_management.itxinit is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "power_management.irxoff");
+        if (cli_parm != NULL)
+        {
+            val.irxoff = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "power_management.irxoff is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "power_management.low_power_clobi");
+        if (cli_parm != NULL)
+        {
+            val.low_power_clobi = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "power_management.low_power_clobi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, power_management, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_onu_power_management_configuration val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_POWER_MANAGEMENT, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, power_management, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "rogue_onu_detection_process.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_rogue_onu_detection_process val = { };
+        cli_parm = bcmcli_find_named_parm(session, "rogue_onu_detection_process.control");
+        if (cli_parm != NULL)
+        {
+            val.control = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "rogue_onu_detection_process.control is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "rogue_onu_detection_process.detection_algorithm.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "rogue_onu_detection_process.detection_algorithm.algorithm_type");
+            if (cli_parm != NULL)
+            {
+                val.detection_algorithm.algorithm_type = (bcmolt_rogue_detection_algorithm_type) cli_parm->value.enum_val;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "rogue_onu_detection_process.detection_algorithm.algorithm_type is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            switch (val.detection_algorithm.algorithm_type)
+            {
+                case BCMOLT_ROGUE_DETECTION_ALGORITHM_TYPE_EARLY_ROGUE_DETECTION:
+                    cli_parm = bcmcli_find_named_parm(session, "rogue_onu_detection_process.detection_algorithm.measurement_type");
+                    if (cli_parm != NULL)
+                    {
+                        val.detection_algorithm.u.early_rogue_detection.measurement_type = (bcmolt_rogue_detection_window) cli_parm->value.enum_val;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "rogue_onu_detection_process.detection_algorithm.measurement_type is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "rogue_onu_detection_process.detection_algorithm.interval");
+                    if (cli_parm != NULL)
+                    {
+                        val.detection_algorithm.u.early_rogue_detection.interval = cli_parm->value.unumber;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "rogue_onu_detection_process.detection_algorithm.interval is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "rogue_onu_detection_process.detection_algorithm.second_ranging_window");
+                    if (cli_parm != NULL)
+                    {
+                        val.detection_algorithm.u.early_rogue_detection.second_ranging_window = cli_parm->value.number;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "rogue_onu_detection_process.detection_algorithm.second_ranging_window is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "rogue_onu_detection_process.detection_algorithm.alloc_type_to_scan");
+                    if (cli_parm != NULL)
+                    {
+                        val.detection_algorithm.u.early_rogue_detection.alloc_type_to_scan = (bcmolt_alloc_type_to_scan) cli_parm->value.enum_val;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "rogue_onu_detection_process.detection_algorithm.alloc_type_to_scan is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_ROGUE_DETECTION_ALGORITHM_TYPE_SPECIAL_MAP:
+                    cli_parm = bcmcli_find_parm_by_prefix(session, "rogue_onu_detection_process.detection_algorithm.accesses.");
+                    if (cli_parm != NULL)
+                    {
+                        int32_t i1;
+                        val.detection_algorithm.u.special_map.accesses.val = apicli_byte_pool_calloc(byte_pool, cli_parm->array_size * sizeof(*val.detection_algorithm.u.special_map.accesses.val));
+                        if (val.detection_algorithm.u.special_map.accesses.val == NULL)
+                        {
+                            apicli_print_complete(session, BCM_ERR_NOMEM, "\n");
+                            return BCM_ERR_NOMEM;
+                        }
+
+                        val.detection_algorithm.u.special_map.accesses.len = cli_parm->array_size;
+                        cli_parm = bcmcli_find_named_parm(session, "rogue_onu_detection_process.detection_algorithm.accesses.plo_size");
+                        if (cli_parm != NULL)
+                        {
+                            if (cli_parm->array_size != val.detection_algorithm.u.special_map.accesses.len)
+                            {
+                                apicli_print_complete(session, BCM_ERR_PARM, "rogue_onu_detection_process.detection_algorithm.accesses.plo_size is a different size than other arrays in the struct\n");
+                                return BCM_ERR_PARM;
+                            }
+
+                            for (i1 = 0; i1 < val.detection_algorithm.u.special_map.accesses.len; i1++)
+                            {
+                                val.detection_algorithm.u.special_map.accesses.val[i1].plo_size = cli_parm->values[i1].unumber;
+                            }
+                        }
+
+                        cli_parm = bcmcli_find_named_parm(session, "rogue_onu_detection_process.detection_algorithm.accesses.alloc_id");
+                        if (cli_parm != NULL)
+                        {
+                            if (cli_parm->array_size != val.detection_algorithm.u.special_map.accesses.len)
+                            {
+                                apicli_print_complete(session, BCM_ERR_PARM, "rogue_onu_detection_process.detection_algorithm.accesses.alloc_id is a different size than other arrays in the struct\n");
+                                return BCM_ERR_PARM;
+                            }
+
+                            for (i1 = 0; i1 < val.detection_algorithm.u.special_map.accesses.len; i1++)
+                            {
+                                val.detection_algorithm.u.special_map.accesses.val[i1].alloc_id = (bcmolt_pon_alloc_id) cli_parm->values[i1].unumber;
+                            }
+                        }
+
+                        cli_parm = bcmcli_find_named_parm(session, "rogue_onu_detection_process.detection_algorithm.accesses.onu_id");
+                        if (cli_parm != NULL)
+                        {
+                            if (cli_parm->array_size != val.detection_algorithm.u.special_map.accesses.len)
+                            {
+                                apicli_print_complete(session, BCM_ERR_PARM, "rogue_onu_detection_process.detection_algorithm.accesses.onu_id is a different size than other arrays in the struct\n");
+                                return BCM_ERR_PARM;
+                            }
+
+                            for (i1 = 0; i1 < val.detection_algorithm.u.special_map.accesses.len; i1++)
+                            {
+                                val.detection_algorithm.u.special_map.accesses.val[i1].onu_id = (bcmolt_pon_onu_id) cli_parm->values[i1].unumber;
+                            }
+                        }
+
+                        cli_parm = bcmcli_find_named_parm(session, "rogue_onu_detection_process.detection_algorithm.accesses.access_size");
+                        if (cli_parm != NULL)
+                        {
+                            if (cli_parm->array_size != val.detection_algorithm.u.special_map.accesses.len)
+                            {
+                                apicli_print_complete(session, BCM_ERR_PARM, "rogue_onu_detection_process.detection_algorithm.accesses.access_size is a different size than other arrays in the struct\n");
+                                return BCM_ERR_PARM;
+                            }
+
+                            for (i1 = 0; i1 < val.detection_algorithm.u.special_map.accesses.len; i1++)
+                            {
+                                val.detection_algorithm.u.special_map.accesses.val[i1].access_size = cli_parm->values[i1].unumber;
+                            }
+                        }
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "rogue_onu_detection_process.detection_algorithm.accesses is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_ROGUE_DETECTION_ALGORITHM_TYPE_EXTENDED_GUARD_TIME:
+                    cli_parm = bcmcli_find_named_parm(session, "rogue_onu_detection_process.detection_algorithm.additional_guard_time");
+                    if (cli_parm != NULL)
+                    {
+                        val.detection_algorithm.u.extended_guard_time.additional_guard_time = cli_parm->value.unumber;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "rogue_onu_detection_process.detection_algorithm.additional_guard_time is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                default:
+                    apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+                    return BCM_ERR_RANGE;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "rogue_onu_detection_process.detection_algorithm is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, rogue_onu_detection_process, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_rogue_onu_detection_process val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_ROGUE_ONU_DETECTION_PROCESS, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, rogue_onu_detection_process, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "periodic_standby_pon_monitoring.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_periodic_standby_pon_monitoring val = { };
+        cli_parm = bcmcli_find_named_parm(session, "periodic_standby_pon_monitoring.interval");
+        if (cli_parm != NULL)
+        {
+            val.interval = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "periodic_standby_pon_monitoring.interval is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "periodic_standby_pon_monitoring.control");
+        if (cli_parm != NULL)
+        {
+            val.control = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "periodic_standby_pon_monitoring.control is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, periodic_standby_pon_monitoring, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_periodic_standby_pon_monitoring val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_PERIODIC_STANDBY_PON_MONITORING, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, periodic_standby_pon_monitoring, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "dba_mode");
+    if (cli_parm != NULL)
+    {
+        bcmolt_dba_mode val;
+        val = (bcmolt_dba_mode) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, dba_mode, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, dba_mode, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_DBA_MODE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "ploam_handling.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_ploam_handling val = { };
+        cli_parm = bcmcli_find_named_parm(session, "ploam_handling.ack_timeout");
+        if (cli_parm != NULL)
+        {
+            val.ack_timeout = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "ploam_handling.ack_timeout is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "ploam_handling.retrans_ranging_time");
+        if (cli_parm != NULL)
+        {
+            val.retrans_ranging_time = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "ploam_handling.retrans_ranging_time is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "ploam_handling.retrans_assign_alloc_id");
+        if (cli_parm != NULL)
+        {
+            val.retrans_assign_alloc_id = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "ploam_handling.retrans_assign_alloc_id is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "ploam_handling.retrans_key_control");
+        if (cli_parm != NULL)
+        {
+            val.retrans_key_control = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "ploam_handling.retrans_key_control is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "ploam_handling.retrans_request_registration");
+        if (cli_parm != NULL)
+        {
+            val.retrans_request_registration = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "ploam_handling.retrans_request_registration is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, ploam_handling, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_xgpon_ploam_handling val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_PLOAM_HANDLING, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, ploam_handling, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "min_data_alloc_id");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_alloc_id val;
+        val = (bcmolt_xgpon_alloc_id) cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, min_data_alloc_id, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, min_data_alloc_id, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_MIN_DATA_ALLOC_ID, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "min_data_gem_port_id");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_gem_id val;
+        val = (bcmolt_xgpon_gem_id) cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, min_data_gem_port_id, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, min_data_gem_port_id, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_MIN_DATA_GEM_PORT_ID, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "multicast_key.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_multicast_key val = { };
+        cli_parm = bcmcli_find_parm_by_prefix(session, "multicast_key.key.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "multicast_key.key.bytes");
+            if (cli_parm != NULL)
+            {
+                if (bcmolt_buf_get_used(&cli_parm->value.buffer) != 16)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "buffer multicast_key.key.bytes must have 16 bytes\n");
+                    return BCM_ERR_PARM;
+                }
+
+                bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+                bcmolt_buf_read(&cli_parm->value.buffer, val.key.bytes, 16);
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "multicast_key.key.bytes is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "multicast_key.key is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "multicast_key.key_control");
+        if (cli_parm != NULL)
+        {
+            val.key_control = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "multicast_key.key_control is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, multicast_key, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_xgpon_multicast_key val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_MULTICAST_KEY, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, multicast_key, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "prbs_checker.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_prbs_checker_config val = { };
+        cli_parm = bcmcli_find_named_parm(session, "prbs_checker.polynom");
+        if (cli_parm != NULL)
+        {
+            val.polynom = (bcmolt_prbs_polynomial) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "prbs_checker.polynom is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "prbs_checker.mode");
+        if (cli_parm != NULL)
+        {
+            val.mode = (bcmolt_prbs_checker_mode) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "prbs_checker.mode is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "prbs_checker.data_invert");
+        if (cli_parm != NULL)
+        {
+            val.data_invert = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "prbs_checker.data_invert is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "prbs_checker.control");
+        if (cli_parm != NULL)
+        {
+            val.control = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "prbs_checker.control is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, prbs_checker, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_prbs_checker_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_PRBS_CHECKER, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, prbs_checker, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "prbs_generator.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_prbs_generator_config val = { };
+        cli_parm = bcmcli_find_named_parm(session, "prbs_generator.polynom");
+        if (cli_parm != NULL)
+        {
+            val.polynom = (bcmolt_prbs_polynomial) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "prbs_generator.polynom is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "prbs_generator.error_insert");
+        if (cli_parm != NULL)
+        {
+            val.error_insert = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "prbs_generator.error_insert is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "prbs_generator.invert");
+        if (cli_parm != NULL)
+        {
+            val.invert = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "prbs_generator.invert is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "prbs_generator.control");
+        if (cli_parm != NULL)
+        {
+            val.control = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "prbs_generator.control is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, prbs_generator, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_prbs_generator_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_PRBS_GENERATOR, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, prbs_generator, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "automatic_onu_deactivation.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_automatic_onu_deactivation val = { };
+        cli_parm = bcmcli_find_named_parm(session, "automatic_onu_deactivation.los");
+        if (cli_parm != NULL)
+        {
+            val.los = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "automatic_onu_deactivation.los is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "automatic_onu_deactivation.onu_alarms");
+        if (cli_parm != NULL)
+        {
+            val.onu_alarms = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "automatic_onu_deactivation.onu_alarms is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "automatic_onu_deactivation.tiwi");
+        if (cli_parm != NULL)
+        {
+            val.tiwi = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "automatic_onu_deactivation.tiwi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "automatic_onu_deactivation.ack_timeout");
+        if (cli_parm != NULL)
+        {
+            val.ack_timeout = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "automatic_onu_deactivation.ack_timeout is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "automatic_onu_deactivation.sfi");
+        if (cli_parm != NULL)
+        {
+            val.sfi = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "automatic_onu_deactivation.sfi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "automatic_onu_deactivation.loki");
+        if (cli_parm != NULL)
+        {
+            val.loki = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "automatic_onu_deactivation.loki is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, automatic_onu_deactivation, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_automatic_onu_deactivation val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_AUTOMATIC_ONU_DEACTIVATION, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, automatic_onu_deactivation, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "us_bandwidth_limit");
+    if (cli_parm != NULL)
+    {
+        uint32_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, us_bandwidth_limit, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, us_bandwidth_limit, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_US_BANDWIDTH_LIMIT, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "debug.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_ni_debug val = { };
+        cli_parm = bcmcli_find_named_parm(session, "debug.increase_available_cbr_bw");
+        if (cli_parm != NULL)
+        {
+            val.increase_available_cbr_bw = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "debug.increase_available_cbr_bw is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "debug.inter_burst_gap_in_bytes");
+        if (cli_parm != NULL)
+        {
+            val.inter_burst_gap_in_bytes = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "debug.inter_burst_gap_in_bytes is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "debug.number_of_gem_ports_per_onu");
+        if (cli_parm != NULL)
+        {
+            val.number_of_gem_ports_per_onu = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "debug.number_of_gem_ports_per_onu is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, debug, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_xgpon_ni_debug val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_DEBUG, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, debug, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "onu_upgrade_params.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_gpon_onu_upgrade_params val = { };
+        cli_parm = bcmcli_find_named_parm(session, "onu_upgrade_params.response_timeout_ms");
+        if (cli_parm != NULL)
+        {
+            val.response_timeout_ms = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "onu_upgrade_params.response_timeout_ms is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "onu_upgrade_params.max_retry_count");
+        if (cli_parm != NULL)
+        {
+            val.max_retry_count = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "onu_upgrade_params.max_retry_count is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "onu_upgrade_params.omci_format");
+        if (cli_parm != NULL)
+        {
+            val.omci_format = (bcmolt_omci_device_id) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "onu_upgrade_params.omci_format is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "onu_upgrade_params.window_size");
+        if (cli_parm != NULL)
+        {
+            val.window_size = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "onu_upgrade_params.window_size is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "onu_upgrade_params.activate_commit");
+        if (cli_parm != NULL)
+        {
+            val.activate_commit = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "onu_upgrade_params.activate_commit is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "onu_upgrade_params.delay_for_commit_ms");
+        if (cli_parm != NULL)
+        {
+            val.delay_for_commit_ms = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "onu_upgrade_params.delay_for_commit_ms is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "onu_upgrade_params.max_activation_attempts");
+        if (cli_parm != NULL)
+        {
+            val.max_activation_attempts = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "onu_upgrade_params.max_activation_attempts is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, onu_upgrade_params, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_gpon_onu_upgrade_params val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_ONU_UPGRADE_PARAMS, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, onu_upgrade_params, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ds_fec_mode");
+    if (cli_parm != NULL)
+    {
+        bcmolt_control_state val;
+        val = (bcmolt_control_state) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, ds_fec_mode, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, ds_fec_mode, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_DS_FEC_MODE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "dba_type");
+    if (cli_parm != NULL)
+    {
+        bcmolt_dba_type val;
+        val = (bcmolt_dba_type) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, dba_type, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, dba_type, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_DBA_TYPE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "onu_tuning.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_onu_tuning_configuration val = { };
+        cli_parm = bcmcli_find_named_parm(session, "onu_tuning.tsource");
+        if (cli_parm != NULL)
+        {
+            val.tsource = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "onu_tuning.tsource is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "onu_tuning.ttarget");
+        if (cli_parm != NULL)
+        {
+            val.ttarget = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "onu_tuning.ttarget is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "onu_tuning.request_registration_required");
+        if (cli_parm != NULL)
+        {
+            val.request_registration_required = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "onu_tuning.request_registration_required is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, onu_tuning, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_onu_tuning_configuration val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_ONU_TUNING, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, onu_tuning, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_set(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_set(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_ni_cfg_clear(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_ni_cfg cfg;        /**< declare main API struct */
+    bcmolt_xgpon_ni_key key = { };  /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_ni_cfg cfg;\n");
+    bcmcli_log("bcmolt_xgpon_ni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_clear");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_NI_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, xgpon_ni, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, xgpon_ni, key);\n");
+
+    /* call API */
+    err = bcmolt_cfg_clear(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_clear(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_ni_cfg_get_multi(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_ni_cfg cfg;        /**< declare main API struct */
+    bcmolt_xgpon_ni_key key = { };  /**< declare key */
+    bcmolt_msg_set *msg_set = NULL; /**< declare message set */
+    uint32_t max_msgs;              /**< declare max number of msgs to get */
+    bcmos_bool invert_filter;       /**< declare filter invert flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_ni_cfg cfg;\n");
+    bcmcli_log("bcmolt_xgpon_ni_key key = {  };\n");
+    bcmcli_log("bcmolt_msg_set* msg_set = NULL;\n");
+    bcmcli_log("uint32_t max_msgs;\n");
+    bcmcli_log("bcmos_bool invert_filter;\n");
+    apicli_print_start(session, "bcmolt_cfg_get_multi");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_NI_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* set max number of msgs from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "max_msgs");
+    if (cli_parm != NULL)
+    {
+        max_msgs = cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "max_msgs is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("max_msgs = %d;\n", max_msgs);
+
+    /* set filter invert flag from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "filter_invert");
+    if (cli_parm != NULL)
+    {
+        invert_filter = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "filter_invert is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("invert_filter = %s;\n", (invert_filter) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* allocate message set */
+    err = apicli_msg_set_alloc(byte_pool, BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);
+    if (err != BCM_ERR_OK)
+    {
+        return err;
+    }
+
+    bcmcli_log("bcmolt_msg_set_alloc(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, xgpon_ni, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, xgpon_ni, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.hw_pon_id.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_hw_pon_id val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.hw_pon_id.pon_id_1");
+        if (cli_parm != NULL)
+        {
+            val.pon_id_1 = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.hw_pon_id.pon_id_1 is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.hw_pon_id.pon_id_2");
+        if (cli_parm != NULL)
+        {
+            val.pon_id_2 = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.hw_pon_id.pon_id_2 is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, hw_pon_id, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_hw_pon_id val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_HW_PON_ID, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, hw_pon_id, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "hw_pon_id");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, hw_pon_id);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, hw_pon_id);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.available_bandwidth.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_pon_available_bandwidth val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.available_bandwidth.cbr_bw");
+        if (cli_parm != NULL)
+        {
+            val.cbr_bw = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.available_bandwidth.cbr_bw is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.available_bandwidth.total_bw");
+        if (cli_parm != NULL)
+        {
+            val.total_bw = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.available_bandwidth.total_bw is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.available_bandwidth.next_onu_total_bw");
+        if (cli_parm != NULL)
+        {
+            val.next_onu_total_bw = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.available_bandwidth.next_onu_total_bw is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, available_bandwidth, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_pon_available_bandwidth val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_AVAILABLE_BANDWIDTH, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, available_bandwidth, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "available_bandwidth");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, available_bandwidth);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, available_bandwidth);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.number_of_active_onus");
+    if (cli_parm != NULL)
+    {
+        uint16_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, number_of_active_onus, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, number_of_active_onus, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_NUMBER_OF_ACTIVE_ONUS, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "number_of_active_onus");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, number_of_active_onus);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, number_of_active_onus);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.pon_status.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_pon_status val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.pon_status.state");
+        if (cli_parm != NULL)
+        {
+            val.state = (bcmolt_pon_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.pon_status.state is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.pon_status.los_status");
+        if (cli_parm != NULL)
+        {
+            val.los_status = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.pon_status.los_status is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, pon_status, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_pon_status val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_PON_STATUS, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, pon_status, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "pon_status");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, pon_status);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, pon_status);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.pon_distance.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_pon_distance val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.pon_distance.max_log_distance");
+        if (cli_parm != NULL)
+        {
+            val.max_log_distance = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.pon_distance.max_log_distance is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.pon_distance.max_diff_reach");
+        if (cli_parm != NULL)
+        {
+            val.max_diff_reach = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.pon_distance.max_diff_reach is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, pon_distance, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_pon_distance val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_PON_DISTANCE, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, pon_distance, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "pon_distance");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, pon_distance);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, pon_distance);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.ranging_window_size");
+    if (cli_parm != NULL)
+    {
+        uint32_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, ranging_window_size, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, ranging_window_size, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_RANGING_WINDOW_SIZE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ranging_window_size");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, ranging_window_size);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, ranging_window_size);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.eqd_cycles_number");
+    if (cli_parm != NULL)
+    {
+        uint32_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, eqd_cycles_number, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, eqd_cycles_number, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_EQD_CYCLES_NUMBER, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "eqd_cycles_number");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, eqd_cycles_number);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, eqd_cycles_number);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.drift_control.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_pon_drift_control val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.drift_control.drift_interval");
+        if (cli_parm != NULL)
+        {
+            val.drift_interval = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.drift_control.drift_interval is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.drift_control.drift_limit");
+        if (cli_parm != NULL)
+        {
+            val.drift_limit = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.drift_control.drift_limit is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.drift_control.transmission_control_limit");
+        if (cli_parm != NULL)
+        {
+            val.transmission_control_limit = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.drift_control.transmission_control_limit is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, drift_control, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_pon_drift_control val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_DRIFT_CONTROL, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, drift_control, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "drift_control");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, drift_control);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, drift_control);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.los_alarm_threshold");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, los_alarm_threshold, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, los_alarm_threshold, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_LOS_ALARM_THRESHOLD, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "los_alarm_threshold");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, los_alarm_threshold);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, los_alarm_threshold);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.los_initial_value");
+    if (cli_parm != NULL)
+    {
+        bcmolt_status val;
+        val = (bcmolt_status) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, los_initial_value, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, los_initial_value, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_LOS_INITIAL_VALUE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "los_initial_value");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, los_initial_value);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, los_initial_value);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.onu_alarms_thresholds.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_onu_alarms_thresholds val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.onu_alarms_thresholds.losi");
+        if (cli_parm != NULL)
+        {
+            val.losi = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.onu_alarms_thresholds.losi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.onu_alarms_thresholds.lobi");
+        if (cli_parm != NULL)
+        {
+            val.lobi = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.onu_alarms_thresholds.lobi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.onu_alarms_thresholds.looci");
+        if (cli_parm != NULL)
+        {
+            val.looci = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.onu_alarms_thresholds.looci is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.onu_alarms_thresholds.lopci");
+        if (cli_parm != NULL)
+        {
+            val.lopci = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.onu_alarms_thresholds.lopci is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, onu_alarms_thresholds, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_xgpon_onu_alarms_thresholds val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_ONU_ALARMS_THRESHOLDS, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, onu_alarms_thresholds, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_alarms_thresholds");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, onu_alarms_thresholds);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, onu_alarms_thresholds);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.ber_monitor.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_ber_monitor_params val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.ber_monitor.us_ber_interval");
+        if (cli_parm != NULL)
+        {
+            val.us_ber_interval = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.ber_monitor.us_ber_interval is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.ber_monitor.sf_threshold");
+        if (cli_parm != NULL)
+        {
+            val.sf_threshold = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.ber_monitor.sf_threshold is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.ber_monitor.sd_threshold");
+        if (cli_parm != NULL)
+        {
+            val.sd_threshold = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.ber_monitor.sd_threshold is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, ber_monitor, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_ber_monitor_params val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_BER_MONITOR, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, ber_monitor, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ber_monitor");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, ber_monitor);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, ber_monitor);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.onu_activation.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_onu_activation val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.onu_activation.key_exchange");
+        if (cli_parm != NULL)
+        {
+            val.key_exchange = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.onu_activation.key_exchange is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.onu_activation.fail_due_to_regis_auto_fail");
+        if (cli_parm != NULL)
+        {
+            val.fail_due_to_regis_auto_fail = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.onu_activation.fail_due_to_regis_auto_fail is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, onu_activation, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_xgpon_onu_activation val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_ONU_ACTIVATION, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, onu_activation, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_activation");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, onu_activation);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, onu_activation);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.sn_acquisition.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_sn_acquisition val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.sn_acquisition.interval");
+        if (cli_parm != NULL)
+        {
+            val.interval = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.sn_acquisition.interval is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.sn_acquisition.control");
+        if (cli_parm != NULL)
+        {
+            val.control = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.sn_acquisition.control is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.sn_acquisition.onu_post_discovery_mode");
+        if (cli_parm != NULL)
+        {
+            val.onu_post_discovery_mode = (bcmolt_onu_post_discovery_mode) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.sn_acquisition.onu_post_discovery_mode is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.sn_acquisition.burst_profile");
+        if (cli_parm != NULL)
+        {
+            val.burst_profile = (bcmolt_burst_profile_index) cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.sn_acquisition.burst_profile is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, sn_acquisition, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_xgpon_sn_acquisition val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_SN_ACQUISITION, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, sn_acquisition, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "sn_acquisition");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, sn_acquisition);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, sn_acquisition);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.key_exchange.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_key_exchange val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.key_exchange.interval");
+        if (cli_parm != NULL)
+        {
+            val.interval = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.key_exchange.interval is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.key_exchange.control");
+        if (cli_parm != NULL)
+        {
+            val.control = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.key_exchange.control is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.key_exchange.encrypted_ports_only");
+        if (cli_parm != NULL)
+        {
+            val.encrypted_ports_only = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.key_exchange.encrypted_ports_only is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, key_exchange, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_xgpon_key_exchange val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_KEY_EXCHANGE, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, key_exchange, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "key_exchange");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, key_exchange);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, key_exchange);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.protection_switching.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_protection_switching val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.protection_switching.timeout");
+        if (cli_parm != NULL)
+        {
+            val.timeout = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.protection_switching.timeout is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.protection_switching.gpio_pin");
+        if (cli_parm != NULL)
+        {
+            val.gpio_pin = (bcmolt_gpio_pin) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.protection_switching.gpio_pin is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.protection_switching.fast_ranging");
+        if (cli_parm != NULL)
+        {
+            val.fast_ranging = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.protection_switching.fast_ranging is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, protection_switching, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_xgpon_protection_switching val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_PROTECTION_SWITCHING, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, protection_switching, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "protection_switching");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, protection_switching);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, protection_switching);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.protection_switching_debug.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_protection_switching_debug val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.protection_switching_debug.data_map_delay_ms");
+        if (cli_parm != NULL)
+        {
+            val.data_map_delay_ms = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.protection_switching_debug.data_map_delay_ms is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.protection_switching_debug.rerange_send_ranging_time");
+        if (cli_parm != NULL)
+        {
+            val.rerange_send_ranging_time = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.protection_switching_debug.rerange_send_ranging_time is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.protection_switching_debug.rerange_send_ranging_time_delay");
+        if (cli_parm != NULL)
+        {
+            val.rerange_send_ranging_time_delay = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.protection_switching_debug.rerange_send_ranging_time_delay is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, protection_switching_debug, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_xgpon_protection_switching_debug val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_PROTECTION_SWITCHING_DEBUG, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, protection_switching_debug, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "protection_switching_debug");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, protection_switching_debug);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, protection_switching_debug);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.cbr_rt_allocation_profile.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_cbr_rt_allocation_profile val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.cbr_rt_allocation_profile.ma_7");
+        if (cli_parm != NULL)
+        {
+            val.ma_7 = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.cbr_rt_allocation_profile.ma_7 is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.cbr_rt_allocation_profile.ma_3");
+        if (cli_parm != NULL)
+        {
+            val.ma_3 = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.cbr_rt_allocation_profile.ma_3 is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.cbr_rt_allocation_profile.ma_1");
+        if (cli_parm != NULL)
+        {
+            val.ma_1 = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.cbr_rt_allocation_profile.ma_1 is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, cbr_rt_allocation_profile, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_cbr_rt_allocation_profile val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_CBR_RT_ALLOCATION_PROFILE, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, cbr_rt_allocation_profile, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "cbr_rt_allocation_profile");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, cbr_rt_allocation_profile);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, cbr_rt_allocation_profile);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.cbr_nrt_allocation_profile.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_arr_u16_2 val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.cbr_nrt_allocation_profile.arr");
+        if (cli_parm != NULL)
+        {
+            int32_t i0;
+            if (cli_parm->array_size != 2)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "array filter.cbr_nrt_allocation_profile.arr must have 2 elements\n");
+                return BCM_ERR_PARM;
+            }
+
+            for (i0 = 0; i0 < 2; i0++)
+            {
+                val.arr[i0] = cli_parm->values[i0].unumber;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.cbr_nrt_allocation_profile.arr is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, cbr_nrt_allocation_profile, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_arr_u16_2 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_CBR_NRT_ALLOCATION_PROFILE, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, cbr_nrt_allocation_profile, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "cbr_nrt_allocation_profile");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, cbr_nrt_allocation_profile);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, cbr_nrt_allocation_profile);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.power_management.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_onu_power_management_configuration val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.power_management.ilowpower");
+        if (cli_parm != NULL)
+        {
+            val.ilowpower = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.power_management.ilowpower is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.power_management.iaware");
+        if (cli_parm != NULL)
+        {
+            val.iaware = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.power_management.iaware is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.power_management.itransinit");
+        if (cli_parm != NULL)
+        {
+            val.itransinit = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.power_management.itransinit is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.power_management.itxinit");
+        if (cli_parm != NULL)
+        {
+            val.itxinit = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.power_management.itxinit is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.power_management.irxoff");
+        if (cli_parm != NULL)
+        {
+            val.irxoff = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.power_management.irxoff is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.power_management.low_power_clobi");
+        if (cli_parm != NULL)
+        {
+            val.low_power_clobi = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.power_management.low_power_clobi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, power_management, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_onu_power_management_configuration val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_POWER_MANAGEMENT, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, power_management, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "power_management");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, power_management);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, power_management);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.rogue_onu_detection_process.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_rogue_onu_detection_process val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.rogue_onu_detection_process.control");
+        if (cli_parm != NULL)
+        {
+            val.control = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.rogue_onu_detection_process.control is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "filter.rogue_onu_detection_process.detection_algorithm.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "filter.rogue_onu_detection_process.detection_algorithm.algorithm_type");
+            if (cli_parm != NULL)
+            {
+                val.detection_algorithm.algorithm_type = (bcmolt_rogue_detection_algorithm_type) cli_parm->value.enum_val;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.rogue_onu_detection_process.detection_algorithm.algorithm_type is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            switch (val.detection_algorithm.algorithm_type)
+            {
+                case BCMOLT_ROGUE_DETECTION_ALGORITHM_TYPE_EARLY_ROGUE_DETECTION:
+                    cli_parm = bcmcli_find_named_parm(session, "filter.rogue_onu_detection_process.detection_algorithm.measurement_type");
+                    if (cli_parm != NULL)
+                    {
+                        val.detection_algorithm.u.early_rogue_detection.measurement_type = (bcmolt_rogue_detection_window) cli_parm->value.enum_val;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "filter.rogue_onu_detection_process.detection_algorithm.measurement_type is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "filter.rogue_onu_detection_process.detection_algorithm.interval");
+                    if (cli_parm != NULL)
+                    {
+                        val.detection_algorithm.u.early_rogue_detection.interval = cli_parm->value.unumber;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "filter.rogue_onu_detection_process.detection_algorithm.interval is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "filter.rogue_onu_detection_process.detection_algorithm.second_ranging_window");
+                    if (cli_parm != NULL)
+                    {
+                        val.detection_algorithm.u.early_rogue_detection.second_ranging_window = cli_parm->value.number;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "filter.rogue_onu_detection_process.detection_algorithm.second_ranging_window is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "filter.rogue_onu_detection_process.detection_algorithm.alloc_type_to_scan");
+                    if (cli_parm != NULL)
+                    {
+                        val.detection_algorithm.u.early_rogue_detection.alloc_type_to_scan = (bcmolt_alloc_type_to_scan) cli_parm->value.enum_val;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "filter.rogue_onu_detection_process.detection_algorithm.alloc_type_to_scan is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_ROGUE_DETECTION_ALGORITHM_TYPE_SPECIAL_MAP:
+                    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.rogue_onu_detection_process.detection_algorithm.accesses.");
+                    if (cli_parm != NULL)
+                    {
+                        int32_t i1;
+                        val.detection_algorithm.u.special_map.accesses.val = apicli_byte_pool_calloc(byte_pool, cli_parm->array_size * sizeof(*val.detection_algorithm.u.special_map.accesses.val));
+                        if (val.detection_algorithm.u.special_map.accesses.val == NULL)
+                        {
+                            apicli_print_complete(session, BCM_ERR_NOMEM, "\n");
+                            return BCM_ERR_NOMEM;
+                        }
+
+                        val.detection_algorithm.u.special_map.accesses.len = cli_parm->array_size;
+                        cli_parm = bcmcli_find_named_parm(session, "filter.rogue_onu_detection_process.detection_algorithm.accesses.plo_size");
+                        if (cli_parm != NULL)
+                        {
+                            if (cli_parm->array_size != val.detection_algorithm.u.special_map.accesses.len)
+                            {
+                                apicli_print_complete(session, BCM_ERR_PARM, "filter.rogue_onu_detection_process.detection_algorithm.accesses.plo_size is a different size than other arrays in the struct\n");
+                                return BCM_ERR_PARM;
+                            }
+
+                            for (i1 = 0; i1 < val.detection_algorithm.u.special_map.accesses.len; i1++)
+                            {
+                                val.detection_algorithm.u.special_map.accesses.val[i1].plo_size = cli_parm->values[i1].unumber;
+                            }
+                        }
+
+                        cli_parm = bcmcli_find_named_parm(session, "filter.rogue_onu_detection_process.detection_algorithm.accesses.alloc_id");
+                        if (cli_parm != NULL)
+                        {
+                            if (cli_parm->array_size != val.detection_algorithm.u.special_map.accesses.len)
+                            {
+                                apicli_print_complete(session, BCM_ERR_PARM, "filter.rogue_onu_detection_process.detection_algorithm.accesses.alloc_id is a different size than other arrays in the struct\n");
+                                return BCM_ERR_PARM;
+                            }
+
+                            for (i1 = 0; i1 < val.detection_algorithm.u.special_map.accesses.len; i1++)
+                            {
+                                val.detection_algorithm.u.special_map.accesses.val[i1].alloc_id = (bcmolt_pon_alloc_id) cli_parm->values[i1].unumber;
+                            }
+                        }
+
+                        cli_parm = bcmcli_find_named_parm(session, "filter.rogue_onu_detection_process.detection_algorithm.accesses.onu_id");
+                        if (cli_parm != NULL)
+                        {
+                            if (cli_parm->array_size != val.detection_algorithm.u.special_map.accesses.len)
+                            {
+                                apicli_print_complete(session, BCM_ERR_PARM, "filter.rogue_onu_detection_process.detection_algorithm.accesses.onu_id is a different size than other arrays in the struct\n");
+                                return BCM_ERR_PARM;
+                            }
+
+                            for (i1 = 0; i1 < val.detection_algorithm.u.special_map.accesses.len; i1++)
+                            {
+                                val.detection_algorithm.u.special_map.accesses.val[i1].onu_id = (bcmolt_pon_onu_id) cli_parm->values[i1].unumber;
+                            }
+                        }
+
+                        cli_parm = bcmcli_find_named_parm(session, "filter.rogue_onu_detection_process.detection_algorithm.accesses.access_size");
+                        if (cli_parm != NULL)
+                        {
+                            if (cli_parm->array_size != val.detection_algorithm.u.special_map.accesses.len)
+                            {
+                                apicli_print_complete(session, BCM_ERR_PARM, "filter.rogue_onu_detection_process.detection_algorithm.accesses.access_size is a different size than other arrays in the struct\n");
+                                return BCM_ERR_PARM;
+                            }
+
+                            for (i1 = 0; i1 < val.detection_algorithm.u.special_map.accesses.len; i1++)
+                            {
+                                val.detection_algorithm.u.special_map.accesses.val[i1].access_size = cli_parm->values[i1].unumber;
+                            }
+                        }
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "filter.rogue_onu_detection_process.detection_algorithm.accesses is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_ROGUE_DETECTION_ALGORITHM_TYPE_EXTENDED_GUARD_TIME:
+                    cli_parm = bcmcli_find_named_parm(session, "filter.rogue_onu_detection_process.detection_algorithm.additional_guard_time");
+                    if (cli_parm != NULL)
+                    {
+                        val.detection_algorithm.u.extended_guard_time.additional_guard_time = cli_parm->value.unumber;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "filter.rogue_onu_detection_process.detection_algorithm.additional_guard_time is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                default:
+                    apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+                    return BCM_ERR_RANGE;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.rogue_onu_detection_process.detection_algorithm is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, rogue_onu_detection_process, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_rogue_onu_detection_process val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_ROGUE_ONU_DETECTION_PROCESS, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, rogue_onu_detection_process, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rogue_onu_detection_process");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, rogue_onu_detection_process);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, rogue_onu_detection_process);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.periodic_standby_pon_monitoring.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_periodic_standby_pon_monitoring val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.periodic_standby_pon_monitoring.interval");
+        if (cli_parm != NULL)
+        {
+            val.interval = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.periodic_standby_pon_monitoring.interval is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.periodic_standby_pon_monitoring.control");
+        if (cli_parm != NULL)
+        {
+            val.control = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.periodic_standby_pon_monitoring.control is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, periodic_standby_pon_monitoring, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_periodic_standby_pon_monitoring val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_PERIODIC_STANDBY_PON_MONITORING, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, periodic_standby_pon_monitoring, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "periodic_standby_pon_monitoring");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, periodic_standby_pon_monitoring);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, periodic_standby_pon_monitoring);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.dba_mode");
+    if (cli_parm != NULL)
+    {
+        bcmolt_dba_mode val;
+        val = (bcmolt_dba_mode) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, dba_mode, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, dba_mode, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_DBA_MODE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "dba_mode");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, dba_mode);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, dba_mode);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.ploam_handling.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_ploam_handling val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.ploam_handling.ack_timeout");
+        if (cli_parm != NULL)
+        {
+            val.ack_timeout = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.ploam_handling.ack_timeout is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.ploam_handling.retrans_ranging_time");
+        if (cli_parm != NULL)
+        {
+            val.retrans_ranging_time = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.ploam_handling.retrans_ranging_time is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.ploam_handling.retrans_assign_alloc_id");
+        if (cli_parm != NULL)
+        {
+            val.retrans_assign_alloc_id = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.ploam_handling.retrans_assign_alloc_id is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.ploam_handling.retrans_key_control");
+        if (cli_parm != NULL)
+        {
+            val.retrans_key_control = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.ploam_handling.retrans_key_control is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.ploam_handling.retrans_request_registration");
+        if (cli_parm != NULL)
+        {
+            val.retrans_request_registration = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.ploam_handling.retrans_request_registration is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, ploam_handling, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_xgpon_ploam_handling val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_PLOAM_HANDLING, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, ploam_handling, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ploam_handling");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, ploam_handling);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, ploam_handling);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.min_data_alloc_id");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_alloc_id val;
+        val = (bcmolt_xgpon_alloc_id) cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, min_data_alloc_id, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, min_data_alloc_id, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_MIN_DATA_ALLOC_ID, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "min_data_alloc_id");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, min_data_alloc_id);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, min_data_alloc_id);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.min_data_gem_port_id");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_gem_id val;
+        val = (bcmolt_xgpon_gem_id) cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, min_data_gem_port_id, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, min_data_gem_port_id, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_MIN_DATA_GEM_PORT_ID, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "min_data_gem_port_id");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, min_data_gem_port_id);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, min_data_gem_port_id);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.multicast_key.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_multicast_key val = { };
+        cli_parm = bcmcli_find_parm_by_prefix(session, "filter.multicast_key.key.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "filter.multicast_key.key.bytes");
+            if (cli_parm != NULL)
+            {
+                if (bcmolt_buf_get_used(&cli_parm->value.buffer) != 16)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "buffer filter.multicast_key.key.bytes must have 16 bytes\n");
+                    return BCM_ERR_PARM;
+                }
+
+                bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+                bcmolt_buf_read(&cli_parm->value.buffer, val.key.bytes, 16);
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.multicast_key.key.bytes is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.multicast_key.key is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.multicast_key.key_control");
+        if (cli_parm != NULL)
+        {
+            val.key_control = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.multicast_key.key_control is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, multicast_key, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_xgpon_multicast_key val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_MULTICAST_KEY, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, multicast_key, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "multicast_key");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, multicast_key);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, multicast_key);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.prbs_checker.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_prbs_checker_config val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.prbs_checker.polynom");
+        if (cli_parm != NULL)
+        {
+            val.polynom = (bcmolt_prbs_polynomial) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.prbs_checker.polynom is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.prbs_checker.mode");
+        if (cli_parm != NULL)
+        {
+            val.mode = (bcmolt_prbs_checker_mode) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.prbs_checker.mode is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.prbs_checker.data_invert");
+        if (cli_parm != NULL)
+        {
+            val.data_invert = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.prbs_checker.data_invert is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.prbs_checker.control");
+        if (cli_parm != NULL)
+        {
+            val.control = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.prbs_checker.control is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, prbs_checker, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_prbs_checker_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_PRBS_CHECKER, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, prbs_checker, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "prbs_checker");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, prbs_checker);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, prbs_checker);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.prbs_generator.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_prbs_generator_config val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.prbs_generator.polynom");
+        if (cli_parm != NULL)
+        {
+            val.polynom = (bcmolt_prbs_polynomial) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.prbs_generator.polynom is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.prbs_generator.error_insert");
+        if (cli_parm != NULL)
+        {
+            val.error_insert = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.prbs_generator.error_insert is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.prbs_generator.invert");
+        if (cli_parm != NULL)
+        {
+            val.invert = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.prbs_generator.invert is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.prbs_generator.control");
+        if (cli_parm != NULL)
+        {
+            val.control = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.prbs_generator.control is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, prbs_generator, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_prbs_generator_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_PRBS_GENERATOR, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, prbs_generator, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "prbs_generator");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, prbs_generator);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, prbs_generator);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.prbs_status.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_prbs_status val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.prbs_status.lock_state");
+        if (cli_parm != NULL)
+        {
+            val.lock_state = (bcmolt_prbs_lock_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.prbs_status.lock_state is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.prbs_status.error_counts");
+        if (cli_parm != NULL)
+        {
+            val.error_counts = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.prbs_status.error_counts is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, prbs_status, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_prbs_status val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_PRBS_STATUS, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, prbs_status, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "prbs_status");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, prbs_status);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, prbs_status);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.automatic_onu_deactivation.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_automatic_onu_deactivation val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.automatic_onu_deactivation.los");
+        if (cli_parm != NULL)
+        {
+            val.los = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.automatic_onu_deactivation.los is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.automatic_onu_deactivation.onu_alarms");
+        if (cli_parm != NULL)
+        {
+            val.onu_alarms = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.automatic_onu_deactivation.onu_alarms is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.automatic_onu_deactivation.tiwi");
+        if (cli_parm != NULL)
+        {
+            val.tiwi = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.automatic_onu_deactivation.tiwi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.automatic_onu_deactivation.ack_timeout");
+        if (cli_parm != NULL)
+        {
+            val.ack_timeout = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.automatic_onu_deactivation.ack_timeout is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.automatic_onu_deactivation.sfi");
+        if (cli_parm != NULL)
+        {
+            val.sfi = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.automatic_onu_deactivation.sfi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.automatic_onu_deactivation.loki");
+        if (cli_parm != NULL)
+        {
+            val.loki = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.automatic_onu_deactivation.loki is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, automatic_onu_deactivation, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_automatic_onu_deactivation val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_AUTOMATIC_ONU_DEACTIVATION, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, automatic_onu_deactivation, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "automatic_onu_deactivation");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, automatic_onu_deactivation);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, automatic_onu_deactivation);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.us_bandwidth_limit");
+    if (cli_parm != NULL)
+    {
+        uint32_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, us_bandwidth_limit, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, us_bandwidth_limit, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_US_BANDWIDTH_LIMIT, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "us_bandwidth_limit");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, us_bandwidth_limit);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, us_bandwidth_limit);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.all_onus.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_onu_with_state_list_u16_max_510 val = { };
+        int32_t i2;
+        val.val = apicli_byte_pool_calloc(byte_pool, cli_parm->array_size * sizeof(*val.val));
+        if (val.val == NULL)
+        {
+            apicli_print_complete(session, BCM_ERR_NOMEM, "\n");
+            return BCM_ERR_NOMEM;
+        }
+
+        val.len = cli_parm->array_size;
+        cli_parm = bcmcli_find_named_parm(session, "filter.all_onus.onu_id");
+        if (cli_parm != NULL)
+        {
+            if (cli_parm->array_size != val.len)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.all_onus.onu_id is a different size than other arrays in the struct\n");
+                return BCM_ERR_PARM;
+            }
+
+            for (i2 = 0; i2 < val.len; i2++)
+            {
+                val.val[i2].onu_id = (bcmolt_xgpon_onu_id) cli_parm->values[i2].unumber;
+            }
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.all_onus.state");
+        if (cli_parm != NULL)
+        {
+            if (cli_parm->array_size != val.len)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.all_onus.state is a different size than other arrays in the struct\n");
+                return BCM_ERR_PARM;
+            }
+
+            for (i2 = 0; i2 < val.len; i2++)
+            {
+                val.val[i2].state = (bcmolt_onu_state) cli_parm->values[i2].enum_val;
+            }
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, all_onus, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_xgpon_onu_with_state_list_u16_max_510 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_ALL_ONUS, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, all_onus, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "all_onus");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, all_onus);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, all_onus);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.all_mcast_gem_ports.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_gem_port_with_state_list_u16_max_128 val = { };
+        int32_t i3;
+        val.val = apicli_byte_pool_calloc(byte_pool, cli_parm->array_size * sizeof(*val.val));
+        if (val.val == NULL)
+        {
+            apicli_print_complete(session, BCM_ERR_NOMEM, "\n");
+            return BCM_ERR_NOMEM;
+        }
+
+        val.len = cli_parm->array_size;
+        cli_parm = bcmcli_find_named_parm(session, "filter.all_mcast_gem_ports.gem_id");
+        if (cli_parm != NULL)
+        {
+            if (cli_parm->array_size != val.len)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.all_mcast_gem_ports.gem_id is a different size than other arrays in the struct\n");
+                return BCM_ERR_PARM;
+            }
+
+            for (i3 = 0; i3 < val.len; i3++)
+            {
+                val.val[i3].gem_id = (bcmolt_xgpon_gem_id) cli_parm->values[i3].unumber;
+            }
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.all_mcast_gem_ports.state");
+        if (cli_parm != NULL)
+        {
+            if (cli_parm->array_size != val.len)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.all_mcast_gem_ports.state is a different size than other arrays in the struct\n");
+                return BCM_ERR_PARM;
+            }
+
+            for (i3 = 0; i3 < val.len; i3++)
+            {
+                val.val[i3].state = (bcmolt_xgpon_gem_port_state) cli_parm->values[i3].enum_val;
+            }
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, all_mcast_gem_ports, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_xgpon_gem_port_with_state_list_u16_max_128 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_ALL_MCAST_GEM_PORTS, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, all_mcast_gem_ports, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "all_mcast_gem_ports");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, all_mcast_gem_ports);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, all_mcast_gem_ports);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.debug.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_ni_debug val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.debug.increase_available_cbr_bw");
+        if (cli_parm != NULL)
+        {
+            val.increase_available_cbr_bw = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.debug.increase_available_cbr_bw is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.debug.inter_burst_gap_in_bytes");
+        if (cli_parm != NULL)
+        {
+            val.inter_burst_gap_in_bytes = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.debug.inter_burst_gap_in_bytes is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.debug.number_of_gem_ports_per_onu");
+        if (cli_parm != NULL)
+        {
+            val.number_of_gem_ports_per_onu = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.debug.number_of_gem_ports_per_onu is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, debug, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_xgpon_ni_debug val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_DEBUG, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, debug, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "debug");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, debug);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, debug);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.onu_upgrade_params.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_gpon_onu_upgrade_params val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.onu_upgrade_params.response_timeout_ms");
+        if (cli_parm != NULL)
+        {
+            val.response_timeout_ms = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.onu_upgrade_params.response_timeout_ms is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.onu_upgrade_params.max_retry_count");
+        if (cli_parm != NULL)
+        {
+            val.max_retry_count = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.onu_upgrade_params.max_retry_count is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.onu_upgrade_params.omci_format");
+        if (cli_parm != NULL)
+        {
+            val.omci_format = (bcmolt_omci_device_id) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.onu_upgrade_params.omci_format is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.onu_upgrade_params.window_size");
+        if (cli_parm != NULL)
+        {
+            val.window_size = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.onu_upgrade_params.window_size is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.onu_upgrade_params.activate_commit");
+        if (cli_parm != NULL)
+        {
+            val.activate_commit = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.onu_upgrade_params.activate_commit is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.onu_upgrade_params.delay_for_commit_ms");
+        if (cli_parm != NULL)
+        {
+            val.delay_for_commit_ms = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.onu_upgrade_params.delay_for_commit_ms is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.onu_upgrade_params.max_activation_attempts");
+        if (cli_parm != NULL)
+        {
+            val.max_activation_attempts = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.onu_upgrade_params.max_activation_attempts is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, onu_upgrade_params, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_gpon_onu_upgrade_params val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_ONU_UPGRADE_PARAMS, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, onu_upgrade_params, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_upgrade_params");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, onu_upgrade_params);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, onu_upgrade_params);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.ds_fec_mode");
+    if (cli_parm != NULL)
+    {
+        bcmolt_control_state val;
+        val = (bcmolt_control_state) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, ds_fec_mode, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, ds_fec_mode, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_DS_FEC_MODE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ds_fec_mode");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, ds_fec_mode);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, ds_fec_mode);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.dba_type");
+    if (cli_parm != NULL)
+    {
+        bcmolt_dba_type val;
+        val = (bcmolt_dba_type) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, dba_type, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, dba_type, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_DBA_TYPE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "dba_type");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, dba_type);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, dba_type);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.onu_tuning.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_onu_tuning_configuration val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.onu_tuning.tsource");
+        if (cli_parm != NULL)
+        {
+            val.tsource = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.onu_tuning.tsource is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.onu_tuning.ttarget");
+        if (cli_parm != NULL)
+        {
+            val.ttarget = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.onu_tuning.ttarget is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.onu_tuning.request_registration_required");
+        if (cli_parm != NULL)
+        {
+            val.request_registration_required = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.onu_tuning.request_registration_required is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, onu_tuning, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_onu_tuning_configuration val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_NI_CFG_ID_ONU_TUNING, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_ni, onu_tuning, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_tuning");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, onu_tuning);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, onu_tuning);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_ni, hw_pon_id) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_ni, available_bandwidth) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_ni, number_of_active_onus) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_ni, pon_status) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_ni, pon_distance) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_ni, ranging_window_size) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_ni, eqd_cycles_number) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_ni, drift_control) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_ni, los_alarm_threshold) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_ni, los_initial_value) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_ni, onu_alarms_thresholds) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_ni, ber_monitor) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_ni, onu_activation) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_ni, sn_acquisition) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_ni, key_exchange) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_ni, protection_switching) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_ni, protection_switching_debug) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_ni, cbr_rt_allocation_profile) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_ni, cbr_nrt_allocation_profile) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_ni, power_management) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_ni, rogue_onu_detection_process) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_ni, periodic_standby_pon_monitoring) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_ni, dba_mode) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_ni, ploam_handling) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_ni, min_data_alloc_id) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_ni, min_data_gem_port_id) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_ni, multicast_key) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_ni, prbs_checker) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_ni, prbs_generator) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_ni, prbs_status) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_ni, automatic_onu_deactivation) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_ni, us_bandwidth_limit) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_ni, all_onus) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_ni, all_mcast_gem_ports) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_ni, debug) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_ni, onu_upgrade_params) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_ni, ds_fec_mode) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_ni, dba_type) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_ni, onu_tuning))
+    {
+        BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, all_properties);
+        bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_ni, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);
+    bcmcli_log("bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_ni_stat_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_ni_stat stat;      /**< declare main API struct */
+    bcmolt_xgpon_ni_key key = { };  /**< declare key */
+    bcmos_bool clear_on_read;       /**< declare 'clear on read' flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_ni_stat stat;\n");
+    bcmcli_log("bcmolt_xgpon_ni_key key = {  };\n");
+    bcmcli_log("bcmos_bool clear_on_read;\n");
+    apicli_print_start(session, "bcmolt_stat_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_NI_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* set stat flags from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "clear");
+    if (cli_parm != NULL)
+    {
+        clear_on_read = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "clear is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("clear_on_read = %s;\n", (clear_on_read) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* init the API struct */
+    BCMOLT_STAT_INIT(&stat, xgpon_ni, key);
+    bcmcli_log("BCMOLT_STAT_INIT(&stat, xgpon_ni, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "fec_codewords");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, fec_codewords);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, fec_codewords);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "bip32_bytes");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, bip32_bytes);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, bip32_bytes);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "bip32_errors");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, bip32_errors);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, bip32_errors);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_xgtc_headers");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, rx_xgtc_headers);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, rx_xgtc_headers);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_xgtc_corrected");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, rx_xgtc_corrected);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, rx_xgtc_corrected);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_xgtc_uncorrected");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, rx_xgtc_uncorrected);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, rx_xgtc_uncorrected);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_xgem");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, rx_xgem);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, rx_xgem);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_xgem_dropped");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, rx_xgem_dropped);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, rx_xgem_dropped);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_xgem_idle");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, rx_xgem_idle);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, rx_xgem_idle);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_xgem_corrected");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, rx_xgem_corrected);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, rx_xgem_corrected);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_crc_error");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, rx_crc_error);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, rx_crc_error);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_fragment_error");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, rx_fragment_error);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, rx_fragment_error);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_packets_dropped");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, rx_packets_dropped);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, rx_packets_dropped);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_dropped_too_short");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, rx_dropped_too_short);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, rx_dropped_too_short);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_dropped_too_long");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, rx_dropped_too_long);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, rx_dropped_too_long);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_key_error");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, rx_key_error);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, rx_key_error);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_ploams");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, tx_ploams);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, tx_ploams);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_ploams_dropped");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, rx_ploams_dropped);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, rx_ploams_dropped);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_allocations_valid");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, rx_allocations_valid);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, rx_allocations_valid);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_allocations_invalid");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, rx_allocations_invalid);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, rx_allocations_invalid);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_allocations_disabled");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, rx_allocations_disabled);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, rx_allocations_disabled);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_ploams");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, rx_ploams);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, rx_ploams);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_ploams_non_idle");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, rx_ploams_non_idle);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, rx_ploams_non_idle);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_ploams_error");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, rx_ploams_error);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, rx_ploams_error);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_cpu");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, rx_cpu);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, rx_cpu);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_omci");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, rx_omci);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, rx_omci);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_omci_packets_crc_error");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, rx_omci_packets_crc_error);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, rx_omci_packets_crc_error);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_packets");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, tx_packets);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, tx_packets);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_xgem");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, tx_xgem);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, tx_xgem);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_cpu");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, tx_cpu);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, tx_cpu);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_omci");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, tx_omci);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, tx_omci);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_cpu_omci_packets_dropped");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, tx_cpu_omci_packets_dropped);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, tx_cpu_omci_packets_dropped);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_dropped_illegal_length");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, tx_dropped_illegal_length);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, tx_dropped_illegal_length);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_dropped_tpid_miss");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, tx_dropped_tpid_miss);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, tx_dropped_tpid_miss);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_dropped_vid_miss");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, tx_dropped_vid_miss);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, tx_dropped_vid_miss);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_ni, fec_codewords) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_ni, bip32_bytes) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_ni, bip32_errors) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_ni, rx_xgtc_headers) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_ni, rx_xgtc_corrected) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_ni, rx_xgtc_uncorrected) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_ni, rx_xgem) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_ni, rx_xgem_dropped) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_ni, rx_xgem_idle) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_ni, rx_xgem_corrected) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_ni, rx_crc_error) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_ni, rx_fragment_error) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_ni, rx_packets_dropped) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_ni, rx_dropped_too_short) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_ni, rx_dropped_too_long) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_ni, rx_key_error) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_ni, tx_ploams) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_ni, rx_ploams_dropped) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_ni, rx_allocations_valid) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_ni, rx_allocations_invalid) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_ni, rx_allocations_disabled) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_ni, rx_ploams) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_ni, rx_ploams_non_idle) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_ni, rx_ploams_error) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_ni, rx_cpu) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_ni, rx_omci) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_ni, rx_omci_packets_crc_error) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_ni, tx_packets) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_ni, tx_xgem) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_ni, tx_cpu) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_ni, tx_omci) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_ni, tx_cpu_omci_packets_dropped) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_ni, tx_dropped_illegal_length) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_ni, tx_dropped_tpid_miss) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_ni, tx_dropped_vid_miss))
+    {
+        BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, all_properties);
+        bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_ni, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_stat_get(device_id, &stat.hdr, clear_on_read);
+    bcmcli_log("bcmolt_stat_get(device_id, &stat.hdr, clear_on_read);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &stat.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, stat.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_ni_oper_set_pon_state_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_ni_set_pon_state oper; /**< declare main API struct */
+    bcmolt_xgpon_ni_key key = { };      /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_ni_set_pon_state oper;\n");
+    bcmcli_log("bcmolt_xgpon_ni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_NI_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, xgpon_ni, set_pon_state, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, xgpon_ni, set_pon_state, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "pon_state");
+    if (cli_parm != NULL)
+    {
+        bcmolt_pon_operation val;
+        val = (bcmolt_pon_operation) cli_parm->value.enum_val;
+        BCMOLT_OPER_PROP_SET(&oper, xgpon_ni, set_pon_state, pon_state, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, xgpon_ni, set_pon_state, pon_state, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_OPER, BCMOLT_XGPON_NI_OPER_ID_SET_PON_STATE, BCMOLT_XGPON_NI_SET_PON_STATE_ID_PON_STATE, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_ni_oper_reset_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_ni_reset oper;     /**< declare main API struct */
+    bcmolt_xgpon_ni_key key = { };  /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_ni_reset oper;\n");
+    bcmcli_log("bcmolt_xgpon_ni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_NI_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, xgpon_ni, reset, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, xgpon_ni, reset, key);\n");
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_ni_oper_disable_serial_number_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_ni_disable_serial_number oper; /**< declare main API struct */
+    bcmolt_xgpon_ni_key key = { };              /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_ni_disable_serial_number oper;\n");
+    bcmcli_log("bcmolt_xgpon_ni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_NI_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, xgpon_ni, disable_serial_number, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, xgpon_ni, disable_serial_number, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "control");
+    if (cli_parm != NULL)
+    {
+        bcmolt_disable_serial_number_control val;
+        val = (bcmolt_disable_serial_number_control) cli_parm->value.enum_val;
+        BCMOLT_OPER_PROP_SET(&oper, xgpon_ni, disable_serial_number, control, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, xgpon_ni, disable_serial_number, control, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_OPER, BCMOLT_XGPON_NI_OPER_ID_DISABLE_SERIAL_NUMBER, BCMOLT_XGPON_NI_DISABLE_SERIAL_NUMBER_ID_CONTROL, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "serial_number.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_serial_number val = { };
+        cli_parm = bcmcli_find_named_parm(session, "serial_number.vendor_id");
+        if (cli_parm != NULL)
+        {
+            if (bcmolt_buf_get_used(&cli_parm->value.buffer) != 4)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "buffer serial_number.vendor_id must have 4 bytes\n");
+                return BCM_ERR_PARM;
+            }
+
+            bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+            bcmolt_buf_read(&cli_parm->value.buffer, val.vendor_id, 4);
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "serial_number.vendor_id is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "serial_number.vendor_specific");
+        if (cli_parm != NULL)
+        {
+            if (bcmolt_buf_get_used(&cli_parm->value.buffer) != 4)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "buffer serial_number.vendor_specific must have 4 bytes\n");
+                return BCM_ERR_PARM;
+            }
+
+            bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+            bcmolt_buf_read(&cli_parm->value.buffer, val.vendor_specific, 4);
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "serial_number.vendor_specific is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_OPER_PROP_SET(&oper, xgpon_ni, disable_serial_number, serial_number, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_serial_number val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_OPER, BCMOLT_XGPON_NI_OPER_ID_DISABLE_SERIAL_NUMBER, BCMOLT_XGPON_NI_DISABLE_SERIAL_NUMBER_ID_SERIAL_NUMBER, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, xgpon_ni, disable_serial_number, serial_number, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_ni_oper_single_request_standby_pon_monitoring_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_ni_single_request_standby_pon_monitoring oper; /**< declare main API struct */
+    bcmolt_xgpon_ni_key key = { };  /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_ni_single_request_standby_pon_monitoring oper;\n");
+    bcmcli_log("bcmolt_xgpon_ni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_NI_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, xgpon_ni, single_request_standby_pon_monitoring, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, xgpon_ni, single_request_standby_pon_monitoring, key);\n");
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_ni_oper_set_onu_state_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_ni_set_onu_state oper; /**< declare main API struct */
+    bcmolt_xgpon_ni_key key = { };      /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_ni_set_onu_state oper;\n");
+    bcmcli_log("bcmolt_xgpon_ni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_NI_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, xgpon_ni, set_onu_state, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, xgpon_ni, set_onu_state, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "onu_state");
+    if (cli_parm != NULL)
+    {
+        bcmolt_onu_operation val;
+        val = (bcmolt_onu_operation) cli_parm->value.enum_val;
+        BCMOLT_OPER_PROP_SET(&oper, xgpon_ni, set_onu_state, onu_state, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, xgpon_ni, set_onu_state, onu_state, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_OPER, BCMOLT_XGPON_NI_OPER_ID_SET_ONU_STATE, BCMOLT_XGPON_NI_SET_ONU_STATE_ID_ONU_STATE, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_ni_oper_run_special_bw_map_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_ni_run_special_bw_map oper;    /**< declare main API struct */
+    bcmolt_xgpon_ni_key key = { };              /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_ni_run_special_bw_map oper;\n");
+    bcmcli_log("bcmolt_xgpon_ni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_NI_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, xgpon_ni, run_special_bw_map, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, xgpon_ni, run_special_bw_map, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "number_of_cycle");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_OPER_PROP_SET(&oper, xgpon_ni, run_special_bw_map, number_of_cycle, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, xgpon_ni, run_special_bw_map, number_of_cycle, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_OPER, BCMOLT_XGPON_NI_OPER_ID_RUN_SPECIAL_BW_MAP, BCMOLT_XGPON_NI_RUN_SPECIAL_BW_MAP_ID_NUMBER_OF_CYCLE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "allocation_number");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_OPER_PROP_SET(&oper, xgpon_ni, run_special_bw_map, allocation_number, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, xgpon_ni, run_special_bw_map, allocation_number, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_OPER, BCMOLT_XGPON_NI_OPER_ID_RUN_SPECIAL_BW_MAP, BCMOLT_XGPON_NI_RUN_SPECIAL_BW_MAP_ID_ALLOCATION_NUMBER, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "bw_map_array");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_OPER_PROP_SET(&oper, xgpon_ni, run_special_bw_map, bw_map_array, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, xgpon_ni, run_special_bw_map, bw_map_array, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_OPER, BCMOLT_XGPON_NI_OPER_ID_RUN_SPECIAL_BW_MAP, BCMOLT_XGPON_NI_RUN_SPECIAL_BW_MAP_ID_BW_MAP_ARRAY, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_ni_oper_rogue_detection_window_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_ni_rogue_detection_window oper;    /**< declare main API struct */
+    bcmolt_xgpon_ni_key key = { };                  /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_ni_rogue_detection_window oper;\n");
+    bcmcli_log("bcmolt_xgpon_ni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_NI_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, xgpon_ni, rogue_detection_window, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, xgpon_ni, rogue_detection_window, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "window_type");
+    if (cli_parm != NULL)
+    {
+        bcmolt_rogue_detection_window val;
+        val = (bcmolt_rogue_detection_window) cli_parm->value.enum_val;
+        BCMOLT_OPER_PROP_SET(&oper, xgpon_ni, rogue_detection_window, window_type, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, xgpon_ni, rogue_detection_window, window_type, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_OPER, BCMOLT_XGPON_NI_OPER_ID_ROGUE_DETECTION_WINDOW, BCMOLT_XGPON_NI_ROGUE_DETECTION_WINDOW_ID_WINDOW_TYPE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "alloc_id");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_alloc_id val;
+        val = (bcmolt_xgpon_alloc_id) cli_parm->value.unumber;
+        BCMOLT_OPER_PROP_SET(&oper, xgpon_ni, rogue_detection_window, alloc_id, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, xgpon_ni, rogue_detection_window, alloc_id, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_OPER, BCMOLT_XGPON_NI_OPER_ID_ROGUE_DETECTION_WINDOW, BCMOLT_XGPON_NI_ROGUE_DETECTION_WINDOW_ID_ALLOC_ID, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_onu_id val;
+        val = (bcmolt_xgpon_onu_id) cli_parm->value.unumber;
+        BCMOLT_OPER_PROP_SET(&oper, xgpon_ni, rogue_detection_window, onu_id, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, xgpon_ni, rogue_detection_window, onu_id, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_OPER, BCMOLT_XGPON_NI_OPER_ID_ROGUE_DETECTION_WINDOW, BCMOLT_XGPON_NI_ROGUE_DETECTION_WINDOW_ID_ONU_ID, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "second_ranging_window");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_OPER_PROP_SET(&oper, xgpon_ni, rogue_detection_window, second_ranging_window, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, xgpon_ni, rogue_detection_window, second_ranging_window, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_OPER, BCMOLT_XGPON_NI_OPER_ID_ROGUE_DETECTION_WINDOW, BCMOLT_XGPON_NI_ROGUE_DETECTION_WINDOW_ID_SECOND_RANGING_WINDOW, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_ni_proxy_cpu_packets_send(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_ni_cpu_packets proxy;  /**< declare main API struct */
+    bcmolt_xgpon_ni_key key = { };      /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_ni_cpu_packets proxy;\n");
+    bcmcli_log("bcmolt_xgpon_ni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_proxy_send");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_NI_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_PROXY_INIT(&proxy, xgpon_ni, cpu_packets, key);
+    bcmcli_log("BCMOLT_PROXY_INIT(&proxy, xgpon_ni, cpu_packets, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "packet_type");
+    if (cli_parm != NULL)
+    {
+        bcmolt_packet_type val;
+        val = (bcmolt_packet_type) cli_parm->value.enum_val;
+        BCMOLT_PROXY_PROP_SET(&proxy, xgpon_ni, cpu_packets, packet_type, val);
+        bcmcli_log("BCMOLT_PROXY_PROP_SET(&proxy, xgpon_ni, cpu_packets, packet_type, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_PROXY, BCMOLT_XGPON_NI_PROXY_ID_CPU_PACKETS, BCMOLT_XGPON_NI_CPU_PACKETS_ID_PACKET_TYPE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "calc_crc");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_PROXY_PROP_SET(&proxy, xgpon_ni, cpu_packets, calc_crc, val);
+        bcmcli_log("BCMOLT_PROXY_PROP_SET(&proxy, xgpon_ni, cpu_packets, calc_crc, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_PROXY, BCMOLT_XGPON_NI_PROXY_ID_CPU_PACKETS, BCMOLT_XGPON_NI_CPU_PACKETS_ID_CALC_CRC, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "gem_port_list");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_gem_id_list_u8_max_16 val = { };
+        int32_t i0;
+        val.val = apicli_byte_pool_calloc(byte_pool, cli_parm->array_size * sizeof(*val.val));
+        if (val.val == NULL)
+        {
+            apicli_print_complete(session, BCM_ERR_NOMEM, "\n");
+            return BCM_ERR_NOMEM;
+        }
+
+        val.len = cli_parm->array_size;
+        for (i0 = 0; i0 < val.len; i0++)
+        {
+            val.val[i0] = (bcmolt_xgpon_gem_id) cli_parm->values[i0].unumber;
+        }
+
+        BCMOLT_PROXY_PROP_SET(&proxy, xgpon_ni, cpu_packets, gem_port_list, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_xgpon_gem_id_list_u8_max_16 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_PROXY, BCMOLT_XGPON_NI_PROXY_ID_CPU_PACKETS, BCMOLT_XGPON_NI_CPU_PACKETS_ID_GEM_PORT_LIST, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_PROXY_PROP_SET(&proxy, xgpon_ni, cpu_packets, gem_port_list, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "buffer");
+    if (cli_parm != NULL)
+    {
+        bcmolt_u8_list_u32_max_2048 val = { };
+        val.len = bcmolt_buf_get_used(&cli_parm->value.buffer);
+        val.val = apicli_byte_pool_calloc(byte_pool, val.len);
+        if (val.val == NULL)
+        {
+            apicli_print_complete(session, BCM_ERR_NOMEM, "\n");
+            return BCM_ERR_NOMEM;
+        }
+
+        bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+        bcmolt_buf_read(&cli_parm->value.buffer, val.val, val.len);
+        BCMOLT_PROXY_PROP_SET(&proxy, xgpon_ni, cpu_packets, buffer, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_u8_list_u32_max_2048 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_PROXY, BCMOLT_XGPON_NI_PROXY_ID_CPU_PACKETS, BCMOLT_XGPON_NI_CPU_PACKETS_ID_BUFFER, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_PROXY_PROP_SET(&proxy, xgpon_ni, cpu_packets, buffer, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    /* call API */
+    err = bcmolt_proxy_send(device_id, &proxy.hdr);
+    bcmcli_log("bcmolt_proxy_send(device_id, &proxy.hdr);\n");
+    apicli_print_complete(session, err, proxy.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_ni_proxy_broadcast_ploam_packet_send(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_ni_broadcast_ploam_packet proxy;   /**< declare main API struct */
+    bcmolt_xgpon_ni_key key = { };                  /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_ni_broadcast_ploam_packet proxy;\n");
+    bcmcli_log("bcmolt_xgpon_ni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_proxy_send");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_NI_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_PROXY_INIT(&proxy, xgpon_ni, broadcast_ploam_packet, key);
+    bcmcli_log("BCMOLT_PROXY_INIT(&proxy, xgpon_ni, broadcast_ploam_packet, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_parm_by_prefix(session, "ploam.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_arr_u8_40 val = { };
+        cli_parm = bcmcli_find_named_parm(session, "ploam.arr");
+        if (cli_parm != NULL)
+        {
+            if (bcmolt_buf_get_used(&cli_parm->value.buffer) != 40)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "buffer ploam.arr must have 40 bytes\n");
+                return BCM_ERR_PARM;
+            }
+
+            bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+            bcmolt_buf_read(&cli_parm->value.buffer, val.arr, 40);
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "ploam.arr is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_PROXY_PROP_SET(&proxy, xgpon_ni, broadcast_ploam_packet, ploam, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_arr_u8_40 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_PROXY, BCMOLT_XGPON_NI_PROXY_ID_BROADCAST_PLOAM_PACKET, BCMOLT_XGPON_NI_BROADCAST_PLOAM_PACKET_ID_PLOAM, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_PROXY_PROP_SET(&proxy, xgpon_ni, broadcast_ploam_packet, ploam, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    /* call API */
+    err = bcmolt_proxy_send(device_id, &proxy.hdr);
+    bcmcli_log("bcmolt_proxy_send(device_id, &proxy.hdr);\n");
+    apicli_print_complete(session, err, proxy.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_ni_oper_tod_request_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_ni_tod_request oper;   /**< declare main API struct */
+    bcmolt_xgpon_ni_key key = { };      /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_ni_tod_request oper;\n");
+    bcmcli_log("bcmolt_xgpon_ni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_NI_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, xgpon_ni, tod_request, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, xgpon_ni, tod_request, key);\n");
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_ni_oper_start_onu_upgrade_submit(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_ni_start_onu_upgrade oper; /**< declare main API struct */
+    bcmolt_xgpon_ni_key key = { };          /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_ni_start_onu_upgrade oper;\n");
+    bcmcli_log("bcmolt_xgpon_ni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_NI_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, xgpon_ni, start_onu_upgrade, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, xgpon_ni, start_onu_upgrade, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "list_of_onu_ids");
+    if (cli_parm != NULL)
+    {
+        bcmolt_pon_onu_id_list_u32 val = { };
+        int32_t i0;
+        val.val = apicli_byte_pool_calloc(byte_pool, cli_parm->array_size * sizeof(*val.val));
+        if (val.val == NULL)
+        {
+            apicli_print_complete(session, BCM_ERR_NOMEM, "\n");
+            return BCM_ERR_NOMEM;
+        }
+
+        val.len = cli_parm->array_size;
+        for (i0 = 0; i0 < val.len; i0++)
+        {
+            val.val[i0] = (bcmolt_pon_onu_id) cli_parm->values[i0].unumber;
+        }
+
+        BCMOLT_OPER_PROP_SET(&oper, xgpon_ni, start_onu_upgrade, list_of_onu_ids, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_pon_onu_id_list_u32 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_OPER, BCMOLT_XGPON_NI_OPER_ID_START_ONU_UPGRADE, BCMOLT_XGPON_NI_START_ONU_UPGRADE_ID_LIST_OF_ONU_IDS, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, xgpon_ni, start_onu_upgrade, list_of_onu_ids, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_ni_oper_adjust_tx_wavelength_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_ni_adjust_tx_wavelength oper;  /**< declare main API struct */
+    bcmolt_xgpon_ni_key key = { };              /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_ni_adjust_tx_wavelength oper;\n");
+    bcmcli_log("bcmolt_xgpon_ni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_NI_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, xgpon_ni, adjust_tx_wavelength, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, xgpon_ni, adjust_tx_wavelength, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_parm_by_prefix(session, "serial_number.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_serial_number val = { };
+        cli_parm = bcmcli_find_named_parm(session, "serial_number.vendor_id");
+        if (cli_parm != NULL)
+        {
+            if (bcmolt_buf_get_used(&cli_parm->value.buffer) != 4)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "buffer serial_number.vendor_id must have 4 bytes\n");
+                return BCM_ERR_PARM;
+            }
+
+            bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+            bcmolt_buf_read(&cli_parm->value.buffer, val.vendor_id, 4);
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "serial_number.vendor_id is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "serial_number.vendor_specific");
+        if (cli_parm != NULL)
+        {
+            if (bcmolt_buf_get_used(&cli_parm->value.buffer) != 4)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "buffer serial_number.vendor_specific must have 4 bytes\n");
+                return BCM_ERR_PARM;
+            }
+
+            bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+            bcmolt_buf_read(&cli_parm->value.buffer, val.vendor_specific, 4);
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "serial_number.vendor_specific is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_OPER_PROP_SET(&oper, xgpon_ni, adjust_tx_wavelength, serial_number, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_serial_number val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_OPER, BCMOLT_XGPON_NI_OPER_ID_ADJUST_TX_WAVELENGTH, BCMOLT_XGPON_NI_ADJUST_TX_WAVELENGTH_ID_SERIAL_NUMBER, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, xgpon_ni, adjust_tx_wavelength, serial_number, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "freqency_adjustment_direction");
+    if (cli_parm != NULL)
+    {
+        bcmolt_frequency_adjustment_direction val;
+        val = (bcmolt_frequency_adjustment_direction) cli_parm->value.enum_val;
+        BCMOLT_OPER_PROP_SET(&oper, xgpon_ni, adjust_tx_wavelength, freqency_adjustment_direction, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, xgpon_ni, adjust_tx_wavelength, freqency_adjustment_direction, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_OPER, BCMOLT_XGPON_NI_OPER_ID_ADJUST_TX_WAVELENGTH, BCMOLT_XGPON_NI_ADJUST_TX_WAVELENGTH_ID_FREQENCY_ADJUSTMENT_DIRECTION, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frequency_adjustment_size");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_OPER_PROP_SET(&oper, xgpon_ni, adjust_tx_wavelength, frequency_adjustment_size, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, xgpon_ni, adjust_tx_wavelength, frequency_adjustment_size, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_OPER, BCMOLT_XGPON_NI_OPER_ID_ADJUST_TX_WAVELENGTH, BCMOLT_XGPON_NI_ADJUST_TX_WAVELENGTH_ID_FREQUENCY_ADJUSTMENT_SIZE, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_ni_stat_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_ni_stat_cfg stat_cfg;  /**< declare main API struct */
+    bcmolt_xgpon_ni_key key = { };      /**< declare key */
+    bcmolt_xgpon_ni_stat_id stat_id;    /**< declare stat ID */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_ni_stat_cfg stat_cfg;\n");
+    bcmcli_log("bcmolt_xgpon_ni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_stat_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_NI_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* set stat ID from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "sub");
+    if (cli_parm != NULL)
+    {
+        stat_id = (bcmolt_xgpon_ni_stat_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    /* init the API struct */
+    switch (stat_id)
+    {
+        case BCMOLT_XGPON_NI_STAT_ID_FEC_CODEWORDS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, fec_codewords, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, fec_codewords, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_BIP32_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, bip32_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, bip32_bytes, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_BIP32_ERRORS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, bip32_errors, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, bip32_errors, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_RX_XGTC_HEADERS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_xgtc_headers, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_xgtc_headers, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_RX_XGTC_CORRECTED:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_xgtc_corrected, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_xgtc_corrected, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_RX_XGTC_UNCORRECTED:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_xgtc_uncorrected, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_xgtc_uncorrected, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_RX_XGEM:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_xgem, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_xgem, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_RX_XGEM_DROPPED:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_xgem_dropped, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_xgem_dropped, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_RX_XGEM_IDLE:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_xgem_idle, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_xgem_idle, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_RX_XGEM_CORRECTED:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_xgem_corrected, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_xgem_corrected, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_RX_CRC_ERROR:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_crc_error, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_crc_error, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_RX_FRAGMENT_ERROR:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_fragment_error, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_fragment_error, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_RX_PACKETS_DROPPED:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_packets_dropped, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_packets_dropped, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_RX_DROPPED_TOO_SHORT:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_dropped_too_short, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_dropped_too_short, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_RX_DROPPED_TOO_LONG:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_dropped_too_long, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_dropped_too_long, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_RX_KEY_ERROR:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_key_error, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_key_error, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_TX_PLOAMS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, tx_ploams, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, tx_ploams, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_RX_PLOAMS_DROPPED:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_ploams_dropped, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_ploams_dropped, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_RX_ALLOCATIONS_VALID:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_allocations_valid, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_allocations_valid, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_RX_ALLOCATIONS_INVALID:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_allocations_invalid, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_allocations_invalid, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_RX_ALLOCATIONS_DISABLED:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_allocations_disabled, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_allocations_disabled, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_RX_PLOAMS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_ploams, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_ploams, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_RX_PLOAMS_NON_IDLE:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_ploams_non_idle, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_ploams_non_idle, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_RX_PLOAMS_ERROR:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_ploams_error, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_ploams_error, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_RX_CPU:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_cpu, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_cpu, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_RX_OMCI:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_omci, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_omci, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_RX_OMCI_PACKETS_CRC_ERROR:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_omci_packets_crc_error, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_omci_packets_crc_error, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_TX_PACKETS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, tx_packets, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, tx_packets, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_TX_XGEM:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, tx_xgem, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, tx_xgem, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_TX_CPU:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, tx_cpu, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, tx_cpu, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_TX_OMCI:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, tx_omci, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, tx_omci, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_TX_CPU_OMCI_PACKETS_DROPPED:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, tx_cpu_omci_packets_dropped, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, tx_cpu_omci_packets_dropped, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_TX_DROPPED_ILLEGAL_LENGTH:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, tx_dropped_illegal_length, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, tx_dropped_illegal_length, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_TX_DROPPED_TPID_MISS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, tx_dropped_tpid_miss, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, tx_dropped_tpid_miss, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_TX_DROPPED_VID_MISS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, tx_dropped_vid_miss, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, tx_dropped_vid_miss, key);\n");
+            break;
+        default:
+            apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+            return BCM_ERR_RANGE;
+    }
+
+    /* call API */
+    err = bcmolt_stat_cfg_get(device_id, &stat_cfg.hdr);
+    bcmcli_log("bcmolt_stat_cfg_get(device_id, &stat_cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &stat_cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, stat_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_ni_stat_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_ni_stat_cfg stat_cfg;  /**< declare main API struct */
+    bcmolt_xgpon_ni_key key = { };      /**< declare key */
+    bcmolt_xgpon_ni_stat_id stat_id;    /**< declare stat ID */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_ni_stat_cfg stat_cfg;\n");
+    bcmcli_log("bcmolt_xgpon_ni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_stat_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_NI_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* set stat ID from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "sub");
+    if (cli_parm != NULL)
+    {
+        stat_id = (bcmolt_xgpon_ni_stat_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    /* init the API struct */
+    switch (stat_id)
+    {
+        case BCMOLT_XGPON_NI_STAT_ID_FEC_CODEWORDS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, fec_codewords, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, fec_codewords, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_BIP32_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, bip32_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, bip32_bytes, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_BIP32_ERRORS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, bip32_errors, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, bip32_errors, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_RX_XGTC_HEADERS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_xgtc_headers, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_xgtc_headers, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_RX_XGTC_CORRECTED:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_xgtc_corrected, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_xgtc_corrected, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_RX_XGTC_UNCORRECTED:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_xgtc_uncorrected, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_xgtc_uncorrected, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_RX_XGEM:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_xgem, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_xgem, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_RX_XGEM_DROPPED:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_xgem_dropped, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_xgem_dropped, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_RX_XGEM_IDLE:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_xgem_idle, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_xgem_idle, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_RX_XGEM_CORRECTED:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_xgem_corrected, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_xgem_corrected, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_RX_CRC_ERROR:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_crc_error, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_crc_error, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_RX_FRAGMENT_ERROR:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_fragment_error, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_fragment_error, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_RX_PACKETS_DROPPED:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_packets_dropped, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_packets_dropped, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_RX_DROPPED_TOO_SHORT:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_dropped_too_short, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_dropped_too_short, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_RX_DROPPED_TOO_LONG:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_dropped_too_long, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_dropped_too_long, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_RX_KEY_ERROR:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_key_error, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_key_error, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_TX_PLOAMS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, tx_ploams, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, tx_ploams, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_RX_PLOAMS_DROPPED:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_ploams_dropped, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_ploams_dropped, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_RX_ALLOCATIONS_VALID:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_allocations_valid, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_allocations_valid, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_RX_ALLOCATIONS_INVALID:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_allocations_invalid, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_allocations_invalid, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_RX_ALLOCATIONS_DISABLED:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_allocations_disabled, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_allocations_disabled, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_RX_PLOAMS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_ploams, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_ploams, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_RX_PLOAMS_NON_IDLE:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_ploams_non_idle, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_ploams_non_idle, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_RX_PLOAMS_ERROR:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_ploams_error, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_ploams_error, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_RX_CPU:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_cpu, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_cpu, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_RX_OMCI:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_omci, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_omci, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_RX_OMCI_PACKETS_CRC_ERROR:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_omci_packets_crc_error, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, rx_omci_packets_crc_error, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_TX_PACKETS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, tx_packets, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, tx_packets, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_TX_XGEM:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, tx_xgem, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, tx_xgem, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_TX_CPU:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, tx_cpu, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, tx_cpu, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_TX_OMCI:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, tx_omci, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, tx_omci, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_TX_CPU_OMCI_PACKETS_DROPPED:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, tx_cpu_omci_packets_dropped, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, tx_cpu_omci_packets_dropped, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_TX_DROPPED_ILLEGAL_LENGTH:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, tx_dropped_illegal_length, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, tx_dropped_illegal_length, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_TX_DROPPED_TPID_MISS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, tx_dropped_tpid_miss, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, tx_dropped_tpid_miss, key);\n");
+            break;
+        case BCMOLT_XGPON_NI_STAT_ID_TX_DROPPED_VID_MISS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, tx_dropped_vid_miss, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_ni, tx_dropped_vid_miss, key);\n");
+            break;
+        default:
+            apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+            return BCM_ERR_RANGE;
+    }
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_stat_alarm_config val = { };
+        cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.trigger.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.type");
+            if (cli_parm != NULL)
+            {
+                val.trigger.type = (bcmolt_stat_condition_type) cli_parm->value.enum_val;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.type is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            switch (val.trigger.type)
+            {
+                case BCMOLT_STAT_CONDITION_TYPE_RATE_THRESHOLD:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.rising");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_threshold.rising = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.rising is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.falling");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_threshold.falling = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.falling is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_RATE_RANGE:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.upper");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_range.upper = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.upper is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.lower");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_range.lower = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.lower is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_VALUE_THRESHOLD:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.limit");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.value_threshold.limit = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.limit is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_NONE:
+                    break;
+                default:
+                    apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+                    return BCM_ERR_RANGE;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.soak.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "cfg.soak.active_soak_time");
+            if (cli_parm != NULL)
+            {
+                val.soak.active_soak_time = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak.active_soak_time is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "cfg.soak.clear_soak_time");
+            if (cli_parm != NULL)
+            {
+                val.soak.clear_soak_time = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak.clear_soak_time is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_STAT_CFG_PROP_SET(&stat_cfg, xgpon_ni, cfg, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_stat_alarm_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_STAT_CFG, 0, BCMOLT_XGPON_NI_STAT_CFG_ID_CFG, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_STAT_CFG_PROP_SET(&stat_cfg, xgpon_ni, cfg, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    /* call API */
+    err = bcmolt_stat_cfg_set(device_id, &stat_cfg.hdr);
+    bcmcli_log("bcmolt_stat_cfg_set(device_id, &stat_cfg.hdr);\n");
+    apicli_print_complete(session, err, stat_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_ni_auto_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_ni_auto_cfg auto_cfg;  /**< declare main API struct */
+    bcmolt_xgpon_ni_key key = { };      /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_ni_auto_cfg auto_cfg;\n");
+    bcmcli_log("bcmolt_xgpon_ni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_auto_cfg_get");
+
+    /* init the API struct */
+    BCMOLT_AUTO_CFG_INIT(&auto_cfg, xgpon_ni, key);
+    bcmcli_log("BCMOLT_AUTO_CFG_INIT(&auto_cfg, xgpon_ni, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "activate_all_onus_completed");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_ni, activate_all_onus_completed);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_ni, activate_all_onus_completed);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "cpu_packets_failure");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_ni, cpu_packets_failure);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_ni, cpu_packets_failure);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "deactivate_all_onus_completed");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_ni, deactivate_all_onus_completed);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_ni, deactivate_all_onus_completed);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "disable_all_onus_completed");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_ni, disable_all_onus_completed);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_ni, disable_all_onus_completed);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "enable_all_onus_completed");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_ni, enable_all_onus_completed);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_ni, enable_all_onus_completed);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "los");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_ni, los);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_ni, los);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_discovered");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_ni, onu_discovered);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_ni, onu_discovered);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_upgrade_complete");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_ni, onu_upgrade_complete);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_ni, onu_upgrade_complete);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "protection_switching_onus_ranged");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_ni, protection_switching_onus_ranged);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_ni, protection_switching_onus_ranged);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "protection_switching_switchover_completed");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_ni, protection_switching_switchover_completed);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_ni, protection_switching_switchover_completed);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "protection_switching_traffic_resume");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_ni, protection_switching_traffic_resume);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_ni, protection_switching_traffic_resume);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rogue_detection_completed");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_ni, rogue_detection_completed);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_ni, rogue_detection_completed);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rogue_onu_special_map_cycle_start");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_ni, rogue_onu_special_map_cycle_start);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_ni, rogue_onu_special_map_cycle_start);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "serial_number_acquisition_cycle_start");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_ni, serial_number_acquisition_cycle_start);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_ni, serial_number_acquisition_cycle_start);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "standby_pon_monitoring_cycle_completed");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_ni, standby_pon_monitoring_cycle_completed);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_ni, standby_pon_monitoring_cycle_completed);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_cleared");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_ni, stat_alarm_cleared);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_ni, stat_alarm_cleared);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_raised");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_ni, stat_alarm_raised);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_ni, stat_alarm_raised);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "state_change_completed");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_ni, state_change_completed);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_ni, state_change_completed);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tod_request_completed");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_ni, tod_request_completed);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_ni, tod_request_completed);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_ni, activate_all_onus_completed) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_ni, cpu_packets_failure) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_ni, deactivate_all_onus_completed) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_ni, disable_all_onus_completed) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_ni, enable_all_onus_completed) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_ni, los) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_ni, onu_discovered) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_ni, onu_upgrade_complete) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_ni, protection_switching_onus_ranged) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_ni, protection_switching_switchover_completed) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_ni, protection_switching_traffic_resume) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_ni, rogue_detection_completed) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_ni, rogue_onu_special_map_cycle_start) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_ni, serial_number_acquisition_cycle_start) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_ni, standby_pon_monitoring_cycle_completed) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_ni, stat_alarm_cleared) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_ni, stat_alarm_raised) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_ni, state_change_completed) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_ni, tod_request_completed))
+    {
+        BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_ni, all_properties);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_ni, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_auto_cfg_get(device_id, &auto_cfg.hdr);
+    bcmcli_log("bcmolt_auto_cfg_get(device_id, &auto_cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &auto_cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, auto_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_ni_auto_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_ni_auto_cfg auto_cfg;  /**< declare main API struct */
+    bcmolt_xgpon_ni_key key = { };      /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_ni_auto_cfg auto_cfg;\n");
+    bcmcli_log("bcmolt_xgpon_ni_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_auto_cfg_set");
+
+    /* init the API struct */
+    BCMOLT_AUTO_CFG_INIT(&auto_cfg, xgpon_ni, key);
+    bcmcli_log("BCMOLT_AUTO_CFG_INIT(&auto_cfg, xgpon_ni, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "activate_all_onus_completed");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_ni, activate_all_onus_completed, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_ni, activate_all_onus_completed, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_NI_AUTO_CFG_ID_ACTIVATE_ALL_ONUS_COMPLETED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "cpu_packets_failure");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_ni, cpu_packets_failure, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_ni, cpu_packets_failure, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_NI_AUTO_CFG_ID_CPU_PACKETS_FAILURE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "deactivate_all_onus_completed");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_ni, deactivate_all_onus_completed, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_ni, deactivate_all_onus_completed, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_NI_AUTO_CFG_ID_DEACTIVATE_ALL_ONUS_COMPLETED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "disable_all_onus_completed");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_ni, disable_all_onus_completed, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_ni, disable_all_onus_completed, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_NI_AUTO_CFG_ID_DISABLE_ALL_ONUS_COMPLETED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "enable_all_onus_completed");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_ni, enable_all_onus_completed, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_ni, enable_all_onus_completed, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_NI_AUTO_CFG_ID_ENABLE_ALL_ONUS_COMPLETED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "los");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_ni, los, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_ni, los, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_NI_AUTO_CFG_ID_LOS, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_discovered");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_ni, onu_discovered, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_ni, onu_discovered, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_NI_AUTO_CFG_ID_ONU_DISCOVERED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_upgrade_complete");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_ni, onu_upgrade_complete, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_ni, onu_upgrade_complete, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_NI_AUTO_CFG_ID_ONU_UPGRADE_COMPLETE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "protection_switching_onus_ranged");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_ni, protection_switching_onus_ranged, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_ni, protection_switching_onus_ranged, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_NI_AUTO_CFG_ID_PROTECTION_SWITCHING_ONUS_RANGED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "protection_switching_switchover_completed");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_ni, protection_switching_switchover_completed, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_ni, protection_switching_switchover_completed, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_NI_AUTO_CFG_ID_PROTECTION_SWITCHING_SWITCHOVER_COMPLETED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "protection_switching_traffic_resume");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_ni, protection_switching_traffic_resume, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_ni, protection_switching_traffic_resume, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_NI_AUTO_CFG_ID_PROTECTION_SWITCHING_TRAFFIC_RESUME, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rogue_detection_completed");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_ni, rogue_detection_completed, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_ni, rogue_detection_completed, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_NI_AUTO_CFG_ID_ROGUE_DETECTION_COMPLETED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rogue_onu_special_map_cycle_start");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_ni, rogue_onu_special_map_cycle_start, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_ni, rogue_onu_special_map_cycle_start, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_NI_AUTO_CFG_ID_ROGUE_ONU_SPECIAL_MAP_CYCLE_START, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "serial_number_acquisition_cycle_start");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_ni, serial_number_acquisition_cycle_start, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_ni, serial_number_acquisition_cycle_start, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_NI_AUTO_CFG_ID_SERIAL_NUMBER_ACQUISITION_CYCLE_START, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "standby_pon_monitoring_cycle_completed");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_ni, standby_pon_monitoring_cycle_completed, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_ni, standby_pon_monitoring_cycle_completed, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_NI_AUTO_CFG_ID_STANDBY_PON_MONITORING_CYCLE_COMPLETED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_cleared");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_ni, stat_alarm_cleared, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_ni, stat_alarm_cleared, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_NI_AUTO_CFG_ID_STAT_ALARM_CLEARED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_raised");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_ni, stat_alarm_raised, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_ni, stat_alarm_raised, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_NI_AUTO_CFG_ID_STAT_ALARM_RAISED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "state_change_completed");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_ni, state_change_completed, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_ni, state_change_completed, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_NI_AUTO_CFG_ID_STATE_CHANGE_COMPLETED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tod_request_completed");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_ni, tod_request_completed, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_ni, tod_request_completed, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_NI, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_NI_AUTO_CFG_ID_TOD_REQUEST_COMPLETED, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_auto_cfg_set(device_id, &auto_cfg.hdr);
+    bcmcli_log("bcmolt_auto_cfg_set(device_id, &auto_cfg.hdr);\n");
+    apicli_print_complete(session, err, auto_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_onu_cfg_get(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_onu_cfg cfg;       /**< declare main API struct */
+    bcmolt_xgpon_onu_key key = { }; /**< declare key */
+    uint8_t *list_mem;              /**< declare memory buffer for variable-sized lists */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_onu_cfg cfg;\n");
+    bcmcli_log("bcmolt_xgpon_onu_key key = {  };\n");
+    bcmcli_log("uint8_t* list_mem;\n");
+    apicli_print_start(session, "bcmolt_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ONU_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        key.onu_id = (bcmolt_xgpon_onu_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "onu_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.onu_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ONU_KEY_ID_ONU_ID, &key.onu_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, xgpon_onu, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, xgpon_onu, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "onu_state");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_onu, onu_state);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_onu, onu_state);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_old_state");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_onu, onu_old_state);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_onu, onu_old_state);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "alarm_state");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_onu, alarm_state);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_onu, alarm_state);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "registration_encryption_keys");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_onu, registration_encryption_keys);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_onu, registration_encryption_keys);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "current_encryption_key");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_onu, current_encryption_key);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_onu, current_encryption_key);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "serial_number");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_onu, serial_number);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_onu, serial_number);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "registration_id");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_onu, registration_id);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_onu, registration_id);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "registration_id_auto_learning");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_onu, registration_id_auto_learning);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_onu, registration_id_auto_learning);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ranging_burst_profile");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_onu, ranging_burst_profile);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_onu, ranging_burst_profile);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "data_burst_profile");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_onu, data_burst_profile);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_onu, data_burst_profile);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ranging_time");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_onu, ranging_time);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_onu, ranging_time);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "disabled_after_discovery");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_onu, disabled_after_discovery);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_onu, disabled_after_discovery);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "deactivation_reason");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_onu, deactivation_reason);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_onu, deactivation_reason);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "all_gem_ports");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_onu, all_gem_ports);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_onu, all_gem_ports);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "all_allocs");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_onu, all_allocs);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_onu, all_allocs);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "extended_guard_time");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_onu, extended_guard_time);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_onu, extended_guard_time);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "us_line_rate");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_onu, us_line_rate);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_onu, us_line_rate);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "calibration_record");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_onu, calibration_record);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_onu, calibration_record);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tuning_granularity");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_onu, tuning_granularity);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_onu, tuning_granularity);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "step_tuning_time");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_onu, step_tuning_time);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_onu, step_tuning_time);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "power_levelling_capabilities");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_onu, power_levelling_capabilities);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_onu, power_levelling_capabilities);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "request_registration_status");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_onu, request_registration_status);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_onu, request_registration_status);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_onu, onu_state) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_onu, onu_old_state) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_onu, alarm_state) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_onu, registration_encryption_keys) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_onu, current_encryption_key) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_onu, serial_number) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_onu, registration_id) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_onu, registration_id_auto_learning) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_onu, ranging_burst_profile) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_onu, data_burst_profile) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_onu, ranging_time) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_onu, disabled_after_discovery) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_onu, deactivation_reason) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_onu, all_gem_ports) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_onu, all_allocs) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_onu, extended_guard_time) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_onu, us_line_rate) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_onu, calibration_record) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_onu, tuning_granularity) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_onu, step_tuning_time) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_onu, power_levelling_capabilities) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_onu, request_registration_status))
+    {
+        BCMOLT_CFG_PROP_GET(&cfg, xgpon_onu, all_properties);
+        bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_onu, all_properties);\n");
+    }
+
+    /* set memory to use for variable-sized lists */
+    list_mem = apicli_byte_pool_calloc(byte_pool, APICLI_DYNAMIC_LIST_BUFFER_SIZE);
+    if (list_mem == NULL)
+    {
+        apicli_print_complete(session, BCM_ERR_NOMEM, "\n");
+        return BCM_ERR_NOMEM;
+    }
+
+    bcmcli_log("list_mem = bcmos_calloc(APICLI_DYNAMIC_LIST_BUFFER_SIZE);\n");
+    BCMOLT_CFG_LIST_BUF_SET(&cfg, xgpon_onu, list_mem, APICLI_DYNAMIC_LIST_BUFFER_SIZE);
+    bcmcli_log("BCMOLT_CFG_LIST_BUF_SET(&cfg, xgpon_onu, list_mem, APICLI_DYNAMIC_LIST_BUFFER_SIZE);\n");
+
+    /* call API */
+    err = bcmolt_cfg_get(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_get(device_id, &cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_onu_cfg_set(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_onu_cfg cfg;       /**< declare main API struct */
+    bcmolt_xgpon_onu_key key = { }; /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_onu_cfg cfg;\n");
+    bcmcli_log("bcmolt_xgpon_onu_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ONU_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        key.onu_id = (bcmolt_xgpon_onu_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "onu_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.onu_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ONU_KEY_ID_ONU_ID, &key.onu_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, xgpon_onu, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, xgpon_onu, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "onu_state");
+    if (cli_parm != NULL)
+    {
+        bcmolt_onu_state val;
+        val = (bcmolt_onu_state) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, onu_state, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, onu_state, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_ONU_CFG_ID_ONU_STATE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "alarm_state.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_onu_alarm_state val = { };
+        cli_parm = bcmcli_find_named_parm(session, "alarm_state.losi");
+        if (cli_parm != NULL)
+        {
+            val.losi = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "alarm_state.losi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "alarm_state.lobi");
+        if (cli_parm != NULL)
+        {
+            val.lobi = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "alarm_state.lobi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "alarm_state.lopci");
+        if (cli_parm != NULL)
+        {
+            val.lopci = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "alarm_state.lopci is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "alarm_state.lopci_mic_error");
+        if (cli_parm != NULL)
+        {
+            val.lopci_mic_error = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "alarm_state.lopci_mic_error is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "alarm_state.looci");
+        if (cli_parm != NULL)
+        {
+            val.looci = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "alarm_state.looci is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "alarm_state.tiwi");
+        if (cli_parm != NULL)
+        {
+            val.tiwi = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "alarm_state.tiwi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "alarm_state.dowi");
+        if (cli_parm != NULL)
+        {
+            val.dowi = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "alarm_state.dowi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "alarm_state.sufi");
+        if (cli_parm != NULL)
+        {
+            val.sufi = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "alarm_state.sufi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "alarm_state.sfi");
+        if (cli_parm != NULL)
+        {
+            val.sfi = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "alarm_state.sfi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "alarm_state.sdi");
+        if (cli_parm != NULL)
+        {
+            val.sdi = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "alarm_state.sdi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "alarm_state.dfi");
+        if (cli_parm != NULL)
+        {
+            val.dfi = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "alarm_state.dfi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "alarm_state.dgi");
+        if (cli_parm != NULL)
+        {
+            val.dgi = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "alarm_state.dgi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "alarm_state.pqsi");
+        if (cli_parm != NULL)
+        {
+            val.pqsi = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "alarm_state.pqsi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, alarm_state, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_xgpon_onu_alarm_state val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_ONU_CFG_ID_ALARM_STATE, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, alarm_state, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "registration_encryption_keys.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_onu_registration_keys val = { };
+        cli_parm = bcmcli_find_parm_by_prefix(session, "registration_encryption_keys.ploam_ik.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "registration_encryption_keys.ploam_ik.bytes");
+            if (cli_parm != NULL)
+            {
+                if (bcmolt_buf_get_used(&cli_parm->value.buffer) != 16)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "buffer registration_encryption_keys.ploam_ik.bytes must have 16 bytes\n");
+                    return BCM_ERR_PARM;
+                }
+
+                bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+                bcmolt_buf_read(&cli_parm->value.buffer, val.ploam_ik.bytes, 16);
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "registration_encryption_keys.ploam_ik.bytes is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "registration_encryption_keys.ploam_ik is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "registration_encryption_keys.omci_ik.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "registration_encryption_keys.omci_ik.bytes");
+            if (cli_parm != NULL)
+            {
+                if (bcmolt_buf_get_used(&cli_parm->value.buffer) != 16)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "buffer registration_encryption_keys.omci_ik.bytes must have 16 bytes\n");
+                    return BCM_ERR_PARM;
+                }
+
+                bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+                bcmolt_buf_read(&cli_parm->value.buffer, val.omci_ik.bytes, 16);
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "registration_encryption_keys.omci_ik.bytes is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "registration_encryption_keys.omci_ik is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "registration_encryption_keys.omci_k1.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "registration_encryption_keys.omci_k1.bytes");
+            if (cli_parm != NULL)
+            {
+                if (bcmolt_buf_get_used(&cli_parm->value.buffer) != 16)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "buffer registration_encryption_keys.omci_k1.bytes must have 16 bytes\n");
+                    return BCM_ERR_PARM;
+                }
+
+                bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+                bcmolt_buf_read(&cli_parm->value.buffer, val.omci_k1.bytes, 16);
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "registration_encryption_keys.omci_k1.bytes is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "registration_encryption_keys.omci_k1 is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "registration_encryption_keys.omci_k2.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "registration_encryption_keys.omci_k2.bytes");
+            if (cli_parm != NULL)
+            {
+                if (bcmolt_buf_get_used(&cli_parm->value.buffer) != 16)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "buffer registration_encryption_keys.omci_k2.bytes must have 16 bytes\n");
+                    return BCM_ERR_PARM;
+                }
+
+                bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+                bcmolt_buf_read(&cli_parm->value.buffer, val.omci_k2.bytes, 16);
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "registration_encryption_keys.omci_k2.bytes is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "registration_encryption_keys.omci_k2 is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "registration_encryption_keys.kek.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "registration_encryption_keys.kek.bytes");
+            if (cli_parm != NULL)
+            {
+                if (bcmolt_buf_get_used(&cli_parm->value.buffer) != 16)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "buffer registration_encryption_keys.kek.bytes must have 16 bytes\n");
+                    return BCM_ERR_PARM;
+                }
+
+                bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+                bcmolt_buf_read(&cli_parm->value.buffer, val.kek.bytes, 16);
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "registration_encryption_keys.kek.bytes is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "registration_encryption_keys.kek is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, registration_encryption_keys, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_xgpon_onu_registration_keys val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_ONU_CFG_ID_REGISTRATION_ENCRYPTION_KEYS, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, registration_encryption_keys, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "current_encryption_key.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_onu_aes_key val = { };
+        cli_parm = bcmcli_find_parm_by_prefix(session, "current_encryption_key.encryption_key.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "current_encryption_key.encryption_key.bytes");
+            if (cli_parm != NULL)
+            {
+                if (bcmolt_buf_get_used(&cli_parm->value.buffer) != 16)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "buffer current_encryption_key.encryption_key.bytes must have 16 bytes\n");
+                    return BCM_ERR_PARM;
+                }
+
+                bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+                bcmolt_buf_read(&cli_parm->value.buffer, val.encryption_key.bytes, 16);
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "current_encryption_key.encryption_key.bytes is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "current_encryption_key.encryption_key is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "current_encryption_key.key_index");
+        if (cli_parm != NULL)
+        {
+            val.key_index = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "current_encryption_key.key_index is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, current_encryption_key, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_xgpon_onu_aes_key val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_ONU_CFG_ID_CURRENT_ENCRYPTION_KEY, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, current_encryption_key, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "serial_number.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_serial_number val = { };
+        cli_parm = bcmcli_find_named_parm(session, "serial_number.vendor_id");
+        if (cli_parm != NULL)
+        {
+            if (bcmolt_buf_get_used(&cli_parm->value.buffer) != 4)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "buffer serial_number.vendor_id must have 4 bytes\n");
+                return BCM_ERR_PARM;
+            }
+
+            bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+            bcmolt_buf_read(&cli_parm->value.buffer, val.vendor_id, 4);
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "serial_number.vendor_id is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "serial_number.vendor_specific");
+        if (cli_parm != NULL)
+        {
+            if (bcmolt_buf_get_used(&cli_parm->value.buffer) != 4)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "buffer serial_number.vendor_specific must have 4 bytes\n");
+                return BCM_ERR_PARM;
+            }
+
+            bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+            bcmolt_buf_read(&cli_parm->value.buffer, val.vendor_specific, 4);
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "serial_number.vendor_specific is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, serial_number, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_serial_number val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_ONU_CFG_ID_SERIAL_NUMBER, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, serial_number, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "registration_id.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_arr_u8_36 val = { };
+        cli_parm = bcmcli_find_named_parm(session, "registration_id.arr");
+        if (cli_parm != NULL)
+        {
+            if (bcmolt_buf_get_used(&cli_parm->value.buffer) != 36)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "buffer registration_id.arr must have 36 bytes\n");
+                return BCM_ERR_PARM;
+            }
+
+            bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+            bcmolt_buf_read(&cli_parm->value.buffer, val.arr, 36);
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "registration_id.arr is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, registration_id, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_arr_u8_36 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_ONU_CFG_ID_REGISTRATION_ID, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, registration_id, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "registration_id_auto_learning");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, registration_id_auto_learning, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, registration_id_auto_learning, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_ONU_CFG_ID_REGISTRATION_ID_AUTO_LEARNING, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ranging_burst_profile");
+    if (cli_parm != NULL)
+    {
+        bcmolt_burst_profile_index val;
+        val = (bcmolt_burst_profile_index) cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, ranging_burst_profile, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, ranging_burst_profile, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_ONU_CFG_ID_RANGING_BURST_PROFILE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "data_burst_profile");
+    if (cli_parm != NULL)
+    {
+        bcmolt_burst_profile_index val;
+        val = (bcmolt_burst_profile_index) cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, data_burst_profile, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, data_burst_profile, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_ONU_CFG_ID_DATA_BURST_PROFILE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ranging_time");
+    if (cli_parm != NULL)
+    {
+        uint32_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, ranging_time, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, ranging_time, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_ONU_CFG_ID_RANGING_TIME, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "extended_guard_time.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_extended_guard_time val = { };
+        cli_parm = bcmcli_find_named_parm(session, "extended_guard_time.additional_preburst_guard_time");
+        if (cli_parm != NULL)
+        {
+            val.additional_preburst_guard_time = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "extended_guard_time.additional_preburst_guard_time is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "extended_guard_time.additional_postburst_guard_time");
+        if (cli_parm != NULL)
+        {
+            val.additional_postburst_guard_time = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "extended_guard_time.additional_postburst_guard_time is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, extended_guard_time, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_extended_guard_time val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_ONU_CFG_ID_EXTENDED_GUARD_TIME, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, extended_guard_time, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "us_line_rate");
+    if (cli_parm != NULL)
+    {
+        bcmolt_upstream_line_rate_capabilities val;
+        val = (bcmolt_upstream_line_rate_capabilities) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, us_line_rate, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, us_line_rate, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_ONU_CFG_ID_US_LINE_RATE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "calibration_record.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_arr_calibration_record_8 val = { };
+        cli_parm = bcmcli_find_named_parm(session, "calibration_record.arr");
+        if (cli_parm != NULL)
+        {
+            int32_t i0;
+            if (cli_parm->array_size != 8)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "array calibration_record.arr must have 8 elements\n");
+                return BCM_ERR_PARM;
+            }
+
+            for (i0 = 0; i0 < 8; i0++)
+            {
+                val.arr[i0] = (bcmolt_calibration_record) cli_parm->values[i0].enum_val;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "calibration_record.arr is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, calibration_record, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_arr_calibration_record_8 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_ONU_CFG_ID_CALIBRATION_RECORD, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, calibration_record, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tuning_granularity");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, tuning_granularity, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, tuning_granularity, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_ONU_CFG_ID_TUNING_GRANULARITY, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "step_tuning_time");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, step_tuning_time, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, step_tuning_time, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_ONU_CFG_ID_STEP_TUNING_TIME, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "power_levelling_capabilities");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, power_levelling_capabilities, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, power_levelling_capabilities, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_ONU_CFG_ID_POWER_LEVELLING_CAPABILITIES, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_set(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_set(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_onu_cfg_clear(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_onu_cfg cfg;       /**< declare main API struct */
+    bcmolt_xgpon_onu_key key = { }; /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_onu_cfg cfg;\n");
+    bcmcli_log("bcmolt_xgpon_onu_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_clear");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ONU_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        key.onu_id = (bcmolt_xgpon_onu_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "onu_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.onu_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ONU_KEY_ID_ONU_ID, &key.onu_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, xgpon_onu, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, xgpon_onu, key);\n");
+
+    /* call API */
+    err = bcmolt_cfg_clear(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_clear(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_onu_cfg_get_multi(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_onu_cfg cfg;       /**< declare main API struct */
+    bcmolt_xgpon_onu_key key = { }; /**< declare key */
+    bcmolt_msg_set *msg_set = NULL; /**< declare message set */
+    uint32_t max_msgs;              /**< declare max number of msgs to get */
+    bcmos_bool invert_filter;       /**< declare filter invert flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_onu_cfg cfg;\n");
+    bcmcli_log("bcmolt_xgpon_onu_key key = {  };\n");
+    bcmcli_log("bcmolt_msg_set* msg_set = NULL;\n");
+    bcmcli_log("uint32_t max_msgs;\n");
+    bcmcli_log("bcmos_bool invert_filter;\n");
+    apicli_print_start(session, "bcmolt_cfg_get_multi");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ONU_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        key.onu_id = (bcmolt_xgpon_onu_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "onu_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.onu_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ONU_KEY_ID_ONU_ID, &key.onu_id);
+    bcmcli_log(";\n");
+
+    /* set max number of msgs from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "max_msgs");
+    if (cli_parm != NULL)
+    {
+        max_msgs = cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "max_msgs is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("max_msgs = %d;\n", max_msgs);
+
+    /* set filter invert flag from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "filter_invert");
+    if (cli_parm != NULL)
+    {
+        invert_filter = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "filter_invert is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("invert_filter = %s;\n", (invert_filter) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* allocate message set */
+    err = apicli_msg_set_alloc(byte_pool, BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);
+    if (err != BCM_ERR_OK)
+    {
+        return err;
+    }
+
+    bcmcli_log("bcmolt_msg_set_alloc(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, xgpon_onu, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, xgpon_onu, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "filter.onu_state");
+    if (cli_parm != NULL)
+    {
+        bcmolt_onu_state val;
+        val = (bcmolt_onu_state) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, onu_state, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, onu_state, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_ONU_CFG_ID_ONU_STATE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_state");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_onu, onu_state);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_onu, onu_state);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.onu_old_state");
+    if (cli_parm != NULL)
+    {
+        bcmolt_onu_state val;
+        val = (bcmolt_onu_state) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, onu_old_state, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, onu_old_state, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_ONU_CFG_ID_ONU_OLD_STATE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_old_state");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_onu, onu_old_state);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_onu, onu_old_state);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.alarm_state.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_onu_alarm_state val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.alarm_state.losi");
+        if (cli_parm != NULL)
+        {
+            val.losi = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.alarm_state.losi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.alarm_state.lobi");
+        if (cli_parm != NULL)
+        {
+            val.lobi = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.alarm_state.lobi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.alarm_state.lopci");
+        if (cli_parm != NULL)
+        {
+            val.lopci = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.alarm_state.lopci is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.alarm_state.lopci_mic_error");
+        if (cli_parm != NULL)
+        {
+            val.lopci_mic_error = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.alarm_state.lopci_mic_error is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.alarm_state.looci");
+        if (cli_parm != NULL)
+        {
+            val.looci = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.alarm_state.looci is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.alarm_state.tiwi");
+        if (cli_parm != NULL)
+        {
+            val.tiwi = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.alarm_state.tiwi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.alarm_state.dowi");
+        if (cli_parm != NULL)
+        {
+            val.dowi = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.alarm_state.dowi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.alarm_state.sufi");
+        if (cli_parm != NULL)
+        {
+            val.sufi = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.alarm_state.sufi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.alarm_state.sfi");
+        if (cli_parm != NULL)
+        {
+            val.sfi = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.alarm_state.sfi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.alarm_state.sdi");
+        if (cli_parm != NULL)
+        {
+            val.sdi = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.alarm_state.sdi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.alarm_state.dfi");
+        if (cli_parm != NULL)
+        {
+            val.dfi = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.alarm_state.dfi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.alarm_state.dgi");
+        if (cli_parm != NULL)
+        {
+            val.dgi = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.alarm_state.dgi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.alarm_state.pqsi");
+        if (cli_parm != NULL)
+        {
+            val.pqsi = (bcmolt_status) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.alarm_state.pqsi is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, alarm_state, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_xgpon_onu_alarm_state val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_ONU_CFG_ID_ALARM_STATE, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, alarm_state, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "alarm_state");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_onu, alarm_state);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_onu, alarm_state);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.registration_encryption_keys.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_onu_registration_keys val = { };
+        cli_parm = bcmcli_find_parm_by_prefix(session, "filter.registration_encryption_keys.ploam_ik.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "filter.registration_encryption_keys.ploam_ik.bytes");
+            if (cli_parm != NULL)
+            {
+                if (bcmolt_buf_get_used(&cli_parm->value.buffer) != 16)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "buffer filter.registration_encryption_keys.ploam_ik.bytes must have 16 bytes\n");
+                    return BCM_ERR_PARM;
+                }
+
+                bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+                bcmolt_buf_read(&cli_parm->value.buffer, val.ploam_ik.bytes, 16);
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.registration_encryption_keys.ploam_ik.bytes is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.registration_encryption_keys.ploam_ik is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "filter.registration_encryption_keys.omci_ik.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "filter.registration_encryption_keys.omci_ik.bytes");
+            if (cli_parm != NULL)
+            {
+                if (bcmolt_buf_get_used(&cli_parm->value.buffer) != 16)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "buffer filter.registration_encryption_keys.omci_ik.bytes must have 16 bytes\n");
+                    return BCM_ERR_PARM;
+                }
+
+                bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+                bcmolt_buf_read(&cli_parm->value.buffer, val.omci_ik.bytes, 16);
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.registration_encryption_keys.omci_ik.bytes is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.registration_encryption_keys.omci_ik is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "filter.registration_encryption_keys.omci_k1.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "filter.registration_encryption_keys.omci_k1.bytes");
+            if (cli_parm != NULL)
+            {
+                if (bcmolt_buf_get_used(&cli_parm->value.buffer) != 16)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "buffer filter.registration_encryption_keys.omci_k1.bytes must have 16 bytes\n");
+                    return BCM_ERR_PARM;
+                }
+
+                bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+                bcmolt_buf_read(&cli_parm->value.buffer, val.omci_k1.bytes, 16);
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.registration_encryption_keys.omci_k1.bytes is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.registration_encryption_keys.omci_k1 is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "filter.registration_encryption_keys.omci_k2.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "filter.registration_encryption_keys.omci_k2.bytes");
+            if (cli_parm != NULL)
+            {
+                if (bcmolt_buf_get_used(&cli_parm->value.buffer) != 16)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "buffer filter.registration_encryption_keys.omci_k2.bytes must have 16 bytes\n");
+                    return BCM_ERR_PARM;
+                }
+
+                bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+                bcmolt_buf_read(&cli_parm->value.buffer, val.omci_k2.bytes, 16);
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.registration_encryption_keys.omci_k2.bytes is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.registration_encryption_keys.omci_k2 is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "filter.registration_encryption_keys.kek.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "filter.registration_encryption_keys.kek.bytes");
+            if (cli_parm != NULL)
+            {
+                if (bcmolt_buf_get_used(&cli_parm->value.buffer) != 16)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "buffer filter.registration_encryption_keys.kek.bytes must have 16 bytes\n");
+                    return BCM_ERR_PARM;
+                }
+
+                bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+                bcmolt_buf_read(&cli_parm->value.buffer, val.kek.bytes, 16);
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.registration_encryption_keys.kek.bytes is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.registration_encryption_keys.kek is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, registration_encryption_keys, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_xgpon_onu_registration_keys val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_ONU_CFG_ID_REGISTRATION_ENCRYPTION_KEYS, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, registration_encryption_keys, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "registration_encryption_keys");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_onu, registration_encryption_keys);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_onu, registration_encryption_keys);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.current_encryption_key.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_onu_aes_key val = { };
+        cli_parm = bcmcli_find_parm_by_prefix(session, "filter.current_encryption_key.encryption_key.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "filter.current_encryption_key.encryption_key.bytes");
+            if (cli_parm != NULL)
+            {
+                if (bcmolt_buf_get_used(&cli_parm->value.buffer) != 16)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "buffer filter.current_encryption_key.encryption_key.bytes must have 16 bytes\n");
+                    return BCM_ERR_PARM;
+                }
+
+                bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+                bcmolt_buf_read(&cli_parm->value.buffer, val.encryption_key.bytes, 16);
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.current_encryption_key.encryption_key.bytes is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.current_encryption_key.encryption_key is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.current_encryption_key.key_index");
+        if (cli_parm != NULL)
+        {
+            val.key_index = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.current_encryption_key.key_index is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, current_encryption_key, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_xgpon_onu_aes_key val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_ONU_CFG_ID_CURRENT_ENCRYPTION_KEY, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, current_encryption_key, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "current_encryption_key");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_onu, current_encryption_key);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_onu, current_encryption_key);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.serial_number.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_serial_number val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.serial_number.vendor_id");
+        if (cli_parm != NULL)
+        {
+            if (bcmolt_buf_get_used(&cli_parm->value.buffer) != 4)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "buffer filter.serial_number.vendor_id must have 4 bytes\n");
+                return BCM_ERR_PARM;
+            }
+
+            bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+            bcmolt_buf_read(&cli_parm->value.buffer, val.vendor_id, 4);
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.serial_number.vendor_id is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.serial_number.vendor_specific");
+        if (cli_parm != NULL)
+        {
+            if (bcmolt_buf_get_used(&cli_parm->value.buffer) != 4)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "buffer filter.serial_number.vendor_specific must have 4 bytes\n");
+                return BCM_ERR_PARM;
+            }
+
+            bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+            bcmolt_buf_read(&cli_parm->value.buffer, val.vendor_specific, 4);
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.serial_number.vendor_specific is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, serial_number, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_serial_number val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_ONU_CFG_ID_SERIAL_NUMBER, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, serial_number, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "serial_number");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_onu, serial_number);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_onu, serial_number);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.registration_id.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_arr_u8_36 val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.registration_id.arr");
+        if (cli_parm != NULL)
+        {
+            if (bcmolt_buf_get_used(&cli_parm->value.buffer) != 36)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "buffer filter.registration_id.arr must have 36 bytes\n");
+                return BCM_ERR_PARM;
+            }
+
+            bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+            bcmolt_buf_read(&cli_parm->value.buffer, val.arr, 36);
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.registration_id.arr is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, registration_id, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_arr_u8_36 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_ONU_CFG_ID_REGISTRATION_ID, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, registration_id, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "registration_id");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_onu, registration_id);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_onu, registration_id);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.registration_id_auto_learning");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, registration_id_auto_learning, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, registration_id_auto_learning, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_ONU_CFG_ID_REGISTRATION_ID_AUTO_LEARNING, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "registration_id_auto_learning");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_onu, registration_id_auto_learning);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_onu, registration_id_auto_learning);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.ranging_burst_profile");
+    if (cli_parm != NULL)
+    {
+        bcmolt_burst_profile_index val;
+        val = (bcmolt_burst_profile_index) cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, ranging_burst_profile, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, ranging_burst_profile, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_ONU_CFG_ID_RANGING_BURST_PROFILE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ranging_burst_profile");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_onu, ranging_burst_profile);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_onu, ranging_burst_profile);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.data_burst_profile");
+    if (cli_parm != NULL)
+    {
+        bcmolt_burst_profile_index val;
+        val = (bcmolt_burst_profile_index) cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, data_burst_profile, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, data_burst_profile, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_ONU_CFG_ID_DATA_BURST_PROFILE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "data_burst_profile");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_onu, data_burst_profile);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_onu, data_burst_profile);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.ranging_time");
+    if (cli_parm != NULL)
+    {
+        uint32_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, ranging_time, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, ranging_time, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_ONU_CFG_ID_RANGING_TIME, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ranging_time");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_onu, ranging_time);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_onu, ranging_time);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.disabled_after_discovery");
+    if (cli_parm != NULL)
+    {
+        bcmolt_status val;
+        val = (bcmolt_status) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, disabled_after_discovery, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, disabled_after_discovery, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_ONU_CFG_ID_DISABLED_AFTER_DISCOVERY, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "disabled_after_discovery");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_onu, disabled_after_discovery);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_onu, disabled_after_discovery);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.deactivation_reason");
+    if (cli_parm != NULL)
+    {
+        bcmolt_deactivation_reason val;
+        val = (bcmolt_deactivation_reason) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, deactivation_reason, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, deactivation_reason, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_ONU_CFG_ID_DEACTIVATION_REASON, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "deactivation_reason");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_onu, deactivation_reason);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_onu, deactivation_reason);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.all_gem_ports.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_gem_port_with_state_list_u16_max_256 val = { };
+        int32_t i0;
+        val.val = apicli_byte_pool_calloc(byte_pool, cli_parm->array_size * sizeof(*val.val));
+        if (val.val == NULL)
+        {
+            apicli_print_complete(session, BCM_ERR_NOMEM, "\n");
+            return BCM_ERR_NOMEM;
+        }
+
+        val.len = cli_parm->array_size;
+        cli_parm = bcmcli_find_named_parm(session, "filter.all_gem_ports.gem_id");
+        if (cli_parm != NULL)
+        {
+            if (cli_parm->array_size != val.len)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.all_gem_ports.gem_id is a different size than other arrays in the struct\n");
+                return BCM_ERR_PARM;
+            }
+
+            for (i0 = 0; i0 < val.len; i0++)
+            {
+                val.val[i0].gem_id = (bcmolt_xgpon_gem_id) cli_parm->values[i0].unumber;
+            }
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.all_gem_ports.state");
+        if (cli_parm != NULL)
+        {
+            if (cli_parm->array_size != val.len)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.all_gem_ports.state is a different size than other arrays in the struct\n");
+                return BCM_ERR_PARM;
+            }
+
+            for (i0 = 0; i0 < val.len; i0++)
+            {
+                val.val[i0].state = (bcmolt_xgpon_gem_port_state) cli_parm->values[i0].enum_val;
+            }
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, all_gem_ports, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_xgpon_gem_port_with_state_list_u16_max_256 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_ONU_CFG_ID_ALL_GEM_PORTS, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, all_gem_ports, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "all_gem_ports");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_onu, all_gem_ports);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_onu, all_gem_ports);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.all_allocs.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_alloc_with_state_list_u16_max_32 val = { };
+        int32_t i1;
+        val.val = apicli_byte_pool_calloc(byte_pool, cli_parm->array_size * sizeof(*val.val));
+        if (val.val == NULL)
+        {
+            apicli_print_complete(session, BCM_ERR_NOMEM, "\n");
+            return BCM_ERR_NOMEM;
+        }
+
+        val.len = cli_parm->array_size;
+        cli_parm = bcmcli_find_named_parm(session, "filter.all_allocs.alloc_id");
+        if (cli_parm != NULL)
+        {
+            if (cli_parm->array_size != val.len)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.all_allocs.alloc_id is a different size than other arrays in the struct\n");
+                return BCM_ERR_PARM;
+            }
+
+            for (i1 = 0; i1 < val.len; i1++)
+            {
+                val.val[i1].alloc_id = (bcmolt_xgpon_alloc_id) cli_parm->values[i1].unumber;
+            }
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.all_allocs.state");
+        if (cli_parm != NULL)
+        {
+            if (cli_parm->array_size != val.len)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "filter.all_allocs.state is a different size than other arrays in the struct\n");
+                return BCM_ERR_PARM;
+            }
+
+            for (i1 = 0; i1 < val.len; i1++)
+            {
+                val.val[i1].state = (bcmolt_alloc_state) cli_parm->values[i1].enum_val;
+            }
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, all_allocs, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_xgpon_alloc_with_state_list_u16_max_32 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_ONU_CFG_ID_ALL_ALLOCS, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, all_allocs, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "all_allocs");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_onu, all_allocs);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_onu, all_allocs);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.extended_guard_time.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_extended_guard_time val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.extended_guard_time.additional_preburst_guard_time");
+        if (cli_parm != NULL)
+        {
+            val.additional_preburst_guard_time = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.extended_guard_time.additional_preburst_guard_time is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.extended_guard_time.additional_postburst_guard_time");
+        if (cli_parm != NULL)
+        {
+            val.additional_postburst_guard_time = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.extended_guard_time.additional_postburst_guard_time is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, extended_guard_time, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_extended_guard_time val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_ONU_CFG_ID_EXTENDED_GUARD_TIME, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, extended_guard_time, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "extended_guard_time");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_onu, extended_guard_time);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_onu, extended_guard_time);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.us_line_rate");
+    if (cli_parm != NULL)
+    {
+        bcmolt_upstream_line_rate_capabilities val;
+        val = (bcmolt_upstream_line_rate_capabilities) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, us_line_rate, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, us_line_rate, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_ONU_CFG_ID_US_LINE_RATE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "us_line_rate");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_onu, us_line_rate);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_onu, us_line_rate);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.calibration_record.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_arr_calibration_record_8 val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.calibration_record.arr");
+        if (cli_parm != NULL)
+        {
+            int32_t i2;
+            if (cli_parm->array_size != 8)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "array filter.calibration_record.arr must have 8 elements\n");
+                return BCM_ERR_PARM;
+            }
+
+            for (i2 = 0; i2 < 8; i2++)
+            {
+                val.arr[i2] = (bcmolt_calibration_record) cli_parm->values[i2].enum_val;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.calibration_record.arr is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, calibration_record, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_arr_calibration_record_8 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_ONU_CFG_ID_CALIBRATION_RECORD, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, calibration_record, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "calibration_record");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_onu, calibration_record);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_onu, calibration_record);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.tuning_granularity");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, tuning_granularity, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, tuning_granularity, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_ONU_CFG_ID_TUNING_GRANULARITY, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tuning_granularity");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_onu, tuning_granularity);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_onu, tuning_granularity);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.step_tuning_time");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, step_tuning_time, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, step_tuning_time, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_ONU_CFG_ID_STEP_TUNING_TIME, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "step_tuning_time");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_onu, step_tuning_time);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_onu, step_tuning_time);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.power_levelling_capabilities");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, power_levelling_capabilities, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, power_levelling_capabilities, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_ONU_CFG_ID_POWER_LEVELLING_CAPABILITIES, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "power_levelling_capabilities");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_onu, power_levelling_capabilities);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_onu, power_levelling_capabilities);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.request_registration_status.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_request_registration_status val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.request_registration_status.request_registration_state");
+        if (cli_parm != NULL)
+        {
+            val.request_registration_state = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.request_registration_status.request_registration_state is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.request_registration_status.sma_flag");
+        if (cli_parm != NULL)
+        {
+            val.sma_flag = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.request_registration_status.sma_flag is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, request_registration_status, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_request_registration_status val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_ONU_CFG_ID_REQUEST_REGISTRATION_STATUS, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_onu, request_registration_status, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "request_registration_status");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_onu, request_registration_status);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_onu, request_registration_status);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_onu, onu_state) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_onu, onu_old_state) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_onu, alarm_state) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_onu, registration_encryption_keys) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_onu, current_encryption_key) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_onu, serial_number) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_onu, registration_id) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_onu, registration_id_auto_learning) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_onu, ranging_burst_profile) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_onu, data_burst_profile) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_onu, ranging_time) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_onu, disabled_after_discovery) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_onu, deactivation_reason) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_onu, all_gem_ports) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_onu, all_allocs) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_onu, extended_guard_time) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_onu, us_line_rate) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_onu, calibration_record) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_onu, tuning_granularity) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_onu, step_tuning_time) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_onu, power_levelling_capabilities) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_onu, request_registration_status))
+    {
+        BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_onu, all_properties);
+        bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_onu, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);
+    bcmcli_log("bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_onu_stat_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_onu_stat stat;     /**< declare main API struct */
+    bcmolt_xgpon_onu_key key = { }; /**< declare key */
+    bcmos_bool clear_on_read;       /**< declare 'clear on read' flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_onu_stat stat;\n");
+    bcmcli_log("bcmolt_xgpon_onu_key key = {  };\n");
+    bcmcli_log("bcmos_bool clear_on_read;\n");
+    apicli_print_start(session, "bcmolt_stat_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ONU_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        key.onu_id = (bcmolt_xgpon_onu_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "onu_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.onu_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ONU_KEY_ID_ONU_ID, &key.onu_id);
+    bcmcli_log(";\n");
+
+    /* set stat flags from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "clear");
+    if (cli_parm != NULL)
+    {
+        clear_on_read = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "clear is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("clear_on_read = %s;\n", (clear_on_read) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* init the API struct */
+    BCMOLT_STAT_INIT(&stat, xgpon_onu, key);
+    bcmcli_log("BCMOLT_STAT_INIT(&stat, xgpon_onu, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "positive_drift");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_onu, positive_drift);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_onu, positive_drift);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "negative_drift");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_onu, negative_drift);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_onu, negative_drift);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "delimiter_miss_detection");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_onu, delimiter_miss_detection);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_onu, delimiter_miss_detection);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "bip32_errors");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_onu, bip32_errors);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_onu, bip32_errors);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_words");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_onu, rx_words);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_onu, rx_words);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "fec_corrected_symbols");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_onu, fec_corrected_symbols);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_onu, fec_corrected_symbols);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "fec_corrected_codewords");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_onu, fec_corrected_codewords);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_onu, fec_corrected_codewords);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "fec_uncorrectable_codewords");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_onu, fec_uncorrectable_codewords);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_onu, fec_uncorrectable_codewords);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "fec_codewords");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_onu, fec_codewords);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_onu, fec_codewords);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "fec_corrected_bits");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_onu, fec_corrected_bits);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_onu, fec_corrected_bits);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "xgem_key_errors");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_onu, xgem_key_errors);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_onu, xgem_key_errors);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "xgem_loss");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_onu, xgem_loss);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_onu, xgem_loss);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_ploams_mic_error");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_onu, rx_ploams_mic_error);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_onu, rx_ploams_mic_error);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_ploams_non_idle");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_onu, rx_ploams_non_idle);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_onu, rx_ploams_non_idle);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_omci");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_onu, rx_omci);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_onu, rx_omci);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_omci_packets_crc_error");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_onu, rx_omci_packets_crc_error);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_onu, rx_omci_packets_crc_error);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_bytes");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_onu, rx_bytes);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_onu, rx_bytes);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_packets");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_onu, rx_packets);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_onu, rx_packets);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_bytes");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_onu, tx_bytes);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_onu, tx_bytes);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_packets");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_STAT_PROP_GET(&stat, xgpon_onu, tx_packets);
+            bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_onu, tx_packets);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_onu, positive_drift) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_onu, negative_drift) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_onu, delimiter_miss_detection) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_onu, bip32_errors) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_onu, rx_words) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_onu, fec_corrected_symbols) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_onu, fec_corrected_codewords) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_onu, fec_uncorrectable_codewords) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_onu, fec_codewords) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_onu, fec_corrected_bits) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_onu, xgem_key_errors) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_onu, xgem_loss) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_onu, rx_ploams_mic_error) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_onu, rx_ploams_non_idle) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_onu, rx_omci) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_onu, rx_omci_packets_crc_error) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_onu, rx_bytes) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_onu, rx_packets) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_onu, tx_bytes) && !BCMOLT_STAT_PROP_IS_SET(&stat, xgpon_onu, tx_packets))
+    {
+        BCMOLT_STAT_PROP_GET(&stat, xgpon_onu, all_properties);
+        bcmcli_log("BCMOLT_STAT_PROP_GET(&stat, xgpon_onu, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_stat_get(device_id, &stat.hdr, clear_on_read);
+    bcmcli_log("bcmolt_stat_get(device_id, &stat.hdr, clear_on_read);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &stat.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, stat.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_onu_oper_set_onu_state_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_onu_set_onu_state oper;    /**< declare main API struct */
+    bcmolt_xgpon_onu_key key = { };         /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_onu_set_onu_state oper;\n");
+    bcmcli_log("bcmolt_xgpon_onu_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ONU_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        key.onu_id = (bcmolt_xgpon_onu_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "onu_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.onu_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ONU_KEY_ID_ONU_ID, &key.onu_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, xgpon_onu, set_onu_state, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, xgpon_onu, set_onu_state, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "onu_state");
+    if (cli_parm != NULL)
+    {
+        bcmolt_onu_operation val;
+        val = (bcmolt_onu_operation) cli_parm->value.enum_val;
+        BCMOLT_OPER_PROP_SET(&oper, xgpon_onu, set_onu_state, onu_state, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, xgpon_onu, set_onu_state, onu_state, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_OPER, BCMOLT_XGPON_ONU_OPER_ID_SET_ONU_STATE, BCMOLT_XGPON_ONU_SET_ONU_STATE_ID_ONU_STATE, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_onu_oper_rssi_measurement_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_onu_rssi_measurement oper; /**< declare main API struct */
+    bcmolt_xgpon_onu_key key = { };         /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_onu_rssi_measurement oper;\n");
+    bcmcli_log("bcmolt_xgpon_onu_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ONU_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        key.onu_id = (bcmolt_xgpon_onu_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "onu_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.onu_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ONU_KEY_ID_ONU_ID, &key.onu_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, xgpon_onu, rssi_measurement, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, xgpon_onu, rssi_measurement, key);\n");
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_onu_proxy_ploam_packet_send(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_onu_ploam_packet proxy;    /**< declare main API struct */
+    bcmolt_xgpon_onu_key key = { };         /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_onu_ploam_packet proxy;\n");
+    bcmcli_log("bcmolt_xgpon_onu_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_proxy_send");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ONU_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        key.onu_id = (bcmolt_xgpon_onu_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "onu_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.onu_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ONU_KEY_ID_ONU_ID, &key.onu_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_PROXY_INIT(&proxy, xgpon_onu, ploam_packet, key);
+    bcmcli_log("BCMOLT_PROXY_INIT(&proxy, xgpon_onu, ploam_packet, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "default_key");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_PROXY_PROP_SET(&proxy, xgpon_onu, ploam_packet, default_key, val);
+        bcmcli_log("BCMOLT_PROXY_PROP_SET(&proxy, xgpon_onu, ploam_packet, default_key, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_PROXY, BCMOLT_XGPON_ONU_PROXY_ID_PLOAM_PACKET, BCMOLT_XGPON_ONU_PLOAM_PACKET_ID_DEFAULT_KEY, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "ploam.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_arr_u8_40 val = { };
+        cli_parm = bcmcli_find_named_parm(session, "ploam.arr");
+        if (cli_parm != NULL)
+        {
+            if (bcmolt_buf_get_used(&cli_parm->value.buffer) != 40)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "buffer ploam.arr must have 40 bytes\n");
+                return BCM_ERR_PARM;
+            }
+
+            bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+            bcmolt_buf_read(&cli_parm->value.buffer, val.arr, 40);
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "ploam.arr is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_PROXY_PROP_SET(&proxy, xgpon_onu, ploam_packet, ploam, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_arr_u8_40 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_PROXY, BCMOLT_XGPON_ONU_PROXY_ID_PLOAM_PACKET, BCMOLT_XGPON_ONU_PLOAM_PACKET_ID_PLOAM, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_PROXY_PROP_SET(&proxy, xgpon_onu, ploam_packet, ploam, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    /* call API */
+    err = bcmolt_proxy_send(device_id, &proxy.hdr);
+    bcmcli_log("bcmolt_proxy_send(device_id, &proxy.hdr);\n");
+    apicli_print_complete(session, err, proxy.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_onu_proxy_cpu_packets_send(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_onu_cpu_packets proxy; /**< declare main API struct */
+    bcmolt_xgpon_onu_key key = { };     /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_onu_cpu_packets proxy;\n");
+    bcmcli_log("bcmolt_xgpon_onu_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_proxy_send");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ONU_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        key.onu_id = (bcmolt_xgpon_onu_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "onu_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.onu_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ONU_KEY_ID_ONU_ID, &key.onu_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_PROXY_INIT(&proxy, xgpon_onu, cpu_packets, key);
+    bcmcli_log("BCMOLT_PROXY_INIT(&proxy, xgpon_onu, cpu_packets, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "packet_type");
+    if (cli_parm != NULL)
+    {
+        bcmolt_packet_type val;
+        val = (bcmolt_packet_type) cli_parm->value.enum_val;
+        BCMOLT_PROXY_PROP_SET(&proxy, xgpon_onu, cpu_packets, packet_type, val);
+        bcmcli_log("BCMOLT_PROXY_PROP_SET(&proxy, xgpon_onu, cpu_packets, packet_type, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_PROXY, BCMOLT_XGPON_ONU_PROXY_ID_CPU_PACKETS, BCMOLT_XGPON_ONU_CPU_PACKETS_ID_PACKET_TYPE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "calc_crc");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_PROXY_PROP_SET(&proxy, xgpon_onu, cpu_packets, calc_crc, val);
+        bcmcli_log("BCMOLT_PROXY_PROP_SET(&proxy, xgpon_onu, cpu_packets, calc_crc, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_PROXY, BCMOLT_XGPON_ONU_PROXY_ID_CPU_PACKETS, BCMOLT_XGPON_ONU_CPU_PACKETS_ID_CALC_CRC, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "number_of_packets");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_PROXY_PROP_SET(&proxy, xgpon_onu, cpu_packets, number_of_packets, val);
+        bcmcli_log("BCMOLT_PROXY_PROP_SET(&proxy, xgpon_onu, cpu_packets, number_of_packets, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_PROXY, BCMOLT_XGPON_ONU_PROXY_ID_CPU_PACKETS, BCMOLT_XGPON_ONU_CPU_PACKETS_ID_NUMBER_OF_PACKETS, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "packet_size");
+    if (cli_parm != NULL)
+    {
+        uint16_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_PROXY_PROP_SET(&proxy, xgpon_onu, cpu_packets, packet_size, val);
+        bcmcli_log("BCMOLT_PROXY_PROP_SET(&proxy, xgpon_onu, cpu_packets, packet_size, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_PROXY, BCMOLT_XGPON_ONU_PROXY_ID_CPU_PACKETS, BCMOLT_XGPON_ONU_CPU_PACKETS_ID_PACKET_SIZE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "buffer");
+    if (cli_parm != NULL)
+    {
+        bcmolt_u8_list_u32_max_2048 val = { };
+        val.len = bcmolt_buf_get_used(&cli_parm->value.buffer);
+        val.val = apicli_byte_pool_calloc(byte_pool, val.len);
+        if (val.val == NULL)
+        {
+            apicli_print_complete(session, BCM_ERR_NOMEM, "\n");
+            return BCM_ERR_NOMEM;
+        }
+
+        bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+        bcmolt_buf_read(&cli_parm->value.buffer, val.val, val.len);
+        BCMOLT_PROXY_PROP_SET(&proxy, xgpon_onu, cpu_packets, buffer, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_u8_list_u32_max_2048 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_PROXY, BCMOLT_XGPON_ONU_PROXY_ID_CPU_PACKETS, BCMOLT_XGPON_ONU_CPU_PACKETS_ID_BUFFER, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_PROXY_PROP_SET(&proxy, xgpon_onu, cpu_packets, buffer, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    /* call API */
+    err = bcmolt_proxy_send(device_id, &proxy.hdr);
+    bcmcli_log("bcmolt_proxy_send(device_id, &proxy.hdr);\n");
+    apicli_print_complete(session, err, proxy.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_onu_oper_request_registration_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_onu_request_registration oper; /**< declare main API struct */
+    bcmolt_xgpon_onu_key key = { };             /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_onu_request_registration oper;\n");
+    bcmcli_log("bcmolt_xgpon_onu_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ONU_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        key.onu_id = (bcmolt_xgpon_onu_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "onu_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.onu_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ONU_KEY_ID_ONU_ID, &key.onu_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, xgpon_onu, request_registration, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, xgpon_onu, request_registration, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "sma_flag");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_OPER_PROP_SET(&oper, xgpon_onu, request_registration, sma_flag, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, xgpon_onu, request_registration, sma_flag, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_OPER, BCMOLT_XGPON_ONU_OPER_ID_REQUEST_REGISTRATION, BCMOLT_XGPON_ONU_REQUEST_REGISTRATION_ID_SMA_FLAG, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_onu_oper_change_power_levelling_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_onu_change_power_levelling oper;   /**< declare main API struct */
+    bcmolt_xgpon_onu_key key = { };                 /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_onu_change_power_levelling oper;\n");
+    bcmcli_log("bcmolt_xgpon_onu_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ONU_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        key.onu_id = (bcmolt_xgpon_onu_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "onu_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.onu_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ONU_KEY_ID_ONU_ID, &key.onu_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, xgpon_onu, change_power_levelling, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, xgpon_onu, change_power_levelling, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "control");
+    if (cli_parm != NULL)
+    {
+        bcmolt_power_levelling_control val;
+        val = (bcmolt_power_levelling_control) cli_parm->value.enum_val;
+        BCMOLT_OPER_PROP_SET(&oper, xgpon_onu, change_power_levelling, control, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, xgpon_onu, change_power_levelling, control, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_OPER, BCMOLT_XGPON_ONU_OPER_ID_CHANGE_POWER_LEVELLING, BCMOLT_XGPON_ONU_CHANGE_POWER_LEVELLING_ID_CONTROL, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "attenuation");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_OPER_PROP_SET(&oper, xgpon_onu, change_power_levelling, attenuation, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, xgpon_onu, change_power_levelling, attenuation, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_OPER, BCMOLT_XGPON_ONU_OPER_ID_CHANGE_POWER_LEVELLING, BCMOLT_XGPON_ONU_CHANGE_POWER_LEVELLING_ID_ATTENUATION, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_onu_oper_get_power_level_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_onu_get_power_level oper;  /**< declare main API struct */
+    bcmolt_xgpon_onu_key key = { };         /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_onu_get_power_level oper;\n");
+    bcmcli_log("bcmolt_xgpon_onu_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ONU_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        key.onu_id = (bcmolt_xgpon_onu_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "onu_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.onu_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ONU_KEY_ID_ONU_ID, &key.onu_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, xgpon_onu, get_power_level, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, xgpon_onu, get_power_level, key);\n");
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_onu_oper_get_power_consumption_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_onu_get_power_consumption oper;    /**< declare main API struct */
+    bcmolt_xgpon_onu_key key = { };                 /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_onu_get_power_consumption oper;\n");
+    bcmcli_log("bcmolt_xgpon_onu_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ONU_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        key.onu_id = (bcmolt_xgpon_onu_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "onu_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.onu_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ONU_KEY_ID_ONU_ID, &key.onu_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, xgpon_onu, get_power_consumption, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, xgpon_onu, get_power_consumption, key);\n");
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_onu_oper_adjust_tx_wavelength_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_onu_adjust_tx_wavelength oper; /**< declare main API struct */
+    bcmolt_xgpon_onu_key key = { };             /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_onu_adjust_tx_wavelength oper;\n");
+    bcmcli_log("bcmolt_xgpon_onu_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ONU_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        key.onu_id = (bcmolt_xgpon_onu_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "onu_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.onu_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ONU_KEY_ID_ONU_ID, &key.onu_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, xgpon_onu, adjust_tx_wavelength, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, xgpon_onu, adjust_tx_wavelength, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "frequency_adjustment_direction");
+    if (cli_parm != NULL)
+    {
+        bcmolt_frequency_adjustment_direction val;
+        val = (bcmolt_frequency_adjustment_direction) cli_parm->value.enum_val;
+        BCMOLT_OPER_PROP_SET(&oper, xgpon_onu, adjust_tx_wavelength, frequency_adjustment_direction, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, xgpon_onu, adjust_tx_wavelength, frequency_adjustment_direction, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_OPER, BCMOLT_XGPON_ONU_OPER_ID_ADJUST_TX_WAVELENGTH, BCMOLT_XGPON_ONU_ADJUST_TX_WAVELENGTH_ID_FREQUENCY_ADJUSTMENT_DIRECTION, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "frequency_adjustment_size");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_OPER_PROP_SET(&oper, xgpon_onu, adjust_tx_wavelength, frequency_adjustment_size, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, xgpon_onu, adjust_tx_wavelength, frequency_adjustment_size, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_OPER, BCMOLT_XGPON_ONU_OPER_ID_ADJUST_TX_WAVELENGTH, BCMOLT_XGPON_ONU_ADJUST_TX_WAVELENGTH_ID_FREQUENCY_ADJUSTMENT_SIZE, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_onu_oper_secure_mutual_authentication_submit(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_onu_secure_mutual_authentication oper; /**< declare main API struct */
+    bcmolt_xgpon_onu_key key = { };                     /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_onu_secure_mutual_authentication oper;\n");
+    bcmcli_log("bcmolt_xgpon_onu_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ONU_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        key.onu_id = (bcmolt_xgpon_onu_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "onu_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.onu_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ONU_KEY_ID_ONU_ID, &key.onu_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, xgpon_onu, secure_mutual_authentication, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, xgpon_onu, secure_mutual_authentication, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_parm_by_prefix(session, "master_key.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_aes_key val = { };
+        cli_parm = bcmcli_find_named_parm(session, "master_key.bytes");
+        if (cli_parm != NULL)
+        {
+            if (bcmolt_buf_get_used(&cli_parm->value.buffer) != 16)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "buffer master_key.bytes must have 16 bytes\n");
+                return BCM_ERR_PARM;
+            }
+
+            bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+            bcmolt_buf_read(&cli_parm->value.buffer, val.bytes, 16);
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "master_key.bytes is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_OPER_PROP_SET(&oper, xgpon_onu, secure_mutual_authentication, master_key, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_aes_key val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_OPER, BCMOLT_XGPON_ONU_OPER_ID_SECURE_MUTUAL_AUTHENTICATION, BCMOLT_XGPON_ONU_SECURE_MUTUAL_AUTHENTICATION_ID_MASTER_KEY, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, xgpon_onu, secure_mutual_authentication, master_key, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "buffer");
+    if (cli_parm != NULL)
+    {
+        bcmolt_u8_list_u32_max_2048 val = { };
+        val.len = bcmolt_buf_get_used(&cli_parm->value.buffer);
+        val.val = apicli_byte_pool_calloc(byte_pool, val.len);
+        if (val.val == NULL)
+        {
+            apicli_print_complete(session, BCM_ERR_NOMEM, "\n");
+            return BCM_ERR_NOMEM;
+        }
+
+        bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+        bcmolt_buf_read(&cli_parm->value.buffer, val.val, val.len);
+        BCMOLT_OPER_PROP_SET(&oper, xgpon_onu, secure_mutual_authentication, buffer, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_u8_list_u32_max_2048 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_OPER, BCMOLT_XGPON_ONU_OPER_ID_SECURE_MUTUAL_AUTHENTICATION, BCMOLT_XGPON_ONU_SECURE_MUTUAL_AUTHENTICATION_ID_BUFFER, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, xgpon_onu, secure_mutual_authentication, buffer, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "mic");
+    if (cli_parm != NULL)
+    {
+        uint32_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_OPER_PROP_SET(&oper, xgpon_onu, secure_mutual_authentication, mic, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, xgpon_onu, secure_mutual_authentication, mic, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_OPER, BCMOLT_XGPON_ONU_OPER_ID_SECURE_MUTUAL_AUTHENTICATION, BCMOLT_XGPON_ONU_SECURE_MUTUAL_AUTHENTICATION_ID_MIC, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_onu_oper_onu_tuning_in_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_onu_onu_tuning_in oper;    /**< declare main API struct */
+    bcmolt_xgpon_onu_key key = { };         /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_onu_onu_tuning_in oper;\n");
+    bcmcli_log("bcmolt_xgpon_onu_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ONU_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        key.onu_id = (bcmolt_xgpon_onu_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "onu_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.onu_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ONU_KEY_ID_ONU_ID, &key.onu_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, xgpon_onu, onu_tuning_in, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, xgpon_onu, onu_tuning_in, key);\n");
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_onu_oper_onu_tuning_out_submit(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_onu_onu_tuning_out oper;   /**< declare main API struct */
+    bcmolt_xgpon_onu_key key = { };         /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_onu_onu_tuning_out oper;\n");
+    bcmcli_log("bcmolt_xgpon_onu_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_oper_submit");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ONU_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        key.onu_id = (bcmolt_xgpon_onu_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "onu_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.onu_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ONU_KEY_ID_ONU_ID, &key.onu_id);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_OPER_INIT(&oper, xgpon_onu, onu_tuning_out, key);
+    bcmcli_log("BCMOLT_OPER_INIT(&oper, xgpon_onu, onu_tuning_out, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_parm_by_prefix(session, "target_ds_pon_id.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_pon_id val = { };
+        cli_parm = bcmcli_find_named_parm(session, "target_ds_pon_id.administrative_label");
+        if (cli_parm != NULL)
+        {
+            val.administrative_label = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "target_ds_pon_id.administrative_label is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "target_ds_pon_id.dwlch_id");
+        if (cli_parm != NULL)
+        {
+            val.dwlch_id = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "target_ds_pon_id.dwlch_id is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_OPER_PROP_SET(&oper, xgpon_onu, onu_tuning_out, target_ds_pon_id, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_pon_id val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_OPER, BCMOLT_XGPON_ONU_OPER_ID_ONU_TUNING_OUT, BCMOLT_XGPON_ONU_ONU_TUNING_OUT_ID_TARGET_DS_PON_ID, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, xgpon_onu, onu_tuning_out, target_ds_pon_id, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "target_us_pon_id.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_pon_id val = { };
+        cli_parm = bcmcli_find_named_parm(session, "target_us_pon_id.administrative_label");
+        if (cli_parm != NULL)
+        {
+            val.administrative_label = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "target_us_pon_id.administrative_label is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "target_us_pon_id.dwlch_id");
+        if (cli_parm != NULL)
+        {
+            val.dwlch_id = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "target_us_pon_id.dwlch_id is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_OPER_PROP_SET(&oper, xgpon_onu, onu_tuning_out, target_us_pon_id, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_pon_id val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_OPER, BCMOLT_XGPON_ONU_OPER_ID_ONU_TUNING_OUT, BCMOLT_XGPON_ONU_ONU_TUNING_OUT_ID_TARGET_US_PON_ID, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, xgpon_onu, onu_tuning_out, target_us_pon_id, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "time_to_switch");
+    if (cli_parm != NULL)
+    {
+        uint32_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_OPER_PROP_SET(&oper, xgpon_onu, onu_tuning_out, time_to_switch, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, xgpon_onu, onu_tuning_out, time_to_switch, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_OPER, BCMOLT_XGPON_ONU_OPER_ID_ONU_TUNING_OUT, BCMOLT_XGPON_ONU_ONU_TUNING_OUT_ID_TIME_TO_SWITCH, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rollback");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_OPER_PROP_SET(&oper, xgpon_onu, onu_tuning_out, rollback, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, xgpon_onu, onu_tuning_out, rollback, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_OPER, BCMOLT_XGPON_ONU_OPER_ID_ONU_TUNING_OUT, BCMOLT_XGPON_ONU_ONU_TUNING_OUT_ID_ROLLBACK, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "status");
+    if (cli_parm != NULL)
+    {
+        bcmolt_status val;
+        val = (bcmolt_status) cli_parm->value.enum_val;
+        BCMOLT_OPER_PROP_SET(&oper, xgpon_onu, onu_tuning_out, status, val);
+        bcmcli_log("BCMOLT_OPER_PROP_SET(&oper, xgpon_onu, onu_tuning_out, status, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_OPER, BCMOLT_XGPON_ONU_OPER_ID_ONU_TUNING_OUT, BCMOLT_XGPON_ONU_ONU_TUNING_OUT_ID_STATUS, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_oper_submit(device_id, &oper.hdr);
+    bcmcli_log("bcmolt_oper_submit(device_id, &oper.hdr);\n");
+    apicli_print_complete(session, err, oper.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_onu_stat_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_onu_stat_cfg stat_cfg; /**< declare main API struct */
+    bcmolt_xgpon_onu_key key = { };     /**< declare key */
+    bcmolt_xgpon_onu_stat_id stat_id;   /**< declare stat ID */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_onu_stat_cfg stat_cfg;\n");
+    bcmcli_log("bcmolt_xgpon_onu_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_stat_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ONU_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        key.onu_id = (bcmolt_xgpon_onu_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "onu_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.onu_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ONU_KEY_ID_ONU_ID, &key.onu_id);
+    bcmcli_log(";\n");
+
+    /* set stat ID from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "sub");
+    if (cli_parm != NULL)
+    {
+        stat_id = (bcmolt_xgpon_onu_stat_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    /* init the API struct */
+    switch (stat_id)
+    {
+        case BCMOLT_XGPON_ONU_STAT_ID_POSITIVE_DRIFT:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, positive_drift, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, positive_drift, key);\n");
+            break;
+        case BCMOLT_XGPON_ONU_STAT_ID_NEGATIVE_DRIFT:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, negative_drift, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, negative_drift, key);\n");
+            break;
+        case BCMOLT_XGPON_ONU_STAT_ID_DELIMITER_MISS_DETECTION:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, delimiter_miss_detection, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, delimiter_miss_detection, key);\n");
+            break;
+        case BCMOLT_XGPON_ONU_STAT_ID_BIP32_ERRORS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, bip32_errors, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, bip32_errors, key);\n");
+            break;
+        case BCMOLT_XGPON_ONU_STAT_ID_RX_WORDS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, rx_words, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, rx_words, key);\n");
+            break;
+        case BCMOLT_XGPON_ONU_STAT_ID_FEC_CORRECTED_SYMBOLS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, fec_corrected_symbols, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, fec_corrected_symbols, key);\n");
+            break;
+        case BCMOLT_XGPON_ONU_STAT_ID_FEC_CORRECTED_CODEWORDS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, fec_corrected_codewords, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, fec_corrected_codewords, key);\n");
+            break;
+        case BCMOLT_XGPON_ONU_STAT_ID_FEC_UNCORRECTABLE_CODEWORDS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, fec_uncorrectable_codewords, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, fec_uncorrectable_codewords, key);\n");
+            break;
+        case BCMOLT_XGPON_ONU_STAT_ID_FEC_CODEWORDS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, fec_codewords, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, fec_codewords, key);\n");
+            break;
+        case BCMOLT_XGPON_ONU_STAT_ID_FEC_CORRECTED_BITS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, fec_corrected_bits, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, fec_corrected_bits, key);\n");
+            break;
+        case BCMOLT_XGPON_ONU_STAT_ID_XGEM_KEY_ERRORS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, xgem_key_errors, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, xgem_key_errors, key);\n");
+            break;
+        case BCMOLT_XGPON_ONU_STAT_ID_XGEM_LOSS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, xgem_loss, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, xgem_loss, key);\n");
+            break;
+        case BCMOLT_XGPON_ONU_STAT_ID_RX_PLOAMS_MIC_ERROR:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, rx_ploams_mic_error, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, rx_ploams_mic_error, key);\n");
+            break;
+        case BCMOLT_XGPON_ONU_STAT_ID_RX_PLOAMS_NON_IDLE:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, rx_ploams_non_idle, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, rx_ploams_non_idle, key);\n");
+            break;
+        case BCMOLT_XGPON_ONU_STAT_ID_RX_OMCI:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, rx_omci, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, rx_omci, key);\n");
+            break;
+        case BCMOLT_XGPON_ONU_STAT_ID_RX_OMCI_PACKETS_CRC_ERROR:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, rx_omci_packets_crc_error, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, rx_omci_packets_crc_error, key);\n");
+            break;
+        case BCMOLT_XGPON_ONU_STAT_ID_RX_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, rx_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, rx_bytes, key);\n");
+            break;
+        case BCMOLT_XGPON_ONU_STAT_ID_RX_PACKETS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, rx_packets, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, rx_packets, key);\n");
+            break;
+        case BCMOLT_XGPON_ONU_STAT_ID_TX_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, tx_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, tx_bytes, key);\n");
+            break;
+        case BCMOLT_XGPON_ONU_STAT_ID_TX_PACKETS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, tx_packets, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, tx_packets, key);\n");
+            break;
+        default:
+            apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+            return BCM_ERR_RANGE;
+    }
+
+    /* call API */
+    err = bcmolt_stat_cfg_get(device_id, &stat_cfg.hdr);
+    bcmcli_log("bcmolt_stat_cfg_get(device_id, &stat_cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &stat_cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, stat_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_onu_stat_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_onu_stat_cfg stat_cfg; /**< declare main API struct */
+    bcmolt_xgpon_onu_key key = { };     /**< declare key */
+    bcmolt_xgpon_onu_stat_id stat_id;   /**< declare stat ID */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_onu_stat_cfg stat_cfg;\n");
+    bcmcli_log("bcmolt_xgpon_onu_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_stat_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ONU_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "onu_id");
+    if (cli_parm != NULL)
+    {
+        key.onu_id = (bcmolt_xgpon_onu_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "onu_id is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.onu_id = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_ONU_KEY_ID_ONU_ID, &key.onu_id);
+    bcmcli_log(";\n");
+
+    /* set stat ID from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "sub");
+    if (cli_parm != NULL)
+    {
+        stat_id = (bcmolt_xgpon_onu_stat_id) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    /* init the API struct */
+    switch (stat_id)
+    {
+        case BCMOLT_XGPON_ONU_STAT_ID_POSITIVE_DRIFT:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, positive_drift, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, positive_drift, key);\n");
+            break;
+        case BCMOLT_XGPON_ONU_STAT_ID_NEGATIVE_DRIFT:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, negative_drift, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, negative_drift, key);\n");
+            break;
+        case BCMOLT_XGPON_ONU_STAT_ID_DELIMITER_MISS_DETECTION:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, delimiter_miss_detection, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, delimiter_miss_detection, key);\n");
+            break;
+        case BCMOLT_XGPON_ONU_STAT_ID_BIP32_ERRORS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, bip32_errors, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, bip32_errors, key);\n");
+            break;
+        case BCMOLT_XGPON_ONU_STAT_ID_RX_WORDS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, rx_words, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, rx_words, key);\n");
+            break;
+        case BCMOLT_XGPON_ONU_STAT_ID_FEC_CORRECTED_SYMBOLS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, fec_corrected_symbols, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, fec_corrected_symbols, key);\n");
+            break;
+        case BCMOLT_XGPON_ONU_STAT_ID_FEC_CORRECTED_CODEWORDS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, fec_corrected_codewords, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, fec_corrected_codewords, key);\n");
+            break;
+        case BCMOLT_XGPON_ONU_STAT_ID_FEC_UNCORRECTABLE_CODEWORDS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, fec_uncorrectable_codewords, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, fec_uncorrectable_codewords, key);\n");
+            break;
+        case BCMOLT_XGPON_ONU_STAT_ID_FEC_CODEWORDS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, fec_codewords, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, fec_codewords, key);\n");
+            break;
+        case BCMOLT_XGPON_ONU_STAT_ID_FEC_CORRECTED_BITS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, fec_corrected_bits, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, fec_corrected_bits, key);\n");
+            break;
+        case BCMOLT_XGPON_ONU_STAT_ID_XGEM_KEY_ERRORS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, xgem_key_errors, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, xgem_key_errors, key);\n");
+            break;
+        case BCMOLT_XGPON_ONU_STAT_ID_XGEM_LOSS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, xgem_loss, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, xgem_loss, key);\n");
+            break;
+        case BCMOLT_XGPON_ONU_STAT_ID_RX_PLOAMS_MIC_ERROR:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, rx_ploams_mic_error, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, rx_ploams_mic_error, key);\n");
+            break;
+        case BCMOLT_XGPON_ONU_STAT_ID_RX_PLOAMS_NON_IDLE:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, rx_ploams_non_idle, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, rx_ploams_non_idle, key);\n");
+            break;
+        case BCMOLT_XGPON_ONU_STAT_ID_RX_OMCI:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, rx_omci, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, rx_omci, key);\n");
+            break;
+        case BCMOLT_XGPON_ONU_STAT_ID_RX_OMCI_PACKETS_CRC_ERROR:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, rx_omci_packets_crc_error, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, rx_omci_packets_crc_error, key);\n");
+            break;
+        case BCMOLT_XGPON_ONU_STAT_ID_RX_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, rx_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, rx_bytes, key);\n");
+            break;
+        case BCMOLT_XGPON_ONU_STAT_ID_RX_PACKETS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, rx_packets, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, rx_packets, key);\n");
+            break;
+        case BCMOLT_XGPON_ONU_STAT_ID_TX_BYTES:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, tx_bytes, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, tx_bytes, key);\n");
+            break;
+        case BCMOLT_XGPON_ONU_STAT_ID_TX_PACKETS:
+            BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, tx_packets, key);
+            bcmcli_log("BCMOLT_STAT_CFG_INIT(&stat_cfg, xgpon_onu, tx_packets, key);\n");
+            break;
+        default:
+            apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+            return BCM_ERR_RANGE;
+    }
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_stat_alarm_config val = { };
+        cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.trigger.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.type");
+            if (cli_parm != NULL)
+            {
+                val.trigger.type = (bcmolt_stat_condition_type) cli_parm->value.enum_val;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.type is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            switch (val.trigger.type)
+            {
+                case BCMOLT_STAT_CONDITION_TYPE_RATE_THRESHOLD:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.rising");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_threshold.rising = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.rising is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.falling");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_threshold.falling = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.falling is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_RATE_RANGE:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.upper");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_range.upper = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.upper is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.lower");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.rate_range.lower = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.lower is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_VALUE_THRESHOLD:
+                    cli_parm = bcmcli_find_named_parm(session, "cfg.trigger.limit");
+                    if (cli_parm != NULL)
+                    {
+                        val.trigger.u.value_threshold.limit = cli_parm->value.unumber64;
+                    }
+                    else
+                    {
+                        apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger.limit is not set\n");
+                        return BCM_ERR_PARM;
+                    }
+                    break;
+                case BCMOLT_STAT_CONDITION_TYPE_NONE:
+                    break;
+                default:
+                    apicli_print_complete(session, BCM_ERR_RANGE, "\n");
+                    return BCM_ERR_RANGE;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "cfg.trigger is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_parm_by_prefix(session, "cfg.soak.");
+        if (cli_parm != NULL)
+        {
+            cli_parm = bcmcli_find_named_parm(session, "cfg.soak.active_soak_time");
+            if (cli_parm != NULL)
+            {
+                val.soak.active_soak_time = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak.active_soak_time is not set\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "cfg.soak.clear_soak_time");
+            if (cli_parm != NULL)
+            {
+                val.soak.clear_soak_time = cli_parm->value.unumber;
+            }
+            else
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak.clear_soak_time is not set\n");
+                return BCM_ERR_PARM;
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "cfg.soak is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_STAT_CFG_PROP_SET(&stat_cfg, xgpon_onu, cfg, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_stat_alarm_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_STAT_CFG, 0, BCMOLT_XGPON_ONU_STAT_CFG_ID_CFG, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_STAT_CFG_PROP_SET(&stat_cfg, xgpon_onu, cfg, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    /* call API */
+    err = bcmolt_stat_cfg_set(device_id, &stat_cfg.hdr);
+    bcmcli_log("bcmolt_stat_cfg_set(device_id, &stat_cfg.hdr);\n");
+    apicli_print_complete(session, err, stat_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_onu_auto_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_onu_auto_cfg auto_cfg; /**< declare main API struct */
+    bcmolt_xgpon_onu_key key = { };     /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_onu_auto_cfg auto_cfg;\n");
+    bcmcli_log("bcmolt_xgpon_onu_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_auto_cfg_get");
+
+    /* init the API struct */
+    BCMOLT_AUTO_CFG_INIT(&auto_cfg, xgpon_onu, key);
+    bcmcli_log("BCMOLT_AUTO_CFG_INIT(&auto_cfg, xgpon_onu, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "dfi");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, dfi);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, dfi);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "dgi");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, dgi);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, dgi);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "dowi");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, dowi);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, dowi);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "invalid_dbru_report");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, invalid_dbru_report);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, invalid_dbru_report);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "key_exchange_completed");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, key_exchange_completed);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, key_exchange_completed);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "key_exchange_cycle_skipped");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, key_exchange_cycle_skipped);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, key_exchange_cycle_skipped);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "key_exchange_key_mismatch");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, key_exchange_key_mismatch);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, key_exchange_key_mismatch);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "key_exchange_key_request_timeout");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, key_exchange_key_request_timeout);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, key_exchange_key_request_timeout);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "looci");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, looci);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, looci);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_activation_completed");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, onu_activation_completed);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, onu_activation_completed);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_alarm");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, onu_alarm);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, onu_alarm);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_deactivation_completed");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, onu_deactivation_completed);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, onu_deactivation_completed);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_disable_completed");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, onu_disable_completed);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, onu_disable_completed);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_enable_completed");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, onu_enable_completed);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, onu_enable_completed);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_tuning_in_completed");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, onu_tuning_in_completed);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, onu_tuning_in_completed);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_tuning_out_completed");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, onu_tuning_out_completed);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, onu_tuning_out_completed);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "optical_reflection");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, optical_reflection);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, optical_reflection);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "possible_drift");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, possible_drift);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, possible_drift);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "power_consumption_report");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, power_consumption_report);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, power_consumption_report);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "power_level_report");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, power_level_report);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, power_level_report);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "power_management_state_change");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, power_management_state_change);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, power_management_state_change);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "pqsi");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, pqsi);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, pqsi);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ranging_completed");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, ranging_completed);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, ranging_completed);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "registration_id");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, registration_id);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, registration_id);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rssi_measurement_completed");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, rssi_measurement_completed);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, rssi_measurement_completed);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "sdi");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, sdi);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, sdi);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "secure_mutual_authentication_failure");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, secure_mutual_authentication_failure);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, secure_mutual_authentication_failure);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "sfi");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, sfi);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, sfi);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_cleared");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, stat_alarm_cleared);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, stat_alarm_cleared);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_raised");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, stat_alarm_raised);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, stat_alarm_raised);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "sufi");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, sufi);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, sufi);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tiwi");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, tiwi);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, tiwi);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tuning_response");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, tuning_response);
+            bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, tuning_response);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_onu, dfi) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_onu, dgi) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_onu, dowi) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_onu, invalid_dbru_report) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_onu, key_exchange_completed) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_onu, key_exchange_cycle_skipped) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_onu, key_exchange_key_mismatch) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_onu, key_exchange_key_request_timeout) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_onu, looci) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_onu, onu_activation_completed) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_onu, onu_alarm) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_onu, onu_deactivation_completed) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_onu, onu_disable_completed) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_onu, onu_enable_completed) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_onu, onu_tuning_in_completed) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_onu, onu_tuning_out_completed) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_onu, optical_reflection) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_onu, possible_drift) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_onu, power_consumption_report) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_onu, power_level_report) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_onu, power_management_state_change) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_onu, pqsi) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_onu, ranging_completed) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_onu, registration_id) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_onu, rssi_measurement_completed) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_onu, sdi) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_onu, secure_mutual_authentication_failure) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_onu, sfi) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_onu, stat_alarm_cleared) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_onu, stat_alarm_raised) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_onu, sufi) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_onu, tiwi) && !BCMOLT_AUTO_CFG_PROP_IS_SET(&auto_cfg, xgpon_onu, tuning_response))
+    {
+        BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, all_properties);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_GET(&auto_cfg, xgpon_onu, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_auto_cfg_get(device_id, &auto_cfg.hdr);
+    bcmcli_log("bcmolt_auto_cfg_get(device_id, &auto_cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &auto_cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, auto_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_onu_auto_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_onu_auto_cfg auto_cfg; /**< declare main API struct */
+    bcmolt_xgpon_onu_key key = { };     /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_onu_auto_cfg auto_cfg;\n");
+    bcmcli_log("bcmolt_xgpon_onu_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_auto_cfg_set");
+
+    /* init the API struct */
+    BCMOLT_AUTO_CFG_INIT(&auto_cfg, xgpon_onu, key);
+    bcmcli_log("BCMOLT_AUTO_CFG_INIT(&auto_cfg, xgpon_onu, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "dfi");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, dfi, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, dfi, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_ONU_AUTO_CFG_ID_DFI, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "dgi");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, dgi, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, dgi, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_ONU_AUTO_CFG_ID_DGI, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "dowi");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, dowi, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, dowi, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_ONU_AUTO_CFG_ID_DOWI, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "invalid_dbru_report");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, invalid_dbru_report, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, invalid_dbru_report, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_ONU_AUTO_CFG_ID_INVALID_DBRU_REPORT, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "key_exchange_completed");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, key_exchange_completed, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, key_exchange_completed, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_ONU_AUTO_CFG_ID_KEY_EXCHANGE_COMPLETED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "key_exchange_cycle_skipped");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, key_exchange_cycle_skipped, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, key_exchange_cycle_skipped, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_ONU_AUTO_CFG_ID_KEY_EXCHANGE_CYCLE_SKIPPED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "key_exchange_key_mismatch");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, key_exchange_key_mismatch, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, key_exchange_key_mismatch, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_ONU_AUTO_CFG_ID_KEY_EXCHANGE_KEY_MISMATCH, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "key_exchange_key_request_timeout");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, key_exchange_key_request_timeout, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, key_exchange_key_request_timeout, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_ONU_AUTO_CFG_ID_KEY_EXCHANGE_KEY_REQUEST_TIMEOUT, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "looci");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, looci, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, looci, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_ONU_AUTO_CFG_ID_LOOCI, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_activation_completed");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, onu_activation_completed, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, onu_activation_completed, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_ONU_AUTO_CFG_ID_ONU_ACTIVATION_COMPLETED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_alarm");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, onu_alarm, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, onu_alarm, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_ONU_AUTO_CFG_ID_ONU_ALARM, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_deactivation_completed");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, onu_deactivation_completed, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, onu_deactivation_completed, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_ONU_AUTO_CFG_ID_ONU_DEACTIVATION_COMPLETED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_disable_completed");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, onu_disable_completed, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, onu_disable_completed, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_ONU_AUTO_CFG_ID_ONU_DISABLE_COMPLETED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_enable_completed");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, onu_enable_completed, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, onu_enable_completed, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_ONU_AUTO_CFG_ID_ONU_ENABLE_COMPLETED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_tuning_in_completed");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, onu_tuning_in_completed, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, onu_tuning_in_completed, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_ONU_AUTO_CFG_ID_ONU_TUNING_IN_COMPLETED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "onu_tuning_out_completed");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, onu_tuning_out_completed, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, onu_tuning_out_completed, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_ONU_AUTO_CFG_ID_ONU_TUNING_OUT_COMPLETED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "optical_reflection");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, optical_reflection, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, optical_reflection, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_ONU_AUTO_CFG_ID_OPTICAL_REFLECTION, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "possible_drift");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, possible_drift, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, possible_drift, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_ONU_AUTO_CFG_ID_POSSIBLE_DRIFT, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "power_consumption_report");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, power_consumption_report, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, power_consumption_report, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_ONU_AUTO_CFG_ID_POWER_CONSUMPTION_REPORT, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "power_level_report");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, power_level_report, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, power_level_report, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_ONU_AUTO_CFG_ID_POWER_LEVEL_REPORT, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "power_management_state_change");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, power_management_state_change, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, power_management_state_change, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_ONU_AUTO_CFG_ID_POWER_MANAGEMENT_STATE_CHANGE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "pqsi");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, pqsi, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, pqsi, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_ONU_AUTO_CFG_ID_PQSI, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ranging_completed");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, ranging_completed, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, ranging_completed, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_ONU_AUTO_CFG_ID_RANGING_COMPLETED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "registration_id");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, registration_id, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, registration_id, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_ONU_AUTO_CFG_ID_REGISTRATION_ID, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rssi_measurement_completed");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, rssi_measurement_completed, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, rssi_measurement_completed, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_ONU_AUTO_CFG_ID_RSSI_MEASUREMENT_COMPLETED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "sdi");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, sdi, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, sdi, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_ONU_AUTO_CFG_ID_SDI, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "secure_mutual_authentication_failure");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, secure_mutual_authentication_failure, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, secure_mutual_authentication_failure, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_ONU_AUTO_CFG_ID_SECURE_MUTUAL_AUTHENTICATION_FAILURE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "sfi");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, sfi, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, sfi, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_ONU_AUTO_CFG_ID_SFI, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_cleared");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, stat_alarm_cleared, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, stat_alarm_cleared, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_ONU_AUTO_CFG_ID_STAT_ALARM_CLEARED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "stat_alarm_raised");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, stat_alarm_raised, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, stat_alarm_raised, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_ONU_AUTO_CFG_ID_STAT_ALARM_RAISED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "sufi");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, sufi, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, sufi, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_ONU_AUTO_CFG_ID_SUFI, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tiwi");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, tiwi, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, tiwi, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_ONU_AUTO_CFG_ID_TIWI, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tuning_response");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, tuning_response, val);
+        bcmcli_log("BCMOLT_AUTO_CFG_PROP_SET(&auto_cfg, xgpon_onu, tuning_response, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_ONU, BCMOLT_MGT_GROUP_AUTO_CFG, 0, BCMOLT_XGPON_ONU_AUTO_CFG_ID_TUNING_RESPONSE, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_auto_cfg_set(device_id, &auto_cfg.hdr);
+    bcmcli_log("bcmolt_auto_cfg_set(device_id, &auto_cfg.hdr);\n");
+    apicli_print_complete(session, err, auto_cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_trx_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_trx_cfg cfg;       /**< declare main API struct */
+    bcmolt_xgpon_trx_key key = { }; /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_trx_cfg cfg;\n");
+    bcmcli_log("bcmolt_xgpon_trx_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_TRX, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_TRX_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, xgpon_trx, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, xgpon_trx, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "burst_profile");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_trx, burst_profile);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_trx, burst_profile);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "transceiver_config");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_trx, transceiver_config);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_trx, transceiver_config);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "transceiver_type");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_trx, transceiver_type);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_trx, transceiver_type);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "debug");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_trx, debug);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_trx, debug);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rssi_normal_config");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_trx, rssi_normal_config);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_trx, rssi_normal_config);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rssi_ranging_config");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_trx, rssi_ranging_config);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_trx, rssi_ranging_config);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "serdes_configuration");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_trx, serdes_configuration);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_trx, serdes_configuration);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "burst_profile_delimiter_max_errors");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_trx, burst_profile_delimiter_max_errors);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_trx, burst_profile_delimiter_max_errors);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ranging_sm_patterns_at_init");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_trx, ranging_sm_patterns_at_init);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_trx, ranging_sm_patterns_at_init);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ranging_sm_patterns_ed_failure");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_trx, ranging_sm_patterns_ed_failure);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_trx, ranging_sm_patterns_ed_failure);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "reset_on_del_miss");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_trx, reset_on_del_miss);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_trx, reset_on_del_miss);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ed_state");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_trx, ed_state);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_trx, ed_state);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "invert_ed");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_trx, invert_ed);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_trx, invert_ed);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "end_of_burst_reset");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_trx, end_of_burst_reset);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_trx, end_of_burst_reset);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "trx_rst_polarity");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xgpon_trx, trx_rst_polarity);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_trx, trx_rst_polarity);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_trx, burst_profile) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_trx, transceiver_config) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_trx, transceiver_type) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_trx, debug) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_trx, rssi_normal_config) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_trx, rssi_ranging_config) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_trx, serdes_configuration) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_trx, burst_profile_delimiter_max_errors) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_trx, ranging_sm_patterns_at_init) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_trx, ranging_sm_patterns_ed_failure) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_trx, reset_on_del_miss) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_trx, ed_state) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_trx, invert_ed) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_trx, end_of_burst_reset) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xgpon_trx, trx_rst_polarity))
+    {
+        BCMOLT_CFG_PROP_GET(&cfg, xgpon_trx, all_properties);
+        bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xgpon_trx, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_get(device_id, &cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_trx_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_trx_cfg cfg;       /**< declare main API struct */
+    bcmolt_xgpon_trx_key key = { }; /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_trx_cfg cfg;\n");
+    bcmcli_log("bcmolt_xgpon_trx_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_TRX, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_TRX_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, xgpon_trx, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, xgpon_trx, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_parm_by_prefix(session, "burst_profile.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_arr_xgpon_burst_profile_4 val = { };
+        cli_parm = bcmcli_find_parm_by_prefix(session, "burst_profile.arr.");
+        if (cli_parm != NULL)
+        {
+            int32_t i0;
+            if (cli_parm->array_size != 4)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "array burst_profile.arr must have 4 elements\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "burst_profile.arr.profile_version");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 4)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "burst_profile.arr.profile_version is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i0 = 0; i0 < 4; i0++)
+                {
+                    val.arr[i0].profile_version = cli_parm->values[i0].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "burst_profile.arr.is_fec_on");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 4)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "burst_profile.arr.is_fec_on is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i0 = 0; i0 < 4; i0++)
+                {
+                    val.arr[i0].is_fec_on = cli_parm->values[i0].number;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "burst_profile.arr.delimiter_size_in_bytes");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 4)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "burst_profile.arr.delimiter_size_in_bytes is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i0 = 0; i0 < 4; i0++)
+                {
+                    val.arr[i0].delimiter_size_in_bytes = cli_parm->values[i0].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "burst_profile.arr.delimiter_pattern_high");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 4)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "burst_profile.arr.delimiter_pattern_high is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i0 = 0; i0 < 4; i0++)
+                {
+                    val.arr[i0].delimiter_pattern_high = cli_parm->values[i0].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "burst_profile.arr.delimiter_pattern_low");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 4)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "burst_profile.arr.delimiter_pattern_low is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i0 = 0; i0 < 4; i0++)
+                {
+                    val.arr[i0].delimiter_pattern_low = cli_parm->values[i0].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "burst_profile.arr.preamble_length_in_bytes");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 4)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "burst_profile.arr.preamble_length_in_bytes is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i0 = 0; i0 < 4; i0++)
+                {
+                    val.arr[i0].preamble_length_in_bytes = cli_parm->values[i0].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "burst_profile.arr.preamble_repeats_count");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 4)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "burst_profile.arr.preamble_repeats_count is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i0 = 0; i0 < 4; i0++)
+                {
+                    val.arr[i0].preamble_repeats_count = cli_parm->values[i0].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "burst_profile.arr.preamble_pattern_high");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 4)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "burst_profile.arr.preamble_pattern_high is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i0 = 0; i0 < 4; i0++)
+                {
+                    val.arr[i0].preamble_pattern_high = cli_parm->values[i0].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "burst_profile.arr.preamble_pattern_low");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 4)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "burst_profile.arr.preamble_pattern_low is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i0 = 0; i0 < 4; i0++)
+                {
+                    val.arr[i0].preamble_pattern_low = cli_parm->values[i0].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "burst_profile.arr.pon_tag");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 4)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "burst_profile.arr.pon_tag is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i0 = 0; i0 < 4; i0++)
+                {
+                    val.arr[i0].pon_tag = cli_parm->values[i0].unumber64;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "burst_profile.arr.num_of_guard_bytes");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 4)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "burst_profile.arr.num_of_guard_bytes is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i0 = 0; i0 < 4; i0++)
+                {
+                    val.arr[i0].num_of_guard_bytes = cli_parm->values[i0].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "burst_profile.arr.is_profile_valid");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 4)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "burst_profile.arr.is_profile_valid is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i0 = 0; i0 < 4; i0++)
+                {
+                    val.arr[i0].is_profile_valid = cli_parm->values[i0].number;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "burst_profile.arr.burst_overhead_size_in_words");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 4)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "burst_profile.arr.burst_overhead_size_in_words is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i0 = 0; i0 < 4; i0++)
+                {
+                    val.arr[i0].burst_overhead_size_in_words = cli_parm->values[i0].unumber;
+                }
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "burst_profile.arr is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, burst_profile, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_arr_xgpon_burst_profile_4 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_TRX_CFG_ID_BURST_PROFILE, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, burst_profile, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "transceiver_config.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_arr_xgpon_trx_configuration_4 val = { };
+        cli_parm = bcmcli_find_parm_by_prefix(session, "transceiver_config.arr.");
+        if (cli_parm != NULL)
+        {
+            int32_t i1;
+            if (cli_parm->array_size != 4)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "array transceiver_config.arr must have 4 elements\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "transceiver_config.arr.trx_reset_pattern_first");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 4)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "transceiver_config.arr.trx_reset_pattern_first is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i1 = 0; i1 < 4; i1++)
+                {
+                    val.arr[i1].trx_reset_pattern_first = cli_parm->values[i1].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "transceiver_config.arr.trx_reset_pattern_middle");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 4)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "transceiver_config.arr.trx_reset_pattern_middle is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i1 = 0; i1 < 4; i1++)
+                {
+                    val.arr[i1].trx_reset_pattern_middle = cli_parm->values[i1].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "transceiver_config.arr.trx_reset_pattern_last");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 4)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "transceiver_config.arr.trx_reset_pattern_last is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i1 = 0; i1 < 4; i1++)
+                {
+                    val.arr[i1].trx_reset_pattern_last = cli_parm->values[i1].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "transceiver_config.arr.trx_reset_middle_repeats_count");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 4)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "transceiver_config.arr.trx_reset_middle_repeats_count is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i1 = 0; i1 < 4; i1++)
+                {
+                    val.arr[i1].trx_reset_middle_repeats_count = cli_parm->values[i1].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "transceiver_config.arr.trx_reset_location");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 4)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "transceiver_config.arr.trx_reset_location is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i1 = 0; i1 < 4; i1++)
+                {
+                    val.arr[i1].trx_reset_location = cli_parm->values[i1].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "transceiver_config.arr.trx_reset_polarity");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 4)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "transceiver_config.arr.trx_reset_polarity is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i1 = 0; i1 < 4; i1++)
+                {
+                    val.arr[i1].trx_reset_polarity = cli_parm->values[i1].number;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "transceiver_config.arr.bcdr_reset_pattern_first");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 4)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "transceiver_config.arr.bcdr_reset_pattern_first is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i1 = 0; i1 < 4; i1++)
+                {
+                    val.arr[i1].bcdr_reset_pattern_first = cli_parm->values[i1].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "transceiver_config.arr.bcdr_reset_pattern_middle");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 4)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "transceiver_config.arr.bcdr_reset_pattern_middle is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i1 = 0; i1 < 4; i1++)
+                {
+                    val.arr[i1].bcdr_reset_pattern_middle = cli_parm->values[i1].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "transceiver_config.arr.bcdr_reset_pattern_last");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 4)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "transceiver_config.arr.bcdr_reset_pattern_last is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i1 = 0; i1 < 4; i1++)
+                {
+                    val.arr[i1].bcdr_reset_pattern_last = cli_parm->values[i1].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "transceiver_config.arr.bcdr_reset_middle_repeats_count");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 4)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "transceiver_config.arr.bcdr_reset_middle_repeats_count is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i1 = 0; i1 < 4; i1++)
+                {
+                    val.arr[i1].bcdr_reset_middle_repeats_count = cli_parm->values[i1].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "transceiver_config.arr.bcdr_reset_location");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 4)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "transceiver_config.arr.bcdr_reset_location is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i1 = 0; i1 < 4; i1++)
+                {
+                    val.arr[i1].bcdr_reset_location = cli_parm->values[i1].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "transceiver_config.arr.bcdr_reset_polarity");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 4)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "transceiver_config.arr.bcdr_reset_polarity is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i1 = 0; i1 < 4; i1++)
+                {
+                    val.arr[i1].bcdr_reset_polarity = cli_parm->values[i1].number;
+                }
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "transceiver_config.arr is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, transceiver_config, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_arr_xgpon_trx_configuration_4 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_TRX_CFG_ID_TRANSCEIVER_CONFIG, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, transceiver_config, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "transceiver_type");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_trx_type val;
+        val = (bcmolt_xgpon_trx_type) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, transceiver_type, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, transceiver_type, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_TRX_CFG_ID_TRANSCEIVER_TYPE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "debug.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_trx_debug val = { };
+        cli_parm = bcmcli_find_named_parm(session, "debug.rx_reversed_polarity");
+        if (cli_parm != NULL)
+        {
+            val.rx_reversed_polarity = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "debug.rx_reversed_polarity is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "debug.neg_out_bit");
+        if (cli_parm != NULL)
+        {
+            val.neg_out_bit = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "debug.neg_out_bit is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, debug, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_xgpon_trx_debug val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_TRX_CFG_ID_DEBUG, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, debug, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "rssi_normal_config.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_rssi_normal_config val = { };
+        cli_parm = bcmcli_find_named_parm(session, "rssi_normal_config.polarity");
+        if (cli_parm != NULL)
+        {
+            val.polarity = (bcmolt_polarity) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "rssi_normal_config.polarity is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "rssi_normal_config.location");
+        if (cli_parm != NULL)
+        {
+            val.location = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "rssi_normal_config.location is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "rssi_normal_config.location_sign");
+        if (cli_parm != NULL)
+        {
+            val.location_sign = (bcmolt_sign) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "rssi_normal_config.location_sign is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "rssi_normal_config.pulse_width");
+        if (cli_parm != NULL)
+        {
+            val.pulse_width = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "rssi_normal_config.pulse_width is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "rssi_normal_config.minimum_burst");
+        if (cli_parm != NULL)
+        {
+            val.minimum_burst = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "rssi_normal_config.minimum_burst is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, rssi_normal_config, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_xgpon_rssi_normal_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_TRX_CFG_ID_RSSI_NORMAL_CONFIG, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, rssi_normal_config, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "rssi_ranging_config.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_rssi_ranging_config val = { };
+        cli_parm = bcmcli_find_named_parm(session, "rssi_ranging_config.start_on_ed");
+        if (cli_parm != NULL)
+        {
+            val.start_on_ed = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "rssi_ranging_config.start_on_ed is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "rssi_ranging_config.frame_delay");
+        if (cli_parm != NULL)
+        {
+            val.frame_delay = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "rssi_ranging_config.frame_delay is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "rssi_ranging_config.word_delay");
+        if (cli_parm != NULL)
+        {
+            val.word_delay = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "rssi_ranging_config.word_delay is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "rssi_ranging_config.frame_delay_after_ed");
+        if (cli_parm != NULL)
+        {
+            val.frame_delay_after_ed = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "rssi_ranging_config.frame_delay_after_ed is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "rssi_ranging_config.word_delay_after_ed");
+        if (cli_parm != NULL)
+        {
+            val.word_delay_after_ed = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "rssi_ranging_config.word_delay_after_ed is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, rssi_ranging_config, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_xgpon_rssi_ranging_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_TRX_CFG_ID_RSSI_RANGING_CONFIG, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, rssi_ranging_config, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "serdes_configuration.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_serdes_configuration val = { };
+        cli_parm = bcmcli_find_named_parm(session, "serdes_configuration.multi_ed_mode");
+        if (cli_parm != NULL)
+        {
+            val.multi_ed_mode = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "serdes_configuration.multi_ed_mode is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "serdes_configuration.ranging_mode");
+        if (cli_parm != NULL)
+        {
+            val.ranging_mode = (bcmolt_xgpon_serdes_ranging_mode) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "serdes_configuration.ranging_mode is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, serdes_configuration, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_xgpon_serdes_configuration val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_TRX_CFG_ID_SERDES_CONFIGURATION, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, serdes_configuration, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "burst_profile_delimiter_max_errors.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_arr_u8_4 val = { };
+        cli_parm = bcmcli_find_named_parm(session, "burst_profile_delimiter_max_errors.arr");
+        if (cli_parm != NULL)
+        {
+            if (bcmolt_buf_get_used(&cli_parm->value.buffer) != 4)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "buffer burst_profile_delimiter_max_errors.arr must have 4 bytes\n");
+                return BCM_ERR_PARM;
+            }
+
+            bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+            bcmolt_buf_read(&cli_parm->value.buffer, val.arr, 4);
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "burst_profile_delimiter_max_errors.arr is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, burst_profile_delimiter_max_errors, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_arr_u8_4 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_TRX_CFG_ID_BURST_PROFILE_DELIMITER_MAX_ERRORS, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, burst_profile_delimiter_max_errors, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "ranging_sm_patterns_at_init.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_rx_ranging_sm_pattern val = { };
+        cli_parm = bcmcli_find_named_parm(session, "ranging_sm_patterns_at_init.trx_reset_pattern_first");
+        if (cli_parm != NULL)
+        {
+            val.trx_reset_pattern_first = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "ranging_sm_patterns_at_init.trx_reset_pattern_first is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "ranging_sm_patterns_at_init.trx_reset_pattern_middle");
+        if (cli_parm != NULL)
+        {
+            val.trx_reset_pattern_middle = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "ranging_sm_patterns_at_init.trx_reset_pattern_middle is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "ranging_sm_patterns_at_init.trx_reset_pattern_last");
+        if (cli_parm != NULL)
+        {
+            val.trx_reset_pattern_last = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "ranging_sm_patterns_at_init.trx_reset_pattern_last is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "ranging_sm_patterns_at_init.trx_reset_middle_repeats");
+        if (cli_parm != NULL)
+        {
+            val.trx_reset_middle_repeats = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "ranging_sm_patterns_at_init.trx_reset_middle_repeats is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "ranging_sm_patterns_at_init.trx_reset_location");
+        if (cli_parm != NULL)
+        {
+            val.trx_reset_location = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "ranging_sm_patterns_at_init.trx_reset_location is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "ranging_sm_patterns_at_init.bcdr_reset_pattern_first");
+        if (cli_parm != NULL)
+        {
+            val.bcdr_reset_pattern_first = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "ranging_sm_patterns_at_init.bcdr_reset_pattern_first is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "ranging_sm_patterns_at_init.bcdr_reset_pattern_middle");
+        if (cli_parm != NULL)
+        {
+            val.bcdr_reset_pattern_middle = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "ranging_sm_patterns_at_init.bcdr_reset_pattern_middle is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "ranging_sm_patterns_at_init.bcdr_reset_pattern_last");
+        if (cli_parm != NULL)
+        {
+            val.bcdr_reset_pattern_last = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "ranging_sm_patterns_at_init.bcdr_reset_pattern_last is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "ranging_sm_patterns_at_init.bcdr_reset_middle_repeats");
+        if (cli_parm != NULL)
+        {
+            val.bcdr_reset_middle_repeats = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "ranging_sm_patterns_at_init.bcdr_reset_middle_repeats is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "ranging_sm_patterns_at_init.bcdr_reset_location");
+        if (cli_parm != NULL)
+        {
+            val.bcdr_reset_location = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "ranging_sm_patterns_at_init.bcdr_reset_location is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "ranging_sm_patterns_at_init.bcdr_reset_polarity");
+        if (cli_parm != NULL)
+        {
+            val.bcdr_reset_polarity = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "ranging_sm_patterns_at_init.bcdr_reset_polarity is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, ranging_sm_patterns_at_init, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_xgpon_rx_ranging_sm_pattern val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_TRX_CFG_ID_RANGING_SM_PATTERNS_AT_INIT, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, ranging_sm_patterns_at_init, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "ranging_sm_patterns_ed_failure.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_rx_ranging_sm_pattern val = { };
+        cli_parm = bcmcli_find_named_parm(session, "ranging_sm_patterns_ed_failure.trx_reset_pattern_first");
+        if (cli_parm != NULL)
+        {
+            val.trx_reset_pattern_first = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "ranging_sm_patterns_ed_failure.trx_reset_pattern_first is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "ranging_sm_patterns_ed_failure.trx_reset_pattern_middle");
+        if (cli_parm != NULL)
+        {
+            val.trx_reset_pattern_middle = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "ranging_sm_patterns_ed_failure.trx_reset_pattern_middle is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "ranging_sm_patterns_ed_failure.trx_reset_pattern_last");
+        if (cli_parm != NULL)
+        {
+            val.trx_reset_pattern_last = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "ranging_sm_patterns_ed_failure.trx_reset_pattern_last is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "ranging_sm_patterns_ed_failure.trx_reset_middle_repeats");
+        if (cli_parm != NULL)
+        {
+            val.trx_reset_middle_repeats = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "ranging_sm_patterns_ed_failure.trx_reset_middle_repeats is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "ranging_sm_patterns_ed_failure.trx_reset_location");
+        if (cli_parm != NULL)
+        {
+            val.trx_reset_location = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "ranging_sm_patterns_ed_failure.trx_reset_location is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "ranging_sm_patterns_ed_failure.bcdr_reset_pattern_first");
+        if (cli_parm != NULL)
+        {
+            val.bcdr_reset_pattern_first = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "ranging_sm_patterns_ed_failure.bcdr_reset_pattern_first is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "ranging_sm_patterns_ed_failure.bcdr_reset_pattern_middle");
+        if (cli_parm != NULL)
+        {
+            val.bcdr_reset_pattern_middle = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "ranging_sm_patterns_ed_failure.bcdr_reset_pattern_middle is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "ranging_sm_patterns_ed_failure.bcdr_reset_pattern_last");
+        if (cli_parm != NULL)
+        {
+            val.bcdr_reset_pattern_last = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "ranging_sm_patterns_ed_failure.bcdr_reset_pattern_last is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "ranging_sm_patterns_ed_failure.bcdr_reset_middle_repeats");
+        if (cli_parm != NULL)
+        {
+            val.bcdr_reset_middle_repeats = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "ranging_sm_patterns_ed_failure.bcdr_reset_middle_repeats is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "ranging_sm_patterns_ed_failure.bcdr_reset_location");
+        if (cli_parm != NULL)
+        {
+            val.bcdr_reset_location = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "ranging_sm_patterns_ed_failure.bcdr_reset_location is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "ranging_sm_patterns_ed_failure.bcdr_reset_polarity");
+        if (cli_parm != NULL)
+        {
+            val.bcdr_reset_polarity = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "ranging_sm_patterns_ed_failure.bcdr_reset_polarity is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, ranging_sm_patterns_ed_failure, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_xgpon_rx_ranging_sm_pattern val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_TRX_CFG_ID_RANGING_SM_PATTERNS_ED_FAILURE, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, ranging_sm_patterns_ed_failure, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "reset_on_del_miss");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, reset_on_del_miss, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, reset_on_del_miss, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_TRX_CFG_ID_RESET_ON_DEL_MISS, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "ed_state.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_ed_state val = { };
+        cli_parm = bcmcli_find_named_parm(session, "ed_state.reset_on_ed_fail");
+        if (cli_parm != NULL)
+        {
+            val.reset_on_ed_fail = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "ed_state.reset_on_ed_fail is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "ed_state.reset_on_ed_success");
+        if (cli_parm != NULL)
+        {
+            val.reset_on_ed_success = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "ed_state.reset_on_ed_success is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, ed_state, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_xgpon_ed_state val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_TRX_CFG_ID_ED_STATE, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, ed_state, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "invert_ed");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, invert_ed, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, invert_ed, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_TRX_CFG_ID_INVERT_ED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "end_of_burst_reset");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, end_of_burst_reset, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, end_of_burst_reset, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_TRX_CFG_ID_END_OF_BURST_RESET, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "trx_rst_polarity");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, trx_rst_polarity, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, trx_rst_polarity, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_TRX_CFG_ID_TRX_RST_POLARITY, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_set(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_set(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_trx_cfg_clear(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_trx_cfg cfg;       /**< declare main API struct */
+    bcmolt_xgpon_trx_key key = { }; /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_trx_cfg cfg;\n");
+    bcmcli_log("bcmolt_xgpon_trx_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_clear");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_TRX, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_TRX_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, xgpon_trx, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, xgpon_trx, key);\n");
+
+    /* call API */
+    err = bcmolt_cfg_clear(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_clear(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xgpon_trx_cfg_get_multi(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xgpon_trx_cfg cfg;       /**< declare main API struct */
+    bcmolt_xgpon_trx_key key = { }; /**< declare key */
+    bcmolt_msg_set *msg_set = NULL; /**< declare message set */
+    uint32_t max_msgs;              /**< declare max number of msgs to get */
+    bcmos_bool invert_filter;       /**< declare filter invert flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xgpon_trx_cfg cfg;\n");
+    bcmcli_log("bcmolt_xgpon_trx_key key = {  };\n");
+    bcmcli_log("bcmolt_msg_set* msg_set = NULL;\n");
+    bcmcli_log("uint32_t max_msgs;\n");
+    bcmcli_log("bcmos_bool invert_filter;\n");
+    apicli_print_start(session, "bcmolt_cfg_get_multi");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_xgpon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_TRX, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XGPON_TRX_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+
+    /* set max number of msgs from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "max_msgs");
+    if (cli_parm != NULL)
+    {
+        max_msgs = cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "max_msgs is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("max_msgs = %d;\n", max_msgs);
+
+    /* set filter invert flag from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "filter_invert");
+    if (cli_parm != NULL)
+    {
+        invert_filter = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "filter_invert is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("invert_filter = %s;\n", (invert_filter) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* allocate message set */
+    err = apicli_msg_set_alloc(byte_pool, BCMOLT_OBJ_ID_XGPON_TRX, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);
+    if (err != BCM_ERR_OK)
+    {
+        return err;
+    }
+
+    bcmcli_log("bcmolt_msg_set_alloc(BCMOLT_OBJ_ID_XGPON_TRX, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, xgpon_trx, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, xgpon_trx, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.burst_profile.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_arr_xgpon_burst_profile_4 val = { };
+        cli_parm = bcmcli_find_parm_by_prefix(session, "filter.burst_profile.arr.");
+        if (cli_parm != NULL)
+        {
+            int32_t i0;
+            if (cli_parm->array_size != 4)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "array filter.burst_profile.arr must have 4 elements\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.burst_profile.arr.profile_version");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 4)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "filter.burst_profile.arr.profile_version is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i0 = 0; i0 < 4; i0++)
+                {
+                    val.arr[i0].profile_version = cli_parm->values[i0].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.burst_profile.arr.is_fec_on");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 4)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "filter.burst_profile.arr.is_fec_on is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i0 = 0; i0 < 4; i0++)
+                {
+                    val.arr[i0].is_fec_on = cli_parm->values[i0].number;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.burst_profile.arr.delimiter_size_in_bytes");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 4)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "filter.burst_profile.arr.delimiter_size_in_bytes is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i0 = 0; i0 < 4; i0++)
+                {
+                    val.arr[i0].delimiter_size_in_bytes = cli_parm->values[i0].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.burst_profile.arr.delimiter_pattern_high");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 4)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "filter.burst_profile.arr.delimiter_pattern_high is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i0 = 0; i0 < 4; i0++)
+                {
+                    val.arr[i0].delimiter_pattern_high = cli_parm->values[i0].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.burst_profile.arr.delimiter_pattern_low");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 4)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "filter.burst_profile.arr.delimiter_pattern_low is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i0 = 0; i0 < 4; i0++)
+                {
+                    val.arr[i0].delimiter_pattern_low = cli_parm->values[i0].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.burst_profile.arr.preamble_length_in_bytes");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 4)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "filter.burst_profile.arr.preamble_length_in_bytes is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i0 = 0; i0 < 4; i0++)
+                {
+                    val.arr[i0].preamble_length_in_bytes = cli_parm->values[i0].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.burst_profile.arr.preamble_repeats_count");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 4)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "filter.burst_profile.arr.preamble_repeats_count is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i0 = 0; i0 < 4; i0++)
+                {
+                    val.arr[i0].preamble_repeats_count = cli_parm->values[i0].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.burst_profile.arr.preamble_pattern_high");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 4)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "filter.burst_profile.arr.preamble_pattern_high is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i0 = 0; i0 < 4; i0++)
+                {
+                    val.arr[i0].preamble_pattern_high = cli_parm->values[i0].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.burst_profile.arr.preamble_pattern_low");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 4)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "filter.burst_profile.arr.preamble_pattern_low is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i0 = 0; i0 < 4; i0++)
+                {
+                    val.arr[i0].preamble_pattern_low = cli_parm->values[i0].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.burst_profile.arr.pon_tag");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 4)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "filter.burst_profile.arr.pon_tag is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i0 = 0; i0 < 4; i0++)
+                {
+                    val.arr[i0].pon_tag = cli_parm->values[i0].unumber64;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.burst_profile.arr.num_of_guard_bytes");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 4)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "filter.burst_profile.arr.num_of_guard_bytes is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i0 = 0; i0 < 4; i0++)
+                {
+                    val.arr[i0].num_of_guard_bytes = cli_parm->values[i0].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.burst_profile.arr.is_profile_valid");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 4)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "filter.burst_profile.arr.is_profile_valid is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i0 = 0; i0 < 4; i0++)
+                {
+                    val.arr[i0].is_profile_valid = cli_parm->values[i0].number;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.burst_profile.arr.burst_overhead_size_in_words");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 4)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "filter.burst_profile.arr.burst_overhead_size_in_words is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i0 = 0; i0 < 4; i0++)
+                {
+                    val.arr[i0].burst_overhead_size_in_words = cli_parm->values[i0].unumber;
+                }
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.burst_profile.arr is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, burst_profile, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_arr_xgpon_burst_profile_4 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_TRX_CFG_ID_BURST_PROFILE, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, burst_profile, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "burst_profile");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_trx, burst_profile);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_trx, burst_profile);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.transceiver_config.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_arr_xgpon_trx_configuration_4 val = { };
+        cli_parm = bcmcli_find_parm_by_prefix(session, "filter.transceiver_config.arr.");
+        if (cli_parm != NULL)
+        {
+            int32_t i1;
+            if (cli_parm->array_size != 4)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "array filter.transceiver_config.arr must have 4 elements\n");
+                return BCM_ERR_PARM;
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.transceiver_config.arr.trx_reset_pattern_first");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 4)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "filter.transceiver_config.arr.trx_reset_pattern_first is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i1 = 0; i1 < 4; i1++)
+                {
+                    val.arr[i1].trx_reset_pattern_first = cli_parm->values[i1].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.transceiver_config.arr.trx_reset_pattern_middle");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 4)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "filter.transceiver_config.arr.trx_reset_pattern_middle is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i1 = 0; i1 < 4; i1++)
+                {
+                    val.arr[i1].trx_reset_pattern_middle = cli_parm->values[i1].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.transceiver_config.arr.trx_reset_pattern_last");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 4)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "filter.transceiver_config.arr.trx_reset_pattern_last is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i1 = 0; i1 < 4; i1++)
+                {
+                    val.arr[i1].trx_reset_pattern_last = cli_parm->values[i1].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.transceiver_config.arr.trx_reset_middle_repeats_count");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 4)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "filter.transceiver_config.arr.trx_reset_middle_repeats_count is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i1 = 0; i1 < 4; i1++)
+                {
+                    val.arr[i1].trx_reset_middle_repeats_count = cli_parm->values[i1].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.transceiver_config.arr.trx_reset_location");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 4)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "filter.transceiver_config.arr.trx_reset_location is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i1 = 0; i1 < 4; i1++)
+                {
+                    val.arr[i1].trx_reset_location = cli_parm->values[i1].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.transceiver_config.arr.trx_reset_polarity");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 4)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "filter.transceiver_config.arr.trx_reset_polarity is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i1 = 0; i1 < 4; i1++)
+                {
+                    val.arr[i1].trx_reset_polarity = cli_parm->values[i1].number;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.transceiver_config.arr.bcdr_reset_pattern_first");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 4)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "filter.transceiver_config.arr.bcdr_reset_pattern_first is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i1 = 0; i1 < 4; i1++)
+                {
+                    val.arr[i1].bcdr_reset_pattern_first = cli_parm->values[i1].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.transceiver_config.arr.bcdr_reset_pattern_middle");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 4)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "filter.transceiver_config.arr.bcdr_reset_pattern_middle is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i1 = 0; i1 < 4; i1++)
+                {
+                    val.arr[i1].bcdr_reset_pattern_middle = cli_parm->values[i1].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.transceiver_config.arr.bcdr_reset_pattern_last");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 4)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "filter.transceiver_config.arr.bcdr_reset_pattern_last is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i1 = 0; i1 < 4; i1++)
+                {
+                    val.arr[i1].bcdr_reset_pattern_last = cli_parm->values[i1].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.transceiver_config.arr.bcdr_reset_middle_repeats_count");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 4)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "filter.transceiver_config.arr.bcdr_reset_middle_repeats_count is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i1 = 0; i1 < 4; i1++)
+                {
+                    val.arr[i1].bcdr_reset_middle_repeats_count = cli_parm->values[i1].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.transceiver_config.arr.bcdr_reset_location");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 4)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "filter.transceiver_config.arr.bcdr_reset_location is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i1 = 0; i1 < 4; i1++)
+                {
+                    val.arr[i1].bcdr_reset_location = cli_parm->values[i1].unumber;
+                }
+            }
+
+            cli_parm = bcmcli_find_named_parm(session, "filter.transceiver_config.arr.bcdr_reset_polarity");
+            if (cli_parm != NULL)
+            {
+                if (cli_parm->array_size != 4)
+                {
+                    apicli_print_complete(session, BCM_ERR_PARM, "filter.transceiver_config.arr.bcdr_reset_polarity is a different size than other arrays in the struct\n");
+                    return BCM_ERR_PARM;
+                }
+
+                for (i1 = 0; i1 < 4; i1++)
+                {
+                    val.arr[i1].bcdr_reset_polarity = cli_parm->values[i1].number;
+                }
+            }
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.transceiver_config.arr is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, transceiver_config, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_arr_xgpon_trx_configuration_4 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_TRX_CFG_ID_TRANSCEIVER_CONFIG, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, transceiver_config, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "transceiver_config");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_trx, transceiver_config);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_trx, transceiver_config);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.transceiver_type");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_trx_type val;
+        val = (bcmolt_xgpon_trx_type) cli_parm->value.enum_val;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, transceiver_type, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, transceiver_type, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_TRX_CFG_ID_TRANSCEIVER_TYPE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "transceiver_type");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_trx, transceiver_type);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_trx, transceiver_type);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.debug.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_trx_debug val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.debug.rx_reversed_polarity");
+        if (cli_parm != NULL)
+        {
+            val.rx_reversed_polarity = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.debug.rx_reversed_polarity is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.debug.neg_out_bit");
+        if (cli_parm != NULL)
+        {
+            val.neg_out_bit = (bcmolt_control_state) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.debug.neg_out_bit is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, debug, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_xgpon_trx_debug val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_TRX_CFG_ID_DEBUG, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, debug, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "debug");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_trx, debug);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_trx, debug);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.rssi_normal_config.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_rssi_normal_config val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.rssi_normal_config.polarity");
+        if (cli_parm != NULL)
+        {
+            val.polarity = (bcmolt_polarity) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.rssi_normal_config.polarity is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.rssi_normal_config.location");
+        if (cli_parm != NULL)
+        {
+            val.location = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.rssi_normal_config.location is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.rssi_normal_config.location_sign");
+        if (cli_parm != NULL)
+        {
+            val.location_sign = (bcmolt_sign) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.rssi_normal_config.location_sign is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.rssi_normal_config.pulse_width");
+        if (cli_parm != NULL)
+        {
+            val.pulse_width = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.rssi_normal_config.pulse_width is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.rssi_normal_config.minimum_burst");
+        if (cli_parm != NULL)
+        {
+            val.minimum_burst = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.rssi_normal_config.minimum_burst is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, rssi_normal_config, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_xgpon_rssi_normal_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_TRX_CFG_ID_RSSI_NORMAL_CONFIG, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, rssi_normal_config, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rssi_normal_config");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_trx, rssi_normal_config);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_trx, rssi_normal_config);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.rssi_ranging_config.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_rssi_ranging_config val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.rssi_ranging_config.start_on_ed");
+        if (cli_parm != NULL)
+        {
+            val.start_on_ed = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.rssi_ranging_config.start_on_ed is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.rssi_ranging_config.frame_delay");
+        if (cli_parm != NULL)
+        {
+            val.frame_delay = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.rssi_ranging_config.frame_delay is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.rssi_ranging_config.word_delay");
+        if (cli_parm != NULL)
+        {
+            val.word_delay = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.rssi_ranging_config.word_delay is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.rssi_ranging_config.frame_delay_after_ed");
+        if (cli_parm != NULL)
+        {
+            val.frame_delay_after_ed = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.rssi_ranging_config.frame_delay_after_ed is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.rssi_ranging_config.word_delay_after_ed");
+        if (cli_parm != NULL)
+        {
+            val.word_delay_after_ed = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.rssi_ranging_config.word_delay_after_ed is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, rssi_ranging_config, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_xgpon_rssi_ranging_config val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_TRX_CFG_ID_RSSI_RANGING_CONFIG, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, rssi_ranging_config, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rssi_ranging_config");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_trx, rssi_ranging_config);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_trx, rssi_ranging_config);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.serdes_configuration.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_serdes_configuration val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.serdes_configuration.multi_ed_mode");
+        if (cli_parm != NULL)
+        {
+            val.multi_ed_mode = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.serdes_configuration.multi_ed_mode is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.serdes_configuration.ranging_mode");
+        if (cli_parm != NULL)
+        {
+            val.ranging_mode = (bcmolt_xgpon_serdes_ranging_mode) cli_parm->value.enum_val;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.serdes_configuration.ranging_mode is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, serdes_configuration, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_xgpon_serdes_configuration val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_TRX_CFG_ID_SERDES_CONFIGURATION, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, serdes_configuration, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "serdes_configuration");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_trx, serdes_configuration);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_trx, serdes_configuration);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.burst_profile_delimiter_max_errors.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_arr_u8_4 val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.burst_profile_delimiter_max_errors.arr");
+        if (cli_parm != NULL)
+        {
+            if (bcmolt_buf_get_used(&cli_parm->value.buffer) != 4)
+            {
+                apicli_print_complete(session, BCM_ERR_PARM, "buffer filter.burst_profile_delimiter_max_errors.arr must have 4 bytes\n");
+                return BCM_ERR_PARM;
+            }
+
+            bcmolt_buf_set_pos(&cli_parm->value.buffer, 0);
+            bcmolt_buf_read(&cli_parm->value.buffer, val.arr, 4);
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.burst_profile_delimiter_max_errors.arr is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, burst_profile_delimiter_max_errors, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_arr_u8_4 val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_TRX_CFG_ID_BURST_PROFILE_DELIMITER_MAX_ERRORS, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, burst_profile_delimiter_max_errors, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "burst_profile_delimiter_max_errors");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_trx, burst_profile_delimiter_max_errors);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_trx, burst_profile_delimiter_max_errors);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.ranging_sm_patterns_at_init.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_rx_ranging_sm_pattern val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.ranging_sm_patterns_at_init.trx_reset_pattern_first");
+        if (cli_parm != NULL)
+        {
+            val.trx_reset_pattern_first = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.ranging_sm_patterns_at_init.trx_reset_pattern_first is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.ranging_sm_patterns_at_init.trx_reset_pattern_middle");
+        if (cli_parm != NULL)
+        {
+            val.trx_reset_pattern_middle = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.ranging_sm_patterns_at_init.trx_reset_pattern_middle is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.ranging_sm_patterns_at_init.trx_reset_pattern_last");
+        if (cli_parm != NULL)
+        {
+            val.trx_reset_pattern_last = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.ranging_sm_patterns_at_init.trx_reset_pattern_last is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.ranging_sm_patterns_at_init.trx_reset_middle_repeats");
+        if (cli_parm != NULL)
+        {
+            val.trx_reset_middle_repeats = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.ranging_sm_patterns_at_init.trx_reset_middle_repeats is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.ranging_sm_patterns_at_init.trx_reset_location");
+        if (cli_parm != NULL)
+        {
+            val.trx_reset_location = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.ranging_sm_patterns_at_init.trx_reset_location is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.ranging_sm_patterns_at_init.bcdr_reset_pattern_first");
+        if (cli_parm != NULL)
+        {
+            val.bcdr_reset_pattern_first = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.ranging_sm_patterns_at_init.bcdr_reset_pattern_first is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.ranging_sm_patterns_at_init.bcdr_reset_pattern_middle");
+        if (cli_parm != NULL)
+        {
+            val.bcdr_reset_pattern_middle = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.ranging_sm_patterns_at_init.bcdr_reset_pattern_middle is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.ranging_sm_patterns_at_init.bcdr_reset_pattern_last");
+        if (cli_parm != NULL)
+        {
+            val.bcdr_reset_pattern_last = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.ranging_sm_patterns_at_init.bcdr_reset_pattern_last is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.ranging_sm_patterns_at_init.bcdr_reset_middle_repeats");
+        if (cli_parm != NULL)
+        {
+            val.bcdr_reset_middle_repeats = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.ranging_sm_patterns_at_init.bcdr_reset_middle_repeats is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.ranging_sm_patterns_at_init.bcdr_reset_location");
+        if (cli_parm != NULL)
+        {
+            val.bcdr_reset_location = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.ranging_sm_patterns_at_init.bcdr_reset_location is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.ranging_sm_patterns_at_init.bcdr_reset_polarity");
+        if (cli_parm != NULL)
+        {
+            val.bcdr_reset_polarity = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.ranging_sm_patterns_at_init.bcdr_reset_polarity is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, ranging_sm_patterns_at_init, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_xgpon_rx_ranging_sm_pattern val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_TRX_CFG_ID_RANGING_SM_PATTERNS_AT_INIT, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, ranging_sm_patterns_at_init, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ranging_sm_patterns_at_init");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_trx, ranging_sm_patterns_at_init);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_trx, ranging_sm_patterns_at_init);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.ranging_sm_patterns_ed_failure.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_rx_ranging_sm_pattern val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.ranging_sm_patterns_ed_failure.trx_reset_pattern_first");
+        if (cli_parm != NULL)
+        {
+            val.trx_reset_pattern_first = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.ranging_sm_patterns_ed_failure.trx_reset_pattern_first is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.ranging_sm_patterns_ed_failure.trx_reset_pattern_middle");
+        if (cli_parm != NULL)
+        {
+            val.trx_reset_pattern_middle = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.ranging_sm_patterns_ed_failure.trx_reset_pattern_middle is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.ranging_sm_patterns_ed_failure.trx_reset_pattern_last");
+        if (cli_parm != NULL)
+        {
+            val.trx_reset_pattern_last = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.ranging_sm_patterns_ed_failure.trx_reset_pattern_last is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.ranging_sm_patterns_ed_failure.trx_reset_middle_repeats");
+        if (cli_parm != NULL)
+        {
+            val.trx_reset_middle_repeats = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.ranging_sm_patterns_ed_failure.trx_reset_middle_repeats is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.ranging_sm_patterns_ed_failure.trx_reset_location");
+        if (cli_parm != NULL)
+        {
+            val.trx_reset_location = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.ranging_sm_patterns_ed_failure.trx_reset_location is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.ranging_sm_patterns_ed_failure.bcdr_reset_pattern_first");
+        if (cli_parm != NULL)
+        {
+            val.bcdr_reset_pattern_first = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.ranging_sm_patterns_ed_failure.bcdr_reset_pattern_first is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.ranging_sm_patterns_ed_failure.bcdr_reset_pattern_middle");
+        if (cli_parm != NULL)
+        {
+            val.bcdr_reset_pattern_middle = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.ranging_sm_patterns_ed_failure.bcdr_reset_pattern_middle is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.ranging_sm_patterns_ed_failure.bcdr_reset_pattern_last");
+        if (cli_parm != NULL)
+        {
+            val.bcdr_reset_pattern_last = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.ranging_sm_patterns_ed_failure.bcdr_reset_pattern_last is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.ranging_sm_patterns_ed_failure.bcdr_reset_middle_repeats");
+        if (cli_parm != NULL)
+        {
+            val.bcdr_reset_middle_repeats = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.ranging_sm_patterns_ed_failure.bcdr_reset_middle_repeats is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.ranging_sm_patterns_ed_failure.bcdr_reset_location");
+        if (cli_parm != NULL)
+        {
+            val.bcdr_reset_location = cli_parm->value.unumber;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.ranging_sm_patterns_ed_failure.bcdr_reset_location is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.ranging_sm_patterns_ed_failure.bcdr_reset_polarity");
+        if (cli_parm != NULL)
+        {
+            val.bcdr_reset_polarity = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.ranging_sm_patterns_ed_failure.bcdr_reset_polarity is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, ranging_sm_patterns_ed_failure, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_xgpon_rx_ranging_sm_pattern val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_TRX_CFG_ID_RANGING_SM_PATTERNS_ED_FAILURE, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, ranging_sm_patterns_ed_failure, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ranging_sm_patterns_ed_failure");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_trx, ranging_sm_patterns_ed_failure);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_trx, ranging_sm_patterns_ed_failure);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.reset_on_del_miss");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, reset_on_del_miss, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, reset_on_del_miss, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_TRX_CFG_ID_RESET_ON_DEL_MISS, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "reset_on_del_miss");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_trx, reset_on_del_miss);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_trx, reset_on_del_miss);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_parm_by_prefix(session, "filter.ed_state.");
+    if (cli_parm != NULL)
+    {
+        bcmolt_xgpon_ed_state val = { };
+        cli_parm = bcmcli_find_named_parm(session, "filter.ed_state.reset_on_ed_fail");
+        if (cli_parm != NULL)
+        {
+            val.reset_on_ed_fail = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.ed_state.reset_on_ed_fail is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        cli_parm = bcmcli_find_named_parm(session, "filter.ed_state.reset_on_ed_success");
+        if (cli_parm != NULL)
+        {
+            val.reset_on_ed_success = cli_parm->value.number;
+        }
+        else
+        {
+            apicli_print_complete(session, BCM_ERR_PARM, "filter.ed_state.reset_on_ed_success is not set\n");
+            return BCM_ERR_PARM;
+        }
+
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, ed_state, val);
+        bcmcli_log("{\n");
+        bcmcli_log("bcmolt_xgpon_ed_state val = ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_TRX_CFG_ID_ED_STATE, &val);
+        bcmcli_log(";\n");
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, ed_state, val);\n");
+        bcmcli_log("}\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "ed_state");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_trx, ed_state);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_trx, ed_state);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.invert_ed");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, invert_ed, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, invert_ed, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_TRX_CFG_ID_INVERT_ED, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "invert_ed");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_trx, invert_ed);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_trx, invert_ed);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.end_of_burst_reset");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, end_of_burst_reset, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, end_of_burst_reset, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_TRX_CFG_ID_END_OF_BURST_RESET, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "end_of_burst_reset");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_trx, end_of_burst_reset);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_trx, end_of_burst_reset);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.trx_rst_polarity");
+    if (cli_parm != NULL)
+    {
+        bcmos_bool val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, trx_rst_polarity, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xgpon_trx, trx_rst_polarity, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XGPON_TRX, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XGPON_TRX_CFG_ID_TRX_RST_POLARITY, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "trx_rst_polarity");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_trx, trx_rst_polarity);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_trx, trx_rst_polarity);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_trx, burst_profile) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_trx, transceiver_config) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_trx, transceiver_type) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_trx, debug) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_trx, rssi_normal_config) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_trx, rssi_ranging_config) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_trx, serdes_configuration) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_trx, burst_profile_delimiter_max_errors) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_trx, ranging_sm_patterns_at_init) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_trx, ranging_sm_patterns_ed_failure) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_trx, reset_on_del_miss) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_trx, ed_state) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_trx, invert_ed) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_trx, end_of_burst_reset) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xgpon_trx, trx_rst_polarity))
+    {
+        BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_trx, all_properties);
+        bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xgpon_trx, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);
+    bcmcli_log("bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xpon_serdes_cfg_get(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xpon_serdes_cfg cfg;         /**< declare main API struct */
+    bcmolt_xpon_serdes_key key = { };   /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xpon_serdes_cfg cfg;\n");
+    bcmcli_log("bcmolt_xpon_serdes_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_get");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_pon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XPON_SERDES, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XPON_SERDES_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "instance");
+    if (cli_parm != NULL)
+    {
+        key.instance = (bcmolt_serdes_instance) cli_parm->value.enum_val;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "instance is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.instance = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XPON_SERDES, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XPON_SERDES_KEY_ID_INSTANCE, &key.instance);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, xpon_serdes, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, xpon_serdes, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "rx_vga");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xpon_serdes, rx_vga);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xpon_serdes, rx_vga);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_pf");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xpon_serdes, rx_pf);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xpon_serdes, rx_pf);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_lfpf");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xpon_serdes, rx_lfpf);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xpon_serdes, rx_lfpf);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_dfe1");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xpon_serdes, rx_dfe1);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xpon_serdes, rx_dfe1);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_dfe2");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xpon_serdes, rx_dfe2);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xpon_serdes, rx_dfe2);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_dfe3");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xpon_serdes, rx_dfe3);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xpon_serdes, rx_dfe3);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_dfe4");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xpon_serdes, rx_dfe4);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xpon_serdes, rx_dfe4);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_dfe5");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xpon_serdes, rx_dfe5);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xpon_serdes, rx_dfe5);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_pre");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xpon_serdes, tx_pre);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xpon_serdes, tx_pre);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_main");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xpon_serdes, tx_main);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xpon_serdes, tx_main);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_post1");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xpon_serdes, tx_post1);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xpon_serdes, tx_post1);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_post2");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xpon_serdes, tx_post2);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xpon_serdes, tx_post2);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_post3");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xpon_serdes, tx_post3);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xpon_serdes, tx_post3);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_amp");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_CFG_PROP_GET(&cfg, xpon_serdes, tx_amp);
+            bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xpon_serdes, tx_amp);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_CFG_PROP_IS_SET(&cfg, xpon_serdes, rx_vga) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xpon_serdes, rx_pf) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xpon_serdes, rx_lfpf) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xpon_serdes, rx_dfe1) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xpon_serdes, rx_dfe2) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xpon_serdes, rx_dfe3) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xpon_serdes, rx_dfe4) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xpon_serdes, rx_dfe5) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xpon_serdes, tx_pre) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xpon_serdes, tx_main) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xpon_serdes, tx_post1) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xpon_serdes, tx_post2) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xpon_serdes, tx_post3) && !BCMOLT_CFG_PROP_IS_SET(&cfg, xpon_serdes, tx_amp))
+    {
+        BCMOLT_CFG_PROP_GET(&cfg, xpon_serdes, all_properties);
+        bcmcli_log("BCMOLT_CFG_PROP_GET(&cfg, xpon_serdes, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_get(device_id, &cfg.hdr);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xpon_serdes_cfg_set(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xpon_serdes_cfg cfg;         /**< declare main API struct */
+    bcmolt_xpon_serdes_key key = { };   /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xpon_serdes_cfg cfg;\n");
+    bcmcli_log("bcmolt_xpon_serdes_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_set");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_pon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XPON_SERDES, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XPON_SERDES_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "instance");
+    if (cli_parm != NULL)
+    {
+        key.instance = (bcmolt_serdes_instance) cli_parm->value.enum_val;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "instance is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.instance = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XPON_SERDES, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XPON_SERDES_KEY_ID_INSTANCE, &key.instance);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, xpon_serdes, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, xpon_serdes, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "rx_vga");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, rx_vga, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, rx_vga, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XPON_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XPON_SERDES_CFG_ID_RX_VGA, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_pf");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, rx_pf, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, rx_pf, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XPON_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XPON_SERDES_CFG_ID_RX_PF, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_lfpf");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, rx_lfpf, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, rx_lfpf, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XPON_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XPON_SERDES_CFG_ID_RX_LFPF, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_dfe1");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, rx_dfe1, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, rx_dfe1, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XPON_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XPON_SERDES_CFG_ID_RX_DFE1, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_dfe2");
+    if (cli_parm != NULL)
+    {
+        int8_t val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, rx_dfe2, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, rx_dfe2, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XPON_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XPON_SERDES_CFG_ID_RX_DFE2, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_dfe3");
+    if (cli_parm != NULL)
+    {
+        int8_t val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, rx_dfe3, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, rx_dfe3, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XPON_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XPON_SERDES_CFG_ID_RX_DFE3, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_dfe4");
+    if (cli_parm != NULL)
+    {
+        int8_t val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, rx_dfe4, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, rx_dfe4, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XPON_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XPON_SERDES_CFG_ID_RX_DFE4, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_dfe5");
+    if (cli_parm != NULL)
+    {
+        int8_t val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, rx_dfe5, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, rx_dfe5, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XPON_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XPON_SERDES_CFG_ID_RX_DFE5, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_pre");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, tx_pre, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, tx_pre, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XPON_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XPON_SERDES_CFG_ID_TX_PRE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_main");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, tx_main, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, tx_main, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XPON_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XPON_SERDES_CFG_ID_TX_MAIN, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_post1");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, tx_post1, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, tx_post1, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XPON_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XPON_SERDES_CFG_ID_TX_POST1, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_post2");
+    if (cli_parm != NULL)
+    {
+        int8_t val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, tx_post2, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, tx_post2, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XPON_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XPON_SERDES_CFG_ID_TX_POST2, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_post3");
+    if (cli_parm != NULL)
+    {
+        int8_t val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, tx_post3, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, tx_post3, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XPON_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XPON_SERDES_CFG_ID_TX_POST3, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_amp");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, tx_amp, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, tx_amp, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XPON_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XPON_SERDES_CFG_ID_TX_AMP, &val);
+        bcmcli_log(");\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_set(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_set(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xpon_serdes_cfg_clear(bcmolt_devid device_id, bcmcli_session *session)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xpon_serdes_cfg cfg;         /**< declare main API struct */
+    bcmolt_xpon_serdes_key key = { };   /**< declare key */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xpon_serdes_cfg cfg;\n");
+    bcmcli_log("bcmolt_xpon_serdes_key key = {  };\n");
+    apicli_print_start(session, "bcmolt_cfg_clear");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_pon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XPON_SERDES, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XPON_SERDES_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "instance");
+    if (cli_parm != NULL)
+    {
+        key.instance = (bcmolt_serdes_instance) cli_parm->value.enum_val;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "instance is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.instance = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XPON_SERDES, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XPON_SERDES_KEY_ID_INSTANCE, &key.instance);
+    bcmcli_log(";\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, xpon_serdes, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, xpon_serdes, key);\n");
+
+    /* call API */
+    err = bcmolt_cfg_clear(device_id, &cfg.hdr);
+    bcmcli_log("bcmolt_cfg_clear(device_id, &cfg.hdr);\n");
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_xpon_serdes_cfg_get_multi(bcmolt_devid device_id, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmos_errno err;
+    bcmolt_xpon_serdes_cfg cfg;         /**< declare main API struct */
+    bcmolt_xpon_serdes_key key = { };   /**< declare key */
+    bcmolt_msg_set *msg_set = NULL;     /**< declare message set */
+    uint32_t max_msgs;                  /**< declare max number of msgs to get */
+    bcmos_bool invert_filter;           /**< declare filter invert flag */
+    bcmcli_log("bcmolt_devid device_id = %d;\n", device_id);
+    bcmcli_log("bcmolt_xpon_serdes_cfg cfg;\n");
+    bcmcli_log("bcmolt_xpon_serdes_key key = {  };\n");
+    bcmcli_log("bcmolt_msg_set* msg_set = NULL;\n");
+    bcmcli_log("uint32_t max_msgs;\n");
+    bcmcli_log("bcmos_bool invert_filter;\n");
+    apicli_print_start(session, "bcmolt_cfg_get_multi");
+
+    /* build key from CLI parameters */
+    cli_parm = bcmcli_find_named_parm(session, "pon_ni");
+    if (cli_parm != NULL)
+    {
+        key.pon_ni = (bcmolt_pon_ni) cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "pon_ni is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.pon_ni = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XPON_SERDES, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XPON_SERDES_KEY_ID_PON_NI, &key.pon_ni);
+    bcmcli_log(";\n");
+    cli_parm = bcmcli_find_named_parm(session, "instance");
+    if (cli_parm != NULL)
+    {
+        key.instance = (bcmolt_serdes_instance) cli_parm->value.enum_val;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "instance is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("key.instance = ");
+    apicli_log_prop_val(BCMOLT_OBJ_ID_XPON_SERDES, BCMOLT_MGT_GROUP_KEY, 0, BCMOLT_XPON_SERDES_KEY_ID_INSTANCE, &key.instance);
+    bcmcli_log(";\n");
+
+    /* set max number of msgs from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "max_msgs");
+    if (cli_parm != NULL)
+    {
+        max_msgs = cli_parm->value.unumber;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "max_msgs is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("max_msgs = %d;\n", max_msgs);
+
+    /* set filter invert flag from CLI parameter */
+    cli_parm = bcmcli_find_named_parm(session, "filter_invert");
+    if (cli_parm != NULL)
+    {
+        invert_filter = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "filter_invert is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    bcmcli_log("invert_filter = %s;\n", (invert_filter) ? "BCMOS_TRUE" : "BCMOS_FALSE");
+
+    /* allocate message set */
+    err = apicli_msg_set_alloc(byte_pool, BCMOLT_OBJ_ID_XPON_SERDES, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);
+    if (err != BCM_ERR_OK)
+    {
+        return err;
+    }
+
+    bcmcli_log("bcmolt_msg_set_alloc(BCMOLT_OBJ_ID_XPON_SERDES, BCMOLT_MGT_GROUP_CFG, max_msgs, &msg_set);\n");
+
+    /* init the API struct */
+    BCMOLT_CFG_INIT(&cfg, xpon_serdes, key);
+    bcmcli_log("BCMOLT_CFG_INIT(&cfg, xpon_serdes, key);\n");
+
+    /* decode API parameters from CLI */
+    cli_parm = bcmcli_find_named_parm(session, "filter.rx_vga");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, rx_vga, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, rx_vga, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XPON_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XPON_SERDES_CFG_ID_RX_VGA, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_vga");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xpon_serdes, rx_vga);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xpon_serdes, rx_vga);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.rx_pf");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, rx_pf, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, rx_pf, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XPON_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XPON_SERDES_CFG_ID_RX_PF, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_pf");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xpon_serdes, rx_pf);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xpon_serdes, rx_pf);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.rx_lfpf");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, rx_lfpf, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, rx_lfpf, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XPON_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XPON_SERDES_CFG_ID_RX_LFPF, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_lfpf");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xpon_serdes, rx_lfpf);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xpon_serdes, rx_lfpf);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.rx_dfe1");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, rx_dfe1, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, rx_dfe1, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XPON_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XPON_SERDES_CFG_ID_RX_DFE1, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_dfe1");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xpon_serdes, rx_dfe1);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xpon_serdes, rx_dfe1);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.rx_dfe2");
+    if (cli_parm != NULL)
+    {
+        int8_t val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, rx_dfe2, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, rx_dfe2, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XPON_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XPON_SERDES_CFG_ID_RX_DFE2, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_dfe2");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xpon_serdes, rx_dfe2);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xpon_serdes, rx_dfe2);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.rx_dfe3");
+    if (cli_parm != NULL)
+    {
+        int8_t val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, rx_dfe3, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, rx_dfe3, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XPON_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XPON_SERDES_CFG_ID_RX_DFE3, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_dfe3");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xpon_serdes, rx_dfe3);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xpon_serdes, rx_dfe3);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.rx_dfe4");
+    if (cli_parm != NULL)
+    {
+        int8_t val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, rx_dfe4, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, rx_dfe4, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XPON_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XPON_SERDES_CFG_ID_RX_DFE4, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_dfe4");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xpon_serdes, rx_dfe4);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xpon_serdes, rx_dfe4);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.rx_dfe5");
+    if (cli_parm != NULL)
+    {
+        int8_t val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, rx_dfe5, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, rx_dfe5, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XPON_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XPON_SERDES_CFG_ID_RX_DFE5, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "rx_dfe5");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xpon_serdes, rx_dfe5);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xpon_serdes, rx_dfe5);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.tx_pre");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, tx_pre, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, tx_pre, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XPON_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XPON_SERDES_CFG_ID_TX_PRE, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_pre");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xpon_serdes, tx_pre);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xpon_serdes, tx_pre);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.tx_main");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, tx_main, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, tx_main, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XPON_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XPON_SERDES_CFG_ID_TX_MAIN, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_main");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xpon_serdes, tx_main);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xpon_serdes, tx_main);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.tx_post1");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, tx_post1, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, tx_post1, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XPON_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XPON_SERDES_CFG_ID_TX_POST1, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_post1");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xpon_serdes, tx_post1);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xpon_serdes, tx_post1);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.tx_post2");
+    if (cli_parm != NULL)
+    {
+        int8_t val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, tx_post2, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, tx_post2, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XPON_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XPON_SERDES_CFG_ID_TX_POST2, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_post2");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xpon_serdes, tx_post2);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xpon_serdes, tx_post2);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.tx_post3");
+    if (cli_parm != NULL)
+    {
+        int8_t val;
+        val = cli_parm->value.number;
+        BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, tx_post3, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, tx_post3, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XPON_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XPON_SERDES_CFG_ID_TX_POST3, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_post3");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xpon_serdes, tx_post3);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xpon_serdes, tx_post3);\n");
+        }
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "filter.tx_amp");
+    if (cli_parm != NULL)
+    {
+        uint8_t val;
+        val = cli_parm->value.unumber;
+        BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, tx_amp, val);
+        bcmcli_log("BCMOLT_CFG_PROP_SET(&cfg, xpon_serdes, tx_amp, ");
+        apicli_log_prop_val(BCMOLT_OBJ_ID_XPON_SERDES, BCMOLT_MGT_GROUP_CFG, 0, BCMOLT_XPON_SERDES_CFG_ID_TX_AMP, &val);
+        bcmcli_log(");\n");
+    }
+
+    cli_parm = bcmcli_find_named_parm(session, "tx_amp");
+    if (cli_parm != NULL)
+    {
+        if (cli_parm->value.number)
+        {
+            BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xpon_serdes, tx_amp);
+            bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xpon_serdes, tx_amp);\n");
+        }
+    }
+
+    /* if no properties were requested, include everything */
+    if (!BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xpon_serdes, rx_vga) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xpon_serdes, rx_pf) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xpon_serdes, rx_lfpf) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xpon_serdes, rx_dfe1) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xpon_serdes, rx_dfe2) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xpon_serdes, rx_dfe3) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xpon_serdes, rx_dfe4) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xpon_serdes, rx_dfe5) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xpon_serdes, tx_pre) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xpon_serdes, tx_main) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xpon_serdes, tx_post1) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xpon_serdes, tx_post2) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xpon_serdes, tx_post3) && !BCMOLT_MSGSET_CFG_PROP_IS_SET(msg_set, xpon_serdes, tx_amp))
+    {
+        BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xpon_serdes, all_properties);
+        bcmcli_log("BCMOLT_MSGSET_CFG_PROP_GET(msg_set, xpon_serdes, all_properties);\n");
+    }
+
+    /* call API */
+    err = bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);
+    bcmcli_log("bcmolt_cfg_get_multi(device_id, &cfg.hdr, (invert_filter) ? BCMOLT_FILTER_FLAGS_INVERT_SELECTION : BCMOLT_FILTER_FLAGS_NONE, msg_set);\n");
+    if (err == BCM_ERR_OK)
+    {
+        /* print API contents to the CLI */
+        apicli_print_data_start(session);
+        err = apicli_msg_dump(session, &cfg.hdr.hdr);
+    }
+
+    apicli_print_complete(session, err, cfg.hdr.hdr.err_text);
+    return err;
+}
+
+/******************************************************************************/
+static bcmos_errno bcmolt_cli_api_root(bcmolt_devid device_id, bcmolt_mgt_group group_type, bcmolt_msg_type msg_type, bcmcli_session *session, apicli_byte_pool *byte_pool)
+{
+    bcmcli_cmd_parm *cli_parm;
+    bcmolt_obj_id obj_id;
+    cli_parm = bcmcli_find_named_parm(session, "object");
+    if (cli_parm != NULL)
+    {
+        obj_id = cli_parm->value.number;
+    }
+    else
+    {
+        apicli_print_complete(session, BCM_ERR_PARM, "object is not set\n");
+        return BCM_ERR_PARM;
+    }
+
+    switch (obj_id)
+    {
+        case BCMOLT_OBJ_ID_AE_NI:
+            switch (group_type)
+            {
+                case BCMOLT_MGT_GROUP_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_ae_ni_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_ae_ni_cfg_set(device_id, session);
+                        case BCMOLT_MSG_TYPE_CLEAR:
+                            return bcmolt_cli_ae_ni_cfg_clear(device_id, session);
+                        case BCMOLT_MSG_TYPE_GET_MULTI:
+                            return bcmolt_cli_ae_ni_cfg_get_multi(device_id, session, byte_pool);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_OPER:
+                    {
+                        bcmolt_ae_ni_oper_id sub;
+                        cli_parm = bcmcli_find_named_parm(session, "sub");
+                        if (cli_parm != NULL)
+                        {
+                            sub = (bcmolt_ae_ni_oper_id) cli_parm->value.number;
+                        }
+                        else
+                        {
+                            apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+                            return BCM_ERR_PARM;
+                        }
+
+                        switch (sub)
+                        {
+                            case BCMOLT_AE_NI_OPER_ID_SET_AE_NI_EN_STATE:
+                                return bcmolt_cli_ae_ni_oper_set_ae_ni_en_state_submit(device_id, session);
+                            default:
+                                return BCM_ERR_RANGE;
+                        }
+                    }
+
+                default:
+                    return BCM_ERR_RANGE;
+            }
+
+        case BCMOLT_OBJ_ID_AE_PATH_DS:
+            switch (group_type)
+            {
+                case BCMOLT_MGT_GROUP_STAT:
+                    return bcmolt_cli_ae_path_ds_stat_get(device_id, session);
+                case BCMOLT_MGT_GROUP_STAT_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_ae_path_ds_stat_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_ae_path_ds_stat_cfg_set(device_id, session);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_AUTO_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_ae_path_ds_auto_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_ae_path_ds_auto_cfg_set(device_id, session);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                default:
+                    return BCM_ERR_RANGE;
+            }
+
+        case BCMOLT_OBJ_ID_AE_PATH_US:
+            switch (group_type)
+            {
+                case BCMOLT_MGT_GROUP_STAT:
+                    return bcmolt_cli_ae_path_us_stat_get(device_id, session);
+                case BCMOLT_MGT_GROUP_STAT_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_ae_path_us_stat_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_ae_path_us_stat_cfg_set(device_id, session);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_AUTO_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_ae_path_us_auto_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_ae_path_us_auto_cfg_set(device_id, session);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                default:
+                    return BCM_ERR_RANGE;
+            }
+
+        case BCMOLT_OBJ_ID_CHANNEL:
+            switch (group_type)
+            {
+                case BCMOLT_MGT_GROUP_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_channel_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_channel_cfg_set(device_id, session);
+                        case BCMOLT_MSG_TYPE_CLEAR:
+                            return bcmolt_cli_channel_cfg_clear(device_id, session);
+                        case BCMOLT_MSG_TYPE_GET_MULTI:
+                            return bcmolt_cli_channel_cfg_get_multi(device_id, session, byte_pool);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                default:
+                    return BCM_ERR_RANGE;
+            }
+
+        case BCMOLT_OBJ_ID_DEBUG:
+            switch (group_type)
+            {
+                case BCMOLT_MGT_GROUP_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_debug_cfg_get(device_id, session, byte_pool);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_debug_cfg_set(device_id, session, byte_pool);
+                        case BCMOLT_MSG_TYPE_CLEAR:
+                            return bcmolt_cli_debug_cfg_clear(device_id, session);
+                        case BCMOLT_MSG_TYPE_GET_MULTI:
+                            return bcmolt_cli_debug_cfg_get_multi(device_id, session, byte_pool);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_AUTO_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_debug_auto_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_debug_auto_cfg_set(device_id, session);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_OPER:
+                    {
+                        bcmolt_debug_oper_id sub;
+                        cli_parm = bcmcli_find_named_parm(session, "sub");
+                        if (cli_parm != NULL)
+                        {
+                            sub = (bcmolt_debug_oper_id) cli_parm->value.number;
+                        }
+                        else
+                        {
+                            apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+                            return BCM_ERR_PARM;
+                        }
+
+                        switch (sub)
+                        {
+                            case BCMOLT_DEBUG_OPER_ID_CLI_INPUT:
+                                return bcmolt_cli_debug_oper_cli_input_submit(device_id, session, byte_pool);
+                            case BCMOLT_DEBUG_OPER_ID_START_API_CAPTURE:
+                                return bcmolt_cli_debug_oper_start_api_capture_submit(device_id, session);
+                            case BCMOLT_DEBUG_OPER_ID_STOP_API_CAPTURE:
+                                return bcmolt_cli_debug_oper_stop_api_capture_submit(device_id, session);
+                            case BCMOLT_DEBUG_OPER_ID_RESET_API_CAPTURE:
+                                return bcmolt_cli_debug_oper_reset_api_capture_submit(device_id, session);
+                            default:
+                                return BCM_ERR_RANGE;
+                        }
+                    }
+
+                default:
+                    return BCM_ERR_RANGE;
+            }
+
+        case BCMOLT_OBJ_ID_DEVICE:
+            switch (group_type)
+            {
+                case BCMOLT_MGT_GROUP_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_device_cfg_get(device_id, session, byte_pool);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_device_cfg_set(device_id, session, byte_pool);
+                        case BCMOLT_MSG_TYPE_CLEAR:
+                            return bcmolt_cli_device_cfg_clear(device_id, session);
+                        case BCMOLT_MSG_TYPE_GET_MULTI:
+                            return bcmolt_cli_device_cfg_get_multi(device_id, session, byte_pool);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_AUTO_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_device_auto_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_device_auto_cfg_set(device_id, session);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_OPER:
+                    {
+                        bcmolt_device_oper_id sub;
+                        cli_parm = bcmcli_find_named_parm(session, "sub");
+                        if (cli_parm != NULL)
+                        {
+                            sub = (bcmolt_device_oper_id) cli_parm->value.number;
+                        }
+                        else
+                        {
+                            apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+                            return BCM_ERR_PARM;
+                        }
+
+                        switch (sub)
+                        {
+                            case BCMOLT_DEVICE_OPER_ID_CONNECT:
+                                return bcmolt_cli_device_oper_connect_submit(device_id, session);
+                            case BCMOLT_DEVICE_OPER_ID_DISCONNECT:
+                                return bcmolt_cli_device_oper_disconnect_submit(device_id, session);
+                            case BCMOLT_DEVICE_OPER_ID_RESET:
+                                return bcmolt_cli_device_oper_reset_submit(device_id, session);
+                            case BCMOLT_DEVICE_OPER_ID_HOST_KEEP_ALIVE:
+                                return bcmolt_cli_device_oper_host_keep_alive_submit(device_id, session);
+                            case BCMOLT_DEVICE_OPER_ID_SW_UPGRADE_ACTIVATE:
+                                return bcmolt_cli_device_oper_sw_upgrade_activate_submit(device_id, session);
+                            case BCMOLT_DEVICE_OPER_ID_IMAGE_TRANSFER_START:
+                                return bcmolt_cli_device_oper_image_transfer_start_submit(device_id, session);
+                            case BCMOLT_DEVICE_OPER_ID_IMAGE_TRANSFER_DATA:
+                                return bcmolt_cli_device_oper_image_transfer_data_submit(device_id, session, byte_pool);
+                            case BCMOLT_DEVICE_OPER_ID_RUN_DDR_TEST:
+                                return bcmolt_cli_device_oper_run_ddr_test_submit(device_id, session);
+                            default:
+                                return BCM_ERR_RANGE;
+                        }
+                    }
+
+                default:
+                    return BCM_ERR_RANGE;
+            }
+
+        case BCMOLT_OBJ_ID_EPON_DENIED_LINK:
+            switch (group_type)
+            {
+                case BCMOLT_MGT_GROUP_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_epon_denied_link_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_epon_denied_link_cfg_set(device_id, session);
+                        case BCMOLT_MSG_TYPE_CLEAR:
+                            return bcmolt_cli_epon_denied_link_cfg_clear(device_id, session);
+                        case BCMOLT_MSG_TYPE_GET_MULTI:
+                            return bcmolt_cli_epon_denied_link_cfg_get_multi(device_id, session, byte_pool);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_AUTO_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_epon_denied_link_auto_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_epon_denied_link_auto_cfg_set(device_id, session);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                default:
+                    return BCM_ERR_RANGE;
+            }
+
+        case BCMOLT_OBJ_ID_EPON_LINK:
+            switch (group_type)
+            {
+                case BCMOLT_MGT_GROUP_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_epon_link_cfg_get(device_id, session, byte_pool);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_epon_link_cfg_set(device_id, session, byte_pool);
+                        case BCMOLT_MSG_TYPE_CLEAR:
+                            return bcmolt_cli_epon_link_cfg_clear(device_id, session);
+                        case BCMOLT_MSG_TYPE_GET_MULTI:
+                            return bcmolt_cli_epon_link_cfg_get_multi(device_id, session, byte_pool);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_STAT:
+                    return bcmolt_cli_epon_link_stat_get(device_id, session);
+                case BCMOLT_MGT_GROUP_STAT_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_epon_link_stat_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_epon_link_stat_cfg_set(device_id, session);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_AUTO_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_epon_link_auto_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_epon_link_auto_cfg_set(device_id, session);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_OPER:
+                    {
+                        bcmolt_epon_link_oper_id sub;
+                        cli_parm = bcmcli_find_named_parm(session, "sub");
+                        if (cli_parm != NULL)
+                        {
+                            sub = (bcmolt_epon_link_oper_id) cli_parm->value.number;
+                        }
+                        else
+                        {
+                            apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+                            return BCM_ERR_PARM;
+                        }
+
+                        switch (sub)
+                        {
+                            case BCMOLT_EPON_LINK_OPER_ID_FORCE_REDISCOVERY:
+                                return bcmolt_cli_epon_link_oper_force_rediscovery_submit(device_id, session);
+                            case BCMOLT_EPON_LINK_OPER_ID_DELETE_LINK:
+                                return bcmolt_cli_epon_link_oper_delete_link_submit(device_id, session);
+                            case BCMOLT_EPON_LINK_OPER_ID_OAM_KEEPALIVE_TIMER_START:
+                                return bcmolt_cli_epon_link_oper_oam_keepalive_timer_start_submit(device_id, session);
+                            case BCMOLT_EPON_LINK_OPER_ID_OAM_KEEPALIVE_TIMER_STOP:
+                                return bcmolt_cli_epon_link_oper_oam_keepalive_timer_stop_submit(device_id, session);
+                            case BCMOLT_EPON_LINK_OPER_ID_KEY_EXCHANGE_START:
+                                return bcmolt_cli_epon_link_oper_key_exchange_start_submit(device_id, session);
+                            case BCMOLT_EPON_LINK_OPER_ID_KEY_EXCHANGE_STOP:
+                                return bcmolt_cli_epon_link_oper_key_exchange_stop_submit(device_id, session);
+                            case BCMOLT_EPON_LINK_OPER_ID_STATIC_REGISTRATION:
+                                return bcmolt_cli_epon_link_oper_static_registration_submit(device_id, session);
+                            default:
+                                return BCM_ERR_RANGE;
+                        }
+                    }
+
+                case BCMOLT_MGT_GROUP_PROXY:
+                    {
+                        bcmolt_epon_link_proxy_id sub;
+                        cli_parm = bcmcli_find_named_parm(session, "sub");
+                        if (cli_parm != NULL)
+                        {
+                            sub = (bcmolt_epon_link_proxy_id) cli_parm->value.number;
+                        }
+                        else
+                        {
+                            apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+                            return BCM_ERR_PARM;
+                        }
+
+                        switch (sub)
+                        {
+                            case BCMOLT_EPON_LINK_PROXY_ID_INJECT_FRAME:
+                                return bcmolt_cli_epon_link_proxy_inject_frame_send(device_id, session, byte_pool);
+                            default:
+                                return BCM_ERR_RANGE;
+                        }
+                    }
+
+                default:
+                    return BCM_ERR_RANGE;
+            }
+
+        case BCMOLT_OBJ_ID_EPON_NI:
+            switch (group_type)
+            {
+                case BCMOLT_MGT_GROUP_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_epon_ni_cfg_get(device_id, session, byte_pool);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_epon_ni_cfg_set(device_id, session, byte_pool);
+                        case BCMOLT_MSG_TYPE_CLEAR:
+                            return bcmolt_cli_epon_ni_cfg_clear(device_id, session);
+                        case BCMOLT_MSG_TYPE_GET_MULTI:
+                            return bcmolt_cli_epon_ni_cfg_get_multi(device_id, session, byte_pool);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_AUTO_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_epon_ni_auto_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_epon_ni_auto_cfg_set(device_id, session);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_OPER:
+                    {
+                        bcmolt_epon_ni_oper_id sub;
+                        cli_parm = bcmcli_find_named_parm(session, "sub");
+                        if (cli_parm != NULL)
+                        {
+                            sub = (bcmolt_epon_ni_oper_id) cli_parm->value.number;
+                        }
+                        else
+                        {
+                            apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+                            return BCM_ERR_PARM;
+                        }
+
+                        switch (sub)
+                        {
+                            case BCMOLT_EPON_NI_OPER_ID_SET_EPON_NI_EN_STATE:
+                                return bcmolt_cli_epon_ni_oper_set_epon_ni_en_state_submit(device_id, session);
+                            case BCMOLT_EPON_NI_OPER_ID_ISSUE_RSSI_GRANT:
+                                return bcmolt_cli_epon_ni_oper_issue_rssi_grant_submit(device_id, session);
+                            case BCMOLT_EPON_NI_OPER_ID_ADD_LINK:
+                                return bcmolt_cli_epon_ni_oper_add_link_submit(device_id, session);
+                            case BCMOLT_EPON_NI_OPER_ID_ADD_MULTICAST_LINK:
+                                return bcmolt_cli_epon_ni_oper_add_multicast_link_submit(device_id, session);
+                            case BCMOLT_EPON_NI_OPER_ID_ADD_PROTECTED_STANDBY_LINK:
+                                return bcmolt_cli_epon_ni_oper_add_protected_standby_link_submit(device_id, session);
+                            case BCMOLT_EPON_NI_OPER_ID_PROTECTION_SWITCHING_APPLY_RERANGE_DELTA:
+                                return bcmolt_cli_epon_ni_oper_protection_switching_apply_rerange_delta_submit(device_id, session);
+                            case BCMOLT_EPON_NI_OPER_ID_ROGUE_LLID_SCAN:
+                                return bcmolt_cli_epon_ni_oper_rogue_llid_scan_submit(device_id, session);
+                            case BCMOLT_EPON_NI_OPER_ID_START_ONU_UPGRADE:
+                                return bcmolt_cli_epon_ni_oper_start_onu_upgrade_submit(device_id, session, byte_pool);
+                            default:
+                                return BCM_ERR_RANGE;
+                        }
+                    }
+
+                default:
+                    return BCM_ERR_RANGE;
+            }
+
+        case BCMOLT_OBJ_ID_EPON_ONU_10G_US:
+            switch (group_type)
+            {
+                case BCMOLT_MGT_GROUP_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_epon_onu_10g_us_cfg_get(device_id, session, byte_pool);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_epon_onu_10g_us_cfg_set(device_id, session, byte_pool);
+                        case BCMOLT_MSG_TYPE_CLEAR:
+                            return bcmolt_cli_epon_onu_10g_us_cfg_clear(device_id, session);
+                        case BCMOLT_MSG_TYPE_GET_MULTI:
+                            return bcmolt_cli_epon_onu_10g_us_cfg_get_multi(device_id, session, byte_pool);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_STAT:
+                    return bcmolt_cli_epon_onu_10g_us_stat_get(device_id, session);
+                case BCMOLT_MGT_GROUP_STAT_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_epon_onu_10g_us_stat_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_epon_onu_10g_us_stat_cfg_set(device_id, session);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_AUTO_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_epon_onu_10g_us_auto_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_epon_onu_10g_us_auto_cfg_set(device_id, session);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                default:
+                    return BCM_ERR_RANGE;
+            }
+
+        case BCMOLT_OBJ_ID_EPON_ONU_1G_US:
+            switch (group_type)
+            {
+                case BCMOLT_MGT_GROUP_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_epon_onu_1g_us_cfg_get(device_id, session, byte_pool);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_epon_onu_1g_us_cfg_set(device_id, session, byte_pool);
+                        case BCMOLT_MSG_TYPE_CLEAR:
+                            return bcmolt_cli_epon_onu_1g_us_cfg_clear(device_id, session);
+                        case BCMOLT_MSG_TYPE_GET_MULTI:
+                            return bcmolt_cli_epon_onu_1g_us_cfg_get_multi(device_id, session, byte_pool);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_STAT:
+                    return bcmolt_cli_epon_onu_1g_us_stat_get(device_id, session);
+                case BCMOLT_MGT_GROUP_STAT_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_epon_onu_1g_us_stat_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_epon_onu_1g_us_stat_cfg_set(device_id, session);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_AUTO_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_epon_onu_1g_us_auto_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_epon_onu_1g_us_auto_cfg_set(device_id, session);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                default:
+                    return BCM_ERR_RANGE;
+            }
+
+        case BCMOLT_OBJ_ID_EPON_PATH_10G_DS:
+            switch (group_type)
+            {
+                case BCMOLT_MGT_GROUP_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_epon_path_10g_ds_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_epon_path_10g_ds_cfg_set(device_id, session);
+                        case BCMOLT_MSG_TYPE_CLEAR:
+                            return bcmolt_cli_epon_path_10g_ds_cfg_clear(device_id, session);
+                        case BCMOLT_MSG_TYPE_GET_MULTI:
+                            return bcmolt_cli_epon_path_10g_ds_cfg_get_multi(device_id, session, byte_pool);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_STAT:
+                    return bcmolt_cli_epon_path_10g_ds_stat_get(device_id, session);
+                case BCMOLT_MGT_GROUP_STAT_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_epon_path_10g_ds_stat_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_epon_path_10g_ds_stat_cfg_set(device_id, session);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_AUTO_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_epon_path_10g_ds_auto_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_epon_path_10g_ds_auto_cfg_set(device_id, session);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                default:
+                    return BCM_ERR_RANGE;
+            }
+
+        case BCMOLT_OBJ_ID_EPON_PATH_10G_US:
+            switch (group_type)
+            {
+                case BCMOLT_MGT_GROUP_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_epon_path_10g_us_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_epon_path_10g_us_cfg_set(device_id, session);
+                        case BCMOLT_MSG_TYPE_CLEAR:
+                            return bcmolt_cli_epon_path_10g_us_cfg_clear(device_id, session);
+                        case BCMOLT_MSG_TYPE_GET_MULTI:
+                            return bcmolt_cli_epon_path_10g_us_cfg_get_multi(device_id, session, byte_pool);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_STAT:
+                    return bcmolt_cli_epon_path_10g_us_stat_get(device_id, session);
+                case BCMOLT_MGT_GROUP_STAT_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_epon_path_10g_us_stat_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_epon_path_10g_us_stat_cfg_set(device_id, session);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_AUTO_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_epon_path_10g_us_auto_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_epon_path_10g_us_auto_cfg_set(device_id, session);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                default:
+                    return BCM_ERR_RANGE;
+            }
+
+        case BCMOLT_OBJ_ID_EPON_PATH_1G_DS:
+            switch (group_type)
+            {
+                case BCMOLT_MGT_GROUP_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_epon_path_1g_ds_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_epon_path_1g_ds_cfg_set(device_id, session);
+                        case BCMOLT_MSG_TYPE_CLEAR:
+                            return bcmolt_cli_epon_path_1g_ds_cfg_clear(device_id, session);
+                        case BCMOLT_MSG_TYPE_GET_MULTI:
+                            return bcmolt_cli_epon_path_1g_ds_cfg_get_multi(device_id, session, byte_pool);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_STAT:
+                    return bcmolt_cli_epon_path_1g_ds_stat_get(device_id, session);
+                case BCMOLT_MGT_GROUP_STAT_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_epon_path_1g_ds_stat_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_epon_path_1g_ds_stat_cfg_set(device_id, session);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_AUTO_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_epon_path_1g_ds_auto_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_epon_path_1g_ds_auto_cfg_set(device_id, session);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                default:
+                    return BCM_ERR_RANGE;
+            }
+
+        case BCMOLT_OBJ_ID_EPON_PATH_1G_US:
+            switch (group_type)
+            {
+                case BCMOLT_MGT_GROUP_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_epon_path_1g_us_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_epon_path_1g_us_cfg_set(device_id, session);
+                        case BCMOLT_MSG_TYPE_CLEAR:
+                            return bcmolt_cli_epon_path_1g_us_cfg_clear(device_id, session);
+                        case BCMOLT_MSG_TYPE_GET_MULTI:
+                            return bcmolt_cli_epon_path_1g_us_cfg_get_multi(device_id, session, byte_pool);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_STAT:
+                    return bcmolt_cli_epon_path_1g_us_stat_get(device_id, session);
+                case BCMOLT_MGT_GROUP_STAT_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_epon_path_1g_us_stat_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_epon_path_1g_us_stat_cfg_set(device_id, session);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_AUTO_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_epon_path_1g_us_auto_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_epon_path_1g_us_auto_cfg_set(device_id, session);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                default:
+                    return BCM_ERR_RANGE;
+            }
+
+        case BCMOLT_OBJ_ID_EPON_RP:
+            switch (group_type)
+            {
+                case BCMOLT_MGT_GROUP_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_epon_rp_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_epon_rp_cfg_set(device_id, session);
+                        case BCMOLT_MSG_TYPE_CLEAR:
+                            return bcmolt_cli_epon_rp_cfg_clear(device_id, session);
+                        case BCMOLT_MSG_TYPE_GET_MULTI:
+                            return bcmolt_cli_epon_rp_cfg_get_multi(device_id, session, byte_pool);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                default:
+                    return BCM_ERR_RANGE;
+            }
+
+        case BCMOLT_OBJ_ID_GPIO:
+            switch (group_type)
+            {
+                case BCMOLT_MGT_GROUP_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_gpio_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_gpio_cfg_set(device_id, session);
+                        case BCMOLT_MSG_TYPE_CLEAR:
+                            return bcmolt_cli_gpio_cfg_clear(device_id, session);
+                        case BCMOLT_MSG_TYPE_GET_MULTI:
+                            return bcmolt_cli_gpio_cfg_get_multi(device_id, session, byte_pool);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                default:
+                    return BCM_ERR_RANGE;
+            }
+
+        case BCMOLT_OBJ_ID_GPON_ALLOC:
+            switch (group_type)
+            {
+                case BCMOLT_MGT_GROUP_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_gpon_alloc_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_gpon_alloc_cfg_set(device_id, session);
+                        case BCMOLT_MSG_TYPE_CLEAR:
+                            return bcmolt_cli_gpon_alloc_cfg_clear(device_id, session);
+                        case BCMOLT_MSG_TYPE_GET_MULTI:
+                            return bcmolt_cli_gpon_alloc_cfg_get_multi(device_id, session, byte_pool);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_STAT:
+                    return bcmolt_cli_gpon_alloc_stat_get(device_id, session);
+                case BCMOLT_MGT_GROUP_STAT_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_gpon_alloc_stat_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_gpon_alloc_stat_cfg_set(device_id, session);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_AUTO_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_gpon_alloc_auto_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_gpon_alloc_auto_cfg_set(device_id, session);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_OPER:
+                    {
+                        bcmolt_gpon_alloc_oper_id sub;
+                        cli_parm = bcmcli_find_named_parm(session, "sub");
+                        if (cli_parm != NULL)
+                        {
+                            sub = (bcmolt_gpon_alloc_oper_id) cli_parm->value.number;
+                        }
+                        else
+                        {
+                            apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+                            return BCM_ERR_PARM;
+                        }
+
+                        switch (sub)
+                        {
+                            case BCMOLT_GPON_ALLOC_OPER_ID_SET_STATE:
+                                return bcmolt_cli_gpon_alloc_oper_set_state_submit(device_id, session);
+                            case BCMOLT_GPON_ALLOC_OPER_ID_GET_STATS:
+                                return bcmolt_cli_gpon_alloc_oper_get_stats_submit(device_id, session);
+                            default:
+                                return BCM_ERR_RANGE;
+                        }
+                    }
+
+                default:
+                    return BCM_ERR_RANGE;
+            }
+
+        case BCMOLT_OBJ_ID_GPON_GEM_PORT:
+            switch (group_type)
+            {
+                case BCMOLT_MGT_GROUP_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_gpon_gem_port_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_gpon_gem_port_cfg_set(device_id, session);
+                        case BCMOLT_MSG_TYPE_CLEAR:
+                            return bcmolt_cli_gpon_gem_port_cfg_clear(device_id, session);
+                        case BCMOLT_MSG_TYPE_GET_MULTI:
+                            return bcmolt_cli_gpon_gem_port_cfg_get_multi(device_id, session, byte_pool);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_STAT:
+                    return bcmolt_cli_gpon_gem_port_stat_get(device_id, session);
+                case BCMOLT_MGT_GROUP_STAT_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_gpon_gem_port_stat_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_gpon_gem_port_stat_cfg_set(device_id, session);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_AUTO_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_gpon_gem_port_auto_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_gpon_gem_port_auto_cfg_set(device_id, session);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_OPER:
+                    {
+                        bcmolt_gpon_gem_port_oper_id sub;
+                        cli_parm = bcmcli_find_named_parm(session, "sub");
+                        if (cli_parm != NULL)
+                        {
+                            sub = (bcmolt_gpon_gem_port_oper_id) cli_parm->value.number;
+                        }
+                        else
+                        {
+                            apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+                            return BCM_ERR_PARM;
+                        }
+
+                        switch (sub)
+                        {
+                            case BCMOLT_GPON_GEM_PORT_OPER_ID_SET_STATE:
+                                return bcmolt_cli_gpon_gem_port_oper_set_state_submit(device_id, session);
+                            default:
+                                return BCM_ERR_RANGE;
+                        }
+                    }
+
+                default:
+                    return BCM_ERR_RANGE;
+            }
+
+        case BCMOLT_OBJ_ID_GPON_IWF:
+            switch (group_type)
+            {
+                case BCMOLT_MGT_GROUP_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_gpon_iwf_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_gpon_iwf_cfg_set(device_id, session);
+                        case BCMOLT_MSG_TYPE_CLEAR:
+                            return bcmolt_cli_gpon_iwf_cfg_clear(device_id, session);
+                        case BCMOLT_MSG_TYPE_GET_MULTI:
+                            return bcmolt_cli_gpon_iwf_cfg_get_multi(device_id, session, byte_pool);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_STAT:
+                    return bcmolt_cli_gpon_iwf_stat_get(device_id, session);
+                case BCMOLT_MGT_GROUP_STAT_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_gpon_iwf_stat_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_gpon_iwf_stat_cfg_set(device_id, session);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_AUTO_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_gpon_iwf_auto_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_gpon_iwf_auto_cfg_set(device_id, session);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_OPER:
+                    {
+                        bcmolt_gpon_iwf_oper_id sub;
+                        cli_parm = bcmcli_find_named_parm(session, "sub");
+                        if (cli_parm != NULL)
+                        {
+                            sub = (bcmolt_gpon_iwf_oper_id) cli_parm->value.number;
+                        }
+                        else
+                        {
+                            apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+                            return BCM_ERR_PARM;
+                        }
+
+                        switch (sub)
+                        {
+                            case BCMOLT_GPON_IWF_OPER_ID_FLUSH_MAC_TABLE:
+                                return bcmolt_cli_gpon_iwf_oper_flush_mac_table_submit(device_id, session);
+                            case BCMOLT_GPON_IWF_OPER_ID_SCAN_MAC_TABLE:
+                                return bcmolt_cli_gpon_iwf_oper_scan_mac_table_submit(device_id, session);
+                            default:
+                                return BCM_ERR_RANGE;
+                        }
+                    }
+
+                default:
+                    return BCM_ERR_RANGE;
+            }
+
+        case BCMOLT_OBJ_ID_GPON_IWF_DS_EGRESS_FLOW:
+            switch (group_type)
+            {
+                case BCMOLT_MGT_GROUP_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_gpon_iwf_ds_egress_flow_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_gpon_iwf_ds_egress_flow_cfg_set(device_id, session);
+                        case BCMOLT_MSG_TYPE_CLEAR:
+                            return bcmolt_cli_gpon_iwf_ds_egress_flow_cfg_clear(device_id, session);
+                        case BCMOLT_MSG_TYPE_GET_MULTI:
+                            return bcmolt_cli_gpon_iwf_ds_egress_flow_cfg_get_multi(device_id, session, byte_pool);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                default:
+                    return BCM_ERR_RANGE;
+            }
+
+        case BCMOLT_OBJ_ID_GPON_IWF_DS_INGRESS_FLOW:
+            switch (group_type)
+            {
+                case BCMOLT_MGT_GROUP_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_gpon_iwf_ds_ingress_flow_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_gpon_iwf_ds_ingress_flow_cfg_set(device_id, session);
+                        case BCMOLT_MSG_TYPE_CLEAR:
+                            return bcmolt_cli_gpon_iwf_ds_ingress_flow_cfg_clear(device_id, session);
+                        case BCMOLT_MSG_TYPE_GET_MULTI:
+                            return bcmolt_cli_gpon_iwf_ds_ingress_flow_cfg_get_multi(device_id, session, byte_pool);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                default:
+                    return BCM_ERR_RANGE;
+            }
+
+        case BCMOLT_OBJ_ID_GPON_IWF_MAC_TABLE:
+            switch (group_type)
+            {
+                case BCMOLT_MGT_GROUP_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_gpon_iwf_mac_table_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_gpon_iwf_mac_table_cfg_set(device_id, session);
+                        case BCMOLT_MSG_TYPE_CLEAR:
+                            return bcmolt_cli_gpon_iwf_mac_table_cfg_clear(device_id, session);
+                        case BCMOLT_MSG_TYPE_GET_MULTI:
+                            return bcmolt_cli_gpon_iwf_mac_table_cfg_get_multi(device_id, session, byte_pool);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_AUTO_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_gpon_iwf_mac_table_auto_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_gpon_iwf_mac_table_auto_cfg_set(device_id, session);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                default:
+                    return BCM_ERR_RANGE;
+            }
+
+        case BCMOLT_OBJ_ID_GPON_IWF_US_FLOW:
+            switch (group_type)
+            {
+                case BCMOLT_MGT_GROUP_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_gpon_iwf_us_flow_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_gpon_iwf_us_flow_cfg_set(device_id, session);
+                        case BCMOLT_MSG_TYPE_CLEAR:
+                            return bcmolt_cli_gpon_iwf_us_flow_cfg_clear(device_id, session);
+                        case BCMOLT_MSG_TYPE_GET_MULTI:
+                            return bcmolt_cli_gpon_iwf_us_flow_cfg_get_multi(device_id, session, byte_pool);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                default:
+                    return BCM_ERR_RANGE;
+            }
+
+        case BCMOLT_OBJ_ID_GPON_NI:
+            switch (group_type)
+            {
+                case BCMOLT_MGT_GROUP_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_gpon_ni_cfg_get(device_id, session, byte_pool);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_gpon_ni_cfg_set(device_id, session, byte_pool);
+                        case BCMOLT_MSG_TYPE_CLEAR:
+                            return bcmolt_cli_gpon_ni_cfg_clear(device_id, session);
+                        case BCMOLT_MSG_TYPE_GET_MULTI:
+                            return bcmolt_cli_gpon_ni_cfg_get_multi(device_id, session, byte_pool);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_STAT:
+                    return bcmolt_cli_gpon_ni_stat_get(device_id, session);
+                case BCMOLT_MGT_GROUP_STAT_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_gpon_ni_stat_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_gpon_ni_stat_cfg_set(device_id, session);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_AUTO_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_gpon_ni_auto_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_gpon_ni_auto_cfg_set(device_id, session);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_OPER:
+                    {
+                        bcmolt_gpon_ni_oper_id sub;
+                        cli_parm = bcmcli_find_named_parm(session, "sub");
+                        if (cli_parm != NULL)
+                        {
+                            sub = (bcmolt_gpon_ni_oper_id) cli_parm->value.number;
+                        }
+                        else
+                        {
+                            apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+                            return BCM_ERR_PARM;
+                        }
+
+                        switch (sub)
+                        {
+                            case BCMOLT_GPON_NI_OPER_ID_SET_PON_STATE:
+                                return bcmolt_cli_gpon_ni_oper_set_pon_state_submit(device_id, session);
+                            case BCMOLT_GPON_NI_OPER_ID_RESET:
+                                return bcmolt_cli_gpon_ni_oper_reset_submit(device_id, session);
+                            case BCMOLT_GPON_NI_OPER_ID_DISABLE_SERIAL_NUMBER:
+                                return bcmolt_cli_gpon_ni_oper_disable_serial_number_submit(device_id, session);
+                            case BCMOLT_GPON_NI_OPER_ID_SINGLE_REQUEST_STANDBY_PON_MONITORING:
+                                return bcmolt_cli_gpon_ni_oper_single_request_standby_pon_monitoring_submit(device_id, session);
+                            case BCMOLT_GPON_NI_OPER_ID_SET_ONU_STATE:
+                                return bcmolt_cli_gpon_ni_oper_set_onu_state_submit(device_id, session);
+                            case BCMOLT_GPON_NI_OPER_ID_ROGUE_DETECTION_WINDOW:
+                                return bcmolt_cli_gpon_ni_oper_rogue_detection_window_submit(device_id, session);
+                            case BCMOLT_GPON_NI_OPER_ID_TOD_REQUEST:
+                                return bcmolt_cli_gpon_ni_oper_tod_request_submit(device_id, session);
+                            case BCMOLT_GPON_NI_OPER_ID_PROTECTION_SWITCHING_TYPE_C_SET_MULTIPLE_ONU_STATE:
+                                return bcmolt_cli_gpon_ni_oper_protection_switching_type_c_set_multiple_onu_state_submit(device_id, session, byte_pool);
+                            case BCMOLT_GPON_NI_OPER_ID_START_ONU_UPGRADE:
+                                return bcmolt_cli_gpon_ni_oper_start_onu_upgrade_submit(device_id, session, byte_pool);
+                            default:
+                                return BCM_ERR_RANGE;
+                        }
+                    }
+
+                case BCMOLT_MGT_GROUP_PROXY:
+                    {
+                        bcmolt_gpon_ni_proxy_id sub;
+                        cli_parm = bcmcli_find_named_parm(session, "sub");
+                        if (cli_parm != NULL)
+                        {
+                            sub = (bcmolt_gpon_ni_proxy_id) cli_parm->value.number;
+                        }
+                        else
+                        {
+                            apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+                            return BCM_ERR_PARM;
+                        }
+
+                        switch (sub)
+                        {
+                            case BCMOLT_GPON_NI_PROXY_ID_CPU_PACKETS:
+                                return bcmolt_cli_gpon_ni_proxy_cpu_packets_send(device_id, session, byte_pool);
+                            case BCMOLT_GPON_NI_PROXY_ID_BROADCAST_PLOAM_PACKET:
+                                return bcmolt_cli_gpon_ni_proxy_broadcast_ploam_packet_send(device_id, session);
+                            default:
+                                return BCM_ERR_RANGE;
+                        }
+                    }
+
+                default:
+                    return BCM_ERR_RANGE;
+            }
+
+        case BCMOLT_OBJ_ID_GPON_ONU:
+            switch (group_type)
+            {
+                case BCMOLT_MGT_GROUP_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_gpon_onu_cfg_get(device_id, session, byte_pool);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_gpon_onu_cfg_set(device_id, session, byte_pool);
+                        case BCMOLT_MSG_TYPE_CLEAR:
+                            return bcmolt_cli_gpon_onu_cfg_clear(device_id, session);
+                        case BCMOLT_MSG_TYPE_GET_MULTI:
+                            return bcmolt_cli_gpon_onu_cfg_get_multi(device_id, session, byte_pool);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_STAT:
+                    return bcmolt_cli_gpon_onu_stat_get(device_id, session);
+                case BCMOLT_MGT_GROUP_STAT_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_gpon_onu_stat_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_gpon_onu_stat_cfg_set(device_id, session);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_AUTO_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_gpon_onu_auto_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_gpon_onu_auto_cfg_set(device_id, session);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_OPER:
+                    {
+                        bcmolt_gpon_onu_oper_id sub;
+                        cli_parm = bcmcli_find_named_parm(session, "sub");
+                        if (cli_parm != NULL)
+                        {
+                            sub = (bcmolt_gpon_onu_oper_id) cli_parm->value.number;
+                        }
+                        else
+                        {
+                            apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+                            return BCM_ERR_PARM;
+                        }
+
+                        switch (sub)
+                        {
+                            case BCMOLT_GPON_ONU_OPER_ID_SET_ONU_STATE:
+                                return bcmolt_cli_gpon_onu_oper_set_onu_state_submit(device_id, session);
+                            case BCMOLT_GPON_ONU_OPER_ID_RSSI_MEASUREMENT:
+                                return bcmolt_cli_gpon_onu_oper_rssi_measurement_submit(device_id, session);
+                            case BCMOLT_GPON_ONU_OPER_ID_CHANGE_POWER_LEVEL:
+                                return bcmolt_cli_gpon_onu_oper_change_power_level_submit(device_id, session);
+                            default:
+                                return BCM_ERR_RANGE;
+                        }
+                    }
+
+                case BCMOLT_MGT_GROUP_PROXY:
+                    {
+                        bcmolt_gpon_onu_proxy_id sub;
+                        cli_parm = bcmcli_find_named_parm(session, "sub");
+                        if (cli_parm != NULL)
+                        {
+                            sub = (bcmolt_gpon_onu_proxy_id) cli_parm->value.number;
+                        }
+                        else
+                        {
+                            apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+                            return BCM_ERR_PARM;
+                        }
+
+                        switch (sub)
+                        {
+                            case BCMOLT_GPON_ONU_PROXY_ID_CPU_PACKETS:
+                                return bcmolt_cli_gpon_onu_proxy_cpu_packets_send(device_id, session, byte_pool);
+                            case BCMOLT_GPON_ONU_PROXY_ID_PLOAM_PACKET:
+                                return bcmolt_cli_gpon_onu_proxy_ploam_packet_send(device_id, session);
+                            default:
+                                return BCM_ERR_RANGE;
+                        }
+                    }
+
+                default:
+                    return BCM_ERR_RANGE;
+            }
+
+        case BCMOLT_OBJ_ID_GPON_TRX:
+            switch (group_type)
+            {
+                case BCMOLT_MGT_GROUP_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_gpon_trx_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_gpon_trx_cfg_set(device_id, session);
+                        case BCMOLT_MSG_TYPE_CLEAR:
+                            return bcmolt_cli_gpon_trx_cfg_clear(device_id, session);
+                        case BCMOLT_MSG_TYPE_GET_MULTI:
+                            return bcmolt_cli_gpon_trx_cfg_get_multi(device_id, session, byte_pool);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                default:
+                    return BCM_ERR_RANGE;
+            }
+
+        case BCMOLT_OBJ_ID_LOG_ENTRY:
+            switch (group_type)
+            {
+                case BCMOLT_MGT_GROUP_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_log_entry_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_log_entry_cfg_set(device_id, session);
+                        case BCMOLT_MSG_TYPE_CLEAR:
+                            return bcmolt_cli_log_entry_cfg_clear(device_id, session);
+                        case BCMOLT_MSG_TYPE_GET_MULTI:
+                            return bcmolt_cli_log_entry_cfg_get_multi(device_id, session, byte_pool);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_STAT:
+                    return bcmolt_cli_log_entry_stat_get(device_id, session);
+                case BCMOLT_MGT_GROUP_STAT_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_log_entry_stat_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_log_entry_stat_cfg_set(device_id, session);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_AUTO_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_log_entry_auto_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_log_entry_auto_cfg_set(device_id, session);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                default:
+                    return BCM_ERR_RANGE;
+            }
+
+        case BCMOLT_OBJ_ID_LOGGER:
+            switch (group_type)
+            {
+                case BCMOLT_MGT_GROUP_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_logger_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_logger_cfg_set(device_id, session);
+                        case BCMOLT_MSG_TYPE_CLEAR:
+                            return bcmolt_cli_logger_cfg_clear(device_id, session);
+                        case BCMOLT_MSG_TYPE_GET_MULTI:
+                            return bcmolt_cli_logger_cfg_get_multi(device_id, session, byte_pool);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_STAT:
+                    return bcmolt_cli_logger_stat_get(device_id, session);
+                case BCMOLT_MGT_GROUP_STAT_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_logger_stat_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_logger_stat_cfg_set(device_id, session);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_AUTO_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_logger_auto_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_logger_auto_cfg_set(device_id, session);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_OPER:
+                    {
+                        bcmolt_logger_oper_id sub;
+                        cli_parm = bcmcli_find_named_parm(session, "sub");
+                        if (cli_parm != NULL)
+                        {
+                            sub = (bcmolt_logger_oper_id) cli_parm->value.number;
+                        }
+                        else
+                        {
+                            apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+                            return BCM_ERR_PARM;
+                        }
+
+                        switch (sub)
+                        {
+                            case BCMOLT_LOGGER_OPER_ID_CLEAR_LOG:
+                                return bcmolt_cli_logger_oper_clear_log_submit(device_id, session);
+                            default:
+                                return BCM_ERR_RANGE;
+                        }
+                    }
+
+                default:
+                    return BCM_ERR_RANGE;
+            }
+
+        case BCMOLT_OBJ_ID_NNI:
+            switch (group_type)
+            {
+                case BCMOLT_MGT_GROUP_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_nni_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_nni_cfg_set(device_id, session);
+                        case BCMOLT_MSG_TYPE_CLEAR:
+                            return bcmolt_cli_nni_cfg_clear(device_id, session);
+                        case BCMOLT_MSG_TYPE_GET_MULTI:
+                            return bcmolt_cli_nni_cfg_get_multi(device_id, session, byte_pool);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_STAT:
+                    return bcmolt_cli_nni_stat_get(device_id, session);
+                case BCMOLT_MGT_GROUP_STAT_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_nni_stat_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_nni_stat_cfg_set(device_id, session);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_AUTO_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_nni_auto_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_nni_auto_cfg_set(device_id, session);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                default:
+                    return BCM_ERR_RANGE;
+            }
+
+        case BCMOLT_OBJ_ID_NNI_SERDES:
+            switch (group_type)
+            {
+                case BCMOLT_MGT_GROUP_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_nni_serdes_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_nni_serdes_cfg_set(device_id, session);
+                        case BCMOLT_MSG_TYPE_CLEAR:
+                            return bcmolt_cli_nni_serdes_cfg_clear(device_id, session);
+                        case BCMOLT_MSG_TYPE_GET_MULTI:
+                            return bcmolt_cli_nni_serdes_cfg_get_multi(device_id, session, byte_pool);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                default:
+                    return BCM_ERR_RANGE;
+            }
+
+        case BCMOLT_OBJ_ID_SOFTWARE_ERROR:
+            switch (group_type)
+            {
+                case BCMOLT_MGT_GROUP_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_software_error_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_software_error_cfg_set(device_id, session);
+                        case BCMOLT_MSG_TYPE_CLEAR:
+                            return bcmolt_cli_software_error_cfg_clear(device_id, session);
+                        case BCMOLT_MSG_TYPE_GET_MULTI:
+                            return bcmolt_cli_software_error_cfg_get_multi(device_id, session, byte_pool);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                default:
+                    return BCM_ERR_RANGE;
+            }
+
+        case BCMOLT_OBJ_ID_TRX_CALIBRATION:
+            switch (group_type)
+            {
+                case BCMOLT_MGT_GROUP_AUTO_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_trx_calibration_auto_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_trx_calibration_auto_cfg_set(device_id, session);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_OPER:
+                    {
+                        bcmolt_trx_calibration_oper_id sub;
+                        cli_parm = bcmcli_find_named_parm(session, "sub");
+                        if (cli_parm != NULL)
+                        {
+                            sub = (bcmolt_trx_calibration_oper_id) cli_parm->value.number;
+                        }
+                        else
+                        {
+                            apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+                            return BCM_ERR_PARM;
+                        }
+
+                        switch (sub)
+                        {
+                            case BCMOLT_TRX_CALIBRATION_OPER_ID_START_CAPTURE_WINDOW:
+                                return bcmolt_cli_trx_calibration_oper_start_capture_window_submit(device_id, session);
+                            case BCMOLT_TRX_CALIBRATION_OPER_ID_STOP_CAPTURE_WINDOW:
+                                return bcmolt_cli_trx_calibration_oper_stop_capture_window_submit(device_id, session);
+                            default:
+                                return BCM_ERR_RANGE;
+                        }
+                    }
+
+                default:
+                    return BCM_ERR_RANGE;
+            }
+
+        case BCMOLT_OBJ_ID_XGPON_ALLOC:
+            switch (group_type)
+            {
+                case BCMOLT_MGT_GROUP_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_xgpon_alloc_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_xgpon_alloc_cfg_set(device_id, session);
+                        case BCMOLT_MSG_TYPE_CLEAR:
+                            return bcmolt_cli_xgpon_alloc_cfg_clear(device_id, session);
+                        case BCMOLT_MSG_TYPE_GET_MULTI:
+                            return bcmolt_cli_xgpon_alloc_cfg_get_multi(device_id, session, byte_pool);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_STAT:
+                    return bcmolt_cli_xgpon_alloc_stat_get(device_id, session);
+                case BCMOLT_MGT_GROUP_STAT_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_xgpon_alloc_stat_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_xgpon_alloc_stat_cfg_set(device_id, session);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_AUTO_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_xgpon_alloc_auto_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_xgpon_alloc_auto_cfg_set(device_id, session);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_OPER:
+                    {
+                        bcmolt_xgpon_alloc_oper_id sub;
+                        cli_parm = bcmcli_find_named_parm(session, "sub");
+                        if (cli_parm != NULL)
+                        {
+                            sub = (bcmolt_xgpon_alloc_oper_id) cli_parm->value.number;
+                        }
+                        else
+                        {
+                            apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+                            return BCM_ERR_PARM;
+                        }
+
+                        switch (sub)
+                        {
+                            case BCMOLT_XGPON_ALLOC_OPER_ID_GET_STATS:
+                                return bcmolt_cli_xgpon_alloc_oper_get_stats_submit(device_id, session);
+                            case BCMOLT_XGPON_ALLOC_OPER_ID_SET_STATE:
+                                return bcmolt_cli_xgpon_alloc_oper_set_state_submit(device_id, session);
+                            default:
+                                return BCM_ERR_RANGE;
+                        }
+                    }
+
+                default:
+                    return BCM_ERR_RANGE;
+            }
+
+        case BCMOLT_OBJ_ID_XGPON_GEM_PORT:
+            switch (group_type)
+            {
+                case BCMOLT_MGT_GROUP_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_xgpon_gem_port_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_xgpon_gem_port_cfg_set(device_id, session);
+                        case BCMOLT_MSG_TYPE_CLEAR:
+                            return bcmolt_cli_xgpon_gem_port_cfg_clear(device_id, session);
+                        case BCMOLT_MSG_TYPE_GET_MULTI:
+                            return bcmolt_cli_xgpon_gem_port_cfg_get_multi(device_id, session, byte_pool);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_STAT:
+                    return bcmolt_cli_xgpon_gem_port_stat_get(device_id, session);
+                case BCMOLT_MGT_GROUP_STAT_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_xgpon_gem_port_stat_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_xgpon_gem_port_stat_cfg_set(device_id, session);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_AUTO_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_xgpon_gem_port_auto_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_xgpon_gem_port_auto_cfg_set(device_id, session);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                default:
+                    return BCM_ERR_RANGE;
+            }
+
+        case BCMOLT_OBJ_ID_XGPON_IWF:
+            switch (group_type)
+            {
+                case BCMOLT_MGT_GROUP_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_xgpon_iwf_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_xgpon_iwf_cfg_set(device_id, session);
+                        case BCMOLT_MSG_TYPE_CLEAR:
+                            return bcmolt_cli_xgpon_iwf_cfg_clear(device_id, session);
+                        case BCMOLT_MSG_TYPE_GET_MULTI:
+                            return bcmolt_cli_xgpon_iwf_cfg_get_multi(device_id, session, byte_pool);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                default:
+                    return BCM_ERR_RANGE;
+            }
+
+        case BCMOLT_OBJ_ID_XGPON_NI:
+            switch (group_type)
+            {
+                case BCMOLT_MGT_GROUP_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_xgpon_ni_cfg_get(device_id, session, byte_pool);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_xgpon_ni_cfg_set(device_id, session, byte_pool);
+                        case BCMOLT_MSG_TYPE_CLEAR:
+                            return bcmolt_cli_xgpon_ni_cfg_clear(device_id, session);
+                        case BCMOLT_MSG_TYPE_GET_MULTI:
+                            return bcmolt_cli_xgpon_ni_cfg_get_multi(device_id, session, byte_pool);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_STAT:
+                    return bcmolt_cli_xgpon_ni_stat_get(device_id, session);
+                case BCMOLT_MGT_GROUP_STAT_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_xgpon_ni_stat_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_xgpon_ni_stat_cfg_set(device_id, session);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_AUTO_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_xgpon_ni_auto_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_xgpon_ni_auto_cfg_set(device_id, session);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_OPER:
+                    {
+                        bcmolt_xgpon_ni_oper_id sub;
+                        cli_parm = bcmcli_find_named_parm(session, "sub");
+                        if (cli_parm != NULL)
+                        {
+                            sub = (bcmolt_xgpon_ni_oper_id) cli_parm->value.number;
+                        }
+                        else
+                        {
+                            apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+                            return BCM_ERR_PARM;
+                        }
+
+                        switch (sub)
+                        {
+                            case BCMOLT_XGPON_NI_OPER_ID_SET_PON_STATE:
+                                return bcmolt_cli_xgpon_ni_oper_set_pon_state_submit(device_id, session);
+                            case BCMOLT_XGPON_NI_OPER_ID_RESET:
+                                return bcmolt_cli_xgpon_ni_oper_reset_submit(device_id, session);
+                            case BCMOLT_XGPON_NI_OPER_ID_DISABLE_SERIAL_NUMBER:
+                                return bcmolt_cli_xgpon_ni_oper_disable_serial_number_submit(device_id, session);
+                            case BCMOLT_XGPON_NI_OPER_ID_SINGLE_REQUEST_STANDBY_PON_MONITORING:
+                                return bcmolt_cli_xgpon_ni_oper_single_request_standby_pon_monitoring_submit(device_id, session);
+                            case BCMOLT_XGPON_NI_OPER_ID_SET_ONU_STATE:
+                                return bcmolt_cli_xgpon_ni_oper_set_onu_state_submit(device_id, session);
+                            case BCMOLT_XGPON_NI_OPER_ID_RUN_SPECIAL_BW_MAP:
+                                return bcmolt_cli_xgpon_ni_oper_run_special_bw_map_submit(device_id, session);
+                            case BCMOLT_XGPON_NI_OPER_ID_ROGUE_DETECTION_WINDOW:
+                                return bcmolt_cli_xgpon_ni_oper_rogue_detection_window_submit(device_id, session);
+                            case BCMOLT_XGPON_NI_OPER_ID_TOD_REQUEST:
+                                return bcmolt_cli_xgpon_ni_oper_tod_request_submit(device_id, session);
+                            case BCMOLT_XGPON_NI_OPER_ID_START_ONU_UPGRADE:
+                                return bcmolt_cli_xgpon_ni_oper_start_onu_upgrade_submit(device_id, session, byte_pool);
+                            case BCMOLT_XGPON_NI_OPER_ID_ADJUST_TX_WAVELENGTH:
+                                return bcmolt_cli_xgpon_ni_oper_adjust_tx_wavelength_submit(device_id, session);
+                            default:
+                                return BCM_ERR_RANGE;
+                        }
+                    }
+
+                case BCMOLT_MGT_GROUP_PROXY:
+                    {
+                        bcmolt_xgpon_ni_proxy_id sub;
+                        cli_parm = bcmcli_find_named_parm(session, "sub");
+                        if (cli_parm != NULL)
+                        {
+                            sub = (bcmolt_xgpon_ni_proxy_id) cli_parm->value.number;
+                        }
+                        else
+                        {
+                            apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+                            return BCM_ERR_PARM;
+                        }
+
+                        switch (sub)
+                        {
+                            case BCMOLT_XGPON_NI_PROXY_ID_CPU_PACKETS:
+                                return bcmolt_cli_xgpon_ni_proxy_cpu_packets_send(device_id, session, byte_pool);
+                            case BCMOLT_XGPON_NI_PROXY_ID_BROADCAST_PLOAM_PACKET:
+                                return bcmolt_cli_xgpon_ni_proxy_broadcast_ploam_packet_send(device_id, session);
+                            default:
+                                return BCM_ERR_RANGE;
+                        }
+                    }
+
+                default:
+                    return BCM_ERR_RANGE;
+            }
+
+        case BCMOLT_OBJ_ID_XGPON_ONU:
+            switch (group_type)
+            {
+                case BCMOLT_MGT_GROUP_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_xgpon_onu_cfg_get(device_id, session, byte_pool);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_xgpon_onu_cfg_set(device_id, session, byte_pool);
+                        case BCMOLT_MSG_TYPE_CLEAR:
+                            return bcmolt_cli_xgpon_onu_cfg_clear(device_id, session);
+                        case BCMOLT_MSG_TYPE_GET_MULTI:
+                            return bcmolt_cli_xgpon_onu_cfg_get_multi(device_id, session, byte_pool);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_STAT:
+                    return bcmolt_cli_xgpon_onu_stat_get(device_id, session);
+                case BCMOLT_MGT_GROUP_STAT_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_xgpon_onu_stat_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_xgpon_onu_stat_cfg_set(device_id, session);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_AUTO_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_xgpon_onu_auto_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_xgpon_onu_auto_cfg_set(device_id, session);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                case BCMOLT_MGT_GROUP_OPER:
+                    {
+                        bcmolt_xgpon_onu_oper_id sub;
+                        cli_parm = bcmcli_find_named_parm(session, "sub");
+                        if (cli_parm != NULL)
+                        {
+                            sub = (bcmolt_xgpon_onu_oper_id) cli_parm->value.number;
+                        }
+                        else
+                        {
+                            apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+                            return BCM_ERR_PARM;
+                        }
+
+                        switch (sub)
+                        {
+                            case BCMOLT_XGPON_ONU_OPER_ID_SET_ONU_STATE:
+                                return bcmolt_cli_xgpon_onu_oper_set_onu_state_submit(device_id, session);
+                            case BCMOLT_XGPON_ONU_OPER_ID_RSSI_MEASUREMENT:
+                                return bcmolt_cli_xgpon_onu_oper_rssi_measurement_submit(device_id, session);
+                            case BCMOLT_XGPON_ONU_OPER_ID_REQUEST_REGISTRATION:
+                                return bcmolt_cli_xgpon_onu_oper_request_registration_submit(device_id, session);
+                            case BCMOLT_XGPON_ONU_OPER_ID_CHANGE_POWER_LEVELLING:
+                                return bcmolt_cli_xgpon_onu_oper_change_power_levelling_submit(device_id, session);
+                            case BCMOLT_XGPON_ONU_OPER_ID_GET_POWER_LEVEL:
+                                return bcmolt_cli_xgpon_onu_oper_get_power_level_submit(device_id, session);
+                            case BCMOLT_XGPON_ONU_OPER_ID_GET_POWER_CONSUMPTION:
+                                return bcmolt_cli_xgpon_onu_oper_get_power_consumption_submit(device_id, session);
+                            case BCMOLT_XGPON_ONU_OPER_ID_ADJUST_TX_WAVELENGTH:
+                                return bcmolt_cli_xgpon_onu_oper_adjust_tx_wavelength_submit(device_id, session);
+                            case BCMOLT_XGPON_ONU_OPER_ID_SECURE_MUTUAL_AUTHENTICATION:
+                                return bcmolt_cli_xgpon_onu_oper_secure_mutual_authentication_submit(device_id, session, byte_pool);
+                            case BCMOLT_XGPON_ONU_OPER_ID_ONU_TUNING_IN:
+                                return bcmolt_cli_xgpon_onu_oper_onu_tuning_in_submit(device_id, session);
+                            case BCMOLT_XGPON_ONU_OPER_ID_ONU_TUNING_OUT:
+                                return bcmolt_cli_xgpon_onu_oper_onu_tuning_out_submit(device_id, session);
+                            default:
+                                return BCM_ERR_RANGE;
+                        }
+                    }
+
+                case BCMOLT_MGT_GROUP_PROXY:
+                    {
+                        bcmolt_xgpon_onu_proxy_id sub;
+                        cli_parm = bcmcli_find_named_parm(session, "sub");
+                        if (cli_parm != NULL)
+                        {
+                            sub = (bcmolt_xgpon_onu_proxy_id) cli_parm->value.number;
+                        }
+                        else
+                        {
+                            apicli_print_complete(session, BCM_ERR_PARM, "sub is not set\n");
+                            return BCM_ERR_PARM;
+                        }
+
+                        switch (sub)
+                        {
+                            case BCMOLT_XGPON_ONU_PROXY_ID_PLOAM_PACKET:
+                                return bcmolt_cli_xgpon_onu_proxy_ploam_packet_send(device_id, session);
+                            case BCMOLT_XGPON_ONU_PROXY_ID_CPU_PACKETS:
+                                return bcmolt_cli_xgpon_onu_proxy_cpu_packets_send(device_id, session, byte_pool);
+                            default:
+                                return BCM_ERR_RANGE;
+                        }
+                    }
+
+                default:
+                    return BCM_ERR_RANGE;
+            }
+
+        case BCMOLT_OBJ_ID_XGPON_TRX:
+            switch (group_type)
+            {
+                case BCMOLT_MGT_GROUP_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_xgpon_trx_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_xgpon_trx_cfg_set(device_id, session);
+                        case BCMOLT_MSG_TYPE_CLEAR:
+                            return bcmolt_cli_xgpon_trx_cfg_clear(device_id, session);
+                        case BCMOLT_MSG_TYPE_GET_MULTI:
+                            return bcmolt_cli_xgpon_trx_cfg_get_multi(device_id, session, byte_pool);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                default:
+                    return BCM_ERR_RANGE;
+            }
+
+        case BCMOLT_OBJ_ID_XPON_SERDES:
+            switch (group_type)
+            {
+                case BCMOLT_MGT_GROUP_CFG:
+                    switch (msg_type)
+                    {
+                        case BCMOLT_MSG_TYPE_GET:
+                            return bcmolt_cli_xpon_serdes_cfg_get(device_id, session);
+                        case BCMOLT_MSG_TYPE_SET:
+                            return bcmolt_cli_xpon_serdes_cfg_set(device_id, session);
+                        case BCMOLT_MSG_TYPE_CLEAR:
+                            return bcmolt_cli_xpon_serdes_cfg_clear(device_id, session);
+                        case BCMOLT_MSG_TYPE_GET_MULTI:
+                            return bcmolt_cli_xpon_serdes_cfg_get_multi(device_id, session, byte_pool);
+                        default:
+                            return BCM_ERR_RANGE;
+                    }
+
+                default:
+                    return BCM_ERR_RANGE;
+            }
+
+        default:
+            return BCM_ERR_RANGE;
+    }
+}
+
+/* Perform an API call based on CLI input */
+bcmos_errno bcmolt_cli_api_call(bcmolt_devid device_id, bcmolt_mgt_group group_type, bcmolt_msg_type msg_type, bcmcli_session *session)
+{
+    bcmos_errno err;
+    apicli_byte_pool byte_pool;
+    (void)apicli_unumber_to_ipv4;
+
+    /* setup memory pool for dynamically-sized list memory allocation */
+    err = apicli_byte_pool_create(&byte_pool);
+    if (err != BCM_ERR_OK)
+    {
+        return err;
+    }
+
+    /* call the root API handler */
+    err = bcmolt_cli_api_root(device_id, group_type, msg_type, session, &byte_pool);
+
+    /* free all dynamically allocated memory */
+    apicli_byte_pool_destroy(&byte_pool);
+
+    return err;
+}
diff --git a/bcm68620_release/release/host_reference/api_cli/bcm_api_cli_handlers.h b/bcm68620_release/release/host_reference/api_cli/bcm_api_cli_handlers.h
new file mode 100644
index 0000000..e0a5e58
--- /dev/null
+++ b/bcm68620_release/release/host_reference/api_cli/bcm_api_cli_handlers.h
@@ -0,0 +1,48 @@
+/*
+<:copyright-BRCM:2016:DUAL/GPL:standard
+
+   Broadcom Proprietary and Confidential.(c) 2016 Broadcom
+   All Rights Reserved
+
+Unless you and Broadcom execute a separate written software license
+agreement governing use of this software, this software is licensed
+to you under the terms of the GNU General Public License version 2
+(the "GPL"), available at http://www.broadcom.com/licenses/GPLv2.php,
+with the following added to such license:
+
+   As a special exception, the copyright holders of this software give
+   you permission to link this software with independent modules, and
+   to copy and distribute the resulting executable under terms of your
+   choice, provided that you also meet, for each linked independent
+   module, the terms and conditions of the license of that module.
+   An independent module is a module which is not derived from this
+   software.  The special exception does not apply to any modifications
+   of the software.
+
+Not withstanding the above, under no circumstances may you combine
+this software in any way with any other Broadcom software provided
+under a license other than the GPL, without Broadcom's express prior
+written consent.
+
+:>
+*/
+
+#ifndef MAPLE_CLI_HANDLERS_H_
+#define MAPLE_CLI_HANDLERS_H_
+
+#include <bcmos_system.h>
+#include <bcmolt_api.h>
+#include <bcmcli.h>
+#include <bcmolt_model_types.h>
+
+/* the maximum amount of memory that could possibly by used by all variable-sized lists within a GET request */
+#define APICLI_DYNAMIC_LIST_BUFFER_SIZE (32 * 1024)
+
+/* Perform an API call based on CLI input */
+bcmos_errno bcmolt_cli_api_call(
+    bcmolt_devid device_id,
+    bcmolt_mgt_group group_type,
+    bcmolt_msg_type msg_type,
+    bcmcli_session *session);
+
+#endif
diff --git a/bcm68620_release/release/host_reference/api_cli/bcm_api_cli_helpers.c b/bcm68620_release/release/host_reference/api_cli/bcm_api_cli_helpers.c
new file mode 100644
index 0000000..2277aec
--- /dev/null
+++ b/bcm68620_release/release/host_reference/api_cli/bcm_api_cli_helpers.c
@@ -0,0 +1,24734 @@
+/*
+<: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;
+}
diff --git a/bcm68620_release/release/host_reference/api_cli/bcm_api_cli_helpers.h b/bcm68620_release/release/host_reference/api_cli/bcm_api_cli_helpers.h
new file mode 100644
index 0000000..87e7237
--- /dev/null
+++ b/bcm68620_release/release/host_reference/api_cli/bcm_api_cli_helpers.h
@@ -0,0 +1,768 @@
+/*
+<:copyright-BRCM:2016:DUAL/GPL:standard
+
+   Broadcom Proprietary and Confidential.(c) 2016 Broadcom
+   All Rights Reserved
+
+Unless you and Broadcom execute a separate written software license
+agreement governing use of this software, this software is licensed
+to you under the terms of the GNU General Public License version 2
+(the "GPL"), available at http://www.broadcom.com/licenses/GPLv2.php,
+with the following added to such license:
+
+   As a special exception, the copyright holders of this software give
+   you permission to link this software with independent modules, and
+   to copy and distribute the resulting executable under terms of your
+   choice, provided that you also meet, for each linked independent
+   module, the terms and conditions of the license of that module.
+   An independent module is a module which is not derived from this
+   software.  The special exception does not apply to any modifications
+   of the software.
+
+Not withstanding the above, under no circumstances may you combine
+this software in any way with any other Broadcom software provided
+under a license other than the GPL, without Broadcom's express prior
+written consent.
+
+:>
+ */
+#ifndef MAPLE_CLI_HELPERS_H_
+#define MAPLE_CLI_HELPERS_H_
+
+#include <bcmcli.h>
+#include <bcm_api_cli_types.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+/* Mac name length */
+#define APICLI_MAX_PARM_NAME_LENGTH BCMCLI_MAX_SEARCH_SUBSTR_LENGTH
+
+/* Max help string length */
+#define APICLI_MAX_PARM_HELP_LENGTH 128
+
+typedef enum bcmcli_field_descr_flags
+{
+    BCMCLI_FIELD_DESCR_FLAGS_NONE           = 0,
+    BCMCLI_FIELD_DESCR_FLAGS_PRESENCE_MASK  = (1 << 0)  /* field is a 'presence mask' for a structure */
+} bcmcli_field_descr_flags;
+
+typedef struct bcmcli_type_descr bcmcli_type_descr;
+
+/* Structure field descriptor */
+typedef struct bcmcli_field_descr
+{
+    const char *name;           /* Field name */
+    const char *descr;          /* Field description */
+    const char *cli_name;       /* Short CLI name. can be missing */
+    bcmcli_type_descr *type;    /* Field type */
+    uint16_t offset;            /* Offset from the beginning of the type structure */
+    bcmcli_field_descr_flags flags;
+} bcmcli_field_descr;
+
+/* Data type descriptor */
+struct bcmcli_type_descr
+{
+    const char *name;                           /* Type name */
+    const char *descr;                          /* Type description. can be missing */
+    const char *cli_name;                       /* Short CLI name. can be missing */
+    bcmolt_base_type_id base_type;              /* Base type: snum, unum, string, ip, enum, etc. */
+    uint32_t min_val;                           /* Min value for range check */
+    uint32_t max_val;                           /* Max value for range check */
+    uint16_t size;                              /* Size */
+
+    /* The following union is qualified by the base_type and contains additional
+     * info for array, enum, struct, union */
+    union
+    {
+        bcmcli_enum_val *e;                     /* enum value array Contains num_elements+1 values. The last value has name=NULL */
+        struct
+        {
+            uint16_t num_fields;                /* number of elements in the following structure */
+            bcmcli_field_descr *fields;         /* Structure field array. Contains num_elements values */
+        } s;
+        struct
+        {
+            uint16_t num_common_fields;         /* number of non-union fields at the start of the struct */
+            bcmcli_field_descr *common_fields;  /* common field array. Contains num_elements values */
+            uint16_t classifier_idx;            /* index of the classifier field within common_fields */
+            bcmcli_field_descr *union_fields;   /* sub-struct fields under the union (name == NULL if no fields present)
+                                                   (one per enum entry in the classifier type, plus one for default) */
+        } u;
+        struct
+        {
+            bcmcli_type_descr *elem_type;       /* Array element type */
+            uint8_t len_size;                   /* Byte width of array length field (at start of struct) */
+            uint16_t max_size;                  /* Max array size */
+        } arr_dyn;
+        struct
+        {
+            bcmcli_type_descr *elem_type;       /* Array element type */
+            uint16_t size;                      /* Fixed array size */
+        } arr_fixed;
+    } x;
+};
+
+/* Property descriptor.
+ * The 1st 5 fields are exactly the same as in bcmcli_field_descr
+ * ToDo: replace with bcmcli_field_descr substructure.
+ * Requires changes in code generator
+ */
+typedef struct
+{
+    const char *name;               /* C name */
+    const char *descr;              /* Property description */
+    const char *cli_name;           /* CLI name */
+    bcmcli_type_descr *type;        /* Type reference */
+    uint16_t offset;                /* Offset in generated per-group structure */
+    uint16_t property;              /* Property id in per-object management group */
+    bcmolt_prop_access_id access;   /* Access */
+} bcmcli_prop_descr;
+
+/* All APIs return
+ * BCM_ERR_OK - ok
+ * BCM_ERR_NOENT - if id is in range, but doesn't correspond to any value (a hole)
+ * BCM_ERR_RANGE - id is out of range
+ */
+
+/* Get object name by id */
+bcmos_errno api_cli_object_name(bcmolt_obj_id obj, const char **name, const char **descr);
+
+/* Get object structure size */
+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);
+
+/* Get object subgroup (specific operation or proxy) name and description */
+bcmos_errno api_cli_object_subgroup_name(bcmolt_obj_id obj, bcmolt_mgt_group group, uint16_t subgroup, const char **name, const char **descr);
+
+/* Get property by object, mgt_group, subgroup (specific operation or proxy), property_id */
+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);
+
+/* Get the number of subgroups present for a given group */
+static inline uint16_t api_cli_get_subgroup_count(bcmolt_obj_id obj, bcmolt_mgt_group group)
+{
+    uint16_t count = 0;
+    uint32_t dummy;
+    while (api_cli_object_struct_size(obj, group, count, &dummy, &dummy, &dummy, &dummy) != BCM_ERR_RANGE)
+    {
+        ++count;
+    }
+
+    return count;
+}
+
+/* Dump a single property */
+bcmos_errno apicli_dump_prop(bcmcli_session *session, const bcmcli_prop_descr *pd, void *prop_data);
+
+/* Dump a single property value in C initializer format */
+bcmos_errno apicli_dump_prop_initializer(bcmcli_session *session, const bcmcli_prop_descr *pd, void *prop_data);
+
+/* Dump a dynamic array in C initializer format */
+bcmos_errno apicli_dump_dyn_array(bcmcli_session *session, const bcmcli_type_descr *td, void *data, const char *name);
+
+/* Dump property as CLI parameters */
+bcmos_errno apicli_dump_prop_param(bcmcli_session *session, const bcmcli_prop_descr *pd, void *prop_data, const char *prefix);
+
+/* Dump message */
+bcmos_errno apicli_msg_dump(bcmcli_session *session, bcmolt_msg *msg);
+
+/* Message group name */
+const char *apicli_mgt_group_to_str(bcmolt_mgt_group group);
+
+/* Convert an enum value to the corresponding string */
+#define BCMOLT_ENUM_STRING_VAL(enum_name, value)    bcmcli_enum_stringval(enum_name ## _string_table, (value))
+
+/* Enum string tables */
+extern bcmcli_enum_val bcmolt_activation_fail_reason_string_table[];
+extern bcmcli_enum_val bcmolt_additional_bw_eligibility_string_table[];
+extern bcmcli_enum_val bcmolt_ae_ni_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_ae_ni_en_state_string_table[];
+extern bcmcli_enum_val bcmolt_ae_ni_key_id_string_table[];
+extern bcmcli_enum_val bcmolt_ae_ni_set_ae_ni_en_state_id_string_table[];
+extern bcmcli_enum_val bcmolt_ae_path_ds_auto_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_ae_path_ds_key_id_string_table[];
+extern bcmcli_enum_val bcmolt_ae_path_ds_stat_alarm_cleared_id_string_table[];
+extern bcmcli_enum_val bcmolt_ae_path_ds_stat_alarm_raised_id_string_table[];
+extern bcmcli_enum_val bcmolt_ae_path_ds_stat_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_ae_path_ds_stat_id_string_table[];
+extern bcmcli_enum_val bcmolt_ae_path_us_auto_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_ae_path_us_key_id_string_table[];
+extern bcmcli_enum_val bcmolt_ae_path_us_stat_alarm_cleared_id_string_table[];
+extern bcmcli_enum_val bcmolt_ae_path_us_stat_alarm_raised_id_string_table[];
+extern bcmcli_enum_val bcmolt_ae_path_us_stat_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_ae_path_us_stat_id_string_table[];
+extern bcmcli_enum_val bcmolt_alloc_operation_string_table[];
+extern bcmcli_enum_val bcmolt_alloc_state_string_table[];
+extern bcmcli_enum_val bcmolt_alloc_type_string_table[];
+extern bcmcli_enum_val bcmolt_alloc_type_to_scan_string_table[];
+extern bcmcli_enum_val bcmolt_api_capture_buffer_mode_string_table[];
+extern bcmcli_enum_val bcmolt_api_capture_location_string_table[];
+extern bcmcli_enum_val bcmolt_calibration_record_string_table[];
+extern bcmcli_enum_val bcmolt_sign_string_table[];
+extern bcmcli_enum_val bcmolt_upstream_line_rate_capabilities_string_table[];
+extern bcmcli_enum_val bcmolt_link_type_string_table[];
+extern bcmcli_enum_val bcmolt_capture_strobe_signal_string_table[];
+extern bcmcli_enum_val bcmolt_channel_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_channel_key_id_string_table[];
+extern bcmcli_enum_val bcmolt_console_redirection_string_table[];
+extern bcmcli_enum_val bcmolt_control_state_string_table[];
+extern bcmcli_enum_val bcmolt_dba_mode_string_table[];
+extern bcmcli_enum_val bcmolt_dba_ram_string_table[];
+extern bcmcli_enum_val bcmolt_dba_type_string_table[];
+extern bcmcli_enum_val bcmolt_ddr_test_status_string_table[];
+extern bcmcli_enum_val bcmolt_ddr_test_result_string_table[];
+extern bcmcli_enum_val bcmolt_host_connection_fail_reason_string_table[];
+extern bcmcli_enum_val bcmolt_deactivation_reason_string_table[];
+extern bcmcli_enum_val bcmolt_debug_auto_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_debug_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_debug_cli_input_id_string_table[];
+extern bcmcli_enum_val bcmolt_debug_cli_output_id_string_table[];
+extern bcmcli_enum_val bcmolt_debug_file_almost_full_id_string_table[];
+extern bcmcli_enum_val bcmolt_debug_key_id_string_table[];
+extern bcmcli_enum_val bcmolt_debug_reset_api_capture_id_string_table[];
+extern bcmcli_enum_val bcmolt_debug_start_api_capture_id_string_table[];
+extern bcmcli_enum_val bcmolt_debug_stop_api_capture_id_string_table[];
+extern bcmcli_enum_val bcmolt_device_auto_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_device_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_device_chip_revision_string_table[];
+extern bcmcli_enum_val bcmolt_device_connect_id_string_table[];
+extern bcmcli_enum_val bcmolt_device_connection_complete_id_string_table[];
+extern bcmcli_enum_val bcmolt_device_connection_established_id_string_table[];
+extern bcmcli_enum_val bcmolt_device_connection_failure_id_string_table[];
+extern bcmcli_enum_val bcmolt_device_ddr_test_complete_id_string_table[];
+extern bcmcli_enum_val bcmolt_device_device_keep_alive_id_string_table[];
+extern bcmcli_enum_val bcmolt_device_device_ready_id_string_table[];
+extern bcmcli_enum_val bcmolt_device_disconnect_id_string_table[];
+extern bcmcli_enum_val bcmolt_device_disconnection_complete_id_string_table[];
+extern bcmcli_enum_val bcmolt_device_host_keep_alive_id_string_table[];
+extern bcmcli_enum_val bcmolt_device_image_transfer_complete_id_string_table[];
+extern bcmcli_enum_val bcmolt_device_image_transfer_data_id_string_table[];
+extern bcmcli_enum_val bcmolt_device_image_transfer_start_id_string_table[];
+extern bcmcli_enum_val bcmolt_device_image_type_string_table[];
+extern bcmcli_enum_val bcmolt_device_indications_dropped_id_string_table[];
+extern bcmcli_enum_val bcmolt_device_key_id_string_table[];
+extern bcmcli_enum_val bcmolt_nni_speed_string_table[];
+extern bcmcli_enum_val bcmolt_device_reset_id_string_table[];
+extern bcmcli_enum_val bcmolt_device_reset_mode_string_table[];
+extern bcmcli_enum_val bcmolt_device_run_ddr_test_id_string_table[];
+extern bcmcli_enum_val bcmolt_device_state_string_table[];
+extern bcmcli_enum_val bcmolt_device_sw_error_id_string_table[];
+extern bcmcli_enum_val bcmolt_device_sw_exception_id_string_table[];
+extern bcmcli_enum_val bcmolt_device_sw_upgrade_activate_id_string_table[];
+extern bcmcli_enum_val bcmolt_disable_serial_number_control_string_table[];
+extern bcmcli_enum_val bcmolt_drv_icf_id_string_table[];
+extern bcmcli_enum_val bcmolt_drv_sgb_id_string_table[];
+extern bcmcli_enum_val bcmolt_ds_vlan_action_string_table[];
+extern bcmcli_enum_val bcmolt_tfb_trap_behavior_string_table[];
+extern bcmcli_enum_val bcmolt_tfb_mode_string_table[];
+extern bcmcli_enum_val bcmolt_lim_sec_mode_up_string_table[];
+extern bcmcli_enum_val bcmolt_lim_sec_mode_dn_string_table[];
+extern bcmcli_enum_val bcmolt_xim_sec_mode_string_table[];
+extern bcmcli_enum_val bcmolt_hsc_ram_string_table[];
+extern bcmcli_enum_val bcmolt_lim_ram_string_table[];
+extern bcmcli_enum_val bcmolt_lky_ram_string_table[];
+extern bcmcli_enum_val bcmolt_mic_ram_string_table[];
+extern bcmcli_enum_val bcmolt_xpcsrm_ram_string_table[];
+extern bcmcli_enum_val bcmolt_embedded_image_transfer_status_string_table[];
+extern bcmcli_enum_val bcmolt_epon_encryption_information_format_string_table[];
+extern bcmcli_enum_val bcmolt_energy_detect_source_string_table[];
+extern bcmcli_enum_val bcmolt_epon_1g_turbo_mode_string_table[];
+extern bcmcli_enum_val bcmolt_epon_clock_transport_mode_string_table[];
+extern bcmcli_enum_val bcmolt_epon_dba_reporting_mode_string_table[];
+extern bcmcli_enum_val bcmolt_epon_link_rate_string_table[];
+extern bcmcli_enum_val bcmolt_status_string_table[];
+extern bcmcli_enum_val bcmolt_epon_denied_link_auto_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_denied_link_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_denied_link_key_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_denied_link_laser_on_off_violation_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_denied_link_llid_pool_empty_violation_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_denied_link_max_link_violation_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_denied_link_overhead_profile_violation_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_denied_link_range_violation_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_denied_link_rogue_violation_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_denied_link_system_resource_violation_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_denied_link_tdm_channels_exhausted_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_denied_link_unknown_link_violation_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_denied_link_upstream_bandwidth_violation_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_encryption_mode_string_table[];
+extern bcmcli_enum_val bcmolt_epon_key_choice_string_table[];
+extern bcmcli_enum_val bcmolt_epon_encryption_direction_string_table[];
+extern bcmcli_enum_val bcmolt_epon_fec_en_state_string_table[];
+extern bcmcli_enum_val bcmolt_epon_oam_type_string_table[];
+extern bcmcli_enum_val bcmolt_epon_link_auto_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_link_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_link_delete_link_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_link_duplicate_mpcp_registration_request_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_link_encryption_enabled_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_link_fec_state_string_table[];
+extern bcmcli_enum_val bcmolt_epon_link_force_rediscovery_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_link_frame_captured_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_link_status_string_table[];
+extern bcmcli_enum_val bcmolt_mpcp_discovery_info_string_table[];
+extern bcmcli_enum_val bcmolt_epon_link_inject_frame_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_link_key_exchange_failure_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_link_key_exchange_start_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_link_key_exchange_started_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_link_key_exchange_stop_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_link_key_exchange_stopped_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_link_key_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_link_link_deleted_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_link_link_speed_mismatch_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_link_mpcp_deregistered_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_link_mpcp_discovered_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_link_mpcp_reg_ack_timeout_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_link_mpcp_report_timeout_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_link_oam_keepalive_timeout_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_link_oam_keepalive_timer_start_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_link_oam_keepalive_timer_started_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_link_oam_keepalive_timer_stop_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_link_oam_keepalive_timer_stopped_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_link_preprovisioned_link_created_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_link_protection_switch_occurred_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_link_range_value_changed_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_link_rerange_failure_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_link_stat_alarm_cleared_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_link_stat_alarm_raised_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_link_stat_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_link_stat_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_link_state_flags_string_table[];
+extern bcmcli_enum_val bcmolt_epon_link_static_registration_done_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_link_static_registration_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_link_type_string_table[];
+extern bcmcli_enum_val bcmolt_mpcp_gate_mode_string_table[];
+extern bcmcli_enum_val bcmolt_mpcp_registration_gate_flags_string_table[];
+extern bcmcli_enum_val bcmolt_epon_ni_add_link_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_ni_add_multicast_link_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_ni_add_protected_standby_link_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_ni_auto_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_ni_auto_rogue_scan_10g_failure_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_ni_auto_rogue_scan_1g_failure_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_ni_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_ni_en_state_string_table[];
+extern bcmcli_enum_val bcmolt_epon_ni_issue_rssi_grant_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_ni_key_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_ni_llid_quarantined_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_ni_mpcp_timestamp_changed_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_ni_no_reports_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_ni_onu_upgrade_complete_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_ni_protection_switching_apply_rerange_delta_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_ni_rerange_failure_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_ni_rogue_llid_scan_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_ni_rogue_scan_complete_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_ni_rssi_measurement_completed_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_ni_set_epon_ni_en_state_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_ni_start_onu_upgrade_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_ni_state_change_completed_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_oam_extension_type_string_table[];
+extern bcmcli_enum_val bcmolt_epon_onu_10g_us_auto_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_onu_10g_us_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_onu_10g_us_key_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_onu_10g_us_stat_alarm_cleared_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_onu_10g_us_stat_alarm_raised_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_onu_10g_us_stat_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_onu_10g_us_stat_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_onu_1g_us_auto_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_onu_1g_us_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_onu_1g_us_key_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_onu_1g_us_stat_alarm_cleared_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_onu_1g_us_stat_alarm_raised_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_onu_1g_us_stat_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_onu_1g_us_stat_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_onu_upgrade_onu_response_code_string_table[];
+extern bcmcli_enum_val bcmolt_epon_onu_upgrade_return_code_string_table[];
+extern bcmcli_enum_val bcmolt_epon_path_10g_ds_auto_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_path_10g_ds_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_path_10g_ds_key_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_path_10g_ds_stat_alarm_cleared_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_path_10g_ds_stat_alarm_raised_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_path_10g_ds_stat_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_path_10g_ds_stat_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_path_10g_us_auto_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_path_10g_us_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_path_10g_us_key_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_path_10g_us_stat_alarm_cleared_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_path_10g_us_stat_alarm_raised_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_path_10g_us_stat_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_path_10g_us_stat_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_path_1g_ds_auto_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_path_1g_ds_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_path_1g_ds_key_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_path_1g_ds_stat_alarm_cleared_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_path_1g_ds_stat_alarm_raised_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_path_1g_ds_stat_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_path_1g_ds_stat_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_path_1g_us_auto_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_path_1g_us_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_path_1g_us_key_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_path_1g_us_stat_alarm_cleared_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_path_1g_us_stat_alarm_raised_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_path_1g_us_stat_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_path_1g_us_stat_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_protection_state_string_table[];
+extern bcmcli_enum_val bcmolt_epon_protection_switching_type_string_table[];
+extern bcmcli_enum_val bcmolt_protection_switching_detection_options_string_table[];
+extern bcmcli_enum_val bcmolt_epon_protection_switching_reranging_options_string_table[];
+extern bcmcli_enum_val bcmolt_gpio_pin_string_table[];
+extern bcmcli_enum_val bcmolt_gpio_polarity_string_table[];
+extern bcmcli_enum_val bcmolt_epon_rp_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_epon_rp_key_id_string_table[];
+extern bcmcli_enum_val bcmolt_ext_irq_string_table[];
+extern bcmcli_enum_val bcmolt_flush_mac_table_option_string_table[];
+extern bcmcli_enum_val bcmolt_frequency_adjustment_direction_string_table[];
+extern bcmcli_enum_val bcmolt_gem_port_direction_string_table[];
+extern bcmcli_enum_val bcmolt_gem_port_type_string_table[];
+extern bcmcli_enum_val bcmolt_gem_port_operation_string_table[];
+extern bcmcli_enum_val bcmolt_gpio_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpio_key_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpio_pin_dir_string_table[];
+extern bcmcli_enum_val bcmolt_gpio_value_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_alloc_auto_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_alloc_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_alloc_configuration_completed_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_alloc_get_alloc_stats_completed_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_alloc_get_stats_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_alloc_key_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_alloc_set_state_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_alloc_stat_alarm_cleared_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_alloc_stat_alarm_raised_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_alloc_stat_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_alloc_stat_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_gem_port_auto_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_gem_port_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_gem_port_configuration_completed_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_gem_port_key_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_gem_port_set_state_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_gem_port_stat_alarm_cleared_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_gem_port_stat_alarm_raised_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_gem_port_stat_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_gem_port_stat_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_gem_port_state_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_iwf_auto_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_iwf_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_iwf_ds_egress_flow_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_iwf_ds_egress_flow_key_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_iwf_ds_ingress_flow_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_iwf_ds_ingress_flow_key_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_iwf_flush_mac_table_completed_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_iwf_flush_mac_table_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_iwf_key_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_iwf_mac_table_auto_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_iwf_mac_table_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_iwf_mac_table_key_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_iwf_mac_table_mac_aged_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_iwf_mac_table_mac_dropped_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_iwf_mac_table_mac_move_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_iwf_mac_table_new_mac_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_iwf_scan_mac_table_completed_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_iwf_scan_mac_table_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_iwf_stat_alarm_cleared_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_iwf_stat_alarm_raised_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_iwf_stat_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_iwf_stat_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_iwf_us_flow_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_iwf_us_flow_key_id_string_table[];
+extern bcmcli_enum_val bcmolt_key_exchange_mode_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_ni_activate_all_onus_completed_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_ni_auto_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_ni_broadcast_ploam_packet_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_ni_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_ni_cpu_packets_failure_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_ni_cpu_packets_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_ni_deactivate_all_onus_completed_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_ni_disable_all_onus_completed_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_ni_disable_serial_number_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_ni_enable_all_onus_completed_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_ni_key_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_ni_los_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_ni_onu_discovered_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_ni_onu_upgrade_complete_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_ni_protection_switching_onus_ranged_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_ni_protection_switching_switchover_completed_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_ni_protection_switching_traffic_resume_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_ni_protection_switching_type_c_set_multiple_onu_state_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_ni_reset_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_ni_rogue_detection_completed_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_ni_rogue_detection_window_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_ni_rogue_onu_special_map_cycle_start_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_ni_serial_number_acquisition_cycle_start_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_ni_set_onu_state_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_ni_set_pon_state_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_ni_single_request_standby_pon_monitoring_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_ni_standby_pon_monitoring_cycle_completed_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_ni_start_onu_upgrade_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_ni_stat_alarm_cleared_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_ni_stat_alarm_raised_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_ni_stat_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_ni_stat_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_ni_state_change_completed_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_ni_tod_request_completed_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_ni_tod_request_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_onu_auto_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_onu_ber_interval_configuration_completed_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_onu_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_onu_change_power_level_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_onu_cpu_packet_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_onu_cpu_packets_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_onu_dfi_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_onu_dgi_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_onu_dowi_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_onu_err_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_onu_invalid_dbru_report_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_onu_key_exchange_completed_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_onu_key_exchange_cycle_skipped_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_onu_key_exchange_decrypt_required_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_onu_key_exchange_key_mismatch_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_onu_key_exchange_key_request_timeout_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_onu_key_exchange_unconsecutive_index_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_onu_key_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_onu_loai_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_onu_loki_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_onu_memi_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_onu_omci_packet_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_onu_omci_port_id_configuration_completed_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_onu_onu_activation_completed_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_onu_onu_activation_standby_completed_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_onu_onu_alarm_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_onu_onu_deactivation_completed_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_onu_onu_disable_completed_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_onu_onu_enable_completed_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_onu_optical_reflection_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_onu_password_authentication_completed_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_onu_pee_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_onu_ploam_packet_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_onu_possible_drift_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_onu_power_management_state_change_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_onu_pst_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_onu_ranging_completed_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_onu_rei_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_onu_rssi_measurement_completed_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_onu_rssi_measurement_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_onu_sdi_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_onu_set_onu_state_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_onu_sfi_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_onu_stat_alarm_cleared_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_onu_stat_alarm_raised_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_onu_stat_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_onu_stat_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_onu_sufi_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_onu_tiwi_id_string_table[];
+extern bcmcli_enum_val bcmolt_omci_device_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_onu_upgrade_return_code_string_table[];
+extern bcmcli_enum_val bcmolt_omci_result_code_string_table[];
+extern bcmcli_enum_val bcmolt_onu_state_string_table[];
+extern bcmcli_enum_val bcmolt_rssi_location_sign_string_table[];
+extern bcmcli_enum_val bcmolt_onu_post_discovery_mode_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_trx_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_gpon_trx_key_id_string_table[];
+extern bcmcli_enum_val bcmolt_image_transfer_status_string_table[];
+extern bcmcli_enum_val bcmolt_iwf_mode_string_table[];
+extern bcmcli_enum_val bcmolt_log_entry_auto_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_log_entry_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_log_entry_key_id_string_table[];
+extern bcmcli_enum_val bcmolt_log_entry_stat_alarm_cleared_id_string_table[];
+extern bcmcli_enum_val bcmolt_log_entry_stat_alarm_raised_id_string_table[];
+extern bcmcli_enum_val bcmolt_log_entry_stat_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_log_entry_stat_id_string_table[];
+extern bcmcli_enum_val bcmolt_log_file_id_string_table[];
+extern bcmcli_enum_val bcmolt_log_level_string_table[];
+extern bcmcli_enum_val bcmolt_log_style_string_table[];
+extern bcmcli_enum_val bcmolt_log_type_string_table[];
+extern bcmcli_enum_val bcmolt_logger_auto_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_logger_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_logger_clear_log_id_string_table[];
+extern bcmcli_enum_val bcmolt_logger_key_id_string_table[];
+extern bcmcli_enum_val bcmolt_logger_stat_alarm_cleared_id_string_table[];
+extern bcmcli_enum_val bcmolt_logger_stat_alarm_raised_id_string_table[];
+extern bcmcli_enum_val bcmolt_logger_stat_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_logger_stat_id_string_table[];
+extern bcmcli_enum_val bcmolt_mac_table_miss_fallback_string_table[];
+extern bcmcli_enum_val bcmolt_mac_table_learning_mode_string_table[];
+extern bcmcli_enum_val bcmolt_mapping_tag_method_string_table[];
+extern bcmcli_enum_val bcmolt_nni_auto_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_nni_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_nni_connection_string_table[];
+extern bcmcli_enum_val bcmolt_nni_key_id_string_table[];
+extern bcmcli_enum_val bcmolt_trivalent_string_table[];
+extern bcmcli_enum_val bcmolt_nni_serdes_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_nni_serdes_key_id_string_table[];
+extern bcmcli_enum_val bcmolt_nni_stat_alarm_cleared_id_string_table[];
+extern bcmcli_enum_val bcmolt_nni_stat_alarm_raised_id_string_table[];
+extern bcmcli_enum_val bcmolt_nni_stat_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_nni_stat_id_string_table[];
+extern bcmcli_enum_val bcmolt_nni_status_changed_id_string_table[];
+extern bcmcli_enum_val bcmolt_odn_class_string_table[];
+extern bcmcli_enum_val bcmolt_omci_port_id_operation_string_table[];
+extern bcmcli_enum_val bcmolt_onu_operation_string_table[];
+extern bcmcli_enum_val bcmolt_onu_power_level_string_table[];
+extern bcmcli_enum_val bcmolt_tc_protocol_string_table[];
+extern bcmcli_enum_val bcmolt_packet_injection_error_string_table[];
+extern bcmcli_enum_val bcmolt_packet_type_string_table[];
+extern bcmcli_enum_val bcmolt_password_authentication_fail_reason_string_table[];
+extern bcmcli_enum_val bcmolt_polarity_string_table[];
+extern bcmcli_enum_val bcmolt_polling_interval_string_table[];
+extern bcmcli_enum_val bcmolt_pon_operation_string_table[];
+extern bcmcli_enum_val bcmolt_pon_protection_switching_options_string_table[];
+extern bcmcli_enum_val bcmolt_pon_state_string_table[];
+extern bcmcli_enum_val bcmolt_power_levelling_control_string_table[];
+extern bcmcli_enum_val bcmolt_power_management_transition_reason_string_table[];
+extern bcmcli_enum_val bcmolt_prbs_polynomial_string_table[];
+extern bcmcli_enum_val bcmolt_prbs_checker_mode_string_table[];
+extern bcmcli_enum_val bcmolt_prbs_lock_state_string_table[];
+extern bcmcli_enum_val bcmolt_raman_mitigation_mode_string_table[];
+extern bcmcli_enum_val bcmolt_ranging_fail_reason_string_table[];
+extern bcmcli_enum_val bcmolt_registration_behavior_string_table[];
+extern bcmcli_enum_val bcmolt_request_registration_fail_reason_string_table[];
+extern bcmcli_enum_val bcmolt_result_string_table[];
+extern bcmcli_enum_val bcmolt_rogue_detection_algorithm_type_string_table[];
+extern bcmcli_enum_val bcmolt_rogue_detection_window_string_table[];
+extern bcmcli_enum_val bcmolt_rogue_measurement_result_string_table[];
+extern bcmcli_enum_val bcmolt_rogue_scan_status_string_table[];
+extern bcmcli_enum_val bcmolt_rssi_measurement_fail_reason_string_table[];
+extern bcmcli_enum_val bcmolt_secure_mutual_authentication_fail_reason_string_table[];
+extern bcmcli_enum_val bcmolt_serdes_ranging_mode_string_table[];
+extern bcmcli_enum_val bcmolt_serdes_instance_string_table[];
+extern bcmcli_enum_val bcmolt_shaper_mode_string_table[];
+extern bcmcli_enum_val bcmolt_software_error_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_software_error_key_id_string_table[];
+extern bcmcli_enum_val bcmolt_stat_condition_type_string_table[];
+extern bcmcli_enum_val bcmolt_switch_over_type_c_onu_state_string_table[];
+extern bcmcli_enum_val bcmolt_system_mode_string_table[];
+extern bcmcli_enum_val bcmolt_us_operating_wavelength_bands_string_table[];
+extern bcmcli_enum_val bcmolt_traffic_resume_result_string_table[];
+extern bcmcli_enum_val bcmolt_trx_calibration_auto_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_trx_calibration_capture_window_and_statistic_completed_id_string_table[];
+extern bcmcli_enum_val bcmolt_trx_calibration_key_id_string_table[];
+extern bcmcli_enum_val bcmolt_trx_calibration_start_capture_window_id_string_table[];
+extern bcmcli_enum_val bcmolt_trx_calibration_stop_capture_window_id_string_table[];
+extern bcmcli_enum_val bcmolt_trx_calibration_trigger_string_table[];
+extern bcmcli_enum_val bcmolt_trx_calibration_trigger_position_string_table[];
+extern bcmcli_enum_val bcmolt_trx_calibration_window_mode_string_table[];
+extern bcmcli_enum_val bcmolt_trx_type_string_table[];
+extern bcmcli_enum_val bcmolt_tune_in_fail_reason_string_table[];
+extern bcmcli_enum_val bcmolt_tune_out_fail_reason_string_table[];
+extern bcmcli_enum_val bcmolt_uart_baudrate_string_table[];
+extern bcmcli_enum_val bcmolt_us_gem_port_destination_string_table[];
+extern bcmcli_enum_val bcmolt_us_vlan_action_string_table[];
+extern bcmcli_enum_val bcmolt_vlan_to_flow_mapping_method_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_alloc_auto_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_alloc_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_alloc_configuration_completed_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_alloc_get_alloc_stats_completed_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_alloc_get_stats_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_alloc_key_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_alloc_set_state_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_alloc_stat_alarm_cleared_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_alloc_stat_alarm_raised_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_alloc_stat_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_alloc_stat_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_gem_port_auto_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_gem_port_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_gem_port_key_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_gem_port_stat_alarm_cleared_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_gem_port_stat_alarm_raised_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_gem_port_stat_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_gem_port_stat_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_gem_port_state_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_iwf_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_iwf_key_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_ni_activate_all_onus_completed_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_ni_adjust_tx_wavelength_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_ni_auto_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_ni_broadcast_ploam_packet_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_ni_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_ni_cpu_packets_failure_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_ni_cpu_packets_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_ni_deactivate_all_onus_completed_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_ni_disable_all_onus_completed_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_ni_disable_serial_number_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_ni_enable_all_onus_completed_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_ni_key_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_ni_los_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_ni_onu_discovered_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_ni_onu_upgrade_complete_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_ni_protection_switching_onus_ranged_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_ni_protection_switching_switchover_completed_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_ni_protection_switching_traffic_resume_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_ni_reset_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_ni_rogue_detection_completed_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_ni_rogue_detection_window_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_ni_rogue_onu_special_map_cycle_start_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_ni_run_special_bw_map_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_ni_serial_number_acquisition_cycle_start_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_ni_set_onu_state_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_ni_set_pon_state_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_ni_single_request_standby_pon_monitoring_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_ni_standby_pon_monitoring_cycle_completed_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_ni_start_onu_upgrade_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_ni_stat_alarm_cleared_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_ni_stat_alarm_raised_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_ni_stat_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_ni_stat_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_ni_state_change_completed_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_ni_tod_request_completed_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_ni_tod_request_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_num_of_onus_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_onu_adjust_tx_wavelength_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_onu_auto_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_onu_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_onu_change_power_levelling_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_onu_cpu_packet_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_onu_cpu_packets_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_onu_dfi_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_onu_dgi_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_onu_dowi_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_onu_get_power_consumption_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_onu_get_power_level_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_onu_invalid_dbru_report_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_onu_key_exchange_completed_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_onu_key_exchange_cycle_skipped_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_onu_key_exchange_key_mismatch_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_onu_key_exchange_key_request_timeout_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_onu_key_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_onu_looci_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_onu_omci_packet_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_onu_onu_activation_completed_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_onu_onu_alarm_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_onu_onu_deactivation_completed_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_onu_onu_disable_completed_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_onu_onu_enable_completed_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_onu_onu_tuning_in_completed_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_onu_onu_tuning_in_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_onu_onu_tuning_out_completed_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_onu_onu_tuning_out_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_onu_optical_reflection_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_onu_ploam_packet_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_onu_possible_drift_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_onu_power_consumption_report_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_onu_power_level_report_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_onu_power_management_state_change_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_onu_pqsi_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_onu_ranging_completed_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_onu_registration_id_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_onu_request_registration_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_onu_rssi_measurement_completed_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_onu_rssi_measurement_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_onu_sdi_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_onu_secure_mutual_authentication_failure_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_onu_secure_mutual_authentication_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_onu_set_onu_state_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_onu_sfi_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_onu_stat_alarm_cleared_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_onu_stat_alarm_raised_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_onu_stat_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_onu_stat_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_onu_sufi_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_onu_tiwi_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_onu_tuning_response_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_serdes_ranging_mode_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_trx_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_trx_key_id_string_table[];
+extern bcmcli_enum_val bcmolt_xgpon_trx_type_string_table[];
+extern bcmcli_enum_val bcmolt_xpon_serdes_cfg_id_string_table[];
+extern bcmcli_enum_val bcmolt_xpon_serdes_key_id_string_table[];
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* MAPLE_CLI_HELPERS_H_ */
diff --git a/bcm68620_release/release/host_reference/api_cli/bcm_api_cli_types.h b/bcm68620_release/release/host_reference/api_cli/bcm_api_cli_types.h
new file mode 100644
index 0000000..ceed40e
--- /dev/null
+++ b/bcm68620_release/release/host_reference/api_cli/bcm_api_cli_types.h
@@ -0,0 +1,63 @@
+/*
+<:copyright-BRCM:2016:DUAL/GPL:standard
+
+   Broadcom Proprietary and Confidential.(c) 2016 Broadcom
+   All Rights Reserved
+
+Unless you and Broadcom execute a separate written software license
+agreement governing use of this software, this software is licensed
+to you under the terms of the GNU General Public License version 2
+(the "GPL"), available at http://www.broadcom.com/licenses/GPLv2.php,
+with the following added to such license:
+
+   As a special exception, the copyright holders of this software give
+   you permission to link this software with independent modules, and
+   to copy and distribute the resulting executable under terms of your
+   choice, provided that you also meet, for each linked independent
+   module, the terms and conditions of the license of that module.
+   An independent module is a module which is not derived from this
+   software.  The special exception does not apply to any modifications
+   of the software.
+
+Not withstanding the above, under no circumstances may you combine
+this software in any way with any other Broadcom software provided
+under a license other than the GPL, without Broadcom's express prior
+written consent.
+
+:>
+ */
+
+#ifndef BCM_API_DATA_TYPES_H_
+#define BCM_API_DATA_TYPES_H_
+
+#include <bcmos_system.h>
+#include <bcmolt_model_types.h>
+
+/* Property access */
+typedef enum
+{
+    BCMOLT_PROP_ACCESS_ID_R = 0x1,   /* Read access */
+    BCMOLT_PROP_ACCESS_ID_W = 0x2,   /* Write access */
+    BCMOLT_PROP_ACCESS_ID_RW = 0x3,  /* Read-write */
+} bcmolt_prop_access_id;
+
+/* Base data types */
+typedef enum
+{
+    BCMOLT_BASE_TYPE_ID_SNUM,       /* signed number */
+    BCMOLT_BASE_TYPE_ID_UNUM,       /* unsigned number */
+    BCMOLT_BASE_TYPE_ID_UNUM_HEX,   /* unsigned number printed in hex */
+    BCMOLT_BASE_TYPE_ID_FLOAT,      /* floating-point number */
+    BCMOLT_BASE_TYPE_ID_BOOL,       /* boolean (zero=no, nonzero=yes) */
+    BCMOLT_BASE_TYPE_ID_STRING,     /* string */
+    BCMOLT_BASE_TYPE_ID_IPV4,       /* IPv4 address */
+    BCMOLT_BASE_TYPE_ID_MAC,        /* MAC address */
+    BCMOLT_BASE_TYPE_ID_ENUM,       /* enum */
+    BCMOLT_BASE_TYPE_ID_ENUM_MASK,  /* bitmask enum */
+    BCMOLT_BASE_TYPE_ID_STRUCT,     /* struct */
+    BCMOLT_BASE_TYPE_ID_UNION,      /* union */
+    BCMOLT_BASE_TYPE_ID_ARR_DYN,    /* dynamically-sized array */
+    BCMOLT_BASE_TYPE_ID_ARR_FIXED,  /* fixed-size array */
+} bcmolt_base_type_id;
+
+#endif /* BCM_API_DATA_TYPES_H_ */