/*
 * This C file has been generated by smidump 0.4.2-pre1.
 * It is intended to be used with the NET-SNMP agent library.
 *
 * This C file is derived from the SNMPv2-MIB module.
 *
 * $Id: snmpv2-mib-agt-stub.c 1606 2003-12-01 12:24:15Z strauss $
 */

#include <stdio.h>
#include <string.h>
#include <malloc.h>

#include "snmpv2-mib.h"

#include <ucd-snmp/asn1.h>
#include <ucd-snmp/snmp.h>
#include <ucd-snmp/snmp_api.h>
#include <ucd-snmp/snmp_impl.h>
#include <ucd-snmp/snmp_vars.h>

/*
 * Forward declaration of read methods for groups of scalars and tables:
 */

static unsigned char *
read_system_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **);
static unsigned char *
read_sysOREntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **);
static unsigned char *
read_snmp_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **);
static unsigned char *
read_snmpSet_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **);

/*
 * Forward declaration of write methods for writable objects:
 */

static int
write_sysContact_stub(int, u_char *, u_char, int, u_char *, oid *, int);
static int
write_sysName_stub(int, u_char *, u_char, int, u_char *, oid *, int);
static int
write_sysLocation_stub(int, u_char *, u_char, int, u_char *, oid *, int);
static int
write_snmpEnableAuthenTraps_stub(int, u_char *, u_char, int, u_char *, oid *, int);
static int
write_snmpSetSerialNo_stub(int, u_char *, u_char, int, u_char *, oid *, int);

/*
 * Definitions of tags that are used internally to read/write
 * the selected object type. These tags should be unique.
 */

#define SYSDESCR                         1
#define SYSOBJECTID                      2
#define SYSUPTIME                        3
#define SYSCONTACT                       4
#define SYSNAME                          5
#define SYSLOCATION                      6
#define SYSSERVICES                      7
#define SYSORLASTCHANGE                  8

static oid system_base[] = {1, 3, 6, 1, 2, 1, 1};

struct variable system_variables[] = {
    { SYSDESCR, ASN_OCTET_STR, RONLY, read_system_stub, 1, {1} },
    { SYSOBJECTID, ASN_OBJECT_ID, RONLY, read_system_stub, 1, {2} },
    { SYSUPTIME, ASN_INTEGER, RONLY, read_system_stub, 1, {3} },
    { SYSCONTACT, ASN_OCTET_STR, RWRITE, read_system_stub, 1, {4} },
    { SYSNAME, ASN_OCTET_STR, RWRITE, read_system_stub, 1, {5} },
    { SYSLOCATION, ASN_OCTET_STR, RWRITE, read_system_stub, 1, {6} },
    { SYSSERVICES, ASN_INTEGER, RONLY, read_system_stub, 1, {7} },
    { SYSORLASTCHANGE, ASN_INTEGER, RONLY, read_system_stub, 1, {8} },
};

#define SYSORID                          2
#define SYSORDESCR                       3
#define SYSORUPTIME                      4

static oid sysOREntry_base[] = {1, 3, 6, 1, 2, 1, 1, 9, 1};

struct variable sysOREntry_variables[] = {
    { SYSORID, ASN_OBJECT_ID, RONLY, read_sysOREntry_stub, 1, {2} },
    { SYSORDESCR, ASN_OCTET_STR, RONLY, read_sysOREntry_stub, 1, {3} },
    { SYSORUPTIME, ASN_INTEGER, RONLY, read_sysOREntry_stub, 1, {4} },
};

#define SNMPINPKTS                       1
#define SNMPOUTPKTS                      2
#define SNMPINBADVERSIONS                3
#define SNMPINBADCOMMUNITYNAMES          4
#define SNMPINBADCOMMUNITYUSES           5
#define SNMPINASNPARSEERRS               6
#define SNMPINTOOBIGS                    8
#define SNMPINNOSUCHNAMES                9
#define SNMPINBADVALUES                  10
#define SNMPINREADONLYS                  11
#define SNMPINGENERRS                    12
#define SNMPINTOTALREQVARS               13
#define SNMPINTOTALSETVARS               14
#define SNMPINGETREQUESTS                15
#define SNMPINGETNEXTS                   16
#define SNMPINSETREQUESTS                17
#define SNMPINGETRESPONSES               18
#define SNMPINTRAPS                      19
#define SNMPOUTTOOBIGS                   20
#define SNMPOUTNOSUCHNAMES               21
#define SNMPOUTBADVALUES                 22
#define SNMPOUTGENERRS                   24
#define SNMPOUTGETREQUESTS               25
#define SNMPOUTGETNEXTS                  26
#define SNMPOUTSETREQUESTS               27
#define SNMPOUTGETRESPONSES              28
#define SNMPOUTTRAPS                     29
#define SNMPENABLEAUTHENTRAPS            30
#define SNMPSILENTDROPS                  31
#define SNMPPROXYDROPS                   32

