--- /dev/null
+## -*- c -*-
+######################################################################
+## Do the .h file
+######################################################################
+@open ${name}.h@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ * $Id: mib2c.old-api.conf,v 1.3 2002/10/17 09:40:46 dts12 Exp $
+ */
+#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: mib2c.old-api.conf,v 1.3 2002/10/17 09:40:46 dts12 Exp $
+ */
+
+#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 $outputName mib section
+ */
+
+struct variable4 ${name}_variables[] = {
+/* magic number , variable type , ro/rw , callback fn , L, oidsuffix */
+@eval $magic = 0@
+@foreach $i scalar@
+ @eval $magic = $magic + 1@
+#define $i.uc $magic
+ @if $i.settable@
+{$i.uc, $i.type, RWRITE, var_${name}, 1, { $i.subid }},
+ @end@
+ @if !$i.settable@
+{$i.uc, $i.type, RONLY , var_${name}, 1, { $i.subid }},
+ @end@
+@end@
+
+@foreach $i table@
+ @foreach $c column@
+ @eval $magic = $magic + 1@
+#define $c.uc $magic
+ @if $c.settable@
+{$c.uc, $c.type, RWRITE, var_${i}, 3, { $i.subid, 1, $c.subid }},
+ @end@
+ @if !$c.settable@
+{$c.uc, $c.type, RONLY, var_${i}, 3, { $i.subid, 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@
+ $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_$outputName 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@
+ $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@