/*
 * Note: this file originally auto-generated by mib2c using
 *       version : 1.48 $ of : mfd-top.m2c,v $
 *
 * $Id$
 */
#ifndef USMDHUSERKEYTABLE_H
#define USMDHUSERKEYTABLE_H

#ifdef __cplusplus
extern          "C" {
#endif


/** @addtogroup misc misc: Miscellaneous routines
 *
 * @{
 */
#include <net-snmp/library/asn1.h>

    /*
     * other required module components 
     */
    /* *INDENT-OFF*  */
config_require(snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_interface);
config_require(snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_data_access);
config_require(snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_data_get);
config_require(snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_data_set);
    /* *INDENT-ON*  */

    /*
     * OID and column number definitions for usmDHUserKeyTable 
     */
#include "usmDHUserKeyTable_oids.h"

    /*
     * enum definions 
     */
#include "usmDHUserKeyTable_enums.h"

    /*
     *********************************************************************
     * function declarations
     */
    void            init_usmDHUserKeyTable(void);
    void            shutdown_usmDHUserKeyTable(void);

    /*
     *********************************************************************
     * Table declarations
     */
/**********************************************************************
 **********************************************************************
 ***
 *** Table usmDHUserKeyTable
 ***
 **********************************************************************
 **********************************************************************/
    /*
     * SNMP-USM-DH-OBJECTS-MIB::usmDHUserKeyTable is subid 2 of usmDHPublicObjects.
     * Its status is Current.
     * OID: .1.3.6.1.3.101.1.1.2, length: 9
     */
    /*
     *********************************************************************
     * When you register your mib, you get to provide a generic
     * pointer that will be passed back to you for most of the
     * functions calls.
     *
     * TODO:100:r: Review all context structures
     */
    /*
     * TODO:101:o: |-> Review usmDHUserKeyTable registration context.
     */
    typedef struct usmUser *usmDHUserKeyTable_registration;

/**********************************************************************/
    /*
     * TODO:110:r: |-> Review usmDHUserKeyTable data context structure.
     * This structure is used to represent the data for usmDHUserKeyTable.
     */
    typedef struct usmUser usmDHUserKeyTable_data;


    /*
     *********************************************************************
     * TODO:115:o: |-> Review usmDHUserKeyTable undo context.
     * We're just going to use the same data structure for our
     * undo_context. If you want to do something more efficent,
     * define your typedef here.
     */
    typedef usmDHUserKeyTable_data usmDHUserKeyTable_undo_data;

    /*
     * TODO:120:r: |-> Review usmDHUserKeyTable mib index.
     * This structure is used to represent the index for usmDHUserKeyTable.
     */
    typedef struct usmDHUserKeyTable_mib_index_s {

        /*
         * usmUserEngineID(1)/SnmpEngineID/ASN_OCTET_STR/char(char)//L/a/w/e/R/d/h
         */
        char            usmUserEngineID[32];
        size_t          usmUserEngineID_len;

        /*
         * usmUserName(2)/SnmpAdminString/ASN_OCTET_STR/char(char)//L/a/w/e/R/d/H
         */
        char            usmUserName[32];
        size_t          usmUserName_len;


    } usmDHUserKeyTable_mib_index;

    /*
     * TODO:121:r: |   |-> Review usmDHUserKeyTable max index length.
     * If you KNOW that your indexes will never exceed a certain
     * length, update this macro to that length.
     *
     * BE VERY CAREFUL TO TAKE INTO ACCOUNT THE MAXIMUM
     * POSSIBLE LENGHT FOR EVERY VARIABLE LENGTH INDEX!
     * Guessing 128 - col/entry(2)  - oid len(9)
     */
#define MAX_usmDHUserKeyTable_IDX_LEN     66


    /*
     *********************************************************************
     * TODO:130:o: |-> Review usmDHUserKeyTable Row request (rowreq) context.
     * When your functions are called, you will be passed a
     * usmDHUserKeyTable_rowreq_ctx pointer.
     */
    typedef struct usmDHUserKeyTable_rowreq_ctx_s {

    /** this must be first for container compare to work */
        netsnmp_index   oid_idx;
        oid             oid_tmp[MAX_usmDHUserKeyTable_IDX_LEN];

        usmDHUserKeyTable_mib_index tbl_idx;

        usmDHUserKeyTable_data *data;
        usmDHUserKeyTable_undo_data *undo;
        unsigned int    column_set_flags;       /* flags for set columns */


        /*
         * flags per row. Currently, the first (lower) 8 bits are reserved
         * for the user. See mfd.h for other flags.
         */
        u_int           rowreq_flags;

        /*
         * TODO:131:o: |   |-> Add useful data to usmDHUserKeyTable rowreq context.
         */

        /*
         * storage for future expansion
         */
        netsnmp_data_list *usmDHUserKeyTable_data_list;

    } usmDHUserKeyTable_rowreq_ctx;

    typedef struct usmDHUserKeyTable_ref_rowreq_ctx_s {
        usmDHUserKeyTable_rowreq_ctx *rowreq_ctx;
    } usmDHUserKeyTable_ref_rowreq_ctx;

    /*
     *********************************************************************
     * function prototypes
     */
    int            
        usmDHUserKeyTable_pre_request(usmDHUserKeyTable_registration *
                                      user_context);
    int            
        usmDHUserKeyTable_post_request(usmDHUserKeyTable_registration *
                                       user_context, int rc);

    int            
        usmDHUserKeyTable_rowreq_ctx_init(usmDHUserKeyTable_rowreq_ctx *
                                          rowreq_ctx, void *user_init_ctx);
    void           
        usmDHUserKeyTable_rowreq_ctx_cleanup(usmDHUserKeyTable_rowreq_ctx *
                                             rowreq_ctx);

    usmDHUserKeyTable_data *usmDHUserKeyTable_allocate_data(void);
    void            usmDHUserKeyTable_release_data(usmDHUserKeyTable_data *
                                                   data);
    int             usmDHUserKeyTable_commit(usmDHUserKeyTable_rowreq_ctx *
                                             rowreq_ctx);
    usmDHUserKeyTable_rowreq_ctx
        *usmDHUserKeyTable_row_find_by_mib_index
        (usmDHUserKeyTable_mib_index * mib_idx);

    extern const oid      usmDHUserKeyTable_oid[];
    extern const int      usmDHUserKeyTable_oid_size;


#include "usmDHUserKeyTable_interface.h"
#include "usmDHUserKeyTable_data_access.h"
#include "usmDHUserKeyTable_data_get.h"
#include "usmDHUserKeyTable_data_set.h"

    /*
     * DUMMY markers, ignore
     *
     * TODO:099:x: *************************************************************
     * TODO:199:x: *************************************************************
     * TODO:299:x: *************************************************************
     * TODO:399:x: *************************************************************
     * TODO:499:x: *************************************************************
     */

#ifdef __cplusplus
}
#endif
#endif                          /* USMDHUSERKEYTABLE_H */
/**  @} */