static oid snmp_base[] = {1, 3, 6, 1, 2, 1, 11};

struct variable snmp_variables[] = {
    { SNMPINPKTS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {1} },
    { SNMPOUTPKTS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {2} },
    { SNMPINBADVERSIONS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {3} },
    { SNMPINBADCOMMUNITYNAMES, ASN_INTEGER, RONLY, read_snmp_stub, 1, {4} },
    { SNMPINBADCOMMUNITYUSES, ASN_INTEGER, RONLY, read_snmp_stub, 1, {5} },
    { SNMPINASNPARSEERRS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {6} },
    { SNMPINTOOBIGS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {8} },
    { SNMPINNOSUCHNAMES, ASN_INTEGER, RONLY, read_snmp_stub, 1, {9} },
    { SNMPINBADVALUES, ASN_INTEGER, RONLY, read_snmp_stub, 1, {10} },
    { SNMPINREADONLYS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {11} },
    { SNMPINGENERRS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {12} },
    { SNMPINTOTALREQVARS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {13} },
    { SNMPINTOTALSETVARS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {14} },
    { SNMPINGETREQUESTS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {15} },
    { SNMPINGETNEXTS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {16} },
    { SNMPINSETREQUESTS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {17} },
    { SNMPINGETRESPONSES, ASN_INTEGER, RONLY, read_snmp_stub, 1, {18} },
    { SNMPINTRAPS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {19} },
    { SNMPOUTTOOBIGS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {20} },
    { SNMPOUTNOSUCHNAMES, ASN_INTEGER, RONLY, read_snmp_stub, 1, {21} },
    { SNMPOUTBADVALUES, ASN_INTEGER, RONLY, read_snmp_stub, 1, {22} },
    { SNMPOUTGENERRS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {24} },
    { SNMPOUTGETREQUESTS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {25} },
    { SNMPOUTGETNEXTS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {26} },
    { SNMPOUTSETREQUESTS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {27} },
    { SNMPOUTGETRESPONSES, ASN_INTEGER, RONLY, read_snmp_stub, 1, {28} },
    { SNMPOUTTRAPS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {29} },
    { SNMPENABLEAUTHENTRAPS, ASN_INTEGER, RWRITE, read_snmp_stub, 1, {30} },
    { SNMPSILENTDROPS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {31} },
    { SNMPPROXYDROPS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {32} },
};


#define SNMPSETSERIALNO                  1

static oid snmpSet_base[] = {1, 3, 6, 1, 6, 3, 1, 1, 6};

struct variable snmpSet_variables[] = {
    { SNMPSETSERIALNO, ASN_INTEGER, RWRITE, read_snmpSet_stub, 1, {1} },
};



/*
 * Registration functions for the various MIB groups.
 */

int register_system()
{
    return register_mib("system",
         system_variables,
         sizeof(struct variable),
         sizeof(system_variables)/sizeof(struct variable),
         system_base,
         sizeof(system_base)/sizeof(oid));
};


int register_sysOREntry()
{
    return register_mib("sysOREntry",
         sysOREntry_variables,
         sizeof(struct variable),
         sizeof(sysOREntry_variables)/sizeof(struct variable),
         sysOREntry_base,
         sizeof(sysOREntry_base)/sizeof(oid));
};


int register_snmp()
{
    return register_mib("snmp",
         snmp_variables,
         sizeof(struct variable),
         sizeof(snmp_variables)/sizeof(struct variable),
         snmp_base,
         sizeof(snmp_base)/sizeof(oid));
};


int register_snmpTrap()
{
    return register_mib("snmpTrap",
         snmpTrap_variables,
         sizeof(struct variable),
         sizeof(snmpTrap_variables)/sizeof(struct variable),
         snmpTrap_base,
         sizeof(snmpTrap_base)/sizeof(oid));
};


