diff options
Diffstat (limited to 'local/mib2c.old-api.conf')
-rw-r--r-- | local/mib2c.old-api.conf | 349 |
1 files changed, 349 insertions, 0 deletions
diff --git a/local/mib2c.old-api.conf b/local/mib2c.old-api.conf new file mode 100644 index 0000000..8fa270b --- /dev/null +++ b/local/mib2c.old-api.conf @@ -0,0 +1,349 @@ +## -*- c -*- +###################################################################### +## Do the .h file +###################################################################### +@open ${name}.h@ +/* + * Note: this file originally auto-generated by mib2c using + * $Id$ + */ +#ifndef $name.uc_H +#define $name.uc_H + +/* function declarations */ +void init_$name(void); +FindVarMethod var_$name; +@foreach $i table@ +FindVarMethod var_${i}; +@end@ +@foreach $i scalar@ + @if $i.settable@ + WriteMethod write_${i}; + @end@ +@end@ +@foreach $i table@ + @foreach $c column@ + @if $c.settable@ + WriteMethod write_${c}; + @end@ + @end@ +@end@ + +#endif /* $name.uc_H */ +###################################################################### +## Do the .c file +###################################################################### +@open ${name}.c@ +/* + * Note: this file originally auto-generated by mib2c using + * $Id$ + */ + +#include <net-snmp/net-snmp-config.h> +#include <net-snmp/net-snmp-includes.h> +#include <net-snmp/agent/net-snmp-agent-includes.h> +#include "${name}.h" + +/* + * ${name}_variables_oid: + * this is the top level oid that we want to register under. This + * is essentially a prefix, with the suffix appearing in the + * variable below. + */ + +oid ${name}_variables_oid[] = { $name.commaoid }; + +/* + * variable4 ${name}_variables: + * this variable defines function callbacks and type return information + * for the $name mib section + */ + +struct variable4 ${name}_variables[] = { +/* magic number , variable type , ro/rw , callback fn , L, oidsuffix */ +@eval $magic = 0@ +@eval $namelen = length("$name.commaoid")@ +@foreach $i scalar@ + @eval $magic = $magic + 1@ + @eval $suffix = substr("$i.commaoid", $namelen + 1)@ + @eval $suffixlen = $i.oidlength - $name.oidlength@ +#define $i.uc $magic + @if $i.settable@ +{$i.uc, $i.type, NETSNMP_OLDAPI_RWRITE, + var_${name}, $suffixlen, { $suffix }}, + @end@ + @if !$i.settable@ +{$i.uc, $i.type, NETSNMP_OLDAPI_RONLY, + var_${name}, $suffixlen, { $suffix }}, + @end@ +@end@ + +@foreach $i table@ + @eval $magic = 0@ + @eval $nlen2 = length("$i.commaoid")@ + @if $nlen2 > $namelen@ + @eval $suffix = substr("$i.commaoid", $namelen + 1)@ + @eval $ctmp = ","@ + @else@ + @eval $suffix = ""@ + @eval $ctmp = ""@ + @end@ + @eval $suffixlen = $i.oidlength - $name.oidlength + 2@ + @foreach $c column@ + @eval $magic = $magic + 1@ +#define $c.uc $magic + @if $c.settable@ +{$c.uc, $c.type, NETSNMP_OLDAPI_RWRITE, + var_${i}, $suffixlen, { $suffix $ctmp 1, $c.subid }}, + @end@ + @if !$c.settable@ +{$c.uc, $c.type, NETSNMP_OLDAPI_RONLY, + var_${i}, $suffixlen, { $suffix $ctmp 1, $c.subid }}, + @end@ + @end@ +@end@ +}; +/* (L = length of the oidsuffix) */ + + +/** Initializes the $name module */ +void +init_$name(void) +{ + + DEBUGMSGTL(("$name", "Initializing\n")); + + /* register ourselves with the agent to handle our mib tree */ + REGISTER_MIB("$name", ${name}_variables, variable4, + ${name}_variables_oid); + + /* place any other initialization junk you need here */ +} + +/* + * var_$name(): + * This function is called every time the agent gets a request for + * a scalar variable that might be found within your mib section + * registered above. It is up to you to do the right thing and + * return the correct value. + * You should also correct the value of "var_len" if necessary. + * + * Please see the documentation for more information about writing + * module extensions, and check out the examples in the examples + * and mibII directories. + */ +unsigned char * +var_$name(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + /* variables we may use later */ + static long long_ret; + static u_long ulong_ret; + static unsigned char string[SPRINT_MAX_LEN]; + static oid objid[MAX_OID_LEN]; + static struct counter64 c64; + + if (header_generic(vp,name,length,exact,var_len,write_method) + == MATCH_FAILED ) + return NULL; + + /* + * this is where we do the value assignments for the mib results. + */ + switch(vp->magic) { +@foreach $i scalar@ + case $i.uc: + @if $i.settable@ + *write_method = write_${i}; + @end@ + VAR = VALUE; /* XXX */ + return (u_char*) &VAR; +@end@ + default: + ERROR_MSG(""); + } + return NULL; +} + + +@foreach $i table@ +/* + * var_$i(): + * Handle this table separately from the scalar value case. + * The workings of this are basically the same as for var_$name above. + */ +unsigned char * +var_$i(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + /* variables we may use later */ + static long long_ret; + static u_long ulong_ret; + static unsigned char string[SPRINT_MAX_LEN]; + static oid objid[MAX_OID_LEN]; + static struct counter64 c64; + + /* + * This assumes that the table is a 'simple' table. + * See the implementation documentation for the meaning of this. + * You will need to provide the correct value for the TABLE_SIZE parameter + * + * If this table does not meet the requirements for a simple table, + * you will need to provide the replacement code yourself. + * Mib2c is not smart enough to write this for you. + * Again, see the implementation documentation for what is required. + */ + if (header_simple_table(vp,name,length,exact,var_len,write_method, TABLE_SIZE) + == MATCH_FAILED ) + return NULL; + + /* + * this is where we do the value assignments for the mib results. + */ + switch(vp->magic) { +@foreach $c column@ + case $c.uc: + @if $c.settable@ + *write_method = write_${c}; + @end@ + VAR = VALUE; /* XXX */ + return (u_char*) &VAR; +@end@ + default: + ERROR_MSG(""); + } + return NULL; +} +@end@ + +@foreach $i scalar@ +@if $i.settable@ + + +int +write_$i(int action, + u_char *var_val, + u_char var_val_type, + size_t var_val_len, + u_char *statP, + oid *name, + size_t name_len) +{ + $i.decl value; + int size; + + switch ( action ) { + case RESERVE1: + if (var_val_type != $i.type) { + fprintf(stderr, "write to $name not $i.type\n"); + return SNMP_ERR_WRONGTYPE; + } + if (var_val_len > sizeof($i.decl)) { + fprintf(stderr,"write to $name: bad length\n"); + return SNMP_ERR_WRONGLENGTH; + } + break; + + case RESERVE2: + size = var_val_len; + value = * ($i.decl *) var_val; + + break; + + case FREE: + /* Release any resources that have been allocated */ + break; + + case ACTION: + /* + * The variable has been stored in 'value' for you to use, + * and you have just been asked to do something with it. + * Note that anything done here must be reversable in the UNDO case + */ + break; + + case UNDO: + /* Back out any changes made in the ACTION case */ + break; + + case COMMIT: + /* + * Things are working well, so it's now safe to make the change + * permanently. Make sure that anything done here can't fail! + */ + break; + } + return SNMP_ERR_NOERROR; +} +@end@ +@end@ + +@foreach $i table@ +@foreach $c column@ +@if $c.settable@ +int +write_$c(int action, + u_char *var_val, + u_char var_val_type, + size_t var_val_len, + u_char *statP, + oid *name, + size_t name_len) +{ + $c.decl value; + int size; + + switch ( action ) { + case RESERVE1: + if (var_val_type != $c.type) { + fprintf(stderr, "write to $name not $c.type\n"); + return SNMP_ERR_WRONGTYPE; + } + if (var_val_len > sizeof($c.decl)) { + fprintf(stderr,"write to $name: bad length\n"); + return SNMP_ERR_WRONGLENGTH; + } + break; + + case RESERVE2: + size = var_val_len; + value = * ($c.decl *) var_val; + + break; + + case FREE: + /* Release any resources that have been allocated */ + break; + + case ACTION: + /* + * The variable has been stored in 'value' for you to use, + * and you have just been asked to do something with it. + * Note that anything done here must be reversable in the UNDO case + */ + break; + + case UNDO: + /* Back out any changes made in the ACTION case */ + break; + + case COMMIT: + /* + * Things are working well, so it's now safe to make the change + * permanently. Make sure that anything done here can't fail! + */ + break; + } + return SNMP_ERR_NOERROR; +} +@end@ +@end@ +@end@ |