/*
 * Note: this file originally auto-generated by mib2c
 * using mfd-top.m2c
 */
#ifndef APPLTABLE_H
#define APPLTABLE_H

#ifdef __cplusplus
extern          "C" {
#endif


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

    /*
     * other required module components 
     */
    /* *INDENT-OFF*  */
config_add_mib(NETWORK-SERVICES-MIB)
config_require(NETWORK-SERVICES-MIB/applTable/applTable_interface)
config_require(NETWORK-SERVICES-MIB/applTable/applTable_data_access)
config_require(NETWORK-SERVICES-MIB/applTable/applTable_data_get)
config_require(NETWORK-SERVICES-MIB/applTable/applTable_data_set)
    /* *INDENT-ON*  */

    /*
     * OID and column number definitions for applTable 
     */
#include "applTable_oids.h"

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

    /*
     *********************************************************************
     * function declarations
     */
    void            init_applTable(void);
    void            shutdown_applTable(void);

    /*
     *********************************************************************
     * Table declarations
     */
/**********************************************************************
 **********************************************************************
 ***
 *** Table applTable
 ***
 **********************************************************************
 **********************************************************************/
    /*
     * NETWORK-SERVICES-MIB::applTable is subid 1 of application.
     * Its status is Current.
     * OID: .1.3.6.1.2.1.27.1, length: 8
     */
    /*
     *********************************************************************
     * 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 applTable registration context.
     */
    typedef netsnmp_data_list applTable_registration;

/**********************************************************************/
    /*
     * TODO:110:r: |-> Review applTable data context structure.
     * This structure is used to represent the data for applTable.
     */
    /*
     * This structure contains storage for all the columns defined in the
     * applTable.
     */
    typedef struct applTable_data_s {

        /*
         * applName(2)/SnmpAdminString/ASN_OCTET_STR/char(char)//L/A/w/e/R/d/H
         */
        char            applName[255];
        size_t          applName_len;   /* # of char elements, not bytes */

        /*
         * applDirectoryName(3)/DistinguishedName/ASN_OCTET_STR/char(char)//L/A/w/e/R/d/H
         */
        char            applDirectoryName[255];
        size_t          applDirectoryName_len;  /* # of char elements, not bytes */

        /*
         * applVersion(4)/SnmpAdminString/ASN_OCTET_STR/char(char)//L/A/w/e/R/d/H
         */
        char            applVersion[255];
        size_t          applVersion_len;        /* # of char elements, not bytes */

        /*
         * applUptime(5)/TimeStamp/ASN_TIMETICKS/u_long(u_long)//l/A/w/e/r/d/h
         */
        u_long          applUptime;

        /*
         * applOperStatus(6)/INTEGER/ASN_INTEGER/long(u_long)//l/A/w/E/r/d/h
         */
        u_long          applOperStatus;

        /*
         * applLastChange(7)/TimeStamp/ASN_TIMETICKS/u_long(u_long)//l/A/w/e/r/d/h
         */
        u_long          applLastChange;

        /*
         * applInboundAssociations(8)/GAUGE/ASN_GAUGE/u_long(u_long)//l/A/w/e/r/d/h
         */
        u_long          applInboundAssociations;

        /*
         * applOutboundAssociations(9)/GAUGE/ASN_GAUGE/u_long(u_long)//l/A/w/e/r/d/h
         */
        u_long          applOutboundAssociations;

        /*
         * applAccumulatedInboundAssociations(10)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h
         */
        u_long          applAccumulatedInboundAssociations;

        /*
         * applAccumulatedOutboundAssociations(11)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h
         */
        u_long          applAccumulatedOutboundAssociations;

        /*
         * applLastInboundActivity(12)/TimeStamp/ASN_TIMETICKS/u_long(u_long)//l/A/w/e/r/d/h
         */
        u_long          applLastInboundActivity;

        /*
         * applLastOutboundActivity(13)/TimeStamp/ASN_TIMETICKS/u_long(u_long)//l/A/w/e/r/d/h
         */
        u_long          applLastOutboundActivity;

        /*
         * applRejectedInboundAssociations(14)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h
         */
        u_long          applRejectedInboundAssociations;

        /*
         * applFailedOutboundAssociations(15)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h
         */
        u_long          applFailedOutboundAssociations;

        /*
         * applDescription(16)/SnmpAdminString/ASN_OCTET_STR/char(char)//L/A/w/e/R/d/H
         */
        char            applDescription[255];
        size_t          applDescription_len;    /* # of char elements, not bytes */

        /*
         * applURL(17)/URLString/ASN_OCTET_STR/char(char)//L/A/w/e/R/d/H
         */
        char            applURL[255];
        size_t          applURL_len;    /* # of char elements, not bytes */

    } applTable_data;


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

        /*
         * applIndex(1)/INTEGER/ASN_INTEGER/long(long)//l/a/w/e/R/d/h
         */
        long            applIndex;


    } applTable_mib_index;

    /*
     * TODO:121:r: |   |-> Review applTable max index length.
     * If you KNOW that your indexes will never exceed a certain
     * length, update this macro to that length.
     */
#define MAX_applTable_IDX_LEN     1


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

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

        applTable_mib_index tbl_idx;

        applTable_data  data;

        /*
         * 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 applTable rowreq context.
         */

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

    } applTable_rowreq_ctx;

    typedef struct applTable_ref_rowreq_ctx_s {
        applTable_rowreq_ctx *rowreq_ctx;
    } applTable_ref_rowreq_ctx;

    /*
     *********************************************************************
     * function prototypes
     */
    int             applTable_pre_request(applTable_registration *
                                          user_context);
    int             applTable_post_request(applTable_registration *
                                           user_context, int rc);

    int             applTable_rowreq_ctx_init(applTable_rowreq_ctx *
                                              rowreq_ctx,
                                              void *user_init_ctx);
    void            applTable_rowreq_ctx_cleanup(applTable_rowreq_ctx *
                                                 rowreq_ctx);


    applTable_rowreq_ctx
        *applTable_row_find_by_mib_index(applTable_mib_index * mib_idx);

    extern const oid applTable_oid[];
    extern const int applTable_oid_size;


#include "applTable_interface.h"
#include "applTable_data_access.h"
#include "applTable_data_get.h"
#include "applTable_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                          /* APPLTABLE_H */
/** @} */
