summaryrefslogtreecommitdiff
path: root/local/mib2c.check_values.conf
diff options
context:
space:
mode:
Diffstat (limited to 'local/mib2c.check_values.conf')
-rw-r--r--local/mib2c.check_values.conf154
1 files changed, 154 insertions, 0 deletions
diff --git a/local/mib2c.check_values.conf b/local/mib2c.check_values.conf
new file mode 100644
index 0000000..259ac1f
--- /dev/null
+++ b/local/mib2c.check_values.conf
@@ -0,0 +1,154 @@
+@run mib2c.check_values_local.conf@
+## -*- c -*-
+######################################################################
+## Do the .h file
+######################################################################
+@open ${name}_checkfns.h@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ * : mib2c.iterate.conf,v 5.6 2003/02/20 00:52:07 hardaker Exp $
+ */
+
+/***********************************************************************
+ * This file is auto-generated and SHOULD NOT BE EDITED by hand.
+ * Modify the ${name}_checkfns_local.[ch] files insead.
+ * (so that you can regenerate this one as mib2c improvements are made)
+ ***********************************************************************/
+#ifndef $name.uc_CHECKFNS_H
+#define $name.uc_CHECKFNS_H
+
+/** make sure we load the functions that you can modify */
+config_require(${name}_checkfns_local)
+
+@foreach $t table@
+/* these functions are designed to check incoming values for
+columns in the $t table for legality with respect to
+datatype and value.
+ */
+
+ @foreach $i column@
+ @if $i.access =~ /(Write|Create)/@
+ int check_${i}(int type, $i.decl *val, size_t val_len, $i.decl *old_val, size_t old_val_len);
+ @end@
+ @end@
+@end@
+
+#endif /* $name.uc_CHECKFNS_H */
+
+######################################################################
+## Do the .c file
+######################################################################
+@open ${name}_checkfns.c@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ * $Id$
+ */
+
+/********************************************************************
+ * NOTE NOTE NOTE
+ * This file is auto-generated and SHOULD NOT BE EDITED by hand.
+ * Modify the ${name}_checkfns_local.[ch] files insead so that you
+ * can regenerate this one as mib2c improvements are made.
+ ********************************************************************/
+
+/* standard headers */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include "${name}_checkfns.h"
+#include "${name}_checkfns_local.h"
+#include "${name}_enums.h"
+@run mib2c.column_enums.conf@
+
+@foreach $t table@
+ @foreach $i column@
+ @if $i.access =~ /(Write|Create)/@
+/** Decides if an incoming value for the $i mib node is legal.
+ * @param type The incoming data type.
+ * @param val The value to be checked.
+ * @param val_len The length of data stored in val (in bytes).
+ * @return 0 if the incoming value is legal, an SNMP error code otherwise.
+ */
+ int
+ check_${i}(int type, $i.decl *val, size_t val_len,
+ $i.decl *old_val, size_t old_val_len) {
+
+ int ret;
+
+ /** Check to see that we were called legally */
+ if (!val)
+ return SNMP_ERR_GENERR;
+
+ /** Check the incoming type for correctness */
+ if (type != $i.type)
+ return SNMP_ERR_WRONGTYPE;
+
+ @if $i.type =~ /int/i@
+ @eval $x = 0@
+ @foreach $l, $v enum@
+ @if $x == 0@
+ /** Check the enums. Legal values will continue, others return error. */
+ switch (*val) {
+ @eval $x = 1@
+ @end@
+ case $i.uc_$l.uc:
+ @end@
+ @if $x == 1@
+ break;
+
+ /** not a legal enum value. return an error */
+ default:
+ return SNMP_ERR_INCONSISTENTVALUE;
+ }
+ @end@
+ ret = SNMP_ERR_NOERROR;
+ @eval $x = 0@
+ @foreach $min $max range $i@
+ @if $x == 0@
+ /** Check the ranges of the passed value for legality */
+ @eval $x = 1@
+ if (
+ @else@
+ &&
+ @end@
+ !(*val >= $min && *val <= $max)
+ @end@
+ @if $x != 0@
+ ) {
+ return SNMP_ERR_WRONGVALUE;
+ }
+ @end@
+ @end@
+ @if $i.type =~ /str/i@
+ @eval $x = 0@
+ @foreach $min $max range $i@
+ @if $x == 0@
+ /** Check the ranges of the passed value for legality */
+ @eval $x = 1@
+ if (
+ @else@
+ &&
+ @end@
+ !(val_len >= $min && val_len <= $max)
+ @end@
+ @if $x == 1@
+ ) {
+ return SNMP_ERR_WRONGVALUE;
+ }
+ @end@
+ @end@
+
+ @if "$i.syntax" eq "RowStatus"@
+ if (ret = check_rowstatus_transition((old_val) ? *old_val : RS_NONEXISTENT, *val))
+ return ret;
+ @end@
+ @if "$i.syntax" eq "StorageType"@
+ if (ret = check_storage_transition((old_val) ? *old_val : SNMP_STORAGE_NONE, *val))
+ return ret;
+ @end@
+
+ /** looks ok, call the local version of the same function. */
+ return check_${i}_local(type, val, val_len, old_val, old_val_len);
+ }
+ @end@
+ @end@
+@end@