Dear,
I try to use snmp_open & netsnmp_query_set functions, I write a function
similar attached code. But it's not work.
Please guide me more! How can I create  a row for a table with
netsnmp_query_set function. In this table row indexes determined by strings
such as 'internal0'. How can I specify  these oids?
for example to read snmpTargetAddrTAddress I must type:
snmpget -v2c -c public 192.168.20.5  1.3.6.1.6.3.12.1.2.1.3.'internal0'
But how can I develop a code to work similar this?
What's the problem of my code?

Thanks, Namnabat


void SetTrap()
{
    oid oidsnmpTargetAddrTDomain[] = {1, 3, 6, 1, 6, 3, 12, 1, 2, 1, 2, 0};
    oid oidsnmpTargetAddrTAddress[] = {1, 3, 6, 1, 6, 3, 12, 1, 2, 1, 3, 0};
    oid oidsnmpTargetAddrTimeout[] = {1, 3, 6, 1, 6, 3, 12, 1, 2, 1, 4, 0};
    oid oidsnmpTargetAddrRetryCount[] = {1, 3, 6, 1, 6, 3, 12, 1, 2, 1, 5,
0};
    oid oidsnmpTargetAddrTagList[] = {1, 3, 6, 1, 6, 3, 12, 1, 2, 1, 6, 0};
    oid oidsnmpTargetAddrParams[] = {1, 3, 6, 1, 6, 3, 12, 1, 2, 1, 7, 0};
    oid oidsnmpTargetAddrStorageType[] = {1, 3, 6, 1, 6, 3, 12, 1, 2, 1, 8,
0};
    oid oidsnmpTargetAddrRowStatus[] = {1, 3, 6, 1, 6, 3, 12, 1, 2, 1, 9,
0};
    oid oidsnmpUDPDomain[] = {1, 3, 6, 1, 6, 1, 1, 0};

    char targetaddrname[5];
    char strvalue[255];
    int nvalue;
    targetaddrname[0]=192; targetaddrname[1]=168; targetaddrname[2]=20;
targetaddrname[3]=99; targetaddrname[4]=162;

    struct snmp_session ss, *sp;
    struct oid *op;
    netsnmp_variable_list var;
     netsnmp_variable_list *_returnVar;

    netsnmp_variable_list *var_list = NULL;

    snmp_sess_init(&ss);                        /* initialize session */
    ss.version = SNMP_VERSION_2c;
    ss.remote_port = SNMP_DEFAULT_REMPORT;
    ss.community="public";
    ss.community_len = strlen(ss.community);
    snmp_synch_setup(&ss);


    //if (session.remote_port == SNMP_DEFAULT_REMPORT)
    //    session.remote_port = SNMP_TRAP_PORT;

    if (!(sp = snmp_open(&ss))) {
      snmp_perror("snmp_open");
      snmp_log(LOG_ERR, "something horrible happened!!!\n");
      return;
    }

    memset( &var_list, 0, sizeof(var_list));

    _returnVar = snmp_varlist_add_variable( &var_list,
        oidsnmpTargetAddrTDomain, OID_LENGTH(oidsnmpTargetAddrTDomain),
        ASN_OBJECT_ID, oidsnmpUDPDomain, OID_LENGTH(oidsnmpUDPDomain));

       snmp_log(LOG_ERR, "variable!\n");

    _returnVar = snmp_varlist_add_variable( &var_list,
        oidsnmpTargetAddrTAddress,  OID_LENGTH(oidsnmpTargetAddrTAddress),
        ASN_OCTET_STR, targetaddrname, strlen(targetaddrname));
    nvalue = 1000;

        snmp_log(LOG_ERR, "variable!\n");

    _returnVar = snmp_varlist_add_variable( &var_list,
        oidsnmpTargetAddrTimeout, OID_LENGTH(oidsnmpTargetAddrTimeout),
        ASN_INTEGER, (u_char *)&nvalue, sizeof(nvalue));

    snmp_log(LOG_ERR, "variable!\n");

    nvalue = 5;
    if(_returnVar != NULL)
    {
    _returnVar = snmp_varlist_add_variable( &var_list,
        oidsnmpTargetAddrRetryCount,
OID_LENGTH(oidsnmpTargetAddrRetryCount),
        ASN_INTEGER, (u_char *)&nvalue, sizeof(nvalue));
    }
         snmp_log(LOG_ERR, "variable!\n");

    if(_returnVar != NULL)
    {
    strcpy(strvalue,"internal0");
    _returnVar = snmp_varlist_add_variable( &var_list,
        oidsnmpTargetAddrTagList,  OID_LENGTH(oidsnmpTargetAddrTagList),
        ASN_OCTET_STR, strvalue, strlen(strvalue));
    }
        snmp_log(LOG_ERR, "variable!\n");

    if(_returnVar != NULL)
    {
    strcpy(strvalue,"internal0");
    _returnVar = snmp_varlist_add_variable( &var_list,
        oidsnmpTargetAddrParams,  OID_LENGTH(oidsnmpTargetAddrParams),
        ASN_OCTET_STR, strvalue, strlen(strvalue));
    }
        snmp_log(LOG_ERR, "variable!\n");


    if(_returnVar != NULL)
    {
    nvalue = 5;
    _returnVar = snmp_varlist_add_variable( &var_list,
        oidsnmpTargetAddrStorageType,
OID_LENGTH(oidsnmpTargetAddrStorageType),
        ASN_INTEGER, (u_char *)&nvalue, sizeof(nvalue));
    }
    snmp_log(LOG_ERR, "last variable!\n");


    if(_returnVar != NULL)
    {
    nvalue = 1;
    _returnVar = snmp_varlist_add_variable( &var_list,
        oidsnmpTargetAddrRowStatus,  OID_LENGTH(oidsnmpTargetAddrRowStatus),
        ASN_INTEGER, (u_char *)&nvalue, sizeof(nvalue));
    }
        snmp_log(LOG_ERR, "before first netsnmp_query_set!!!\n");

    netsnmp_query_set( &var_list, sp );


        snmp_log(LOG_ERR, "after first netsnmp_query_set!!!\n");

    memset(&var, 0, sizeof(netsnmp_variable_list));
    snmp_set_var_objid( &var, oidsnmpTargetAddrTDomain,
OID_LENGTH(oidsnmpTargetAddrTDomain));
    snmp_set_var_typed_value(&var,  ASN_OBJECT_ID, oidsnmpUDPDomain,
OID_LENGTH(oidsnmpUDPDomain));
    netsnmp_query_set( &var, sp );

    memset(&var, 0, sizeof(netsnmp_variable_list));

        snmp_log(LOG_ERR, "after second netsnmp_query_set!!!\n");

    snmp_set_var_objid( &var, oidsnmpTargetAddrTAddress,
OID_LENGTH(oidsnmpTargetAddrTAddress));
    snmp_set_var_typed_value(&var, ASN_OCTET_STR, targetaddrname,
strlen(targetaddrname));
    netsnmp_query_set( &var, sp );

        snmp_log(LOG_ERR, "after third netsnmp_query_set!!!\n");

    memset(&var, 0, sizeof(netsnmp_variable_list));
    nvalue = 1000;
    snmp_set_var_objid( &var, oidsnmpTargetAddrTimeout,
OID_LENGTH(oidsnmpTargetAddrTimeout));
    snmp_set_var_typed_value(&var, ASN_INTEGER, (u_char *)&nvalue,
sizeof(nvalue));
    netsnmp_query_set( &var, sp );

        snmp_log(LOG_ERR, "after forth netsnmp_query_set!!!\n");

    memset(&var, 0, sizeof(netsnmp_variable_list));
    nvalue = 5;
    snmp_set_var_objid( &var,oidsnmpTargetAddrRetryCount,
OID_LENGTH(oidsnmpTargetAddrRetryCount));
    snmp_set_var_typed_value(&var,ASN_INTEGER, (u_char *)&nvalue,
sizeof(nvalue));

    netsnmp_query_set( &var, sp );

        snmp_log(LOG_ERR, "after fifth netsnmp_query_set!!!\n");


    memset(&var, 0, sizeof(netsnmp_variable_list));

    strcpy(strvalue,"internal0");
    snmp_set_var_objid( &var, oidsnmpTargetAddrTagList,
OID_LENGTH(oidsnmpTargetAddrTagList));
    snmp_set_var_typed_value(&var,ASN_OCTET_STR, strvalue,
strlen(strvalue));

    netsnmp_query_set( &var, sp );

        snmp_log(LOG_ERR, "after sixth netsnmp_query_set!!!\n");

    memset(&var, 0, sizeof(netsnmp_variable_list));

    strcpy(strvalue,"internal0");

    snmp_set_var_objid( &var, oidsnmpTargetAddrParams,
OID_LENGTH(oidsnmpTargetAddrParams));
    snmp_set_var_typed_value(&var, ASN_OCTET_STR, strvalue,
strlen(strvalue));

    netsnmp_query_set( &var, sp );

        snmp_log(LOG_ERR, "after seventh netsnmp_query_set!!!\n");

    memset(&var, 0, sizeof(netsnmp_variable_list));

    nvalue = 5;
    snmp_set_var_objid( &var, oidsnmpTargetAddrStorageType,
OID_LENGTH(oidsnmpTargetAddrStorageType));
    snmp_set_var_typed_value(&var,ASN_INTEGER, (u_char *)&nvalue,
sizeof(nvalue));

    netsnmp_query_set( &var, sp );

        snmp_log(LOG_ERR, "after eighth netsnmp_query_set!!!\n");


    memset(&var, 0, sizeof(netsnmp_variable_list));

    nvalue = 1;
    snmp_set_var_objid( &var,oidsnmpTargetAddrRowStatus,
OID_LENGTH(oidsnmpTargetAddrRowStatus));
    snmp_set_var_typed_value(&var,ASN_INTEGER, (u_char *)&nvalue,
sizeof(nvalue));

    netsnmp_query_set( &var, sp );

    snmp_log(LOG_ERR, "after nineth netsnmp_query_set!!!\n");
    snmp_free_varbind(var_list);

}
On Mon, Jan 18, 2010 at 11:43 AM, Dave Shield <[email protected]>wrote:

> 2010/1/18 majid namnabat <[email protected]>:
> > In there any way (standard & not standard) to manage trap destinations
> > internally from AgentX? Can I change snmpTargetAddrTable internally?
>
> The most flexible way would be to send SNMP SET requests from the
> subagent to the master agent, to manipulate the target tables.
>    I.e. the subagent would also be acting as a management client
> application.
>
> Use 'snmp_open' to create a connection back to the master agent,
> and then use 'netsnmp_query_set' to send the SET request.
>
> Dave
>
------------------------------------------------------------------------------
The Planet: dedicated and managed hosting, cloud storage, colocation
Stay online with enterprise data centers and the best network in the business
Choose flexible plans and management services without long-term contracts
Personal 24x7 support from experience hosting pros just a phone call away.
http://p.sf.net/sfu/theplanet-com
_______________________________________________
Net-snmp-users mailing list
[email protected]
Please see the following page to unsubscribe or change other options:
https://lists.sourceforge.net/lists/listinfo/net-snmp-users

Reply via email to