diff options
Diffstat (limited to 'local/mib2c-conf.d/node-validate.m2i')
-rw-r--r-- | local/mib2c-conf.d/node-validate.m2i | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/local/mib2c-conf.d/node-validate.m2i b/local/mib2c-conf.d/node-validate.m2i new file mode 100644 index 0000000..fd9c606 --- /dev/null +++ b/local/mib2c-conf.d/node-validate.m2i @@ -0,0 +1,71 @@ +############################################################# -*- c -*- +## generic include for XXX. Do not use directly. +## +## $Id: node-validate.m2i 12101 2005-04-20 22:45:01Z rstory $ +## +## assumes an integer rc is available and will be tested by caller +## +######################################################################## +@if $m2c_mark_boundary == 1@ +/** START code generated by $RCSfile$ $Revision: 12101 $ */ +@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) { + snmp_log(LOG_ERR,"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); + if( (bits | $m2c_enum_mask) != $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 $RCSfile$ $Revision: 12101 $ */ +@end@ |