int register_snmpSet()
{
    return register_mib("snmpSet",
         snmpSet_variables,
         sizeof(struct variable),
         sizeof(snmpSet_variables)/sizeof(struct variable),
         snmpSet_base,
         sizeof(snmpSet_base)/sizeof(oid));
};


/*
 * Read methods for groups of scalars and tables:
 */

static unsigned char *
read_system_stub(struct variable *vp,
    oid     *name,
    size_t  *length,
    int     exact,
    size_t  *var_len,
    WriteMethod **write_method)
{
    static system_t system;

    /* check whether the instance identifier is valid */

    if (header_generic(vp, name, length, exact, var_len,
                       write_method) == MATCH_FAILED) {
        return NULL;
    }

    /* call the user supplied function to retrieve values */

    read_system(&system);

    /* return the current value of the variable */

    switch (vp->magic) {

    case SYSDESCR:
        *var_len = system._sysDescrLength;
        return (unsigned char *) system.sysDescr;

    case SYSOBJECTID:
        *var_len = system._sysObjectIDLength;
        return (unsigned char *) system.sysObjectID;

    case SYSUPTIME:
        return (unsigned char *) &system.sysUpTime;

    case SYSCONTACT:
        *var_len = system._sysContactLength;
        return (unsigned char *) system.sysContact;

    case SYSNAME:
        *var_len = system._sysNameLength;
        return (unsigned char *) system.sysName;

    case SYSLOCATION:
        *var_len = system._sysLocationLength;
        return (unsigned char *) system.sysLocation;

    case SYSSERVICES:
        return (unsigned char *) &system.sysServices;

    case SYSORLASTCHANGE:
        return (unsigned char *) &system.sysORLastChange;

    default:
         ERROR_MSG("");
    }

    return NULL;
}

static unsigned char *
read_sysOREntry_stub(struct variable *vp,
    oid     *name,
    size_t  *length,
    int     exact,
    size_t  *var_len,
    WriteMethod **write_method)
{
    static sysOREntry_t sysOREntry;

    /* call the user supplied function to retrieve values */

    read_sysOREntry(&sysOREntry);

    /* return the current value of the variable */

    switch (vp->magic) {

    case SYSORID:
        *var_len = sysOREntry._sysORIDLength;
        return (unsigned char *) sysOREntry.sysORID;

    case SYSORDESCR:
        *var_len = sysOREntry._sysORDescrLength;
        return (unsigned char *) sysOREntry.sysORDescr;

    case SYSORUPTIME:
        return (unsigned char *) &sysOREntry.sysORUpTime;

    default:
         ERROR_MSG("");
    }

    return NULL;
}

