76 lines
2.5 KiB
C
76 lines
2.5 KiB
C
############################################################# -*- c -*-
|
|
## generic include for XXX. Do not use directly.
|
|
##
|
|
##
|
|
## assumes an integer rc is available and will be tested by caller
|
|
##
|
|
########################################################################
|
|
@if $m2c_mark_boundary == 1@
|
|
/** START code generated by node-validate.m2i */
|
|
@end@
|
|
########################################################################
|
|
##----------------------------------------------------------------------
|
|
## setup
|
|
##----------------------------------------------------------------------
|
|
@if $node.enums == 1@
|
|
##------------------------------------------------------
|
|
@ if "$node.perltype" ne "BITS"@
|
|
/* check that the value is one of defined enums */
|
|
if( (SNMPERR_SUCCESS == rc)
|
|
@ foreach $e $v enum@
|
|
@ include m2c_setup_enum.m2i@
|
|
&& ( $m2c_nv_val != $m2c_ename )
|
|
@ end@ # for each
|
|
) {
|
|
rc = SNMP_ERR_WRONGVALUE;
|
|
}
|
|
##------------------------------------------------------
|
|
@ else@ # BITS
|
|
## {
|
|
if($m2c_nv_len > 4) {
|
|
DEBUGMSGTL(("${context}:${node}",
|
|
"I can not handle BITS > 4 bytes\n"));
|
|
rc = SNMP_ERR_GENERR;
|
|
}
|
|
else if (SNMPERR_SUCCESS == rc){
|
|
u_long bits = 0;
|
|
/* check that value is within enum mask */
|
|
memcpy( &bits, $m2c_nv_str, $m2c_nv_len);
|
|
bits = ntohl( bits );
|
|
if( (bits | $m2c_enum_mask) != $m2c_enum_mask) {
|
|
DEBUGMSGTL(("${context}:${node}",
|
|
"bad bits set: bits = %x valid = %x", bits, $m2c_enum_mask));
|
|
rc = SNMP_ERR_WRONGVALUE;
|
|
}
|
|
}
|
|
@ end@
|
|
##----------------------------------------------------------------------
|
|
## check RANGES
|
|
##----------------------------------------------------------------------
|
|
@elsif $node.ranges == 1@
|
|
@ if ("$node.decl" eq "long") || ("$node.decl" eq "u_long")@
|
|
@ eval $m2c_nv_rc = "SNMP_ERR_WRONGVALUE"@
|
|
@ eval $m2c_nv_tmp = "$m2c_nv_val"@
|
|
@ else@
|
|
@ eval $m2c_nv_rc = "SNMP_ERR_WRONGLENGTH"@
|
|
@ eval $m2c_nv_tmp = "$m2c_nv_len"@
|
|
@ end@
|
|
/* check defined range(s). */
|
|
if( (SNMPERR_SUCCESS == rc)
|
|
@ foreach $a $b range $node@
|
|
@ if $a == $b@
|
|
&& ($m2c_nv_tmp != $a)
|
|
@ else@
|
|
&& (($m2c_nv_tmp < $a) || ($m2c_nv_tmp > $b))
|
|
@ end@
|
|
@ end@
|
|
) {
|
|
rc = $m2c_nv_rc;
|
|
}
|
|
@end@
|
|
##
|
|
########################################################################
|
|
@if $m2c_mark_boundary == 1@
|
|
/** END code generated by node-validate.m2i */
|
|
@end@
|