> Hi All,
>
> Sometimes SNMPD is not responding to snmp requests even though it is
> up and running, SNMPD is queuing all the requests without processing
> as netsnmp_processing_set and agent_delegated_list are not getting
> unset. However SNMPD is able to send traps originated by subagent.
>
> We are using Net-snmp-5.2.2 as master and subagent. We have
> 1) Applications which does set and walk operations on our enterprise
> mib
> 2) Monitoring application which does get operation on OID
> 1.3.6.1.2.1.1.3.0 (sysUpTime) every 10secs
> 3) Applications which sends number of traps due to changes in the
> system
>
> Our analysis:
> When the problem occurred we are doing walks on our enterprise MIB
> followed by set operation, when getnext operation is done
> agent_delegated_list is set and it did not get unset. After this when
> set operation is done in netsnmp_handle_request Snmpd checks if
> agent_delegated_list is set, as it is not unset set request is getting
> queued and as set operation is not processed netsnmp_processing_set
> is not getting unset. For all the further queries SNMPD first checks
> whether netsnmp_processing_set is set , as this not is unset all the
> requests are getting queued up without getting processed
>
> So the root cause seems to be agent_delegated_list field not getting
> unset, even I did not see any pending timers in the alarm list
>
> This problem is coming very frequently. Can you please help us if this
> kind of problem is seen earlier and any help on this will be
> appreciated.
>
>
> gdb) p *netsnmp_processing_set->pdu
> $6 = {version = 1, command = 163, reqid = 34644814, msgid = 0, transid
> = 5095,
> sessid = 0, errstat = 0, errindex = 0, time = 0, flags = 0,
> securityModel = 2, securityLevel = 1, msgParseModel = 0,
> transport_data = 0x100b5ac0, transport_data_length = 16,
> tDomain = 0xfe893c4, tDomainLen = 7, variables = 0x100ca7e0,
> community = 0x10084050 "public", community_len = 6, enterprise =
> 0x0,
> enterprise_length = 0, trap_type = 0, specific_type = 0,
> agent_addr = "\000\000\000", contextEngineID = 0x0,
> contextEngineIDLen = 0,
> contextName = 0x100b92f8 "", contextNameLen = 0, securityEngineID =
> 0x0,
> securityEngineIDLen = 0, securityName = 0x0, securityNameLen = 0,
> priority = 0, range_subid = 0, securityStateRef = 0x0}
> (gdb)
>
> (gdb) p *agent_delegated_list->pdu
> $4 = {version = 1, command = 161, reqid = 1989587127, msgid = 0,
> transid = 2658, sessid = 0, errstat = 0, errindex = 0, time = 0,
> flags = 0,
> securityModel = 2, securityLevel = 1, msgParseModel = 0,
> transport_data = 0x100cc2f8, transport_data_length = 16,
> tDomain = 0xfe893c4, tDomainLen = 7, variables = 0x100ccf38,
> community = 0x100cc2e8 "public", community_len = 6, enterprise =
> 0x0,
> enterprise_length = 0, trap_type = 0, specific_type = 0,
> agent_addr = "\000\000\000", contextEngineID = 0x0,
> contextEngineIDLen = 0,
> contextName = 0x100cc3e0 "", contextNameLen = 0, securityEngineID =
> 0x0,
> securityEngineIDLen = 0, securityName = 0x0, securityNameLen = 0,
> priority = 0, range_subid = 0, securityStateRef = 0x0}
>
>
> Code snippet:
> netsnmp_handle_request(netsnmp_agent_session *asp, int status)
> {
> /*
> * if this isn't a delegated request trying to finish,
> * processing of a set request should not start until all
> * delegated requests have completed, and no other new requests
> * should be processed until the set request completes.
> */
> if ((0 == netsnmp_check_delegated_chain_for(asp)) &&
> (asp != netsnmp_processing_set)) {
> /*
> * if we are processing a set and this is not a delegated
> * request, queue the request
> */
> if (netsnmp_processing_set) {
> netsnmp_add_queued(asp);
> DEBUGMSGTL(("snmp_agent",
> "request queued while processing set, "
> "asp = %08p\n", asp));
> return 1;
> }
> /*
> * check for set request
> */
> if (asp->pdu->command == SNMP_MSG_SET) {
> netsnmp_processing_set = asp;
>
> /*
> * if there are delegated requests, we must wait for them
> * to finish.
> */
> if (agent_delegated_list) {
> DEBUGMSGTL(("snmp_agent", "SET request queued while "
> "delegated requests finish, asp = %08p\n",
> asp));
> netsnmp_add_queued(asp);
> return 1;
> }
>
>
>
> Thanks,
> Ravi
-------------------------------------------------------------------------
SF.Net email is sponsored by:
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services
for just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________
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