| ############################################################# -*- c -*- |
| ## generic include for XXX. Do not use directly. |
| ## |
| ## $Id$ |
| ## |
| ## assumes an integer rc is available and will be tested by caller |
| ## |
| ######################################################################## |
| @if $m2c_mark_boundary == 1@ |
| /** START code generated by $RCSfile$ $Revision$ */ |
| @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$ */ |
| @end@ |