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