author | pkidd <patrick.kidd@oracle.com> |
Thu, 10 Mar 2016 08:37:16 -0800 | |
branch | s11u3-sru |
changeset 5572 | 9eae79cfd382 |
parent 3310 | a1e1f9db62c6 |
permissions | -rw-r--r-- |
3310
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
1 |
http://sourceforge.net/p/net-snmp/code/ci/793d596838ff7cb48a73b675d62897c56c9e62df |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
2 |
http://sourceforge.net/p/net-snmp/patches/1237/?page=0 |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
3 |
|
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
4 |
diff --git a/agent/mibgroup/agentx/master_admin.c b/agent/mibgroup/agentx/master_admin.c |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
5 |
index a04b18a..82c1fbf 100644 |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
6 |
--- a/agent/mibgroup/agentx/master_admin.c |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
7 |
+++ b/agent/mibgroup/agentx/master_admin.c |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
8 |
@@ -161,6 +161,7 @@ close_agentx_session(netsnmp_session * session, int sessid) |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
9 |
for (sp = session->subsession; sp != NULL; sp = sp->next) { |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
10 |
|
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
11 |
if (sp->sessid == sessid) { |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
12 |
+ netsnmp_remove_delegated_requests_for_session(sp); |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
13 |
unregister_mibs_by_session(sp); |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
14 |
unregister_index_by_session(sp); |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
15 |
snmp_call_callbacks(SNMP_CALLBACK_APPLICATION, |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
16 |
diff --git a/agent/snmp_agent.c b/agent/snmp_agent.c |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
17 |
index c655900..466ec4c 100644 |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
18 |
--- a/agent/snmp_agent.c |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
19 |
+++ b/agent/snmp_agent.c |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
20 |
@@ -1286,6 +1286,7 @@ init_agent_snmp_session(netsnmp_session * session, netsnmp_pdu *pdu) |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
21 |
asp->treecache_num = -1; |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
22 |
asp->treecache_len = 0; |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
23 |
asp->reqinfo = SNMP_MALLOC_TYPEDEF(netsnmp_agent_request_info); |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
24 |
+ asp->flags = SNMP_AGENT_FLAGS_NONE; |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
25 |
DEBUGMSGTL(("verbose:asp", "asp %p reqinfo %p created\n", |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
26 |
asp, asp->reqinfo)); |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
27 |
|
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
28 |
@@ -1338,6 +1339,9 @@ netsnmp_check_for_delegated(netsnmp_agent_session *asp) |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
29 |
|
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
30 |
if (NULL == asp->treecache) |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
31 |
return 0; |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
32 |
+ |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
33 |
+ if (asp->flags & SNMP_AGENT_FLAGS_CANCEL_IN_PROGRESS) |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
34 |
+ return 0; |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
35 |
|
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
36 |
for (i = 0; i <= asp->treecache_num; i++) { |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
37 |
for (request = asp->treecache[i].requests_begin; request; |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
38 |
@@ -1416,39 +1420,48 @@ int |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
39 |
netsnmp_remove_delegated_requests_for_session(netsnmp_session *sess) |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
40 |
{ |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
41 |
netsnmp_agent_session *asp; |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
42 |
- int count = 0; |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
43 |
+ int total_count = 0; |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
44 |
|
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
45 |
for (asp = agent_delegated_list; asp; asp = asp->next) { |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
46 |
/* |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
47 |
* check each request |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
48 |
*/ |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
49 |
+ int i; |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
50 |
+ int count = 0; |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
51 |
netsnmp_request_info *request; |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
52 |
- for(request = asp->requests; request; request = request->next) { |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
53 |
- /* |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
54 |
- * check session |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
55 |
- */ |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
56 |
- netsnmp_assert(NULL!=request->subtree); |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
57 |
- if(request->subtree->session != sess) |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
58 |
- continue; |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
59 |
+ for (i = 0; i <= asp->treecache_num; i++) { |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
60 |
+ for (request = asp->treecache[i].requests_begin; request; |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
61 |
+ request = request->next) { |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
62 |
+ /* |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
63 |
+ * check session |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
64 |
+ */ |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
65 |
+ netsnmp_assert(NULL!=request->subtree); |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
66 |
+ if(request->subtree->session != sess) |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
67 |
+ continue; |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
68 |
|
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
69 |
- /* |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
70 |
- * matched! mark request as done |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
71 |
- */ |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
72 |
- netsnmp_request_set_error(request, SNMP_ERR_GENERR); |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
73 |
- ++count; |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
74 |
+ /* |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
75 |
+ * matched! mark request as done |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
76 |
+ */ |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
77 |
+ netsnmp_request_set_error(request, SNMP_ERR_GENERR); |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
78 |
+ ++count; |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
79 |
+ } |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
80 |
+ } |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
81 |
+ if (count) { |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
82 |
+ asp->flags |= SNMP_AGENT_FLAGS_CANCEL_IN_PROGRESS; |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
83 |
+ total_count += count; |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
84 |
} |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
85 |
} |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
86 |
|
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
87 |
/* |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
88 |
* if we found any, that request may be finished now |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
89 |
*/ |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
90 |
- if(count) { |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
91 |
+ if(total_count) { |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
92 |
DEBUGMSGTL(("snmp_agent", "removed %d delegated request(s) for session " |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
93 |
- "%08p\n", count, sess)); |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
94 |
- netsnmp_check_outstanding_agent_requests(); |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
95 |
+ "%08p\n", total_count, sess)); |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
96 |
+ netsnmp_check_delegated_requests(); |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
97 |
} |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
98 |
|
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
99 |
- return count; |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
100 |
+ return total_count; |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
101 |
} |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
102 |
|
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
103 |
int |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
104 |
@@ -2587,19 +2600,11 @@ handle_var_requests(netsnmp_agent_session *asp) |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
105 |
return final_status; |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
106 |
} |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
107 |
|
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
108 |
-/* |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
109 |
- * loop through our sessions known delegated sessions and check to see |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
110 |
- * if they've completed yet. If there are no more delegated sessions, |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
111 |
- * check for and process any queued requests |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
112 |
- */ |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
113 |
void |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
114 |
-netsnmp_check_outstanding_agent_requests(void) |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
115 |
+netsnmp_check_delegated_requests(void) |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
116 |
{ |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
117 |
netsnmp_agent_session *asp, *prev_asp = NULL, *next_asp = NULL; |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
118 |
|
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
119 |
- /* |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
120 |
- * deal with delegated requests |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
121 |
- */ |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
122 |
for (asp = agent_delegated_list; asp; asp = next_asp) { |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
123 |
next_asp = asp->next; /* save in case we clean up asp */ |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
124 |
if (!netsnmp_check_for_delegated(asp)) { |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
125 |
@@ -2638,6 +2643,22 @@ netsnmp_check_outstanding_agent_requests(void) |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
126 |
prev_asp = asp; |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
127 |
} |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
128 |
} |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
129 |
+} |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
130 |
+ |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
131 |
+/* |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
132 |
+ * loop through our sessions known delegated sessions and check to see |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
133 |
+ * if they've completed yet. If there are no more delegated sessions, |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
134 |
+ * check for and process any queued requests |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
135 |
+ */ |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
136 |
+void |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
137 |
+netsnmp_check_outstanding_agent_requests(void) |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
138 |
+{ |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
139 |
+ netsnmp_agent_session *asp; |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
140 |
+ |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
141 |
+ /* |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
142 |
+ * deal with delegated requests |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
143 |
+ */ |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
144 |
+ netsnmp_check_delegated_requests(); |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
145 |
|
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
146 |
/* |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
147 |
* if we are processing a set and there are more delegated |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
148 |
@@ -2666,7 +2687,8 @@ netsnmp_check_outstanding_agent_requests(void) |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
149 |
|
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
150 |
netsnmp_processing_set = netsnmp_agent_queued_list; |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
151 |
DEBUGMSGTL(("snmp_agent", "SET request remains queued while " |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
152 |
- "delegated requests finish, asp = %08p\n", asp)); |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
153 |
+ "delegated requests finish, asp = %08p\n", |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
154 |
+ agent_delegated_list)); |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
155 |
break; |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
156 |
} |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
157 |
|
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
158 |
@@ -2726,6 +2748,10 @@ check_delayed_request(netsnmp_agent_session *asp) |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
159 |
case SNMP_MSG_GETBULK: |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
160 |
case SNMP_MSG_GETNEXT: |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
161 |
netsnmp_check_all_requests_status(asp, 0); |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
162 |
+ if (asp->flags & SNMP_AGENT_FLAGS_CANCEL_IN_PROGRESS) { |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
163 |
+ DEBUGMSGTL(("snmp_agent","canceling next walk for asp %p\n", asp)); |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
164 |
+ break; |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
165 |
+ } |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
166 |
handle_getnext_loop(asp); |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
167 |
if (netsnmp_check_for_delegated(asp) && |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
168 |
netsnmp_check_transaction_id(asp->pdu->transid) != |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
169 |
diff --git a/include/net-snmp/agent/snmp_agent.h b/include/net-snmp/agent/snmp_agent.h |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
170 |
index fd84f0f..efbeb5b 100644 |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
171 |
--- a/include/net-snmp/agent/snmp_agent.h |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
172 |
+++ b/include/net-snmp/agent/snmp_agent.h |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
173 |
@@ -32,6 +32,9 @@ extern "C" { |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
174 |
#define SNMP_MAX_PDU_SIZE 64000 /* local constraint on PDU size sent by agent |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
175 |
* (see also SNMP_MAX_MSG_SIZE in snmp_api.h) */ |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
176 |
|
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
177 |
+#define SNMP_AGENT_FLAGS_NONE 0x0 |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
178 |
+#define SNMP_AGENT_FLAGS_CANCEL_IN_PROGRESS 0x1 |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
179 |
+ |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
180 |
/* |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
181 |
* If non-zero, causes the addresses of peers to be logged when receptions |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
182 |
* occur. |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
183 |
@@ -197,6 +200,7 @@ extern "C" { |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
184 |
int treecache_num; /* number of current cache entries */ |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
185 |
netsnmp_cachemap *cache_store; |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
186 |
int vbcount; |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
187 |
+ int flags; |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
188 |
} netsnmp_agent_session; |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
189 |
|
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
190 |
/* |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
191 |
@@ -231,6 +235,7 @@ extern "C" { |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
192 |
int init_master_agent(void); |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
193 |
void shutdown_master_agent(void); |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
194 |
int agent_check_and_process(int block); |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
195 |
+ void netsnmp_check_delegated_requests(void); |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
196 |
void netsnmp_check_outstanding_agent_requests(void); |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
197 |
|
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
198 |
int netsnmp_request_set_error(netsnmp_request_info *request, |
a1e1f9db62c6
18529953 problem in UTILITY/NET-SNMP
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
199 |