#############################################################  -*- c -*-
## generic include for XXX. Do not use directly.
##
## $Id$
##
## Tests a netsnmp_variable_list pointer (var) against known
## contstraints. If none are found, calls the user supplied funtion
## ${node}_check_value.
##
## Sets the variable rc to a SNMP_ERR.
##
## Requirements
## ------------
##
########################################################################
@if $m2c_mark_boundary == 1@
/** START code generated by $RCSfile$ $Revision$ */
@end@
########################################################################
##----------------------------------------------------------------------
## setup
##----------------------------------------------------------------------
@if $m2c_paranoid == 1@
netsnmp_assert(rc == SNMP_ERR_NOERROR); /* paranoia */
@end@
##----------------------------------------------------------------------
## syntax specific
##----------------------------------------------------------------------
@ifconf syntax-$node.syntax-varbind-validate.m2i@
@   include syntax-$node.syntax-varbind-validate.m2i@
@else@
##----------------------------------------------------------------------
## Check type
##----------------------------------------------------------------------
## if not generated code, length checks are up to user
@   if "$m2c_data_context" ne "generated"@
    rc = netsnmp_check_vb_type( var, $node.type );
@   elsif ($m2c_node_needlength == 1) || ("$node.perltype" eq "BITS")@
    rc = netsnmp_check_vb_type_and_max_size( var, $node.type,
        sizeof( $m2c_nvv_item$node ) );
@   else@
    rc = netsnmp_check_vb_type_and_size( var, $node.type,
        sizeof( $m2c_nvv_item$node ) );
@   end@
@   eval $m2c_nv_val = "*var->val.integer"@
@   eval $m2c_nv_len = "var->val_len"@
@   eval $m2c_nv_str = "var->val.string"@
@   include node-validate.m2i@
@end@ # not syntax specific
##
########################################################################
@if $m2c_mark_boundary == 1@
/** END code generated by $RCSfile$ $Revision$ */
@end@
