components/net-snmp/patches/047.18529953.patch
author Ronald Jordan <ron.jordan@oracle.com>
Tue, 11 Oct 2016 11:55:12 -0700
branchs11u3-sru
changeset 7085 cad8ee01213d
parent 3310 a1e1f9db62c6
permissions -rw-r--r--
23206271 Upgrade cffi to 1.5.2 22871503 Upgrade cryptography to version 1.2.3 22520335 Integrate idna into Userland 22520346 Integrate ipaddress into Userland
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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