📄 mtetriggerconf.c
字号:
len = MTE_STR1_LEN; vp = owner; line = read_config_read_data(ASN_OCTET_STR, line, &vp, &len); len = MTE_STR1_LEN; vp = tname; line = read_config_read_data(ASN_OCTET_STR, line, &vp, &len); entry = _find_mteTrigger_entry( owner, tname ); DEBUGMSG(("disman:event:conf", "(%s, %s) ", owner, tname)); /* * Read in the accessible column values. * (Note that the first & third are combined into a single field) */ line = _parse_mteTBlCols( line, entry, 0 ); entry->mteTriggerTest |= MTE_TRIGGER_BOOLEAN; entry->flags |= MTE_TRIGGER_FLAG_VALID; DEBUGMSG(("disman:event:conf", "\n"));}/* * Entries from the mteTriggerThresholdTable */char *_parse_mteTThCols( char *line, struct mteTrigger *entry, int bcomp ){ void *vp; size_t len; line = read_config_read_data(ASN_UNSIGNED, line, &entry->mteTThStartup, NULL); line = read_config_read_data(ASN_INTEGER, line, &entry->mteTThRiseValue, NULL); line = read_config_read_data(ASN_INTEGER, line, &entry->mteTThFallValue, NULL); line = read_config_read_data(ASN_INTEGER, line, &entry->mteTThDRiseValue, NULL); line = read_config_read_data(ASN_INTEGER, line, &entry->mteTThDFallValue, NULL); len = MTE_STR1_LEN; vp = entry->mteTThObjOwner; line = read_config_read_data(ASN_OCTET_STR, line, &vp, &len); len = MTE_STR1_LEN; vp = entry->mteTThObjects; line = read_config_read_data(ASN_OCTET_STR, line, &vp, &len); len = MTE_STR1_LEN; vp = entry->mteTThRiseOwner; line = read_config_read_data(ASN_OCTET_STR, line, &vp, &len); len = MTE_STR1_LEN; vp = entry->mteTThRiseEvent; line = read_config_read_data(ASN_OCTET_STR, line, &vp, &len); len = MTE_STR1_LEN; vp = entry->mteTThFallOwner; line = read_config_read_data(ASN_OCTET_STR, line, &vp, &len); len = MTE_STR1_LEN; vp = entry->mteTThFallEvent; line = read_config_read_data(ASN_OCTET_STR, line, &vp, &len); len = MTE_STR1_LEN; vp = entry->mteTThDRiseOwner; line = read_config_read_data(ASN_OCTET_STR, line, &vp, &len); len = MTE_STR1_LEN; vp = entry->mteTThDRiseEvent; line = read_config_read_data(ASN_OCTET_STR, line, &vp, &len); len = MTE_STR1_LEN; vp = entry->mteTThDFallOwner; line = read_config_read_data(ASN_OCTET_STR, line, &vp, &len); len = MTE_STR1_LEN; vp = entry->mteTThDFallEvent; line = read_config_read_data(ASN_OCTET_STR, line, &vp, &len); return line;}voidparse_mteTThTable(const char *token, char *line){ char owner[MTE_STR1_LEN+1]; char tname[MTE_STR1_LEN+1]; void *vp; size_t len; struct mteTrigger *entry; DEBUGMSGTL(("disman:event:conf", "Parsing mteTriggerThresholdTable config... ")); /* * Read in the index information for this entry * and create a (non-fixed) data structure for it. */ memset( owner, 0, sizeof(owner)); memset( tname, 0, sizeof(tname)); len = MTE_STR1_LEN; vp = owner; line = read_config_read_data(ASN_OCTET_STR, line, &vp, &len); len = MTE_STR1_LEN; vp = tname; line = read_config_read_data(ASN_OCTET_STR, line, &vp, &len); entry = _find_mteTrigger_entry( owner, tname ); DEBUGMSG(("disman:event:conf", "(%s, %s) ", owner, tname)); /* * Read in the accessible column values. */ line = _parse_mteTThCols( line, entry, 0 ); entry->mteTriggerTest |= MTE_TRIGGER_THRESHOLD; entry->flags |= MTE_TRIGGER_FLAG_VALID; DEBUGMSG(("disman:event:conf", "\n"));}/* * Backwards Compatability with the previous implementation */voidparse_mteTriggerTable(const char *token, char *line){ char owner[MTE_STR1_LEN+1]; char tname[MTE_STR1_LEN+1]; void *vp; size_t len; struct mteTrigger *entry; DEBUGMSGTL(("disman:event:conf", "Parsing previous mteTriggerTable config... ")); /* * Read in the index information for this entry * and create a (non-fixed) data structure for it. */ memset( owner, 0, sizeof(owner)); memset( tname, 0, sizeof(tname)); len = MTE_STR1_LEN; vp = owner; line = read_config_read_data(ASN_OCTET_STR, line, &vp, &len); len = MTE_STR1_LEN; vp = tname; line = read_config_read_data(ASN_OCTET_STR, line, &vp, &len); entry = _find_mteTrigger_entry( owner, tname ); DEBUGMSG(("disman:event:conf", "(%s, %s) ", owner, tname)); /* * Read in the accessible column values for each table in turn... * (similar, though not identical to the newer style). */ line = _parse_mteTCols( line, entry, 1 ); line = _parse_mteTDCols( line, entry, 1 ); line = _parse_mteTExCols( line, entry, 1 ); line = _parse_mteTBlCols( line, entry, 1 ); line = _parse_mteTThCols( line, entry, 1 ); /* * ... and then read in the "local internal variables" * XXX - TODO */ entry->flags |= MTE_TRIGGER_FLAG_VALID; /* XXX - mte_enable_trigger(); ??? */ DEBUGMSG(("disman:event:conf", "\n"));}/* =============================================== * * Handler for storing persistent trigger entries * * =============================================== */intstore_mteTTable(int majorID, int minorID, void *serverarg, void *clientarg){ char line[SNMP_MAXBUF]; char *cptr; void *vp; size_t tint; netsnmp_tdata_row *row; struct mteTrigger *entry; DEBUGMSGTL(("disman:event:conf", "Storing mteTriggerTable config:\n")); for (row = netsnmp_tdata_row_first( trigger_table_data ); row; row = netsnmp_tdata_row_next( trigger_table_data, row )) { /* * Skip entries that were set up via static config directives */ entry = (struct mteTrigger *)netsnmp_tdata_row_entry( row ); if ( entry->flags & MTE_TRIGGER_FLAG_FIXED ) continue; DEBUGMSGTL(("disman:event:conf", " Storing (%s %s)\n", entry->mteOwner, entry->mteTName)); /* * Save the basic mteTriggerTable entry... */ memset(line, 0, sizeof(line)); strcat(line, "_mteTTable "); cptr = line + strlen(line); vp = entry->mteOwner; tint = strlen( vp ); cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp, &tint ); vp = entry->mteTName; tint = strlen( vp ); cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp, &tint ); vp = entry->mteTriggerComment; tint = strlen( vp ); cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp, &tint ); /* * ... (but skip the mteTriggerTest and * assorted boolean flag fields)... */ vp = entry->mteTriggerValueID; tint = entry->mteTriggerValueID_len; cptr = read_config_store_data( ASN_OBJECT_ID, cptr, &vp, &tint ); vp = entry->mteTriggerTarget; tint = strlen( vp ); cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp, &tint ); vp = entry->mteTriggerContext; tint = strlen( vp ); cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp, &tint ); tint = entry->mteTriggerFrequency; cptr = read_config_store_data( ASN_UNSIGNED, cptr, &tint, NULL ); vp = entry->mteTriggerOOwner; tint = strlen( vp ); cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp, &tint ); vp = entry->mteTriggerObjects; tint = strlen( vp ); cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp, &tint ); tint = entry->flags & (MTE_TRIGGER_FLAG_VWILD |MTE_TRIGGER_FLAG_CWILD| MTE_TRIGGER_FLAG_ENABLED|MTE_TRIGGER_FLAG_ACTIVE); cptr = read_config_store_data( ASN_UNSIGNED, cptr, &tint, NULL ); /* XXX - Need to store the 'iquery' access information */ snmpd_store_config(line); /* * ... then save the other (relevant) table entries separately, * starting with mteDeltaDiscontinuityTable... */ if ( entry->flags & MTE_TRIGGER_FLAG_DELTA ) { memset(line, 0, sizeof(line)); strcat(line, "_mteTDTable "); cptr = line + strlen(line); vp = entry->mteOwner; tint = strlen( vp ); cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp, &tint ); vp = entry->mteTName; tint = strlen( vp ); cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp, &tint ); vp = entry->mteDeltaDiscontID; tint = entry->mteDeltaDiscontID_len; cptr = read_config_store_data( ASN_OBJECT_ID, cptr, &vp, &tint ); tint = entry->flags & MTE_TRIGGER_FLAG_DWILD; cptr = read_config_store_data( ASN_UNSIGNED, cptr, &tint, NULL ); tint = entry->mteDeltaDiscontIDType; cptr = read_config_store_data( ASN_UNSIGNED, cptr, &tint, NULL ); snmpd_store_config(line); } /* * ... and the three type-specific trigger tables. */ if ( entry->mteTriggerTest & MTE_TRIGGER_EXISTENCE ) { memset(line, 0, sizeof(line)); strcat(line, "_mteTExTable "); cptr = line + strlen(line); vp = entry->mteOwner; tint = strlen( vp ); cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp, &tint ); vp = entry->mteTName; tint = strlen( vp ); cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp, &tint ); tint = (entry->mteTExTest & 0xff) << 8; tint|= (entry->mteTExStartup & 0xff); cptr = read_config_store_data( ASN_UNSIGNED, cptr, &tint, NULL ); vp = entry->mteTExObjOwner; tint = strlen( vp ); cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp, &tint ); vp = entry->mteTExObjects; tint = strlen( vp ); cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp, &tint ); vp = entry->mteTExEvOwner; tint = strlen( vp ); cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp, &tint ); vp = entry->mteTExEvent; tint = strlen( vp ); cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp, &tint ); snmpd_store_config(line); } if ( entry->mteTriggerTest & MTE_TRIGGER_BOOLEAN ) { memset(line, 0, sizeof(line)); strcat(line, "_mteTBlTable "); cptr = line + strlen(line); vp = entry->mteOwner; tint = strlen( vp ); cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp, &tint ); vp = entry->mteTName; tint = strlen( vp ); cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp, &tint ); tint = entry->mteTBoolComparison; tint |= (entry->flags & MTE_TRIGGER_FLAG_BSTART); cptr = read_config_store_data( ASN_UNSIGNED, cptr, &tint, NULL ); tint = entry->mteTBoolValue; cptr = read_config_store_data( ASN_INTEGER, cptr, &tint, NULL ); vp = entry->mteTBoolObjOwner; tint = strlen( vp ); cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp, &tint ); vp = entry->mteTBoolObjects; tint = strlen( vp ); cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp, &tint ); vp = entry->mteTBoolEvOwner; tint = strlen( vp ); cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp, &tint ); vp = entry->mteTBoolEvent; tint = strlen( vp ); cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp, &tint ); snmpd_store_config(line); } if ( entry->mteTriggerTest & MTE_TRIGGER_THRESHOLD ) { memset(line, 0, sizeof(line)); strcat(line, "_mteTThTable "); cptr = line + strlen(line); vp = entry->mteOwner; tint = strlen( vp ); cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp, &tint ); vp = entry->mteTName; tint = strlen( vp ); cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp, &tint ); cptr = read_config_store_data(ASN_UNSIGNED, cptr, &entry->mteTThStartup, NULL ); cptr = read_config_store_data(ASN_INTEGER, cptr, &entry->mteTThRiseValue, NULL ); cptr = read_config_store_data(ASN_INTEGER, cptr, &entry->mteTThFallValue, NULL ); cptr = read_config_store_data(ASN_INTEGER, cptr, &entry->mteTThDRiseValue, NULL ); cptr = read_config_store_data(ASN_INTEGER, cptr, &entry->mteTThDFallValue, NULL ); vp = entry->mteTThObjOwner; tint = strlen( vp ); cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp, &tint ); vp = entry->mteTThObjects; tint = strlen( vp ); cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp, &tint ); vp = entry->mteTThRiseOwner; tint = strlen( vp ); cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp, &tint ); vp = entry->mteTThRiseEvent; tint = strlen( vp ); cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp, &tint ); vp = entry->mteTThFallOwner; tint = strlen( vp ); cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp, &tint ); vp = entry->mteTThFallEvent; tint = strlen( vp ); cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp, &tint ); vp = entry->mteTThDRiseOwner; tint = strlen( vp ); cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp, &tint ); vp = entry->mteTThDRiseEvent; tint = strlen( vp ); cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp, &tint ); vp = entry->mteTThDFallOwner; tint = strlen( vp ); cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp, &tint ); vp = entry->mteTThDFallEvent; tint = strlen( vp ); cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp, &tint ); snmpd_store_config(line); } } DEBUGMSGTL(("disman:event:conf", " done.\n")); return SNMPERR_SUCCESS;}intclear_mteTTable(int majorID, int minorID, void *serverarg, void *clientarg){ netsnmp_tdata_row *row; while (( row = netsnmp_tdata_row_first( trigger_table_data ))) { netsnmp_tdata_remove_and_delete_row( trigger_table_data, row ); } return SNMPERR_SUCCESS;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -