Ejemplo n.º 1
0
    /*
     * Find or create the specified event entry
     */
static struct mteEvent *
_find_mteEvent_entry( const char *owner, const char *ename )
{
    netsnmp_variable_list owner_var, ename_var;
    netsnmp_tdata_row *row;
        /*
         * If there's already an existing entry,
         *   then use that...
         */
    memset(&owner_var, 0, sizeof(netsnmp_variable_list));
    memset(&ename_var, 0, sizeof(netsnmp_variable_list));
    snmp_set_var_typed_value(&owner_var, ASN_OCTET_STR, owner, strlen(owner));
    snmp_set_var_typed_value(&ename_var, ASN_PRIV_IMPLIED_OCTET_STR,
                                                        ename, strlen(ename));
    owner_var.next_variable = &ename_var;
    row = netsnmp_tdata_row_get_byidx( event_table_data, &owner_var );
        /*
         * ... otherwise, create a new one
         */
    if (!row)
        row = mteEvent_createEntry( owner, ename, 0 );
    if (!row)
        return NULL;

    /* return (struct mteEvent *)netsnmp_tdata_row_entry( row ); */
    return (struct mteEvent *)row->data;
}
Ejemplo n.º 2
0
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;
}
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));
}