156 lines
4.6 KiB
C
156 lines
4.6 KiB
C
@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.check_values.conf
|
|
* : 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 mib2c.check_values.conf
|
|
*/
|
|
|
|
/********************************************************************
|
|
* 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@
|