## -*- 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 */
@foreach $i notifications@
int send_${i}_trap(void);
@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"

extern const oid snmptrap_oid;
extern const size_t snmptrap_oid_len;

@foreach $i notifications@
int
send_${i}_trap( void )
{
    netsnmp_variable_list  *var_list = NULL;
    const oid ${i}_oid[] = { $i.commaoid };
    @foreach $v varbinds@
    @if $v.isscalar@
    const oid ${v}_oid[] = { $v.commaoid, 0 };
    @end@
    @if !$v.isscalar@
    const oid ${v}_oid[] = { $v.commaoid, /* insert index here */ };
    @end@
    @end@

    /*
     * Set the snmpTrapOid.0 value
     */
    snmp_varlist_add_variable(&var_list,
        snmptrap_oid, snmptrap_oid_len,
        ASN_OBJECT_ID,
        ${i}_oid, sizeof(${i}_oid));
    
    @if count_varbinds($i) > 0@
    /*
     * Add any objects from the trap definition
     */
    @end@
    @foreach $v varbinds@
    snmp_varlist_add_variable(&var_list,
        ${v}_oid, OID_LENGTH(${v}_oid),
        $v.type,
        /* Set an appropriate value for $v */
        NULL, 0);
    @end@

    /*
     * Add any extra (optional) objects here
     */

    /*
     * Send the trap to the list of configured destinations
     *  and clean up
     */
    send_v2trap( var_list );
    snmp_free_varbind( var_list );

    return SNMP_ERR_NOERROR;
}
@end@
