int mteEvent_fire (char *owner, char *event, /* Event to invoke */ struct mteTrigger *trigger, /* Trigger that fired */ oid * suffix, size_t s_len) /* Matching instance */ { struct mteEvent *entry; int fired = 0; netsnmp_variable_list owner_var, event_var; DEBUGMSGTL (("disman:event:fire", "Event fired (%s, %s)\n", owner, event)); /* * Retrieve the entry for the specified event */ memset (&owner_var, 0, sizeof (owner_var)); memset (&event_var, 0, sizeof (event_var)); snmp_set_var_typed_value (&owner_var, ASN_OCTET_STR, owner, strlen (owner)); snmp_set_var_typed_value (&event_var, ASN_PRIV_IMPLIED_OCTET_STR, event, strlen (event)); owner_var.next_variable = &event_var; entry = (struct mteEvent *) netsnmp_tdata_row_entry (netsnmp_tdata_row_get_byidx (event_table_data, &owner_var)); if (!entry) { DEBUGMSGTL (("disman:event:fire", "No matching event\n")); return -1; } if (entry->mteEventActions & MTE_EVENT_NOTIFICATION) { DEBUGMSGTL (("disman:event:fire", "Firing notification event\n")); _mteEvent_fire_notify (entry, trigger, suffix, s_len); fired = 1; } #ifndef NETSNMP_NO_WRITE_SUPPORT if (entry->mteEventActions & MTE_EVENT_SET) { DEBUGMSGTL (("disman:event:fire", "Firing set event\n")); _mteEvent_fire_set (entry, trigger, suffix, s_len); fired = 1; } #endif /* NETSNMP_NO_WRITE_SUPPORT */ if (!fired) DEBUGMSGTL (("disman:event:fire", "Matched event is empty\n")); return fired; }
int store_mteOTable(int majorID, int minorID, void *serverarg, void *clientarg) { char line[SNMP_MAXBUF]; char *cptr, *cp; void *vp; size_t tint; netsnmp_tdata_row *row; struct mteObject *entry; DEBUGMSGTL(("disman:event:conf", "Storing mteObjectTable config:\n")); for (row = netsnmp_tdata_row_first( objects_table_data ); row; row = netsnmp_tdata_row_next( objects_table_data, row )) { /* * Skip entries that were set up via static config directives */ entry = (struct mteObject *)netsnmp_tdata_row_entry( row ); if ( entry->flags & MTE_OBJECT_FLAG_FIXED ) continue; DEBUGMSGTL(("disman:event:conf", " Storing (%s %s %ld)\n", entry->mteOwner, entry->mteOName, entry->mteOIndex)); memset(line, 0, sizeof(line)); strcat(line, "_mteOTable "); cptr = line + strlen(line); cp = entry->mteOwner; tint = strlen( cp ); cptr = read_config_store_data(ASN_OCTET_STR, cptr, &cp, &tint ); cp = entry->mteOName; tint = strlen( cp ); cptr = read_config_store_data(ASN_OCTET_STR, cptr, &cp, &tint ); cptr = read_config_store_data(ASN_UNSIGNED, cptr, &entry->mteOIndex, NULL); vp = entry->mteObjectID; cptr = read_config_store_data(ASN_OBJECT_ID, cptr, &vp, &entry->mteObjectID_len); tint = entry->flags & (MTE_OBJECT_FLAG_WILD|MTE_OBJECT_FLAG_ACTIVE); cptr = read_config_store_data(ASN_UNSIGNED, cptr, &tint, NULL); snmpd_store_config(line); } DEBUGMSGTL(("disman:event:conf", " done.\n")); return SNMPERR_SUCCESS; }
struct expExpression * expExpression_getEntry( char *owner, char *name ) { netsnmp_variable_list owner_var, name_var; memset(&owner_var, 0, sizeof(netsnmp_variable_list)); memset(&name_var, 0, sizeof(netsnmp_variable_list)); snmp_set_var_typed_value( &owner_var, ASN_OCTET_STR, (u_char*)owner, strlen(owner)); snmp_set_var_typed_value( &name_var, ASN_OCTET_STR, (u_char*)name, strlen(name)); owner_var.next_variable = &name_var; return (struct expExpression *) netsnmp_tdata_row_entry( netsnmp_tdata_row_get_byidx(expr_table_data, &owner_var)); }
struct expExpression * expExpression_getFirstEntry( void ) { return (struct expExpression *) netsnmp_tdata_row_entry(netsnmp_tdata_row_first(expr_table_data)); }
int store_expETable(int majorID, int minorID, void *serverarg, void *clientarg) { char line[SNMP_MAXBUF]; char *cptr; void *vp; size_t tint; netsnmp_tdata_row *row; struct expExpression *entry; DEBUGMSGTL(("disman:expr:conf", "Storing expExpressionTable config:\n")); for (row = netsnmp_tdata_row_first( expr_table_data ); row; row = netsnmp_tdata_row_next( expr_table_data, row )) { /* * Skip entries that were set up via static config directives */ entry = (struct expExpression *)netsnmp_tdata_row_entry( row ); if ( entry->flags & EXP_FLAG_FIXED ) continue; DEBUGMSGTL(("disman:expr:conf", " Storing (%s %s)\n", entry->expOwner, entry->expName)); /* * Save the basic expExpression entry */ memset(line, 0, sizeof(line)); strcat(line, "_expETable "); cptr = line + strlen(line); vp = entry->expOwner; tint = strlen( vp ); cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp, &tint ); vp = entry->expName; tint = strlen( vp ); cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp, &tint ); vp = entry->expExpression; tint = strlen( vp ); cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp, &tint ); tint = entry->expValueType; cptr = read_config_store_data( ASN_UNSIGNED, cptr, &tint, NULL ); vp = entry->expComment; tint = strlen( vp ); cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp, &tint ); tint = entry->expDeltaInterval; cptr = read_config_store_data( ASN_UNSIGNED, cptr, &tint, NULL ); vp = entry->expPrefix; tint = entry->expPrefix_len; cptr = read_config_store_data( ASN_OBJECT_ID, cptr, &vp, &tint ); tint = entry->flags; cptr = read_config_store_data( ASN_UNSIGNED, cptr, &tint, NULL ); /* XXX - Need to store the 'iquery' access information */ snmpd_store_config(line); } DEBUGMSGTL(("disman:expr:conf", " done.\n")); return SNMPERR_SUCCESS; }
int store_mteETable(int majorID, int minorID, void *serverarg, void *clientarg) { char line[SNMP_MAXBUF]; char *cptr, *cp; void *vp; size_t tint; netsnmp_tdata_row *row; struct mteEvent *entry; DEBUGMSGTL(("disman:event:conf", "Storing mteEventTable config:\n")); for (row = netsnmp_tdata_row_first( event_table_data ); row; row = netsnmp_tdata_row_next( event_table_data, row )) { /* * Skip entries that were set up via static config directives */ entry = (struct mteEvent *)netsnmp_tdata_row_entry( row ); if ( entry->flags & MTE_EVENT_FLAG_FIXED ) continue; DEBUGMSGTL(("disman:event:conf", " Storing (%s %s)\n", entry->mteOwner, entry->mteEName)); /* * Save the basic mteEventTable entry... */ memset(line, 0, sizeof(line)); strcat(line, "_mteETable "); cptr = line + strlen(line); cp = entry->mteOwner; tint = strlen( cp ); cptr = read_config_store_data( ASN_OCTET_STR, cptr, &cp, &tint ); cp = entry->mteEName; tint = strlen( cp ); cptr = read_config_store_data( ASN_OCTET_STR, cptr, &cp, &tint ); cp = entry->mteEventComment; tint = strlen( cp ); cptr = read_config_store_data( ASN_OCTET_STR, cptr, &cp, &tint ); /* ... (but skip the mteEventAction field)... */ tint = entry->flags & (MTE_EVENT_FLAG_ENABLED|MTE_EVENT_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 Notify and/or Set entries separately * (The mteEventAction bits will be set when these are read in). */ if ( entry->mteEventActions & MTE_EVENT_NOTIFICATION ) { memset(line, 0, sizeof(line)); strcat(line, "_mteENotTable "); cptr = line + strlen(line); cp = entry->mteOwner; tint = strlen( cp ); cptr = read_config_store_data(ASN_OCTET_STR, cptr, &cp, &tint ); cp = entry->mteEName; tint = strlen( cp ); cptr = read_config_store_data(ASN_OCTET_STR, cptr, &cp, &tint ); vp = entry->mteNotification; cptr = read_config_store_data(ASN_OBJECT_ID, cptr, &vp, &entry->mteNotification_len); cp = entry->mteNotifyOwner; tint = strlen( cp ); cptr = read_config_store_data(ASN_OCTET_STR, cptr, &cp, &tint ); cp = entry->mteNotifyObjects; tint = strlen( cp ); cptr = read_config_store_data(ASN_OCTET_STR, cptr, &cp, &tint ); snmpd_store_config(line); } if ( entry->mteEventActions & MTE_EVENT_SET ) { memset(line, 0, sizeof(line)); strcat(line, "_mteESetTable "); cptr = line + strlen(line); cp = entry->mteOwner; tint = strlen( cp ); cptr = read_config_store_data(ASN_OCTET_STR, cptr, &cp, &tint ); cp = entry->mteEName; tint = strlen( cp ); cptr = read_config_store_data(ASN_OCTET_STR, cptr, &cp, &tint ); vp = entry->mteSetOID; cptr = read_config_store_data(ASN_OBJECT_ID, cptr, &vp, &entry->mteSetOID_len); tint = entry->mteSetValue; cptr = read_config_store_data(ASN_INTEGER, cptr, &tint, NULL); cp = entry->mteSetTarget; tint = strlen( cp ); cptr = read_config_store_data(ASN_OCTET_STR, cptr, &cp, &tint ); cp = entry->mteSetContext; tint = strlen( cp ); cptr = read_config_store_data(ASN_OCTET_STR, cptr, &cp, &tint ); tint = entry->flags & (MTE_SET_FLAG_OBJWILD|MTE_SET_FLAG_CTXWILD); cptr = read_config_store_data(ASN_UNSIGNED, cptr, &tint, NULL); snmpd_store_config(line); } } DEBUGMSGTL(("disman:event:conf", " done.\n")); return SNMPERR_SUCCESS; }
int store_expOTable(int majorID, int minorID, void *serverarg, void *clientarg) { char line[SNMP_MAXBUF]; char *cptr; void *vp; size_t tint; netsnmp_tdata_row *row; struct expObject *entry; DEBUGMSGTL(("disman:expr:conf", "Storing expObjectTable config:\n")); for (row = netsnmp_tdata_row_first( expObject_table_data ); row; row = netsnmp_tdata_row_next( expObject_table_data, row )) { /* * Skip entries that were set up via static config directives */ entry = (struct expObject *)netsnmp_tdata_row_entry( row ); if ( entry->flags & EXP_OBJ_FLAG_FIXED ) continue; DEBUGMSGTL(("disman:expr:conf", " Storing (%s %s %d)\n", entry->expOwner, entry->expName, entry->expObjectIndex)); /* * Save the basic expObject entry, indexes... */ memset(line, 0, sizeof(line)); strcat(line, "_expOTable "); cptr = line + strlen(line); vp = entry->expOwner; tint = strlen( vp ); cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp, &tint ); vp = entry->expName; tint = strlen( vp ); cptr = read_config_store_data( ASN_OCTET_STR, cptr, &vp, &tint ); tint = entry->expObjectIndex; cptr = read_config_store_data( ASN_UNSIGNED, cptr, &tint, NULL ); /* * ... and column values. */ vp = entry->expObjectID; tint = entry->expObjectID_len; cptr = read_config_store_data( ASN_OBJECT_ID, cptr, &vp, &tint ); tint = entry->expObjectSampleType; cptr = read_config_store_data( ASN_UNSIGNED, cptr, &tint, NULL ); vp = entry->expObjDeltaD; tint = entry->expObjDeltaD_len; cptr = read_config_store_data( ASN_OBJECT_ID, cptr, &vp, &tint ); tint = entry->expObjDiscontinuityType; cptr = read_config_store_data( ASN_UNSIGNED, cptr, &tint, NULL ); vp = entry->expObjCond; tint = entry->expObjCond_len; cptr = read_config_store_data( ASN_OBJECT_ID, cptr, &vp, &tint ); tint = entry->flags; cptr = read_config_store_data( ASN_UNSIGNED, cptr, &tint, NULL ); snmpd_store_config(line); } DEBUGMSGTL(("disman:expr:conf", " done.\n")); return SNMPERR_SUCCESS; }