Re: help - SNMP Trap manager registration and deregistrationdynamically...

majid namnabat <[email protected]>
Newsgroups gmane.network.net-snmp.user
Message-ID <[email protected]>
Dear,
I want to be able to register & unregister notification recievers. My
program has many errors & I correct must of them. Also, I found a perl
program. But my main problem is setting oidsnmpTargetAddrTDomain. the value
of this field must be set snmpUDPDomain.
but I can not set it. My code to set oidsnmpTargetAddrTDomain is similar to
this:

    oid oidsnmpTargetAddrTDomain[] =        {1, 3, 6, 1, 6, 3, 12, 1, 2, 1,
2,'i','n','t','e','r','n','a','l','0',0};//not accept
    oid oidsnmpTargetAddrTDomain[] = {1, 3, 6, 1, 6, 3, 12, 1, 2, 1, 2, 0};

    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,
strlen(oidsnmpUDPDomain));

    err = netsnmp_query_set( &var, sp );
    snmp_log(LOG_ERR, "err : %d %d\n",err,nlen);

The above code is correct to set snmpTargetAddrTDomain? I think my main
problem was in this section.



I attached the perl program and also my program and output of my program.



My Program:

//////////////////////////////////////////////////////////////////////////////////////////////////////
    snmp_log(LOG_ERR, "create oidsnmpTargetParamsRowStatus!!!\n");
    memset(&var, 0, sizeof(netsnmp_variable_list));
    nvalue = 5;
    snmp_set_var_objid( &var, oidsnmpTargetParamsRowStatus,
OID_LENGTH(oidsnmpTargetParamsRowStatus));
    snmp_set_var_typed_value(&var,ASN_INTEGER, (u_char *)&nvalue,
sizeof(nvalue));
    err = netsnmp_query_set( &var, sp );
    snmp_log(LOG_ERR, "err : %d\n",err);


//////////////////////////////////////////////////////////////////////////////////////////////////////
    snmp_log(LOG_ERR, "set oidsnmpTargetParamsMPModel!!!\n");
    memset(&var, 0, sizeof(netsnmp_variable_list));
    //nvalue = 3;
    nvalue = 0;
    snmp_set_var_objid( &var,oidsnmpTargetParamsMPModel,
OID_LENGTH(oidsnmpTargetParamsMPModel));
    snmp_set_var_typed_value(&var,ASN_INTEGER, (u_char *)&nvalue,
sizeof(nvalue));
    err = netsnmp_query_set( &var, sp );
    snmp_log(LOG_ERR, "err : %d\n",err);

    ////////////////////////////////////////////////////////////////////////
    snmp_log(LOG_ERR, "set oidsnmpTargetParamsSecurityModel!!!\n");
    memset(&var, 0, sizeof(netsnmp_variable_list));
    //nvalue = 3;
    nvalue = 1;
    snmp_set_var_objid( &var,oidsnmpTargetParamsSecurityModel,
OID_LENGTH(oidsnmpTargetParamsSecurityModel));
    snmp_set_var_typed_value(&var,ASN_INTEGER, (u_char *)&nvalue,
sizeof(nvalue));
    err = netsnmp_query_set( &var, sp );
    snmp_log(LOG_ERR, "err : %d\n",err);

    ////////////////////////////////////////////////////////////////////////
    snmp_log(LOG_ERR, "set oidsnmpTargetParamsSecurityName!!!\n");
    memset(&var, 0, sizeof(netsnmp_variable_list));
    //strcpy(strvalue,"MD5User");
    strcpy(strvalue,"public");
    snmp_set_var_objid( &var,oidsnmpTargetParamsSecurityName,
OID_LENGTH(oidsnmpTargetParamsSecurityName));
    snmp_set_var_typed_value(&var,ASN_OCTET_STR, (char *)&strvalue,
strlen(strvalue));
    err = netsnmp_query_set( &var, sp );
    snmp_log(LOG_ERR, "err : %d\n",err);

    ////////////////////////////////////////////////////////////////////////
    snmp_log(LOG_ERR, "set oidsnmpTargetParamsSecurityLevel!!!\n");
    memset(&var, 0, sizeof(netsnmp_variable_list));
    //nvalue = 2;
    nvalue = 1;
    snmp_set_var_objid( &var,oidsnmpTargetParamsSecurityLevel,
OID_LENGTH(oidsnmpTargetParamsSecurityLevel));
    snmp_set_var_typed_value(&var,ASN_INTEGER, (u_char *)&nvalue,
sizeof(nvalue));
    err = netsnmp_query_set( &var, sp );
    snmp_log(LOG_ERR, "err : %d\n",err);

    ////////////////////////////////////////////////////////////////////////
    snmp_log(LOG_ERR, "set oidsnmpTargetParamsStorageType!!!\n");
    memset(&var, 0, sizeof(netsnmp_variable_list));
    nvalue = 3;
    snmp_set_var_objid( &var,oidsnmpTargetParamsStorageType,
OID_LENGTH(oidsnmpTargetParamsStorageType));
    snmp_set_var_typed_value(&var,ASN_INTEGER, (u_char *)&nvalue,
sizeof(nvalue));
    err = netsnmp_query_set( &var, sp );
    snmp_log(LOG_ERR, "err : %d\n",err);


