00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #include <net-snmp/net-snmp-config.h>
00017 #include <net-snmp/net-snmp-includes.h>
00018 #include "netSnmpHostsTable_checkfns.h"
00019 #include "netSnmpHostsTable_checkfns_local.h"
00020 #include "netSnmpHostsTable_enums.h"
00021
00030 int
00031 check_netSnmpHostAddressType(int type, long *val, size_t val_len,
00032 long *old_val, size_t old_val_len)
00033 {
00034
00035 int ret;
00036
00038 if (!val)
00039 return SNMP_ERR_GENERR;
00040
00042 if (type != ASN_INTEGER)
00043 return SNMP_ERR_WRONGTYPE;
00044
00046 switch (*val) {
00047 case NETSNMPHOSTADDRESSTYPE_UNKNOWN:
00048 case NETSNMPHOSTADDRESSTYPE_IPV4:
00049 case NETSNMPHOSTADDRESSTYPE_IPV6:
00050 case NETSNMPHOSTADDRESSTYPE_IPV4Z:
00051 case NETSNMPHOSTADDRESSTYPE_IPV6Z:
00052 case NETSNMPHOSTADDRESSTYPE_DNS:
00053 break;
00054
00056 default:
00057 return SNMP_ERR_INCONSISTENTVALUE;
00058 }
00059 ret = SNMP_ERR_NOERROR;
00060
00061
00063 return check_netSnmpHostAddressType_local(type, val, val_len, old_val,
00064 old_val_len);
00065 }
00066
00075 int
00076 check_netSnmpHostAddress(int type, char *val, size_t val_len,
00077 char *old_val, size_t old_val_len)
00078 {
00079
00080 int ret;
00081
00083 if (!val)
00084 return SNMP_ERR_GENERR;
00085
00087 if (type != ASN_OCTET_STR)
00088 return SNMP_ERR_WRONGTYPE;
00089
00091 if (!(val_len >= 0 && val_len <= 255)
00092 ) {
00093 return SNMP_ERR_WRONGVALUE;
00094 }
00095
00096
00098 return check_netSnmpHostAddress_local(type, val, val_len, old_val,
00099 old_val_len);
00100 }
00101
00110 int
00111 check_netSnmpHostStorage(int type, long *val, size_t val_len,
00112 long *old_val, size_t old_val_len)
00113 {
00114
00115 int ret;
00116
00118 if (!val)
00119 return SNMP_ERR_GENERR;
00120
00122 if (type != ASN_INTEGER)
00123 return SNMP_ERR_WRONGTYPE;
00124
00126 switch (*val) {
00127 case NETSNMPHOSTSTORAGE_OTHER:
00128 case NETSNMPHOSTSTORAGE_VOLATILE:
00129 case NETSNMPHOSTSTORAGE_NONVOLATILE:
00130 case NETSNMPHOSTSTORAGE_PERMANENT:
00131 case NETSNMPHOSTSTORAGE_READONLY:
00132 break;
00133
00135 default:
00136 return SNMP_ERR_INCONSISTENTVALUE;
00137 }
00138 ret = SNMP_ERR_NOERROR;
00139
00140 if (ret =
00141 check_storage_transition((old_val) ? *old_val : SNMP_STORAGE_NONE,
00142 *val))
00143 return ret;
00144
00146 return check_netSnmpHostStorage_local(type, val, val_len, old_val,
00147 old_val_len);
00148 }
00149
00158 int
00159 check_netSnmpHostRowStatus(int type, long *val, size_t val_len,
00160 long *old_val, size_t old_val_len)
00161 {
00162
00163 int ret;
00164
00166 if (!val)
00167 return SNMP_ERR_GENERR;
00168
00170 if (type != ASN_INTEGER)
00171 return SNMP_ERR_WRONGTYPE;
00172
00174 switch (*val) {
00175 case NETSNMPHOSTROWSTATUS_ACTIVE:
00176 case NETSNMPHOSTROWSTATUS_NOTINSERVICE:
00177 case NETSNMPHOSTROWSTATUS_NOTREADY:
00178 case NETSNMPHOSTROWSTATUS_CREATEANDGO:
00179 case NETSNMPHOSTROWSTATUS_CREATEANDWAIT:
00180 case NETSNMPHOSTROWSTATUS_DESTROY:
00181 break;
00182
00184 default:
00185 return SNMP_ERR_INCONSISTENTVALUE;
00186 }
00187 ret = SNMP_ERR_NOERROR;
00188
00189 if (ret =
00190 check_rowstatus_transition((old_val) ? *old_val : RS_NONEXISTENT,
00191 *val))
00192 return ret;
00193
00195 return check_netSnmpHostRowStatus_local(type, val, val_len, old_val,
00196 old_val_len);
00197 }