summaryrefslogtreecommitdiff
path: root/local/mib2c-conf.d/node-validate.m2i
diff options
context:
space:
mode:
Diffstat (limited to 'local/mib2c-conf.d/node-validate.m2i')
-rw-r--r--local/mib2c-conf.d/node-validate.m2i71
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..a63f1d7
--- /dev/null
+++ b/local/mib2c-conf.d/node-validate.m2i
@@ -0,0 +1,71 @@
+############################################################# -*- 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@