📄 mtetriggertable.c
字号:
/* * var_mteTriggerTable(): * Handle this table separately from the scalar value case. * The workings of this are basically the same as for var_mteTriggerTable above. */unsigned char *var_mteTriggerTable(struct variable *vp, oid * name, size_t * length, int exact, size_t * var_len, WriteMethod ** write_method){ struct mteTriggerTable_data *StorageTmp = NULL; DEBUGMSGTL(("mteTriggerTable", "var_mteTriggerTable: Entering... \n")); /* * this assumes you have registered all your data properly */ if ((StorageTmp = header_complex(mteTriggerTableStorage, vp, name, length, exact, var_len, write_method)) == NULL) { if (vp->magic == MTETRIGGERENTRYSTATUS) *write_method = write_mteTriggerEntryStatus; return NULL; } /* * this is where we do the value assignments for the mib results. */ switch (vp->magic) { case MTETRIGGERCOMMENT: *write_method = write_mteTriggerComment; *var_len = StorageTmp->mteTriggerCommentLen; return (u_char *) StorageTmp->mteTriggerComment; case MTETRIGGERTEST: *write_method = write_mteTriggerTest; *var_len = StorageTmp->mteTriggerTestLen; return (u_char *) StorageTmp->mteTriggerTest; case MTETRIGGERSAMPLETYPE: *write_method = write_mteTriggerSampleType; *var_len = sizeof(StorageTmp->mteTriggerSampleType); return (u_char *) & StorageTmp->mteTriggerSampleType; case MTETRIGGERVALUEID: *write_method = write_mteTriggerValueID; *var_len = StorageTmp->mteTriggerValueIDLen * sizeof(oid); return (u_char *) StorageTmp->mteTriggerValueID; case MTETRIGGERVALUEIDWILDCARD: *write_method = write_mteTriggerValueIDWildcard; *var_len = sizeof(StorageTmp->mteTriggerValueIDWildcard); return (u_char *) & StorageTmp->mteTriggerValueIDWildcard; case MTETRIGGERTARGETTAG: *write_method = write_mteTriggerTargetTag; *var_len = StorageTmp->mteTriggerTargetTagLen; return (u_char *) StorageTmp->mteTriggerTargetTag; case MTETRIGGERCONTEXTNAME: *write_method = write_mteTriggerContextName; *var_len = StorageTmp->mteTriggerContextNameLen; return (u_char *) StorageTmp->mteTriggerContextName; case MTETRIGGERCONTEXTNAMEWILDCARD: *write_method = write_mteTriggerContextNameWildcard; *var_len = sizeof(StorageTmp->mteTriggerContextNameWildcard); return (u_char *) & StorageTmp->mteTriggerContextNameWildcard; case MTETRIGGERFREQUENCY: *write_method = write_mteTriggerFrequency; *var_len = sizeof(StorageTmp->mteTriggerFrequency); return (u_char *) & StorageTmp->mteTriggerFrequency; case MTETRIGGEROBJECTSOWNER: *write_method = write_mteTriggerObjectsOwner; *var_len = StorageTmp->mteTriggerObjectsOwnerLen; return (u_char *) StorageTmp->mteTriggerObjectsOwner; case MTETRIGGEROBJECTS: *write_method = write_mteTriggerObjects; *var_len = StorageTmp->mteTriggerObjectsLen; return (u_char *) StorageTmp->mteTriggerObjects; case MTETRIGGERENABLED: *write_method = write_mteTriggerEnabled; *var_len = sizeof(StorageTmp->mteTriggerEnabled); return (u_char *) & StorageTmp->mteTriggerEnabled; case MTETRIGGERENTRYSTATUS: *write_method = write_mteTriggerEntryStatus; *var_len = sizeof(StorageTmp->mteTriggerEntryStatus); return (u_char *) & StorageTmp->mteTriggerEntryStatus; default: ERROR_MSG(""); } return NULL;}intwrite_mteTriggerComment(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 *tmpvar; struct mteTriggerTable_data *StorageTmp = NULL; static size_t tmplen; size_t newlen = name_len - (sizeof(mteTriggerTable_variables_oid) / sizeof(oid) + 3 - 1); DEBUGMSGTL(("mteTriggerTable", "write_mteTriggerComment entering action=%d... \n", action)); if ((StorageTmp = header_complex(mteTriggerTableStorage, NULL, &name[sizeof(mteTriggerTable_variables_oid) / sizeof(oid) + 3 - 1], &newlen, 1, NULL, NULL)) == NULL) return SNMP_ERR_NOSUCHNAME; /* remove if you support creation here */ switch (action) { case RESERVE1: if (var_val_type != ASN_OCTET_STR) { snmp_log(LOG_ERR, "write to mteTriggerComment not ASN_OCTET_STR\n"); return SNMP_ERR_WRONGTYPE; } if (StorageTmp->storageType != ST_NONVOLATILE) return SNMP_ERR_NOTWRITABLE; break; case RESERVE2: /* * memory reseveration, final preparation... */ break; case FREE: /* * Release any resources that have been allocated */ break; case ACTION: /* * The variable has been stored in string for * you to use, and you have just been asked to do something with * it. Note that anything done here must be reversable in the UNDO case */ tmpvar = StorageTmp->mteTriggerComment; tmplen = StorageTmp->mteTriggerCommentLen; memdup((u_char **) & StorageTmp->mteTriggerComment, var_val, var_val_len); StorageTmp->mteTriggerCommentLen = var_val_len; break; case UNDO: /* * Back out any changes made in the ACTION case */ SNMP_FREE(StorageTmp->mteTriggerComment); StorageTmp->mteTriggerComment = tmpvar; StorageTmp->mteTriggerCommentLen = tmplen; break; case COMMIT: /* * Things are working well, so it's now safe to make the change * permanently. Make sure that anything done here can't fail! */ SNMP_FREE(tmpvar); break; } return SNMP_ERR_NOERROR;}intwrite_mteTriggerTest(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 *tmpvar; struct mteTriggerTable_data *StorageTmp = NULL; static size_t tmplen; size_t newlen = name_len - (sizeof(mteTriggerTable_variables_oid) / sizeof(oid) + 3 - 1); DEBUGMSGTL(("mteTriggerTable", "write_mteTriggerTest entering action=%d... \n", action)); if ((StorageTmp = header_complex(mteTriggerTableStorage, NULL, &name[sizeof(mteTriggerTable_variables_oid) / sizeof(oid) + 3 - 1], &newlen, 1, NULL, NULL)) == NULL) return SNMP_ERR_NOSUCHNAME; /* remove if you support creation here */ switch (action) { case RESERVE1: if (var_val_type != ASN_OCTET_STR) { snmp_log(LOG_ERR, "write to mteTriggerTest not ASN_OCTET_STR\n"); return SNMP_ERR_WRONGTYPE; } if (StorageTmp->storageType != ST_NONVOLATILE) return SNMP_ERR_NOTWRITABLE; break; case RESERVE2: /* * memory reseveration, final preparation... */ break; case FREE: /* * Release any resources that have been allocated */ break; case ACTION: /* * The variable has been stored in string for * you to use, and you have just been asked to do something with * it. Note that anything done here must be reversable in the UNDO case */ tmpvar = StorageTmp->mteTriggerTest; tmplen = StorageTmp->mteTriggerTestLen; memdup((u_char **) & StorageTmp->mteTriggerTest, var_val, var_val_len); StorageTmp->mteTriggerTestLen = var_val_len; break; case UNDO: /* * Back out any changes made in the ACTION case */ SNMP_FREE(StorageTmp->mteTriggerTest); StorageTmp->mteTriggerTest = tmpvar; StorageTmp->mteTriggerTestLen = tmplen; break; case COMMIT: /* * Things are working well, so it's now safe to make the change * permanently. Make sure that anything done here can't fail! */ SNMP_FREE(tmpvar); break; } return SNMP_ERR_NOERROR;}intwrite_mteTriggerSampleType(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 int tmpvar; struct mteTriggerTable_data *StorageTmp = NULL; size_t newlen = name_len - (sizeof(mteTriggerTable_variables_oid) / sizeof(oid) + 3 - 1); DEBUGMSGTL(("mteTriggerTable", "write_mteTriggerSampleType entering action=%d... \n", action)); if ((StorageTmp = header_complex(mteTriggerTableStorage, NULL, &name[sizeof(mteTriggerTable_variables_oid) / sizeof(oid) + 3 - 1], &newlen, 1, NULL, NULL)) == NULL) return SNMP_ERR_NOSUCHNAME; /* remove if you support creation here */ switch (action) { case RESERVE1: if (var_val_type != ASN_INTEGER) { snmp_log(LOG_ERR, "write to mteTriggerSampleType not ASN_INTEGER\n"); return SNMP_ERR_WRONGTYPE; } if (StorageTmp->storageType != ST_NONVOLATILE) return SNMP_ERR_NOTWRITABLE; break; case RESERVE2: /* * memory reseveration, final preparation... */ break; case FREE: /* * Release any resources that have been allocated */ break; case ACTION: /* * The variable has been stored in long_ret for * you to use, and you have just been asked to do something with * it. Note that anything done here must be reversable in the UNDO case */ tmpvar = StorageTmp->mteTriggerSampleType; StorageTmp->mteTriggerSampleType = *((long *) var_val); break; case UNDO: /* * Back out any chang
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -