netsnmp_snmp_agent.3
上传用户:wxp200602
上传日期:2007-10-30
资源大小:4028k
文件大小:21k
源码类别:

SNMP编程

开发平台:

Unix_Linux

  1. .TH "net-snmp agent related processing" 3 "28 Nov 2005" "Version 5.2.1.rc3" "net-snmp" " -*- nroff -*-
  2. .ad l
  3. .nh
  4. .SH NAME
  5. net-snmp agent related processing - 
  6. .SS "Data Structures"
  7. .in +1c
  8. .ti -1c
  9. .RI "struct fBaddrCachefP"
  10. .br
  11. .ti -1c
  12. .RI "struct fB_agent_nsapfP"
  13. .br
  14. .ti -1c
  15. .RI "struct fBagent_set_cache_sfP"
  16. .br
  17. .in -1c
  18. .SS "Defines"
  19. .in +1c
  20. .ti -1c
  21. .RI "#define fBSNMP_NEED_REQUEST_LISTfP"
  22. .br
  23. .ti -1c
  24. .RI "#define fBSNMP_ADDRCACHE_SIZEfP   10"
  25. .br
  26. .ti -1c
  27. .RI "#define fBSNMP_ADDRCACHE_MAXAGEfP   300"
  28. .br
  29. .in -1c
  30. .SS "Typedefs"
  31. .in +1c
  32. .ti -1c
  33. .RI "typedef fB_agent_nsapfP fBagent_nsapfP"
  34. .br
  35. .ti -1c
  36. .RI "typedef fBagent_set_cache_sfP fBagent_set_cachefP"
  37. .br
  38. .in -1c
  39. .SS "Enumerations"
  40. .in +1c
  41. .ti -1c
  42. .RI "enum { fBSNMP_ADDRCACHE_UNUSEDfP =  0, fBSNMP_ADDRCACHE_USEDfP =  1 }"
  43. .br
  44. .in -1c
  45. .SS "Functions"
  46. .in +1c
  47. .ti -1c
  48. .RI "int fBnetsnmp_agent_check_packetfP (fBnetsnmp_sessionfP *, struct fBnetsnmp_transport_sfP *, void *, int)"
  49. .br
  50. .ti -1c
  51. .RI "int fBnetsnmp_agent_check_parsefP (fBnetsnmp_sessionfP *, fBnetsnmp_pdufP *, int)"
  52. .br
  53. .ti -1c
  54. .RI "void fBdelete_subnetsnmp_tree_cachefP (fBnetsnmp_agent_sessionfP *asp)"
  55. .br
  56. .ti -1c
  57. .RI "int fBhandle_pdufP (fBnetsnmp_agent_sessionfP *asp)"
  58. .br
  59. .RI "fIThis function calls into netsnmp_set_mode_request_error, sets error_value given a reqinfo->mode value. fP"
  60. .ti -1c
  61. .RI "int fBnetsnmp_handle_requestfP (fBnetsnmp_agent_sessionfP *asp, int status)"
  62. .br
  63. .ti -1c
  64. .RI "int fBnetsnmp_wrap_up_requestfP (fBnetsnmp_agent_sessionfP *asp, int status)"
  65. .br
  66. .ti -1c
  67. .RI "int fBcheck_delayed_requestfP (fBnetsnmp_agent_sessionfP *asp)"
  68. .br
  69. .ti -1c
  70. .RI "int fBhandle_getnext_loopfP (fBnetsnmp_agent_sessionfP *asp)"
  71. .br
  72. .RI "fIrepeatedly calls getnext handlers looking for an answer till all requests are satisified. fP"
  73. .ti -1c
  74. .RI "int fBhandle_set_loopfP (fBnetsnmp_agent_sessionfP *asp)"
  75. .br
  76. .ti -1c
  77. .RI "int fBnetsnmp_check_queued_chain_forfP (fBnetsnmp_agent_sessionfP *asp)"
  78. .br
  79. .ti -1c
  80. .RI "int fBnetsnmp_add_queuedfP (fBnetsnmp_agent_sessionfP *asp)"
  81. .br
  82. .ti -1c
  83. .RI "int fBnetsnmp_remove_from_delegatedfP (fBnetsnmp_agent_sessionfP *asp)"
  84. .br
  85. .ti -1c
  86. .RI "int fBnetsnmp_allocate_globalcacheidfP (void)"
  87. .br
  88. .ti -1c
  89. .RI "int fBnetsnmp_get_local_cachidfP (fBnetsnmp_cachemapfP *cache_store, int globalid)"
  90. .br
  91. .ti -1c
  92. .RI "fBnetsnmp_cachemapfP * fBnetsnmp_get_or_add_local_cachidfP (fBnetsnmp_cachemapfP **cache_store, int globalid, int localid)"
  93. .br
  94. .ti -1c
  95. .RI "void fBnetsnmp_free_cachemapfP (fBnetsnmp_cachemapfP *cache_store)"
  96. .br
  97. .ti -1c
  98. .RI "fBagent_set_cachefP * fBsave_set_cachefP (fBnetsnmp_agent_sessionfP *asp)"
  99. .br
  100. .ti -1c
  101. .RI "int fBget_set_cachefP (fBnetsnmp_agent_sessionfP *asp)"
  102. .br
  103. .ti -1c
  104. .RI "NETSNMP_STATIC_INLINE void fB_reorder_getbulkfP (fBnetsnmp_agent_sessionfP *asp)"
  105. .br
  106. .ti -1c
  107. .RI "int fBgetNextSessIDfP ()"
  108. .br
  109. .ti -1c
  110. .RI "int fBagent_check_and_processfP (int block)"
  111. .br
  112. .RI "fIThis function checks for packets arriving on the SNMP port and processes them(snmp_read) if some are found, using the select(). fP"
  113. .ti -1c
  114. .RI "void fBnetsnmp_addrcache_initialisefP (void)"
  115. .br
  116. .ti -1c
  117. .RI "int fBnetsnmp_addrcache_addfP (const char *addr)"
  118. .br
  119. .ti -1c
  120. .RI "void fBnetsnmp_addrcache_agefP (void)"
  121. .br
  122. .ti -1c
  123. .RI "int fBnetsnmp_register_agent_nsapfP (fBnetsnmp_transportfP *t)"
  124. .br
  125. .ti -1c
  126. .RI "void fBnetsnmp_deregister_agent_nsapfP (int handle)"
  127. .br
  128. .ti -1c
  129. .RI "int fBinit_master_agentfP (void)"
  130. .br
  131. .ti -1c
  132. .RI "void fBclear_nsap_listfP (void)"
  133. .br
  134. .ti -1c
  135. .RI "void fBshutdown_master_agentfP (void)"
  136. .br
  137. .ti -1c
  138. .RI "fBnetsnmp_agent_sessionfP * fBinit_agent_snmp_sessionfP (fBnetsnmp_sessionfP *session, fBnetsnmp_pdufP *pdu)"
  139. .br
  140. .ti -1c
  141. .RI "void fBfree_agent_snmp_sessionfP (fBnetsnmp_agent_sessionfP *asp)"
  142. .br
  143. .ti -1c
  144. .RI "int fBnetsnmp_check_for_delegatedfP (fBnetsnmp_agent_sessionfP *asp)"
  145. .br
  146. .ti -1c
  147. .RI "int fBnetsnmp_check_delegated_chain_forfP (fBnetsnmp_agent_sessionfP *asp)"
  148. .br
  149. .ti -1c
  150. .RI "int fBnetsnmp_check_for_delegated_and_addfP (fBnetsnmp_agent_sessionfP *asp)"
  151. .br
  152. .ti -1c
  153. .RI "int fBnetsnmp_remove_delegated_requests_for_sessionfP (fBnetsnmp_sessionfP *sess)"
  154. .br
  155. .ti -1c
  156. .RI "void fBdump_sess_listfP (void)"
  157. .br
  158. .ti -1c
  159. .RI "void fBnetsnmp_remove_and_free_agent_snmp_sessionfP (fBnetsnmp_agent_sessionfP *asp)"
  160. .br
  161. .ti -1c
  162. .RI "void fBnetsnmp_free_agent_snmp_session_by_sessionfP (fBnetsnmp_sessionfP *sess, void(*free_request)(netsnmp_request_list *))"
  163. .br
  164. .ti -1c
  165. .RI "int fBhandle_snmp_packetfP (int op, fBnetsnmp_sessionfP *session, int reqid, fBnetsnmp_pdufP *pdu, void *magic)"
  166. .br
  167. .RI "fIhandles an incoming SNMP packet into the agent fP"
  168. .ti -1c
  169. .RI "fBnetsnmp_request_infofP * fBnetsnmp_add_varbind_to_cachefP (fBnetsnmp_agent_sessionfP *asp, int vbcount, fBnetsnmp_variable_listfP *varbind_ptr, fBnetsnmp_subtreefP *tp)"
  170. .br
  171. .ti -1c
  172. .RI "int fBcheck_acmfP (fBnetsnmp_agent_sessionfP *asp, u_char type)"
  173. .br
  174. .ti -1c
  175. .RI "int fBnetsnmp_create_subtree_cachefP (fBnetsnmp_agent_sessionfP *asp)"
  176. .br
  177. .ti -1c
  178. .RI "int fBnetsnmp_reassign_requestsfP (fBnetsnmp_agent_sessionfP *asp)"
  179. .br
  180. .ti -1c
  181. .RI "void fBnetsnmp_delete_request_infosfP (fBnetsnmp_request_infofP *reqlist)"
  182. .br
  183. .ti -1c
  184. .RI "void fBnetsnmp_delete_subtree_cachefP (fBnetsnmp_agent_sessionfP *asp)"
  185. .br
  186. .ti -1c
  187. .RI "int fBnetsnmp_check_requests_errorfP (fBnetsnmp_request_infofP *requests)"
  188. .br
  189. .ti -1c
  190. .RI "int fBnetsnmp_check_requests_statusfP (fBnetsnmp_agent_sessionfP *asp, fBnetsnmp_request_infofP *requests, int look_for_specific)"
  191. .br
  192. .ti -1c
  193. .RI "int fBnetsnmp_check_all_requests_statusfP (fBnetsnmp_agent_sessionfP *asp, int look_for_specific)"
  194. .br
  195. .ti -1c
  196. .RI "int fBhandle_var_requestsfP (fBnetsnmp_agent_sessionfP *asp)"
  197. .br
  198. .ti -1c
  199. .RI "void fBnetsnmp_check_outstanding_agent_requestsfP (void)"
  200. .br
  201. .ti -1c
  202. .RI "int fBnetsnmp_check_transaction_idfP (int transaction_id)"
  203. .br
  204. .RI "fIDecide if the requested transaction_id is still being processed within the agent. fP"
  205. .ti -1c
  206. .RI "int fBcheck_getnext_resultsfP (fBnetsnmp_agent_sessionfP *asp)"
  207. .br
  208. .RI "fIreturns 1 if there are valid GETNEXT requests left. fP"
  209. .ti -1c
  210. .RI "int fBhandle_setfP (fBnetsnmp_agent_sessionfP *asp)"
  211. .br
  212. .ti -1c
  213. .RI "NETSNMP_STATIC_INLINE int fB_request_set_errorfP (fBnetsnmp_request_infofP *request, int mode, int error_value)"
  214. .br
  215. .RI "fIset error for a request fP"
  216. .ti -1c
  217. .RI "int fBnetsnmp_request_set_errorfP (fBnetsnmp_request_infofP *request, int error_value)"
  218. .br
  219. .RI "fIset error for a request fP"
  220. .ti -1c
  221. .RI "NETSNMP_INLINE int fBnetsnmp_request_set_error_allfP (fBnetsnmp_request_infofP *requests, int error)"
  222. .br
  223. .RI "fIset error for all requests fP"
  224. .ti -1c
  225. .RI "u_long fBnetsnmp_marker_uptimefP (fBmarker_tfP pm)"
  226. .br
  227. .ti -1c
  228. .RI "u_long fBnetsnmp_timeval_uptimefP (struct timeval *tv)"
  229. .br
  230. .ti -1c
  231. .RI "u_long fBnetsnmp_get_agent_uptimefP (void)"
  232. .br
  233. .ti -1c
  234. .RI "NETSNMP_INLINE void fBnetsnmp_agent_add_list_datafP (fBnetsnmp_agent_request_infofP *ari, fBnetsnmp_data_listfP *fBnodefP)"
  235. .br
  236. .ti -1c
  237. .RI "NETSNMP_INLINE int fBnetsnmp_agent_remove_list_datafP (fBnetsnmp_agent_request_infofP *ari, const char *name)"
  238. .br
  239. .ti -1c
  240. .RI "NETSNMP_INLINE void * fBnetsnmp_agent_get_list_datafP (fBnetsnmp_agent_request_infofP *ari, const char *name)"
  241. .br
  242. .ti -1c
  243. .RI "NETSNMP_INLINE void fBnetsnmp_free_agent_data_setfP (fBnetsnmp_agent_request_infofP *ari)"
  244. .br
  245. .ti -1c
  246. .RI "NETSNMP_INLINE void fBnetsnmp_free_agent_data_setsfP (fBnetsnmp_agent_request_infofP *ari)"
  247. .br
  248. .ti -1c
  249. .RI "NETSNMP_INLINE void fBnetsnmp_free_agent_request_infofP (fBnetsnmp_agent_request_infofP *ari)"
  250. .br
  251. .ti -1c
  252. .RI "int fBnetsnmp_set_request_errorfP (fBnetsnmp_agent_request_infofP *reqinfo, fBnetsnmp_request_infofP *request, int error_value)"
  253. .br
  254. .RI "fIdeprecated, use netsnmp_request_set_error instead fP"
  255. .ti -1c
  256. .RI "int fBnetsnmp_set_mode_request_errorfP (int mode, fBnetsnmp_request_infofP *request, int error_value)"
  257. .br
  258. .RI "fIdeprecated, use netsnmp_request_set_error instead fP"
  259. .ti -1c
  260. .RI "int fBnetsnmp_set_all_requests_errorfP (fBnetsnmp_agent_request_infofP *reqinfo, fBnetsnmp_request_infofP *requests, int error_value)"
  261. .br
  262. .RI "fIset error for all request fP"
  263. .in -1c
  264. .SS "Variables"
  265. .in +1c
  266. .ti -1c
  267. .RI "oid fBversion_sysoidfP [] = { SYSTEM_MIB }"
  268. .br
  269. .ti -1c
  270. .RI "int fBversion_sysoid_lenfP = OID_LENGTH(fBversion_sysoidfP)"
  271. .br
  272. .ti -1c
  273. .RI "int fBlog_addressesfP = 0"
  274. .br
  275. .ti -1c
  276. .RI "fBnetsnmp_agent_sessionfP * fBagent_delegated_listfP = NULL"
  277. .br
  278. .ti -1c
  279. .RI "fBnetsnmp_agent_sessionfP * fBnetsnmp_agent_queued_listfP = NULL"
  280. .br
  281. .ti -1c
  282. .RI "fBnetsnmp_sessionfP * fBmain_sessionfP = NULL"
  283. .br
  284. .ti -1c
  285. .RI "timeval fBstarttimefP"
  286. .br
  287. .in -1c
  288. .SH "Function Documentation"
  289. .PP 
  290. .SS "NETSNMP_STATIC_INLINE int _request_set_error (fBnetsnmp_request_infofP * request, int mode, int error_value)"
  291. .PP
  292. set error for a request 
  293. .PP
  294. Definition at line 3268 of file snmp_agent.c.
  295. .PP
  296. References netsnmp_request_info_s::delegated, netsnmp_request_info_s::processed, REQUEST_IS_NOT_DELEGATED, netsnmp_request_info_s::requestvb, snmp_log(), netsnmp_request_info_s::status, and variable_list::type.
  297. .PP
  298. Referenced by netsnmp_request_set_error(), netsnmp_request_set_error_all(), netsnmp_set_mode_request_error(), and netsnmp_set_request_error().
  299. .SS "int agent_check_and_process (int block)"
  300. .PP
  301. This function checks for packets arriving on the SNMP port and processes them(snmp_read) if some are found, using the select(). 
  302. .PP
  303. If block is non zero, the function call blocks until a packet arrives
  304. .PP
  305. fBParameters:fP
  306. .RS 4
  307. fIblockfP used to control blocking in the select() function, 1 = block forever, and 0 = don't block
  308. .RE
  309. .PP
  310. fBReturns:fP
  311. .RS 4
  312. Returns a positive integer if packets were processed, and -1 if an error was found.
  313. .RE
  314. .PP
  315. .PP
  316. Definition at line 562 of file snmp_agent.c.
  317. .PP
  318. References FD_ZERO, netsnmp_check_outstanding_agent_requests(), NULL, run_alarms(), snmp_log(), snmp_log_perror(), snmp_read(), snmp_select_info(), and snmp_timeout().
  319. .SS "int check_getnext_results (fBnetsnmp_agent_sessionfP * asp)"
  320. .PP
  321. returns 1 if there are valid GETNEXT requests left. 
  322. .PP
  323. Returns 0 if not. 
  324. .PP
  325. Definition at line 2684 of file snmp_agent.c.
  326. .PP
  327. References netsnmp_request_info_s::inclusive, netsnmp_request_info_s::index, netsnmp_agent_request_info_s::mode, netsnmp_agent_session_s::mode, variable_list::name, variable_list::name_length, netsnmp_request_info_s::next, NULL, netsnmp_agent_session_s::oldmode, netsnmp_request_info_s::range_end, netsnmp_request_info_s::range_end_len, netsnmp_request_info_s::repeat, netsnmp_agent_session_s::reqinfo, netsnmp_request_info_s::requestvb, snmp_oid_compare(), snmp_set_var_objid(), snmp_set_var_typed_value(), netsnmp_agent_session_s::treecache, netsnmp_agent_session_s::treecache_num, and variable_list::type.
  328. .PP
  329. Referenced by handle_getnext_loop().
  330. .SS "int handle_getnext_loop (fBnetsnmp_agent_sessionfP * asp)"
  331. .PP
  332. repeatedly calls getnext handlers looking for an answer till all requests are satisified. 
  333. .PP
  334. It's expected that one pass has been made before entering this function 
  335. .PP
  336. Definition at line 2789 of file snmp_agent.c.
  337. .PP
  338. References check_acm(), check_getnext_results(), handle_var_requests(), netsnmp_check_for_delegated(), netsnmp_reassign_requests(), variable_list::next_variable, netsnmp_agent_session_s::pdu, and snmp_pdu::variables.
  339. .PP
  340. Referenced by check_delayed_request(), and handle_pdu().
  341. .SS "int handle_pdu (fBnetsnmp_agent_sessionfP * asp)"
  342. .PP
  343. This function calls into netsnmp_set_mode_request_error, sets error_value given a reqinfo->mode value. 
  344. .PP
  345. It's used to send specific errors back to the agent to process accordingly.
  346. .PP
  347. If error_value is set to SNMP_NOSUCHOBJECT, SNMP_NOSUCHINSTANCE, or SNMP_ENDOFMIBVIEW the following is applicable: Sets the error_value to request->requestvb->type if reqinfo->mode value is set to MODE_GET. If the reqinfo->mode value is set to MODE_GETNEXT or MODE_GETBULK the code calls snmp_log logging an error message.
  348. .PP
  349. Otherwise, the request->status value is checked, if it's < 0 snmp_log is called with an error message and SNMP_ERR_GENERR is assigned to request->status. If the request->status value is >= 0 the error_value is set to request->status.
  350. .PP
  351. fBParameters:fP
  352. .RS 4
  353. fIreqinfofP is a pointer to the netsnmp_agent_request_info struct. It contains the reqinfo->mode which is required to set error_value or log error messages.
  354. .br
  355. fIrequestfP is a pointer to the netsnmp_request_info struct. The error_value is set to request->requestvb->type
  356. .br
  357. fIerror_valuefP is the exception value you want to set, below are possible values.
  358. .IP "(bu" 2
  359. SNMP_NOSUCHOBJECT
  360. .IP "(bu" 2
  361. SNMP_NOSUCHINSTANCE
  362. .IP "(bu" 2
  363. SNMP_ENDOFMIBVIEW
  364. .IP "(bu" 2
  365. SNMP_ERR_NOERROR
  366. .IP "(bu" 2
  367. SNMP_ERR_TOOBIG
  368. .IP "(bu" 2
  369. SNMP_ERR_NOSUCHNAME
  370. .IP "(bu" 2
  371. SNMP_ERR_BADVALUE
  372. .IP "(bu" 2
  373. SNMP_ERR_READONLY
  374. .IP "(bu" 2
  375. SNMP_ERR_GENERR
  376. .IP "(bu" 2
  377. SNMP_ERR_NOACCESS
  378. .IP "(bu" 2
  379. SNMP_ERR_WRONGTYPE
  380. .IP "(bu" 2
  381. SNMP_ERR_WRONGLENGTH
  382. .IP "(bu" 2
  383. SNMP_ERR_WRONGENCODING
  384. .IP "(bu" 2
  385. SNMP_ERR_WRONGVALUE
  386. .IP "(bu" 2
  387. SNMP_ERR_NOCREATION
  388. .IP "(bu" 2
  389. SNMP_ERR_INCONSISTENTVALUE
  390. .IP "(bu" 2
  391. SNMP_ERR_RESOURCEUNAVAILABLE
  392. .IP "(bu" 2
  393. SNMP_ERR_COMMITFAILED
  394. .IP "(bu" 2
  395. SNMP_ERR_UNDOFAILED
  396. .IP "(bu" 2
  397. SNMP_ERR_AUTHORIZATIONERROR
  398. .IP "(bu" 2
  399. SNMP_ERR_NOTWRITABLE
  400. .IP "(bu" 2
  401. SNMP_ERR_INCONSISTENTNAME
  402. .PP
  403. .RE
  404. .PP
  405. fBReturns:fP
  406. .RS 4
  407. Returns error_value under all conditions.
  408. .RE
  409. .PP
  410. .PP
  411. Definition at line 3083 of file snmp_agent.c.
  412. .PP
  413. References check_acm(), snmp_pdu::command, count_varbinds(), snmp_pdu::flags, get_set_cache(), handle_getnext_loop(), handle_set_loop(), handle_var_requests(), netsnmp_agent_session_s::mode, netsnmp_create_subtree_cache(), variable_list::next_variable, NULL, netsnmp_agent_session_s::oldmode, netsnmp_agent_session_s::pdu, netsnmp_agent_session_s::requests, snmp_increment_statistic(), snmp_replace_var_types(), snmp_set_var_typed_value(), netsnmp_agent_session_s::status, variable_list::type, snmp_pdu::variables, and netsnmp_agent_session_s::vbcount.
  414. .PP
  415. Referenced by netsnmp_handle_request().
  416. .SS "int handle_snmp_packet (int op, fBnetsnmp_sessionfP * session, int reqid, fBnetsnmp_pdufP * pdu, void * magic)"
  417. .PP
  418. handles an incoming SNMP packet into the agent 
  419. .PP
  420. Definition at line 1731 of file snmp_agent.c.
  421. .PP
  422. References check_access(), snmp_pdu::command, snmp_pdu::errstat, init_agent_snmp_session(), netsnmp_handle_request(), netsnmp_remove_and_free_agent_snmp_session(), NULL, netsnmp_agent_session_s::pdu, snmp_session::s_snmp_errno, send_easy_trap(), netsnmp_agent_session_s::session, snmp_free_pdu(), snmp_increment_statistic(), snmp_send(), netsnmp_agent_session_s::status, and snmp_pdu::version.
  423. .PP
  424. Referenced by netsnmp_register_agent_nsap().
  425. .SS "fBnetsnmp_request_infofP* netsnmp_add_varbind_to_cache (fBnetsnmp_agent_sessionfP * asp, int vbcount, fBnetsnmp_variable_listfP * varbind_ptr, fBnetsnmp_subtreefP * tp)"
  426. .PP
  427. fBTodofP
  428. .RS 4
  429. make this be more intelligent about ranges. Right now we merely take the highest level commonality of a registration range and use that. At times we might be able to be smarter about checking the range itself as opposed to the node above where the range exists, but I doubt this will come up all that frequently. 
  430. .RE
  431. .PP
  432. .PP
  433. Definition at line 1832 of file snmp_agent.c.
  434. .PP
  435. References netsnmp_request_info_s::agent_req_info, netsnmp_agent_session_s::cache_store, netsnmp_subtree_s::cacheid, snmp_pdu::command, netsnmp_request_info_s::delegated, netsnmp_subtree_s::end_a, netsnmp_subtree_s::end_len, netsnmp_subtree_s::global_cacheid, netsnmp_request_info_s::inclusive, netsnmp_request_info_s::index, variable_list::name, variable_list::name_length, netsnmp_acm_check_subtree(), netsnmp_free_request_data_sets(), netsnmp_get_local_cachid(), netsnmp_get_or_add_local_cachid(), netsnmp_oid_find_prefix(), netsnmp_request_info_s::next, netsnmp_subtree_s::next, NULL, netsnmp_request_info_s::parent_data, netsnmp_agent_session_s::pdu, netsnmp_request_info_s::prev, netsnmp_request_info_s::processed, netsnmp_request_info_s::range_end, netsnmp_request_info_s::range_end_len, netsnmp_agent_session_s::reqinfo, netsnmp_agent_session_s::requests, netsnmp_tree_cache_s::requests_begin, netsnmp_tree_cache_s::requests_end, netsnmp_request_info_s::requestvb, netsnmp_request_info_s::requestvb_start, netsnmp_subtree_s::start_a, netsnmp_subtree_s::start_len, netsnmp_request_info_s::status, netsnmp_tree_cache_s::subtree, netsnmp_request_info_s::subtree, netsnmp_agent_session_s::treecache, netsnmp_agent_session_s::treecache_len, netsnmp_agent_session_s::treecache_num, and variable_list::type.
  436. .PP
  437. Referenced by netsnmp_create_subtree_cache(), and netsnmp_reassign_requests().
  438. .SS "int netsnmp_check_transaction_id (int transaction_id)"
  439. .PP
  440. Decide if the requested transaction_id is still being processed within the agent. 
  441. .PP
  442. This is used to validate whether a delayed cache (containing possibly freed pointers) is still usable.
  443. .PP
  444. returns SNMPERR_SUCCESS if it's still valid, or SNMPERR_GENERR if not. 
  445. .PP
  446. Definition at line 2594 of file snmp_agent.c.
  447. .PP
  448. References netsnmp_agent_session_s::next, NULL, netsnmp_agent_session_s::pdu, and snmp_pdu::transid.
  449. .PP
  450. Referenced by check_delayed_request(), and netsnmp_handler_check_cache().
  451. .SS "int netsnmp_request_set_error (fBnetsnmp_request_infofP * request, int error_value)"
  452. .PP
  453. set error for a request 
  454. .PP
  455. fBParameters:fP
  456. .RS 4
  457. fIrequestfP request which has error 
  458. .br
  459. fIerror_valuefP error value for request
  460. .RE
  461. .PP
  462. .PP
  463. Definition at line 3336 of file snmp_agent.c.
  464. .PP
  465. References _request_set_error(), netsnmp_request_info_s::agent_req_info, and netsnmp_agent_request_info_s::mode.
  466. .PP
  467. Referenced by netsnmp_remove_delegated_requests_for_session().
  468. .SS "NETSNMP_INLINE int netsnmp_request_set_error_all (fBnetsnmp_request_infofP * requests, int error)"
  469. .PP
  470. set error for all requests 
  471. .PP
  472. fBParameters:fP
  473. .RS 4
  474. fIrequestsfP request list 
  475. .br
  476. fIerror_valuefP error value for requests 
  477. .RE
  478. .PP
  479. fBReturns:fP
  480. .RS 4
  481. SNMPERR_SUCCESS, or an error code
  482. .RE
  483. .PP
  484. paranoid sanity checks 
  485. .PP
  486. Definition at line 3351 of file snmp_agent.c.
  487. .PP
  488. References _request_set_error(), netsnmp_request_info_s::agent_req_info, netsnmp_agent_request_info_s::mode, netsnmp_request_info_s::next, NULL, and snmp_log().
  489. .PP
  490. Referenced by netsnmp_set_all_requests_error().
  491. .SS "int netsnmp_set_all_requests_error (fBnetsnmp_agent_request_infofP * reqinfo, fBnetsnmp_request_infofP * requests, int error_value)"
  492. .PP
  493. set error for all request 
  494. .PP
  495. fBDeprecatedfP
  496. .RS 4
  497. use netsnmp_request_set_error_all 
  498. .PP
  499. fBParameters:fP
  500. .RS 4
  501. fIreqinfofP agent_request_info pointer for requests 
  502. .br
  503. fIrequestsfP request list 
  504. .br
  505. fIerror_valuefP error value for requests 
  506. .RE
  507. .PP
  508. fBReturns:fP
  509. .RS 4
  510. error_value 
  511. .RE
  512. .PP
  513. .RE
  514. .PP
  515. .PP
  516. Definition at line 3525 of file snmp_agent.c.
  517. .PP
  518. References netsnmp_request_set_error_all().
  519. .PP
  520. Referenced by netsnmp_cache_helper_handler(), netsnmp_multiplexer_helper_handler(), and netsnmp_read_only_helper().
  521. .SS "int netsnmp_set_mode_request_error (int mode, fBnetsnmp_request_infofP * request, int error_value)"
  522. .PP
  523. deprecated, use netsnmp_request_set_error instead 
  524. .PP
  525. fBDeprecatedfP
  526. .RS 4
  527. , use netsnmp_request_set_error instead 
  528. .PP
  529. fBParameters:fP
  530. .RS 4
  531. fImodefP Net-SNMP agent processing mode 
  532. .br
  533. fIrequestfP request_info pointer 
  534. .br
  535. fIerror_valuefP error value for requests 
  536. .RE
  537. .PP
  538. fBReturns:fP
  539. .RS 4
  540. error_value 
  541. .RE
  542. .PP
  543. .RE
  544. .PP
  545. .PP
  546. Definition at line 3509 of file snmp_agent.c.
  547. .PP
  548. References _request_set_error().
  549. .SS "int netsnmp_set_request_error (fBnetsnmp_agent_request_infofP * reqinfo, fBnetsnmp_request_infofP * request, int error_value)"
  550. .PP
  551. deprecated, use netsnmp_request_set_error instead 
  552. .PP
  553. fBDeprecatedfP
  554. .RS 4
  555. , use netsnmp_request_set_error instead 
  556. .PP
  557. fBParameters:fP
  558. .RS 4
  559. fIreqinfofP agent_request_info pointer for request 
  560. .br
  561. fIrequestfP request_info pointer 
  562. .br
  563. fIerror_valuefP error value for requests 
  564. .RE
  565. .PP
  566. fBReturns:fP
  567. .RS 4
  568. error_value 
  569. .RE
  570. .PP
  571. .RE
  572. .PP
  573. .PP
  574. fBExamples: fP
  575. .in +1c
  576. fBdelayed_instance.cfP.
  577. .PP
  578. Definition at line 3490 of file snmp_agent.c.
  579. .PP
  580. References _request_set_error(), and netsnmp_agent_request_info_s::mode.
  581. .PP
  582. Referenced by netsnmp_call_handlers(), netsnmp_instance_counter32_handler(), netsnmp_instance_helper_handler(), netsnmp_instance_int_handler(), netsnmp_instance_long_handler(), netsnmp_instance_ulong_handler(), netsnmp_old_api_helper(), netsnmp_scalar_group_helper_handler(), netsnmp_scalar_helper_handler(), netsnmp_table_data_helper_handler(), netsnmp_table_data_set_helper_handler(), netsnmp_watched_spinlock_handler(), netsnmp_watched_timestamp_handler(), netsnmp_watcher_helper_handler(), and table_helper_handler().
  583. .SS "int netsnmp_wrap_up_request (fBnetsnmp_agent_sessionfP * asp, int status)"
  584. .PP
  585. if asp->pdu 
  586. .PP
  587. Definition at line 1482 of file snmp_agent.c.
  588. .PP
  589. References _reorder_getbulk(), snmp_pdu::command, count_varbinds(), snmp_pdu::errindex, snmp_pdu::errstat, netsnmp_agent_session_s::index, variable_list::name, variable_list::name_length, netsnmp_remove_and_free_agent_snmp_session(), variable_list::next_variable, NULL, netsnmp_agent_session_s::orig_pdu, netsnmp_agent_session_s::pdu, save_set_cache(), netsnmp_agent_session_s::session, SNMP_FREE, snmp_free_pdu(), snmp_increment_statistic(), snmp_increment_statistic_by(), snmp_log(), snmp_perror(), snmp_send(), sprint_realloc_objid(), netsnmp_agent_session_s::status, variable_list::type, snmp_pdu::variables, and snmp_pdu::version.
  590. .PP
  591. Referenced by check_delayed_request(), and netsnmp_handle_request().