//////////////////////////////////////////////////////////////////////////////////////////////////////
    snmp_log(LOG_ERR, "active oidsnmpTargetParamsRowStatus!!!\n");
    memset(&var, 0, sizeof(netsnmp_variable_list));
    nvalue = 1;
    snmp_set_var_objid( &var, oidsnmpTargetParamsRowStatus,
OID_LENGTH(oidsnmpTargetParamsRowStatus));
    snmp_set_var_typed_value(&var,ASN_INTEGER, (u_char *)&nvalue,
sizeof(nvalue));
    err = netsnmp_query_set( &var, sp );
    snmp_log(LOG_ERR, "err : %d\n",err);


//////////////////////////////////////////////////////////////////////////////////////////////////////
    snmp_log(LOG_ERR, "create oidsnmpTargetAddrRowStatus!!!\n");
    memset(&var, 0, sizeof(netsnmp_variable_list));
    nvalue = 5;
    snmp_set_var_objid( &var,oidsnmpTargetAddrRowStatus,
OID_LENGTH(oidsnmpTargetAddrRowStatus));
    snmp_set_var_typed_value(&var,ASN_INTEGER, (u_char *)&nvalue,
sizeof(nvalue));
    err = netsnmp_query_set( &var, sp );
    snmp_log(LOG_ERR, "err : %d\n",err);


//////////////////////////////////////////////////////////////////////////////////////////////////////
    snmp_log(LOG_ERR, "set oidsnmpTargetAddrTDomain!!!\n");
    memset(&var, 0, sizeof(netsnmp_variable_list));
    memset(strvalue, 0 , 255);
    strcpy(strvalue,"SNMPv2-TM::snmpUDPDomain");
    int nlen = OID_LENGTH(oidsnmpUDPDomain);
    snmp_set_var_objid( &var, oidsnmpTargetAddrTDomain,
OID_LENGTH(oidsnmpTargetAddrTDomain));
    snmp_set_var_typed_value(&var,  ASN_OBJECT_ID, oidsnmpUDPDomain,
strlen(oidsnmpUDPDomain));
    //snmp_set_var_typed_value(&var,  ASN_OCTET_STR, strvalue,
strlen(strvalue));
    //snmp_set_var_typed_value(&var,  ASN_OBJECT_ID, strvalue,
strlen(strvalue));
    err = netsnmp_query_set( &var, sp );
    snmp_log(LOG_ERR, "err : %d %d %d\n",err,nlen,strlen(oidsnmpUDPDomain));

//////////////////////////////////////////////////////////////////////////////////////////////////////
    snmp_log(LOG_ERR, "set oidsnmpTargetAddrTAddress!!!\n");
    memset(&var, 0, sizeof(netsnmp_variable_list));
    snmp_set_var_objid( &var, oidsnmpTargetAddrTAddress,
OID_LENGTH(oidsnmpTargetAddrTAddress));
    snmp_set_var_typed_value(&var, ASN_OCTET_STR, targetaddrname,
strlen(targetaddrname));
    err = netsnmp_query_set( &var, sp );
    snmp_log(LOG_ERR, "err : %d\n",err);