static unsigned char *
read_snmp_stub(struct variable *vp,
    oid     *name,
    size_t  *length,
    int     exact,
    size_t  *var_len,
    WriteMethod **write_method)
{
    static snmp_t snmp;

    /* check whether the instance identifier is valid */

    if (header_generic(vp, name, length, exact, var_len,
                       write_method) == MATCH_FAILED) {
        return NULL;
    }

    /* call the user supplied function to retrieve values */

    read_snmp(&snmp);

    /* return the current value of the variable */

    switch (vp->magic) {

    case SNMPINPKTS:
        return (unsigned char *) &snmp.snmpInPkts;

    case SNMPOUTPKTS:
        return (unsigned char *) &snmp.snmpOutPkts;

    case SNMPINBADVERSIONS:
        return (unsigned char *) &snmp.snmpInBadVersions;

    case SNMPINBADCOMMUNITYNAMES:
        return (unsigned char *) &snmp.snmpInBadCommunityNames;

    case SNMPINBADCOMMUNITYUSES:
        return (unsigned char *) &snmp.snmpInBadCommunityUses;

    case SNMPINASNPARSEERRS:
        return (unsigned char *) &snmp.snmpInASNParseErrs;

    case SNMPINTOOBIGS:
        return (unsigned char *) &snmp.snmpInTooBigs;

    case SNMPINNOSUCHNAMES:
        return (unsigned char *) &snmp.snmpInNoSuchNames;

    case SNMPINBADVALUES:
        return (unsigned char *) &snmp.snmpInBadValues;

    case SNMPINREADONLYS:
        return (unsigned char *) &snmp.snmpInReadOnlys;

    case SNMPINGENERRS:
        return (unsigned char *) &snmp.snmpInGenErrs;

    case SNMPINTOTALREQVARS:
        return (unsigned char *) &snmp.snmpInTotalReqVars;

    case SNMPINTOTALSETVARS:
        return (unsigned char *) &snmp.snmpInTotalSetVars;

    case SNMPINGETREQUESTS:
        return (unsigned char *) &snmp.snmpInGetRequests;

    case SNMPINGETNEXTS:
        return (unsigned char *) &snmp.snmpInGetNexts;

    case SNMPINSETREQUESTS:
        return (unsigned char *) &snmp.snmpInSetRequests;

    case SNMPINGETRESPONSES:
        return (unsigned char *) &snmp.snmpInGetResponses;

    case SNMPINTRAPS:
        return (unsigned char *) &snmp.snmpInTraps;

    case SNMPOUTTOOBIGS:
        return (unsigned char *) &snmp.snmpOutTooBigs;

    case SNMPOUTNOSUCHNAMES:
        return (unsigned char *) &snmp.snmpOutNoSuchNames;

    case SNMPOUTBADVALUES:
        return (unsigned char *) &snmp.snmpOutBadValues;

    case SNMPOUTGENERRS:
        return (unsigned char *) &snmp.snmpOutGenErrs;

    case SNMPOUTGETREQUESTS:
        return (unsigned char *) &snmp.snmpOutGetRequests;

    case SNMPOUTGETNEXTS:
        return (unsigned char *) &snmp.snmpOutGetNexts;

    case SNMPOUTSETREQUESTS:
        return (unsigned char *) &snmp.snmpOutSetRequests;

    case SNMPOUTGETRESPONSES:
        return (unsigned char *) &snmp.snmpOutGetResponses;

    case SNMPOUTTRAPS:
        return (unsigned char *) &snmp.snmpOutTraps;

    case SNMPENABLEAUTHENTRAPS:
        return (unsigned char *) &snmp.snmpEnableAuthenTraps;

    case SNMPSILENTDROPS:
        return (unsigned char *) &snmp.snmpSilentDrops;

    case SNMPPROXYDROPS:
        return (unsigned char *) &snmp.snmpProxyDrops;

    default:
         ERROR_MSG("");
    }

    return NULL;
}

static unsigned char *
read_snmpSet_stub(struct variable *vp,
    oid     *name,
    size_t  *length,
    int     exact,
    size_t  *var_len,
    WriteMethod **write_method)
{
    static snmpSet_t snmpSet;

    /* check whether the instance identifier is valid */

    if (header_generic(vp, name, length, exact, var_len,
                       write_method) == MATCH_FAILED) {
        return NULL;
    }

    /* call the user supplied function to retrieve values */

    read_snmpSet(&snmpSet);

    /* return the current value of the variable */

    switch (vp->magic) {

    case SNMPSETSERIALNO:
        return (unsigned char *) &snmpSet.snmpSetSerialNo;

    default:
         ERROR_MSG("");
    }

    return NULL;
}


/*
 * Forward declaration of write methods for writable objects:
 */

static int
write_sysContact_stub(int action,
    u_char   *var_val,
    u_char   var_val_type,
    int      var_val_len,
    u_char   *statP,
    oid      *name,
    int      name_len)
{
    return SNMP_ERR_NOERROR;
}

static int
write_sysName_stub(int action,
    u_char   *var_val,
    u_char   var_val_type,
    int      var_val_len,
    u_char   *statP,
    oid      *name,
    int      name_len)
{
    return SNMP_ERR_NOERROR;
}

static int
write_sysLocation_stub(int action,
    u_char   *var_val,
    u_char   var_val_type,
    int      var_val_len,
    u_char   *statP,
    oid      *name,
    int      name_len)
{
    return SNMP_ERR_NOERROR;
}

static int
write_snmpEnableAuthenTraps_stub(int action,
    u_char   *var_val,
    u_char   var_val_type,
    int      var_val_len,
    u_char   *statP,
    oid      *name,
    int      name_len)
{
    return SNMP_ERR_NOERROR;
}

static int
write_snmpSetSerialNo_stub(int action,
    u_char   *var_val,
    u_char   var_val_type,
    int      var_val_len,
    u_char   *statP,
    oid      *name,
    int      name_len)
{
    return SNMP_ERR_NOERROR;
}


