1 #include <net-snmp/net-snmp-config.h>
3 #include <net-snmp/net-snmp-includes.h>
5 #include <net-snmp/library/check_varbind.h>
10 netsnmp_check_vb_type_and_size(netsnmp_variable_list *var,
11 int type, size_t size)
13 register int rc = SNMP_ERR_NOERROR;
16 return SNMP_ERR_GENERR;
18 if (var->type != type) {
19 rc = SNMP_ERR_WRONGTYPE;
20 } else if (var->val_len != size) {
21 rc = SNMP_ERR_WRONGLENGTH;
28 netsnmp_check_vb_int_range(netsnmp_variable_list *var, int low, int high)
30 register int rc = SNMP_ERR_NOERROR;
32 if ((rc = netsnmp_check_vb_type_and_size(var, ASN_INTEGER, sizeof(int))))
35 if ((*var->val.integer < low) || (*var->val.integer > high)) {
36 rc = SNMP_ERR_BADVALUE;
43 netsnmp_check_vb_truthvalue(netsnmp_variable_list *var)
45 register int rc = SNMP_ERR_NOERROR;
47 if ((rc = netsnmp_check_vb_type_and_size(var, ASN_INTEGER, sizeof(int))))
50 return netsnmp_check_vb_int_range(var, 1, 2);
54 netsnmp_check_vb_rowstatus(netsnmp_variable_list *var, int old_value)
56 register int rc = SNMP_ERR_NOERROR;
58 if ((rc = netsnmp_check_vb_type_and_size(var, ASN_INTEGER, sizeof(int))))
61 if ((rc = netsnmp_check_vb_int_range(var, SNMP_ROW_NONEXISTENT,
65 return check_rowstatus_transition(old_value, *var->val.integer);
69 netsnmp_check_vb_storagetype(netsnmp_variable_list *var, int old_value)
71 int rc = SNMP_ERR_NOERROR;
73 if ((rc = netsnmp_check_vb_type_and_size(var, ASN_INTEGER, sizeof(int))))
76 if ((rc = netsnmp_check_vb_int_range(var, SNMP_STORAGE_NONE,
77 SNMP_STORAGE_READONLY)))
80 return check_storage_transition(old_value, *var->val.integer);