snmpTargetParamsEntry.c
上传用户:wxp200602
上传日期:2007-10-30
资源大小:4028k
文件大小:50k
源码类别:
SNMP编程
开发平台:
Unix_Linux
- /*
- * TargetParamTable MIB
- *
- * This file was generated by mib2c and is intended for use as a mib module
- * for the ucd-snmp snmpd agent. Edited by Michael Baer
- *
- * last changed 2/2/99.
- */
- #include <net-snmp/net-snmp-config.h>
- #if HAVE_STRING_H
- #include <string.h>
- #else
- #include <strings.h>
- #endif
- #include <stdlib.h>
- #include <ctype.h>
- #if HAVE_WINSOCK_H
- #include <winsock.h>
- #endif
- #include <net-snmp/net-snmp-includes.h>
- #include <net-snmp/agent/net-snmp-agent-includes.h>
- #include "snmpTargetParamsEntry.h"
- #define snmpTargetParamsOIDLen 11 /*This is base+column,
- * i.e. everything but index */
- oid snmpTargetParamsOID[snmpTargetParamsOIDLen] =
- { 1, 3, 6, 1, 6, 3, 12, 1, 3, 1, 0 };
- static struct targetParamTable_struct *aPTable = 0;
- /*
- * Utility routines
- */
- /*
- * TargetParamTable_create creates and returns a pointer
- * to a targetParamTable_struct with default values set
- */
- struct targetParamTable_struct
- *
- snmpTargetParamTable_create(void)
- {
- struct targetParamTable_struct *newEntry;
- newEntry = (struct targetParamTable_struct *)
- malloc(sizeof(struct targetParamTable_struct));
- newEntry->paramName = 0;
- newEntry->mpModel = -1;
- newEntry->secModel = -1;
- newEntry->secName = 0;
- newEntry->secLevel = -1;
- newEntry->storageType = SNMP_STORAGE_NONVOLATILE;
- newEntry->rowStatus = SNMP_ROW_NONEXISTENT;
- newEntry->next = 0;
- return newEntry;
- }
- /*
- * TargetParamTable_dispose frees the space allocated to a
- * targetParamTable_struct
- */
- void
- snmpTargetParamTable_dispose(struct targetParamTable_struct *reaped)
- {
- free(reaped->paramName);
- free(reaped->secName);
- free(reaped);
- } /* snmpTargetParamTable_dispose */
- /*
- * snmpTargetParamTable_addToList adds a targetParamTable_struct
- * to a list passed in. The list is assumed to be in a sorted order,
- * low to high and this procedure inserts a new struct in the proper
- * location. Sorting uses OID values based on paramName. A new equal value
- * overwrites a current one.
- */
- void
- snmpTargetParamTable_addToList(struct targetParamTable_struct *newEntry,
- struct targetParamTable_struct **listPtr)
- {
- static struct targetParamTable_struct *curr_struct, *prev_struct;
- int i;
- size_t newOIDLen = 0, currOIDLen = 0;
- oid newOID[128], currOID[128];
- /*
- * if the list is empty, add the new entry to the top
- */
- if ((prev_struct = curr_struct = *listPtr) == 0) {
- *listPtr = newEntry;
- return;
- } else {
- /*
- * get the 'OID' value of the new entry
- */
- newOIDLen = strlen(newEntry->paramName);
- for (i = 0; i < (int) newOIDLen; i++) {
- newOID[i] = newEntry->paramName[i];
- }
- /*
- * search through the list for an equal or greater OID value
- */
- while (curr_struct != 0) {
- currOIDLen = strlen(curr_struct->paramName);
- for (i = 0; i < (int) currOIDLen; i++) {
- currOID[i] = curr_struct->paramName[i];
- }
- i = snmp_oid_compare(newOID, newOIDLen, currOID, currOIDLen);
- if (i == 0) { /* Exact match, overwrite with new struct */
- newEntry->next = curr_struct->next;
- /*
- * if curr_struct is the top of the list
- */
- if (*listPtr == curr_struct)
- *listPtr = newEntry;
- else
- prev_struct->next = newEntry;
- snmpTargetParamTable_dispose(curr_struct);
- return;
- } else if (i < 0) { /* Found a greater OID, insert struct in front of it. */
- newEntry->next = curr_struct;
- /*
- * if curr_struct is the top of the list
- */
- if (*listPtr == curr_struct)
- *listPtr = newEntry;
- else
- prev_struct->next = newEntry;
- return;
- }
- prev_struct = curr_struct;
- curr_struct = curr_struct->next;
- }
- }
- /*
- * if we're here, no larger OID was ever found, insert on end of list
- */
- prev_struct->next = newEntry;
- } /* snmpTargeParamTable_addToList */
- void
- snmpTargetParamTable_add(struct targetParamTable_struct *newEntry)
- {
- snmpTargetParamTable_addToList(newEntry, &aPTable);
- }
- /*
- * snmpTargetParamTable_remFromList removes a targetParamTable_struct
- * from the list passed in
- */
- void
- snmpTargetParamTable_remFromList(struct targetParamTable_struct *oldEntry,
- struct targetParamTable_struct **listPtr)
- {
- struct targetParamTable_struct *tptr;
- if ((tptr = *listPtr) == 0)
- return;
- else if (tptr == oldEntry) {
- *listPtr = (*listPtr)->next;
- snmpTargetParamTable_dispose(tptr);
- return;
- } else {
- while (tptr->next != 0) {
- if (tptr->next == oldEntry) {
- tptr->next = tptr->next->next;
- snmpTargetParamTable_dispose(oldEntry);
- return;
- }
- tptr = tptr->next;
- }
- }
- } /* snmpTargetParamTable_remFromList */
- /*
- * lookup OID in the link list of Table Entries
- */
- struct targetParamTable_struct *
- search_snmpTargetParamsTable(oid * baseName,
- size_t baseNameLen,
- oid * name, size_t * length, int exact)
- {
- static struct targetParamTable_struct *temp_struct;
- int i;
- size_t myOIDLen = 0;
- oid newNum[128];
- /*
- * lookup entry in p / * Get Current MIB ID
- */
- memcpy(newNum, baseName, baseNameLen * sizeof(oid));
- for (temp_struct = aPTable; temp_struct != 0;
- temp_struct = temp_struct->next) {
- for (i = 0; i < (int) strlen(temp_struct->paramName); i++) {
- newNum[baseNameLen + i] = temp_struct->paramName[i];
- }
- myOIDLen = baseNameLen + strlen(temp_struct->paramName);
- i = snmp_oid_compare(name, *length, newNum, myOIDLen);
- /*
- * Assumes that the linked list sorted by OID, low to high
- */
- if ((i == 0 && exact != 0) || (i < 0 && exact == 0)) {
- if (exact == 0) {
- memcpy(name, newNum, myOIDLen * sizeof(oid));
- *length = myOIDLen;
- }
- return temp_struct;
- }
- }
- return (0);
- } /* search_snmpTargetParamsTable */
- /*
- * snmpTargetParams_rowStatusCheck is boolean funciton that checks
- * the status of a row's values in order to determine whether
- * the row should be notReady or notInService
- */
- int
- snmpTargetParams_rowStatusCheck(struct targetParamTable_struct *entry)
- {
- if ((entry->mpModel < 0) || (entry->secModel < 0) ||
- (entry->secLevel < 0) || (entry->secName == 0))
- return 0;
- else
- return 1;
- } /* snmtpTargetParamTable_rowStatusCheck */
- /*
- * initialization routines
- */
- /*
- * this variable defines function callbacks and type return information
- * for the snmpTargetAddrEntry mib
- */
- struct variable2 snmpTargetParamsEntry_variables[] = {
- {SNMPTARGETPARAMSMPMODEL, ASN_INTEGER, RWRITE,
- var_snmpTargetParamsEntry, 1, {SNMPTARGETPARAMSMPMODELCOLUMN}},
- {SNMPTARGETPARAMSSECURITYMODEL, ASN_INTEGER, RWRITE,
- var_snmpTargetParamsEntry, 1, {SNMPTARGETPARAMSSECURITYMODELCOLUMN}},
- {SNMPTARGETPARAMSSECURITYNAME, ASN_OCTET_STR, RWRITE,
- var_snmpTargetParamsEntry, 1, {SNMPTARGETPARAMSSECURITYNAMECOLUMN}},
- {SNMPTARGETPARAMSSECURITYLEVEL, ASN_INTEGER, RWRITE,
- var_snmpTargetParamsEntry, 1, {SNMPTARGETPARAMSSECURITYLEVELCOLUMN}},
- {SNMPTARGETPARAMSSTORAGETYPE, ASN_INTEGER, RWRITE,
- var_snmpTargetParamsEntry, 1, {SNMPTARGETPARAMSSTORAGETYPECOLUMN}},
- {SNMPTARGETPARAMSROWSTATUS, ASN_INTEGER, RWRITE,
- var_snmpTargetParamsEntry, 1, {SNMPTARGETPARAMSROWSTATUSCOLUMN}}
- };
- /*
- * now load this mib into the agents mib table
- */
- oid snmpTargetParamsEntry_variables_oid[] =
- { 1, 3, 6, 1, 6, 3, 12, 1, 3, 1 };
- void
- init_snmpTargetParamsEntry(void)
- {
- aPTable = 0;
- REGISTER_MIB("target/snmpTargetParamsEntry",
- snmpTargetParamsEntry_variables, variable2,
- snmpTargetParamsEntry_variables_oid);
- snmpd_register_config_handler("targetParams",
- snmpd_parse_config_targetParams, 0,
- NULL);
- /*
- * we need to be called back later
- */
- snmp_register_callback(SNMP_CALLBACK_LIBRARY, SNMP_CALLBACK_STORE_DATA,
- store_snmpTargetParamsEntry, NULL);
- } /* init_snmpTargetParmsEntry */
- int
- snmpTargetParams_addParamName(struct targetParamTable_struct *entry,
- char *cptr)
- {
- size_t len;
- if (cptr == 0) {
- DEBUGMSGTL(("snmpTargetParamsEntry",
- "ERROR snmpTargetParamsEntry: no param name in config stringn"));
- return (0);
- } else {
- len = strlen(cptr);
- /*
- * spec check for string 1-32
- */
- if (len < 1 || len > 32) {
- DEBUGMSGTL(("snmpTargetParamsEntry",
- "ERROR snmpTargetParamsEntry: param name out of range in config stringn"));
- return (0);
- }
- entry->paramName = (char *) malloc(len + 1);
- strncpy(entry->paramName, cptr, len);
- entry->paramName[len] = ' ';
- }
- return (1);
- }
- int
- snmpTargetParams_addMPModel(struct targetParamTable_struct *entry,
- char *cptr)
- {
- if (cptr == 0) {
- DEBUGMSGTL(("snmpTargetParamsEntry",
- "ERROR snmpTargetParamsEntry: no mp model in config stringn"));
- return (0);
- } else if (!(isdigit(*cptr))) {
- DEBUGMSGTL(("snmpTargetParamsEntry",
- "ERROR snmpTargeParamsEntry: mp model is not digit in config stringn"));
- return (0);
- }
- /*
- * spec check MP Model >= 0
- */
- else if ((entry->mpModel = (int) strtol(cptr, (char **) NULL, 0)) < 0) {
- DEBUGMSGTL(("snmpTargetParamsEntry",
- "ERROR snmpTargeParamsEntry: mp model out of range in config stringn"));
- return (0);
- }
- return (1);
- } /* snmpTargetParams_addMPModel */
- int
- snmpTargetParams_addSecModel(struct targetParamTable_struct *entry,
- char *cptr)
- {
- if (cptr == 0) {
- DEBUGMSGTL(("snmpTargetParamsEntry",
- "ERROR snmpTargetParamsEntry: no sec model in config stringn"));
- return (0);
- } else if (!(isdigit(*cptr))) {
- DEBUGMSGTL(("snmpTargetParamsEntry",
- "ERROR snmpTargeParamsEntry: security model is not digit in config stringn"));
- return (0);
- }
- /*
- * spec check Sec. Model > 0
- */
- else if ((entry->secModel =
- (int) strtol(cptr, (char **) NULL, 0)) <= 0) {
- DEBUGMSGTL(("snmpTargetParamsEntry",
- "ERROR snmpTargetParamsEntry: security model out of range in config stringn"));
- return (0);
- }
- return (1);
- } /* snmpTargetParams_addSecModel */
- int
- snmpTargetParams_addSecName(struct targetParamTable_struct *entry,
- char *cptr)
- {
- size_t len;
- if (cptr == 0) {
- DEBUGMSGTL(("snmpTargetParamsEntry",
- "ERROR snmpTargetParamsEntry: no security name in config stringn"));
- return (0);
- } else {
- len = strlen(cptr);
- entry->secName = (char *) malloc(len + 1);
- strncpy(entry->secName, cptr, len);
- entry->secName[len] = ' ';
- }
- return (1);
- } /* snmpTargetParams_addSecName */
- int
- snmpTargetParams_addSecLevel(struct targetParamTable_struct *entry,
- char *cptr)
- {
- if (cptr == 0) {
- DEBUGMSGTL(("snmpTargetParamsEntry",
- "ERROR snmpTargetParamsEntry: no security level in config stringn"));
- return (0);
- } else if (!(isdigit(*cptr))) {
- DEBUGMSGTL(("snmpTargetParamsEntry",
- "ERROR snmpTargeParamsEntry: security level is not digit in config stringn"));
- return (0);
- }
- /*
- * no spec range check, but noAuthNoPriv is 1 so...
- */
- else if ((entry->secLevel =
- (int) strtol(cptr, (char **) NULL, 0)) <= 0) {
- DEBUGMSGTL(("snmpTargetParamsEntry",
- "ERROR snmpTargeParamsEntry: security level is not greater than 0 in config stringn"));
- return (0);
- }
- return (1);
- } /* snmpTargetParams_addSecLevel */
- int
- snmpTargetParams_addStorageType(struct targetParamTable_struct *entry,
- char *cptr)
- {
- if (cptr == 0) {
- DEBUGMSGTL(("snmpTargetParamsEntry",
- "ERROR snmpTargetParamsEntry: no storage type in config stringn"));
- return (0);
- } else if (!(isdigit(*cptr))) {
- DEBUGMSGTL(("snmpTargetParamsEntry",
- "ERROR snmpTargeParamsEntry: storage type is not digit in config stringn"));
- return (0);
- }
- /*
- * check that storage type is a possible value
- */
- else if (((entry->storageType = (int) strtol(cptr, (char **) NULL, 0))
- != SNMP_STORAGE_OTHER) &&
- (entry->storageType != SNMP_STORAGE_VOLATILE) &&
- (entry->storageType != SNMP_STORAGE_NONVOLATILE) &&
- (entry->storageType != SNMP_STORAGE_PERMANENT) &&
- (entry->storageType != SNMP_STORAGE_READONLY)) {
- DEBUGMSGTL(("snmpTargetParamsEntry",
- "ERROR snmpTargeParamsEntry: storage type is not a valid value of"));
- DEBUGMSG(("snmpTargetParamsEntry",
- " other(%d), volatile(%d), nonvolatile(%d), permanent(%d), or ",
- SNMP_STORAGE_OTHER, SNMP_STORAGE_VOLATILE,
- SNMP_STORAGE_NONVOLATILE, SNMP_STORAGE_PERMANENT));
- DEBUGMSGTL(("snmpTargetParamsEntry",
- "readonly(%d) in config string.n",
- SNMP_STORAGE_READONLY));
- return (0);
- }
- return (1);
- } /* snmpTargetParams_addStorageType */
- int
- snmpTargetParams_addRowStatus(struct targetParamTable_struct *entry,
- char *cptr)
- {
- if (cptr == 0) {
- DEBUGMSGTL(("snmpTargetParamsEntry",
- "ERROR snmpTargetParamsEntry: no row status in config stringn"));
- return (0);
- } else if (!(isdigit(*cptr))) {
- DEBUGMSGTL(("snmpTargetParamsEntry",
- "ERROR snmpTargeParamsEntry: row status is not digit in config stringn"));
- return (0);
- }
- /*
- * check that row status is a valid value
- */
- else if (((entry->rowStatus = (int) strtol(cptr, (char **) NULL, 0))
- != SNMP_ROW_ACTIVE) &&
- (entry->rowStatus != SNMP_ROW_NOTINSERVICE) &&
- (entry->rowStatus != SNMP_ROW_NOTREADY)) {
- DEBUGMSGTL(("snmpTargetParamsEntry",
- "ERROR snmpTargetParamsEntry: Row Status is not a valid value of "));
- DEBUGMSG(("snmpTargetParamsEntry",
- "active(%d), notinservice(%d), or notready(%d) in config string.n",
- SNMP_ROW_ACTIVE, SNMP_ROW_NOTINSERVICE,
- SNMP_ROW_NOTREADY));
- return (0);
- }
- return (1);
- } /* snmpTargetParams_addRowStatus */
- /*
- * timestamp the current entry's modification time
- */
- void
- update_timestamp(struct targetParamTable_struct *temp_struct)
- {
- temp_struct->updateTime = time(NULL);
- }
- void
- snmpd_parse_config_targetParams(const char *token, char *char_ptr)
- {
- char *cptr = char_ptr, buff[1024];
- struct targetParamTable_struct *newEntry;
- newEntry = snmpTargetParamTable_create();
- cptr = copy_nword(cptr, buff, sizeof(buff));
- if (snmpTargetParams_addParamName(newEntry, buff) == 0) {
- snmpTargetParamTable_dispose(newEntry);
- return;
- }
- cptr = copy_nword(cptr, buff, sizeof(buff));
- if (snmpTargetParams_addMPModel(newEntry, buff) == 0) {
- snmpTargetParamTable_dispose(newEntry);
- return;
- }
- cptr = copy_nword(cptr, buff, sizeof(buff));
- if (snmpTargetParams_addSecModel(newEntry, buff) == 0) {
- snmpTargetParamTable_dispose(newEntry);
- return;
- }
- cptr = copy_nword(cptr, buff, sizeof(buff));
- if (snmpTargetParams_addSecName(newEntry, buff) == 0) {
- snmpTargetParamTable_dispose(newEntry);
- return;
- }
- cptr = copy_nword(cptr, buff, sizeof(buff));
- if (snmpTargetParams_addSecLevel(newEntry, buff) == 0) {
- snmpTargetParamTable_dispose(newEntry);
- return;
- }
- cptr = copy_nword(cptr, buff, sizeof(buff));
- if (snmpTargetParams_addStorageType(newEntry, buff) == 0) {
- snmpTargetParamTable_dispose(newEntry);
- return;
- }
- cptr = copy_nword(cptr, buff, sizeof(buff));
- if (snmpTargetParams_addRowStatus(newEntry, buff) == 0) {
- snmpTargetParamTable_dispose(newEntry);
- return;
- }
- snprintf(buff, sizeof(buff),
- "snmp_parse_config_targetParams, read: %s %d %d %s %d %d %dn",
- newEntry->paramName, newEntry->mpModel, newEntry->secModel,
- newEntry->secName, newEntry->secLevel, newEntry->storageType,
- newEntry->rowStatus);
- buff[ sizeof(buff)-1 ] = 0;
- DEBUGMSGTL(("snmpTargetParamsEntry", buff));
- update_timestamp(newEntry);
- snmpTargetParamTable_addToList(newEntry, &aPTable);
- } /* snmpd_parse_config_target */
- /*
- * shutdown routines
- */
- /*
- * store_snmpTargetParamsEntry handles the presistent storage proccess
- * for this MIB table. It writes out all the non-volatile rows
- * to permanent storage on a shutdown
- */
- int
- store_snmpTargetParamsEntry(int majorID, int minorID, void *serverarg,
- void *clientarg)
- {
- struct targetParamTable_struct *curr_struct;
- char line[1024];
- strcpy(line, "");
- if ((curr_struct = aPTable) != 0) {
- while (curr_struct != 0) {
- if ((curr_struct->storageType == SNMP_STORAGE_NONVOLATILE ||
- curr_struct->storageType == SNMP_STORAGE_PERMANENT)
- &&
- (curr_struct->rowStatus == SNMP_ROW_ACTIVE ||
- curr_struct->rowStatus == SNMP_ROW_NOTINSERVICE)) {
- snprintf(&line[strlen(line)], sizeof(line)-strlen(line)-1,
- "targetParams %s %i %i %s %i %i %in",
- curr_struct->paramName, curr_struct->mpModel,
- curr_struct->secModel, curr_struct->secName,
- curr_struct->secLevel, curr_struct->storageType,
- curr_struct->rowStatus);
- line[ sizeof(line)-1 ] = 0;
- /*
- * store to file
- */
- snmpd_store_config(line);
- }
- curr_struct = curr_struct->next;
- }
- }
- return SNMPERR_SUCCESS;
- } /* store_snmpTargetParmsEntry */
- /*
- * MIB table access routines
- */
- u_char *
- var_snmpTargetParamsEntry(struct variable * vp,
- oid * name,
- size_t * length,
- int exact,
- size_t * var_len, WriteMethod ** write_method)
- {
- /*
- * variables we may use later
- */
- static long long_ret;
- static unsigned char string[1500];
- struct targetParamTable_struct *temp_struct;
- switch (vp->magic) {
- case SNMPTARGETPARAMSMPMODEL:
- *write_method = write_snmpTargetParamsMPModel;
- break;
- case SNMPTARGETPARAMSSECURITYMODEL:
- *write_method = write_snmpTargetParamsSecModel;
- break;
- case SNMPTARGETPARAMSSECURITYNAME:
- *write_method = write_snmpTargetParamsSecName;
- break;
- case SNMPTARGETPARAMSSECURITYLEVEL:
- *write_method = write_snmpTargetParamsSecLevel;
- break;
- case SNMPTARGETPARAMSSTORAGETYPE:
- *write_method = write_snmpTargetParamsStorageType;
- break;
- case SNMPTARGETPARAMSROWSTATUS:
- *write_method = write_snmpTargetParamsRowStatus;
- break;
- default:
- *write_method = NULL;
- }
- *var_len = sizeof(long_ret); /* assume an integer and change later if not */
- /*
- * look for OID in current table
- */
- if ((temp_struct = search_snmpTargetParamsTable(vp->name, vp->namelen,
- name, length,
- exact)) == 0) {
- return (0);
- }
- /*
- * We found what we were looking for, either the next OID or the exact OID
- */
- /*
- * this is where we do the value assignments for the mib results.
- */
- switch (vp->magic) {
- case SNMPTARGETPARAMSMPMODEL:
- /*
- * if unset value, (i.e. new row)
- */
- if (temp_struct->mpModel == -1)
- return (0);
- long_ret = temp_struct->mpModel;
- return (unsigned char *) &long_ret;
- case SNMPTARGETPARAMSSECURITYMODEL:
- /*
- * if unset value, (i.e. new row)
- */
- if (temp_struct->secModel == -1)
- return (0);
- long_ret = temp_struct->secModel;
- return (unsigned char *) &long_ret;
- case SNMPTARGETPARAMSSECURITYNAME:
- /*
- * if unset value, (i.e. new row)
- */
- if (temp_struct->secName == 0)
- return (0);
- /*
- * including null character.
- */
- memcpy(string, temp_struct->secName, strlen(temp_struct->secName));
- string[strlen(temp_struct->secName)] = ' ';
- *var_len = strlen(temp_struct->secName);
- return (unsigned char *) string;
- case SNMPTARGETPARAMSSECURITYLEVEL:
- /*
- * if unset value, (i.e. new row)
- */
- if (temp_struct->secLevel == -1)
- return (0);
- long_ret = temp_struct->secLevel;
- return (unsigned char *) &long_ret;
- case SNMPTARGETPARAMSSTORAGETYPE:
- long_ret = temp_struct->storageType;
- return (unsigned char *) &long_ret;
- case SNMPTARGETPARAMSROWSTATUS:
- long_ret = temp_struct->rowStatus;
- return (unsigned char *) &long_ret;
- default:
- DEBUGMSGTL(("snmpd",
- "unknown sub-id %d in var_snmpTargetParamsEntryn",
- vp->magic));
- }
- return 0;
- } /* var_snmpTargetParamsEntry */
- /*
- * Assign a value to the mpModel variable.
- */
- int
- write_snmpTargetParamsMPModel(int action,
- u_char * var_val,
- u_char var_val_type,
- size_t var_val_len,
- u_char * statP, oid * name, size_t name_len)
- {
- long long_ret = *((long *) var_val);
- static long old_mp;
- struct targetParamTable_struct *params = NULL;
- if (action == RESERVE1) {
- if (var_val_type != ASN_INTEGER) {
- DEBUGMSGTL(("snmpTargetParamsEntry",
- "write to snmpTargetParamsMPModel: not ASN_INTEGERn"));
- return SNMP_ERR_WRONGTYPE;
- }
- if (var_val_len != sizeof(long)) {
- DEBUGMSGTL(("snmpTargetParamsEntry",
- "write to snmpTargetParamsMPModel: bad lengthn"));
- return SNMP_ERR_WRONGLENGTH;
- }
- if (long_ret < 0) {
- DEBUGMSGTL(("snmpTargetParamsEntry",
- "write to snmpTargetParamsMPModel: MP Model out of rangen"));
- return SNMP_ERR_INCONSISTENTVALUE;
- }
- } else if (action == RESERVE2) {
- snmpTargetParamsOID[snmpTargetParamsOIDLen - 1] =
- SNMPTARGETPARAMSMPMODELCOLUMN;
- params = search_snmpTargetParamsTable(snmpTargetParamsOID,
- snmpTargetParamsOIDLen,
- name, &name_len, 1);
- if (params == NULL) {
- DEBUGMSGTL(("snmpTargetParamsEntry",
- "write to snmpTargetParamsMPModel: BAD OIDn"));
- return SNMP_ERR_INCONSISTENTNAME;
- } else {
- /*
- * Row exists, check if it is changeable.
- */
- if (params->storageType == SNMP_STORAGE_READONLY) {
- DEBUGMSGTL(("snmpTargetParamsEntry",
- "write to snmpTargetParamMPModel: row is read onlyn"));
- return SNMP_ERR_NOTWRITABLE;
- }
- /*
- * Check if row is active.
- */
- if (params->rowStatus == SNMP_ROW_ACTIVE) {
- DEBUGMSGTL(("snmpTargetParamsEntry",
- "write to snmpTargetParamsMPModel: this change not allowed in active row.n"));
- return SNMP_ERR_INCONSISTENTVALUE;
- }
- old_mp = params->mpModel;
- params->mpModel = long_ret;
- if (params->rowStatus == SNMP_ROW_NOTREADY &&
- snmpTargetParams_rowStatusCheck(params)) {
- params->rowStatus = SNMP_ROW_NOTINSERVICE;
- }
- }
- } else if (action == COMMIT) {
- snmpTargetParamsOID[snmpTargetParamsOIDLen - 1] =
- SNMPTARGETPARAMSMPMODELCOLUMN;
- if ((params = search_snmpTargetParamsTable(snmpTargetParamsOID,
- snmpTargetParamsOIDLen,
- name, &name_len,
- 1)) != NULL) {
- update_timestamp(params);
- }
- } else if (action == FREE || action == UNDO) {
- /*
- * Try to undo the SET here (abnormal usage of FREE clause)
- */
- snmpTargetParamsOID[snmpTargetParamsOIDLen - 1] =
- SNMPTARGETPARAMSMPMODELCOLUMN;
- if ((params = search_snmpTargetParamsTable(snmpTargetParamsOID,
- snmpTargetParamsOIDLen,
- name, &name_len,
- 1)) != NULL) {
- if (params->storageType != SNMP_STORAGE_READONLY
- && params->rowStatus != SNMP_ROW_ACTIVE) {
- params->mpModel = old_mp;
- if (params->rowStatus == SNMP_ROW_NOTINSERVICE &&
- !snmpTargetParams_rowStatusCheck(params)) {
- params->rowStatus = SNMP_ROW_NOTREADY;
- }
- }
- }
- }
- return SNMP_ERR_NOERROR;
- } /* write_snmpTargetParamsMPModel */
- /*
- * Assign a value to the secModel variable.
- */
- int
- write_snmpTargetParamsSecModel(int action,
- u_char * var_val,
- u_char var_val_type,
- size_t var_val_len,
- u_char * statP, oid * name, size_t name_len)
- {
- long long_ret = *((long *) var_val);
- static long old_sec;
- struct targetParamTable_struct *params = NULL;
- if (action == RESERVE1) {
- if (var_val_type != ASN_INTEGER) {
- DEBUGMSGTL(("snmpTargetParamsEntry",
- "write to snmpTargetParamsSecModel: not ASN_INTEGERn"));
- return SNMP_ERR_WRONGTYPE;
- }
- if (var_val_len != sizeof(long)) {
- DEBUGMSGTL(("snmpTargetParamsEntry",
- "write to snmpTargetParamsSecModel: bad lengthn"));
- return SNMP_ERR_WRONGLENGTH;
- }
- if (long_ret <= 0) {
- DEBUGMSGTL(("snmpTargetParamsEntry",
- "write to snmpTargetParamsSecModel: secModel out of rangen"));
- return SNMP_ERR_WRONGVALUE;
- }
- if (find_sec_mod(long_ret) == NULL && long_ret >= 3) {
- DEBUGMSGTL(("snmpTargetParamsEntry",
- "write to snmpTargetParamsSecModel: secModel %d unsupportedn",
- long_ret));
- return SNMP_ERR_INCONSISTENTVALUE;
- }
- } else if (action == RESERVE2) {
- snmpTargetParamsOID[snmpTargetParamsOIDLen - 1] =
- SNMPTARGETPARAMSSECURITYMODELCOLUMN;
- params = search_snmpTargetParamsTable(snmpTargetParamsOID,
- snmpTargetParamsOIDLen,
- name, &name_len, 1);
- if (params == NULL) {
- DEBUGMSGTL(("snmpTargetParamsEntry",
- "write to snmpTargetParamsSecModel: BAD OIDn"));
- return SNMP_ERR_INCONSISTENTNAME;
- } else {
- /*
- * Row exists, check if it is changeable.
- */
- if (params->storageType == SNMP_STORAGE_READONLY) {
- DEBUGMSGTL(("snmpTargetParamsEntry",
- "write to snmpTargetParamSecModel: row is read onlyn"));
- return SNMP_ERR_NOTWRITABLE;
- }
- /*
- * Check if row is active.
- */
- if (params->rowStatus == SNMP_ROW_ACTIVE) {
- DEBUGMSGTL(("snmpTargetParamsEntry",
- "write to snmpTargetParamsSecModel: this change not allowed in active row.n"));
- return SNMP_ERR_INCONSISTENTVALUE;
- }
- old_sec = params->secModel;
- params->secModel = long_ret;
- if (params->rowStatus == SNMP_ROW_NOTREADY &&
- snmpTargetParams_rowStatusCheck(params)) {
- params->rowStatus = SNMP_ROW_NOTINSERVICE;
- }
- }
- } else if (action == COMMIT) {
- snmpTargetParamsOID[snmpTargetParamsOIDLen - 1] =
- SNMPTARGETPARAMSSECURITYMODELCOLUMN;
- if ((params = search_snmpTargetParamsTable(snmpTargetParamsOID,
- snmpTargetParamsOIDLen,
- name, &name_len,
- 1)) != NULL) {
- update_timestamp(params);
- }
- } else if (action == FREE || action == UNDO) {
- /*
- * Try to undo the SET here (abnormal usage of FREE clause)
- */
- snmpTargetParamsOID[snmpTargetParamsOIDLen - 1] =
- SNMPTARGETPARAMSSECURITYMODELCOLUMN;
- if ((params = search_snmpTargetParamsTable(snmpTargetParamsOID,
- snmpTargetParamsOIDLen,
- name, &name_len,
- 1)) != NULL) {
- if (params->storageType != SNMP_STORAGE_READONLY
- && params->rowStatus != SNMP_ROW_ACTIVE) {
- params->secModel = old_sec;
- if (params->rowStatus == SNMP_ROW_NOTINSERVICE &&
- !snmpTargetParams_rowStatusCheck(params)) {
- params->rowStatus = SNMP_ROW_NOTREADY;
- }
- }
- }
- }
- return SNMP_ERR_NOERROR;
- } /* write_snmpTargetParamsSecModel */
- /*
- * Assign a value to the SecLevel variable.
- */
- int
- write_snmpTargetParamsSecLevel(int action,
- u_char * var_val,
- u_char var_val_type,
- size_t var_val_len,
- u_char * statP, oid * name, size_t name_len)
- {
- long long_ret = *((long *) var_val);
- static long old_level;
- struct targetParamTable_struct *params = NULL;
- if (action == RESERVE1) {
- if (var_val_type != ASN_INTEGER) {
- DEBUGMSGTL(("snmpTargetParamsEntry",
- "write to snmpTargetParamsSecLevel: not ASN_INTEGERn"));
- return SNMP_ERR_WRONGTYPE;
- }
- if (var_val_len != sizeof(long)) {
- DEBUGMSGTL(("snmpTargetParamsEntry",
- "write to snmpTargetParamsSecLevel: bad lengthn"));
- return SNMP_ERR_WRONGLENGTH;
- }
- if (long_ret <= 0 || long_ret > 3) {
- DEBUGMSGTL(("snmpTargetParamsEntry",
- "write to snmpTargetParamsSecLevel: security level is not noAuthNoPriv(1), authNopriv(2) or authPriv(3)n"));
- return SNMP_ERR_WRONGVALUE;
- }
- } else if (action == RESERVE2) {
- snmpTargetParamsOID[snmpTargetParamsOIDLen - 1] =
- SNMPTARGETPARAMSSECURITYLEVELCOLUMN;
- params = search_snmpTargetParamsTable(snmpTargetParamsOID,
- snmpTargetParamsOIDLen,
- name, &name_len, 1);
- if (params == NULL) {
- DEBUGMSGTL(("snmpTargetParamsEntry",
- "write to snmpTargetParamsSecLevel: BAD OIDn"));
- return SNMP_ERR_INCONSISTENTNAME;
- } else {
- /*
- * Row exists, check if it is changeable.
- */
- if (params->storageType == SNMP_STORAGE_READONLY) {
- DEBUGMSGTL(("snmpTargetParamsEntry",
- "write to snmpTargetParamSecLevel: row is read onlyn"));
- return SNMP_ERR_NOTWRITABLE;
- }
- /*
- * Check if row is active.
- */
- if (params->rowStatus == SNMP_ROW_ACTIVE) {
- DEBUGMSGTL(("snmpTargetParamsEntry",
- "write to snmpTargetParamsSecLevel: this change not allowed in active row.n"));
- return SNMP_ERR_INCONSISTENTVALUE;
- }
- old_level = params->secLevel;
- params->secLevel = long_ret;
- if (params->rowStatus == SNMP_ROW_NOTREADY &&
- snmpTargetParams_rowStatusCheck(params)) {
- params->rowStatus = SNMP_ROW_NOTINSERVICE;
- }
- }
- } else if (action == COMMIT) {
- snmpTargetParamsOID[snmpTargetParamsOIDLen - 1] =
- SNMPTARGETPARAMSSECURITYLEVELCOLUMN;
- if ((params = search_snmpTargetParamsTable(snmpTargetParamsOID,
- snmpTargetParamsOIDLen,
- name, &name_len,
- 1)) != NULL) {
- update_timestamp(params);
- }
- } else if (action == FREE || action == UNDO) {
- /*
- * Try to undo the SET here (abnormal usage of FREE clause)
- */
- snmpTargetParamsOID[snmpTargetParamsOIDLen - 1] =
- SNMPTARGETPARAMSSECURITYLEVELCOLUMN;
- if ((params = search_snmpTargetParamsTable(snmpTargetParamsOID,
- snmpTargetParamsOIDLen,
- name, &name_len,
- 1)) != NULL) {
- if (params->storageType != SNMP_STORAGE_READONLY
- && params->rowStatus != SNMP_ROW_ACTIVE) {
- params->secLevel = old_level;
- if (params->rowStatus == SNMP_ROW_NOTINSERVICE &&
- !snmpTargetParams_rowStatusCheck(params)) {
- params->rowStatus = SNMP_ROW_NOTREADY;
- }
- }
- }
- }
- return SNMP_ERR_NOERROR;
- } /* write_snmpTargetParamsSecLevel */
- /*
- * Assign a value to the storageType variable.
- */
- int
- write_snmpTargetParamsStorageType(int action,
- u_char * var_val,
- u_char var_val_type,
- size_t var_val_len,
- u_char * statP,
- oid * name, size_t name_len)
- {
- long long_ret = *((long *) var_val);
- static long old_st;
- struct targetParamTable_struct *params = NULL;
- if (action == RESERVE1) {
- if (var_val_type != ASN_INTEGER) {
- DEBUGMSGTL(("snmpTargetParamsEntry",
- "write to snmpTargetParamsStorageType: not ASN_INTEGERn"));
- return SNMP_ERR_WRONGTYPE;
- }
- if (var_val_len != sizeof(long)) {
- DEBUGMSGTL(("snmpTargetParamsEntry",
- "write to snmpTargetParamsStorageType: bad lengthn"));
- return SNMP_ERR_WRONGLENGTH;
- }
- if (long_ret != SNMP_STORAGE_OTHER &&
- long_ret != SNMP_STORAGE_VOLATILE &&
- long_ret != SNMP_STORAGE_NONVOLATILE) {
- DEBUGMSGTL(("snmpTargetParamsEntry",
- "write to snmpTargetParamsStorageType: attempted storage type not a valid"));
- DEBUGMSG(("snmpTargetParamsEntry",
- " value of other(%d), volatile(%d), or nonvolatile(%d)n",
- SNMP_STORAGE_OTHER, SNMP_STORAGE_VOLATILE,
- SNMP_STORAGE_NONVOLATILE));
- return SNMP_ERR_WRONGVALUE;
- }
- } else if (action == RESERVE2) {
- snmpTargetParamsOID[snmpTargetParamsOIDLen - 1] =
- SNMPTARGETPARAMSSTORAGETYPECOLUMN;
- params = search_snmpTargetParamsTable(snmpTargetParamsOID,
- snmpTargetParamsOIDLen,
- name, &name_len, 1);
- if (params == NULL) {
- DEBUGMSGTL(("snmpTargetParamsEntry",
- "write to snmpTargetParamsStorageType: BAD OIDn"));
- return SNMP_ERR_INCONSISTENTNAME;
- } else {
- /*
- * Row exists, check if it is changeable.
- */
- if (params->storageType == SNMP_STORAGE_READONLY ||
- params->storageType == SNMP_STORAGE_PERMANENT) {
- DEBUGMSGTL(("snmpTargetParamsEntry",
- "write to snmpTargetParamsStorageType: row has unchangeable storage status: %dn",
- params->storageType));
- return SNMP_ERR_INCONSISTENTVALUE;
- }
- old_st = params->storageType;
- params->storageType = long_ret;
- }
- } else if (action == FREE || action == UNDO) {
- /*
- * Try to undo the SET here (abnormal usage of FREE clause)
- */
- snmpTargetParamsOID[snmpTargetParamsOIDLen - 1] =
- SNMPTARGETPARAMSSTORAGETYPECOLUMN;
- if ((params = search_snmpTargetParamsTable(snmpTargetParamsOID,
- snmpTargetParamsOIDLen,
- name, &name_len,
- 1)) != NULL) {
- if (params->storageType != SNMP_STORAGE_READONLY
- && params->storageType != SNMP_STORAGE_PERMANENT) {
- params->storageType = old_st;
- }
- }
- }
- return SNMP_ERR_NOERROR;
- } /* write_snmpTargetParamsStorageType */
- /*
- * Assign a value to the secName variable.
- */
- int
- write_snmpTargetParamsSecName(int action,
- u_char * var_val,
- u_char var_val_type,
- size_t var_val_len,
- u_char * statP, oid * name, size_t name_len)
- {
- static char *old_name;
- struct targetParamTable_struct *params = NULL;
- if (action == RESERVE1) {
- if (var_val_type != ASN_OCTET_STR) {
- DEBUGMSGTL(("snmpTargetParamsEntry",
- "write to snmpTargetParamsSecName: not ASN_OCTET_STRn"));
- return SNMP_ERR_WRONGTYPE;
- }
- if (var_val_len > 255 || var_val_len < 0) {
- DEBUGMSGTL(("snmpTargetParamsEntry",
- "write to snmpTargetParamsSecName: bad lengthn"));
- return SNMP_ERR_WRONGLENGTH;
- }
- } else if (action == RESERVE2) {
- snmpTargetParamsOID[snmpTargetParamsOIDLen - 1] =
- SNMPTARGETPARAMSSECURITYNAMECOLUMN;
- params = search_snmpTargetParamsTable(snmpTargetParamsOID,
- snmpTargetParamsOIDLen,
- name, &name_len, 1);
- if (params == NULL) {
- DEBUGMSGTL(("snmpTargetParamsEntry",
- "write to snmpTargetParamsSecName: BAD OIDn"));
- return SNMP_ERR_INCONSISTENTNAME;
- } else {
- /*
- * Row exists, check if it is changeable.
- */
- if (params->storageType == SNMP_STORAGE_READONLY) {
- DEBUGMSGTL(("snmpTargetParamsEntry",
- "write to snmpTargetParamSecName: row is read onlyn"));
- return SNMP_ERR_NOTWRITABLE;
- }
- /*
- * Check if row is active.
- */
- if (params->rowStatus == SNMP_ROW_ACTIVE) {
- DEBUGMSGTL(("snmpTargetParamsEntry",
- "write to snmpTargetParamsSecName: this change not allowed in active row.n"));
- return SNMP_ERR_INCONSISTENTVALUE;
- }
- old_name = params->secName;
- params->secName = (char *) malloc(var_val_len + 1);
- if (params->secName == NULL) {
- return SNMP_ERR_RESOURCEUNAVAILABLE;
- }
- memcpy(params->secName, var_val, var_val_len);
- params->secName[var_val_len] = ' ';
- if (params->rowStatus == SNMP_ROW_NOTREADY &&
- snmpTargetParams_rowStatusCheck(params)) {
- params->rowStatus = SNMP_ROW_NOTINSERVICE;
- }
- }
- } else if (action == COMMIT) {
- snmpTargetParamsOID[snmpTargetParamsOIDLen - 1] =
- SNMPTARGETPARAMSSECURITYNAMECOLUMN;
- if ((params = search_snmpTargetParamsTable(snmpTargetParamsOID,
- snmpTargetParamsOIDLen,
- name, &name_len,
- 1)) != NULL) {
- update_timestamp(params);
- SNMP_FREE(old_name);
- old_name = NULL;
- }
- } else if (action == FREE || action == UNDO) {
- /*
- * Try to undo the SET here (abnormal usage of FREE clause)
- */
- snmpTargetParamsOID[snmpTargetParamsOIDLen - 1] =
- SNMPTARGETPARAMSSECURITYNAMECOLUMN;
- if ((params = search_snmpTargetParamsTable(snmpTargetParamsOID,
- snmpTargetParamsOIDLen,
- name, &name_len,
- 1)) != NULL) {
- if (params->storageType != SNMP_STORAGE_READONLY
- && params->rowStatus != SNMP_ROW_ACTIVE) {
- SNMP_FREE(params->secName);
- params->secName = old_name;
- if (params->rowStatus == SNMP_ROW_NOTINSERVICE &&
- !snmpTargetParams_rowStatusCheck(params)) {
- params->rowStatus = SNMP_ROW_NOTREADY;
- }
- }
- }
- }
- return SNMP_ERR_NOERROR;
- } /* write_snmpTargetParamsSecName */
- /*
- * snmpTargeParams_createNewRow is called from write_snmpTargetParamsRowStatus
- * when a new row is required. It creates a new row with
- * the index of the passed in 'name' (i.e. full index OID) and
- * adds it to the linked list. 'name' should be the full OID of the new index.
- * It passes back 0 if unsuccessfull.
- */
- int
- snmpTargetParams_createNewRow(oid * name, size_t name_len)
- {
- int pNameLen, i;
- struct targetParamTable_struct *temp_struct;
- /*
- * setup a new snmpTargetParamTable structure and add it to the list
- */
- pNameLen = name_len - snmpTargetParamsOIDLen;
- if (pNameLen > 0) {
- temp_struct = snmpTargetParamTable_create();
- temp_struct->paramName = (char *) malloc(pNameLen + 1);
- for (i = 0; i < pNameLen; i++) {
- temp_struct->paramName[i] =
- (char) name[i + snmpTargetParamsOIDLen];
- }
- temp_struct->paramName[pNameLen] = ' ';
- temp_struct->rowStatus = SNMP_ROW_NOTREADY;
- update_timestamp(temp_struct);
- snmpTargetParamTable_addToList(temp_struct, &aPTable);
- return 1;
- }
- return 0;
- } /* snmpTargetParams_createNewRow */
- /*
- * Assign a value to the Row Status variable
- */
- int
- write_snmpTargetParamsRowStatus(int action,
- u_char * var_val,
- u_char var_val_type,
- size_t var_val_len,
- u_char * statP,
- oid * name, size_t name_len)
- {
- static long value;
- struct targetParamTable_struct *params = NULL;
- if (action == RESERVE1) {
- if (var_val_type != ASN_INTEGER) {
- DEBUGMSGTL(("snmpTargetParamsEntry",
- "write to snmpTargetParamsRowStatus not ASN_INTEGERn"));
- return SNMP_ERR_WRONGTYPE;
- }
- if (var_val_len != sizeof(long)) {
- DEBUGMSGTL(("snmpTargetParamsEntry",
- "write to snmpTargetParamsRowStatus: bad lengthn"));
- return SNMP_ERR_WRONGLENGTH;
- }
- value = *((long *) var_val);
- if (value == SNMP_ROW_NOTREADY || value < 1 || value > 6) {
- return SNMP_ERR_WRONGVALUE;
- }
- /*
- * Check index value is reasonable.
- */
- if (name_len < snmpTargetParamsOIDLen + 1 ||
- name_len > snmpTargetParamsOIDLen + 32) {
- DEBUGMSGTL(("snmpTargetParamsEntry", "bad index length %dn",
- name_len - snmpTargetParamsOIDLen));
- return SNMP_ERR_NOCREATION;
- }
- snmpTargetParamsOID[snmpTargetParamsOIDLen - 1] =
- SNMPTARGETPARAMSROWSTATUSCOLUMN;
- params = search_snmpTargetParamsTable(snmpTargetParamsOID,
- snmpTargetParamsOIDLen,
- name, &name_len, 1);
- if (params != NULL) {
- if (value == SNMP_ROW_CREATEANDGO
- || value == SNMP_ROW_CREATEANDWAIT) {
- value = SNMP_ROW_NOTREADY;
- return SNMP_ERR_INCONSISTENTVALUE;
- }
- if (params->storageType == SNMP_STORAGE_READONLY) {
- DEBUGMSGTL(("snmpTargetParamsEntry",
- "row is read onlyn"));
- return SNMP_ERR_NOTWRITABLE;
- }
- if (params->storageType == SNMP_STORAGE_PERMANENT) {
- if (value == SNMP_ROW_DESTROY) {
- DEBUGMSGTL(("snmpTargetParamsEntry",
- "unable to destroy permanent rown"));
- return SNMP_ERR_INCONSISTENTVALUE;
- }
- }
- } else {
- if (value == SNMP_ROW_ACTIVE || value == SNMP_ROW_NOTINSERVICE) {
- return SNMP_ERR_INCONSISTENTVALUE;
- }
- if (value == SNMP_ROW_CREATEANDGO
- || value == SNMP_ROW_CREATEANDWAIT) {
- if (snmpTargetParams_createNewRow(name, name_len) == 0) {
- DEBUGMSGTL(("snmpTargetParamsEntry",
- "couldn't malloc() new rown"));
- return SNMP_ERR_RESOURCEUNAVAILABLE;
- }
- }
- }
- } else if (action == ACTION) {
- snmpTargetParamsOID[snmpTargetParamsOIDLen - 1] =
- SNMPTARGETPARAMSROWSTATUSCOLUMN;
- params = search_snmpTargetParamsTable(snmpTargetParamsOID,
- snmpTargetParamsOIDLen,
- name, &name_len, 1);
- if (params != NULL) {
- if (value == SNMP_ROW_CREATEANDGO) {
- /*
- * Check whether all the required objects have been set.
- */
- if (snmpTargetParams_rowStatusCheck(params)) {
- params->rowStatus = SNMP_ROW_ACTIVE;
- } else {
- params->rowStatus = SNMP_ROW_NOTREADY;
- }
- } else if (value == SNMP_ROW_CREATEANDWAIT) {
- /*
- * Check whether all the required objects have been set.
- */
- if (snmpTargetParams_rowStatusCheck(params)) {
- params->rowStatus = SNMP_ROW_NOTINSERVICE;
- } else {
- params->rowStatus = SNMP_ROW_NOTREADY;
- }
- } else if (value == SNMP_ROW_ACTIVE) {
- if (params->rowStatus == SNMP_ROW_NOTINSERVICE) {
- params->rowStatus = SNMP_ROW_ACTIVE;
- } else if (params->rowStatus == SNMP_ROW_NOTREADY) {
- return SNMP_ERR_INCONSISTENTVALUE;
- }
- } else if (value == SNMP_ROW_NOTINSERVICE) {
- if (params->rowStatus == SNMP_ROW_ACTIVE) {
- params->rowStatus = SNMP_ROW_NOTINSERVICE;
- } else if (params->rowStatus == SNMP_ROW_NOTREADY) {
- return SNMP_ERR_INCONSISTENTVALUE;
- }
- }
- }
- } else if (action == COMMIT) {
- snmpTargetParamsOID[snmpTargetParamsOIDLen - 1] =
- SNMPTARGETPARAMSROWSTATUSCOLUMN;
- params = search_snmpTargetParamsTable(snmpTargetParamsOID,
- snmpTargetParamsOIDLen,
- name, &name_len, 1);
- if (params != NULL) {
- if (value == SNMP_ROW_DESTROY) {
- snmpTargetParamTable_remFromList(params, &aPTable);
- }
- if (value == SNMP_ROW_ACTIVE || value == SNMP_ROW_NOTINSERVICE) {
- update_timestamp(params);
- }
- }
- } else if (action == UNDO || action == FREE) {
- snmpTargetParamsOID[snmpTargetParamsOIDLen - 1] =
- SNMPTARGETPARAMSROWSTATUSCOLUMN;
- params = search_snmpTargetParamsTable(snmpTargetParamsOID,
- snmpTargetParamsOIDLen,
- name, &name_len, 1);
- if (value == SNMP_ROW_CREATEANDGO
- || value == SNMP_ROW_CREATEANDWAIT) {
- if (params != NULL) {
- snmpTargetParamTable_remFromList(params, &aPTable);
- }
- }
- }
- return SNMP_ERR_NOERROR;
- }
- struct targetParamTable_struct *
- get_paramEntry(char *name)
- {
- static struct targetParamTable_struct *ptr;
- for (ptr = aPTable; ptr; ptr = ptr->next) {
- if (strcmp(ptr->paramName, name) == 0) {
- return ptr;
- }
- }
- return NULL;
- }