//////////////////////////////////////////////////////////////////////////////////////////////////////
    snmp_log(LOG_ERR, "set oidsnmpTargetAddrTimeout!!!\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));
    err = netsnmp_query_set( &var, sp );
    snmp_log(LOG_ERR, "err : %d\n",err);


//////////////////////////////////////////////////////////////////////////////////////////////////////
    snmp_log(LOG_ERR, "set oidsnmpTargetAddrRetryCount!!!\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));
    err = netsnmp_query_set( &var, sp );
    snmp_log(LOG_ERR, "err : %d\n",err);


//////////////////////////////////////////////////////////////////////////////////////////////////////
    snmp_log(LOG_ERR, "set oidsnmpTargetAddrTagList!!!\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));
    err = netsnmp_query_set( &var, sp );
    snmp_log(LOG_ERR, "err : %d\n",err);


//////////////////////////////////////////////////////////////////////////////////////////////////////
    snmp_log(LOG_ERR, "set oidsnmpTargetAddrParams!!!\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));
    err = netsnmp_query_set( &var, sp );
    snmp_log(LOG_ERR, "err : %d\n",err);


//////////////////////////////////////////////////////////////////////////////////////////////////////
    snmp_log(LOG_ERR, "set oidsnmpTargetAddrStorageType!!!\n");
    memset(&var, 0, sizeof(netsnmp_variable_list));
    nvalue = 3;
    snmp_set_var_objid( &var, oidsnmpTargetAddrStorageType,
OID_LENGTH(oidsnmpTargetAddrStorageType));
    snmp_set_var_typed_value(&var,ASN_INTEGER, (u_char *)&nvalue,
sizeof(nvalue));
    err = netsnmp_query_set( &var, sp );
    snmp_log(LOG_ERR, "err : %d\n",err);


//////////////////////////////////////////////////////////////////////////////////////////////////////
    snmp_log(LOG_ERR, "active oidsnmpTargetAddrRowStatus!!!\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));
    err = netsnmp_query_set( &var, sp );
    snmp_log(LOG_ERR, "err : %d\n",err);

    ////////////////////////////////////////////////////////////////////////
    snmp_log(LOG_ERR, "create oidsnmpNotifyRowstatus!!!\n");
    memset(&var, 0, sizeof(netsnmp_variable_list));
    nvalue = 5;
    snmp_set_var_objid( &var,oidsnmpNotifyRowstatus,
OID_LENGTH(oidsnmpNotifyRowstatus));
    snmp_set_var_typed_value(&var,ASN_INTEGER, (u_char *)&nvalue,
sizeof(nvalue));
    err = netsnmp_query_set( &var, sp );
    snmp_log(LOG_ERR, "err : %d\n",err);

    ////////////////////////////////////////////////////////////////////////
    snmp_log(LOG_ERR, "set oidsnmpNotifyTag!!!\n");
    memset(&var, 0, sizeof(netsnmp_variable_list));
    strcpy(strvalue,"internal0");
    snmp_set_var_objid( &var,oidsnmpNotifyTag,
OID_LENGTH(oidsnmpNotifyTag));
    snmp_set_var_typed_value(&var,ASN_OCTET_STR, (char *)&strvalue,
strlen(strvalue));
    err = netsnmp_query_set( &var, sp );
    snmp_log(LOG_ERR, "err : %d\n",err);

    ////////////////////////////////////////////////////////////////////////
    snmp_log(LOG_ERR, "set oidsnmpNotifyType!!!\n");
    memset(&var, 0, sizeof(netsnmp_variable_list));
    nvalue = 1;
    snmp_set_var_objid( &var,oidsnmpNotifyType,
OID_LENGTH(oidsnmpNotifyType));
    snmp_set_var_typed_value(&var,ASN_INTEGER, (u_char *)&nvalue,
sizeof(nvalue));
    err = netsnmp_query_set( &var, sp );
    snmp_log(LOG_ERR, "err : %d\n",err);

    ////////////////////////////////////////////////////////////////////////
    snmp_log(LOG_ERR, "set oidsnmpNotifyStorageType!!!\n");
    memset(&var, 0, sizeof(netsnmp_variable_list));
    nvalue = 3;
    snmp_set_var_objid( &var,oidsnmpNotifyStorageType,
OID_LENGTH(oidsnmpNotifyStorageType));
    snmp_set_var_typed_value(&var,ASN_INTEGER, (u_char *)&nvalue,
sizeof(nvalue));
    err = netsnmp_query_set( &var, sp );
    snmp_log(LOG_ERR, "err : %d\n",err);

    ////////////////////////////////////////////////////////////////////////
    snmp_log(LOG_ERR, "active oidsnmpNotifyRowstatus!!!\n");
    memset(&var, 0, sizeof(netsnmp_variable_list));
    nvalue = 1;
    snmp_set_var_objid( &var,oidsnmpNotifyRowstatus,
OID_LENGTH(oidsnmpNotifyRowstatus));
    snmp_set_var_typed_value(&var,ASN_INTEGER, (u_char *)&nvalue,
sizeof(nvalue));
    err = netsnmp_query_set( &var, sp );
    snmp_log(LOG_ERR, "err : %d\n",err);

    snmp_log(LOG_ERR, "set finished!!!\n");


//    snmp_free_varbind(&var);

    snmp_close(sp);


Output of my program:
create oidsnmpTargetParamsRowStatus!!!
err : 0
set oidsnmpTargetParamsMPModel!!!
snmpTargetParamsEntry: write to snmpTargetParamsMPModel: BAD OID
err : 18
set oidsnmpTargetParamsSecurityModel!!!
snmpTargetParamsEntry: write to snmpTargetParamsSecModel: BAD OID
err : 18
set oidsnmpTargetParamsSecurityName!!!
snmpTargetParamsEntry: write to snmpTargetParamsSecName: BAD OID
err : 18
set oidsnmpTargetParamsSecurityLevel!!!
snmpTargetParamsEntry: write to snmpTargetParamsSecLevel: BAD OID
err : 18
set oidsnmpTargetParamsStorageType!!!
snmpTargetParamsEntry: write to snmpTargetParamsStorageType: BAD OID
err : 18
active oidsnmpTargetParamsRowStatus!!!
err : 12
create oidsnmpTargetAddrRowStatus!!!
err : 0
set oidsnmpTargetAddrTDomain!!!
snmp_build: unknown failureerr : -1 3 13
set oidsnmpTargetAddrTAddress!!!
snmpTargetAddrEntry: write to snmpTargetAddrTAddress: BAD OID!
err : 18
set oidsnmpTargetAddrTimeout!!!
snmpTargetAddrEntry: write to snmpTargetAddrTimeout : BAD OID
err : 2
set oidsnmpTargetAddrRetryCount!!!
snmpTargetAddrEntry: write to snmpTargetAddrTimeout: BAD OID
err : 18
set oidsnmpTargetAddrTagList!!!
snmpTargetAddrEntry: write to snmpTargetAddrTagList: BAD OID!
err : 18
set oidsnmpTargetAddrParams!!!
snmpTargetAddrEntry: write to snmpTargetAddrParams: BAD OID!
err : 18
set oidsnmpTargetAddrStorageType!!!
snmpTargetAddrEntry: write to snmpTargetAddrStorageType: BAD OID
err : 18
active oidsnmpTargetAddrRowStatus!!!
err : 12
create oidsnmpNotifyRowstatus!!!
snmpNotifyTable: var_snmpNotifyTable: Entering...
snmpNotifyTable: write_snmpNotifyRowStatus entering action=0...
snmpNotifyTable: write_snmpNotifyRowStatus entering action=4...
err : 12
set oidsnmpNotifyTag!!!
snmpNotifyTable: var_snmpNotifyTable: Entering...
snmpNotifyTable: write_snmpNotifyTag entering action=0...
snmpNotifyTable: write_snmpNotifyTag entering action=1...
snmpNotifyTable: write_snmpNotifyTag entering action=2...
snmpNotifyTable: write_snmpNotifyTag entering action=3...
err : 0
set oidsnmpNotifyType!!!
snmpNotifyTable: var_snmpNotifyTable: Entering...
snmpNotifyTable: write_snmpNotifyType entering action=0...
snmpNotifyTable: write_snmpNotifyType entering action=1...
snmpNotifyTable: write_snmpNotifyType entering action=2...
snmpNotifyTable: write_snmpNotifyType entering action=3...
err : 0
set oidsnmpNotifyStorageType!!!
snmpNotifyTable: var_snmpNotifyTable: Entering...
snmpNotifyTable: write_snmpNotifyStorageType entering action=0...
snmpNotifyTable: write_snmpNotifyStorageType entering action=1...
snmpNotifyTable: write_snmpNotifyStorageType entering action=2...
snmpNotifyTable: write_snmpNotifyStorageType entering action=3...
err : 0
active oidsnmpNotifyRowstatus!!!
snmpNotifyTable: var_snmpNotifyTable: Entering...
snmpNotifyTable: write_snmpNotifyRowStatus entering action=0...
snmpNotifyTable: write_snmpNotifyRowStatus entering action=1...
snmpNotifyTable: write_snmpNotifyRowStatus entering action=2...
snmpNotifyTable: write_snmpNotifyRowStatus entering action=3...
err : 0

Perl Code:
if [ "-r" == "$1" ] ; then
    HOST=$2
    NAME=$3
    COMMUNITY=$4
    snmpset -c public -v 2c 127.0.0.1 snmpNotifyRowStatus.'internal0' i
destroy
    snmpset -c public -v 2c 127.0.0.1 snmpTargetAddrRowStatus.'internal0' i
destroy
    snmpset -c public -v 2c 127.0.0.1 snmpTargetParamsRowStatus.'internal0'
i destroy
    exit 0
fi

HOST=$1
NAME=$2
SINK=$3
COMMUNITY=$4

snmpset -v2c -c public 127.0.0.1   snmpTargetParamsRowStatus.'internal0' i
createAndWait
snmpset -v2c -c public 127.0.0.1   snmpTargetParamsMPModel.'internal0' i 0
snmpTargetParamsSecurityModel.'internal0' i 1
    snmpTargetParamsSecurityName.'internal0' s "public"
snmpTargetParamsSecurityLevel.'internal0' i 1
snmpTargetParamsRowStatus.'internal0' i active

snmpset -v2c -c public 127.0.0.1 \
    snmpTargetAddrRowStatus.'internal0' i createAndWait
snmpset -v2c -c public 127.0.0.1 \
    snmpTargetAddrTDomain.'internal0' o snmpUDPDomain \
    snmpTargetAddrTAddress.'internal0' d $SINK.0.162 \
    snmpTargetAddrTimeout.'internal0' i 0 \
    snmpTargetAddrRetryCount.'internal0' i 0 \
    snmpTargetAddrTagList.'internal0' s $NAME \
    snmpTargetAddrParams.'internal0' s $NAME \
    snmpTargetAddrRowStatus.'internal0' i active

snmpset -v2c -c public 127.0.0.1 \
    snmpNotifyRowStatus.'internal0' i createAndWait
snmpset -v2c -c public 127.0.0.1 \
    snmpNotifyTag.'internal0' s $NAME \
    snmpNotifyType.'internal0' i trap \
    snmpNotifyRowStatus.'internal0' i active

On Fri, Jan 22, 2010 at 2:48 PM, Dave Shield <[email protected]>wrote:

> 2010/1/22 Borra, Kishore Babu <[email protected]>:
> > Right now Iam using the below api as mentioned, which works fine for
> UnRegistering all the Notfication receivers.:-
> >
> >  snmp_call_callbacks(SNMP_CALLBACK_APPLICATION,
> >                       SNMPD_CALLBACK_PRE_UPDATE_CONFIG, NULL);
>
> Fair enough.
> But bear in mind that this may well affect other MIB modules
> as well.  It's designed to be called immediately before
> re-reading the config files, so will typically drop *all*
> snmpd.conf-based settings, for a wide variety of MIB modules.
>
> Invoking the pre-update callback *without* then re-loading the
> config files may result in the loss of other settings.
>
> Dave
>
>
> ------------------------------------------------------------------------------
> Throughout its 18-year history, RSA Conference consistently attracts the
> world's best and brightest in the field, creating opportunities for
> Conference
> attendees to learn about information security's most important issues
> through
> interactions with peers, luminaries and emerging and established companies.
> http://p.sf.net/sfu/rsaconf-dev2dev
> _______________________________________________
> 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
>

------------------------------------------------------------------------------
SOLARIS 10 is the OS for Data Centers - provides features such as DTrace,
Predictive Self Healing and Award Winning ZFS. Get Solaris 10 NOW
http://p.sf.net/sfu/solaris-dev2dev

_______________________________________________
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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.