of_list_bsn_gentable_bucket_stats_entry_t *
of_list_bsn_gentable_bucket_stats_entry_new(of_version_t version)
{
    of_list_bsn_gentable_bucket_stats_entry_t *obj;
    int bytes;

    bytes = of_object_fixed_len[version][OF_LIST_BSN_GENTABLE_BUCKET_STATS_ENTRY] + of_object_extra_len[version][OF_LIST_BSN_GENTABLE_BUCKET_STATS_ENTRY];

    /* Allocate a maximum-length wire buffer assuming we'll be appending to it. */
    if ((obj = (of_list_bsn_gentable_bucket_stats_entry_t *)of_object_new(OF_WIRE_BUFFER_MAX_LENGTH)) == NULL) {
        return NULL;
    }

    of_list_bsn_gentable_bucket_stats_entry_init(obj, version, bytes, 0);

    return obj;
}
/**
 * Bind an object of type of_list_bsn_gentable_bucket_stats_entry_t to the parent of type of_bsn_gentable_bucket_stats_reply for
 * member entries
 * @param obj Pointer to an object of type of_bsn_gentable_bucket_stats_reply.
 * @param entries Pointer to the child object of type
 * of_list_bsn_gentable_bucket_stats_entry_t to be filled out.
 * \ingroup of_bsn_gentable_bucket_stats_reply
 *
 * The parameter entries is filled out to point to the same underlying
 * wire buffer as its parent.
 *
 */
void
of_bsn_gentable_bucket_stats_reply_entries_bind(
    of_bsn_gentable_bucket_stats_reply_t *obj,
    of_list_bsn_gentable_bucket_stats_entry_t *entries)
{
    of_wire_buffer_t *wbuf;
    int offset = 0; /* Offset of value relative to the start obj */
    int abs_offset; /* Offset of value relative to start of wbuf */
    of_version_t ver;
    int cur_len = 0; /* Current length of object data */

    ASSERT(obj->object_id == OF_BSN_GENTABLE_BUCKET_STATS_REPLY);
    ver = obj->version;
    wbuf = OF_OBJECT_TO_WBUF(obj);
    ASSERT(wbuf != NULL);

    /* By version, determine offset and current length (where needed) */
    switch (ver) {
    case OF_VERSION_1_3:
        offset = 24;
        cur_len = _END_LEN(obj, offset);
        break;
    default:
        ASSERT(0);
    }

    abs_offset = OF_OBJECT_ABSOLUTE_OFFSET(obj, offset);
    ASSERT(abs_offset >= 0);
    ASSERT(cur_len >= 0 && cur_len < 64 * 1024);

    /* Initialize child */
    of_list_bsn_gentable_bucket_stats_entry_init(entries, obj->version, 0, 1);
    /* Attach to parent */
    entries->parent = (of_object_t *)obj;
    entries->wire_object.wbuf = obj->wire_object.wbuf;
    entries->wire_object.obj_offset = abs_offset;
    entries->wire_object.owned = 0;
    entries->length = cur_len;

    OF_LENGTH_CHECK_ASSERT(obj);

    return ;
}