#############################################################  -*- c -*-
## generic include for XXX. Do not use directly.
##
## $Id$
########################################################################
@if $m2c_mark_boundary == 1@
/** START code generated by $RCSfile$ $Revision$ */
@end@
########################################################################
##
    int err = SNMP_ERR_NOERROR;
    
    /*
     * temp storage for parsing indexes
     */
@    eval $m2c_dii_first = ""@
@    foreach $node index@
@        include m2c_setup_node.m2i@
@        if "x$m2c_dii_first" eq "x"@
@           eval $m2c_dii_first = $node@
@           eval $m2c_dii_tmp = "var_${node}.next_variable = "@
@        else@
@            eval $m2c_dii_tmp = "$m2c_dii_tmp &var_${node}; var_${node}.next_variable = "@
@        end@
    /*
     * $m2c_node_summary
     */
    netsnmp_variable_list var_$node;
@    end@
@    eval $m2c_dii_tmp = "$m2c_dii_tmp NULL;"@

    /*
     * set up varbinds
     */
@    eval $mfd_temp = "idx_vars"@
@    foreach $node index@
@        include m2c_setup_node.m2i@
    memset( &var_$node, 0x00, sizeof(var_$node) );
    var_${node}.type = $node.type;
@    end@

    /*
     * chain temp index varbinds together
     */
    $m2c_dii_tmp

##
########################################################################
@if $m2c_mark_boundary == 1@
/** END code generated by $RCSfile$ $Revision$ */
@end@
