Logo
Home page Net-SNMP

Archive Search:

Require all words?

Site Search:
Google
agent_handler.h Source File
Main Page   Modules   File List  

agent_handler.h

00001 #ifndef AGENT_HANDLER_H
00002 #define AGENT_HANDLER_H
00003 
00004 #ifdef __cplusplus
00005 extern "C" {
00006 #endif
00007 
00008 struct handler_registration_s;
00009 
00010 typedef struct mib_handler_s {
00011    char   *handler_name;
00012    void   *myvoid;       /* for handler's internal use */
00013 
00014    int (*access_method)(struct mib_handler_s *,
00015                         struct handler_registration_s *,
00016                         struct agent_request_info_s   *,
00017                         struct request_info_s         *);
00018 
00019    struct mib_handler_s *next;
00020    struct mib_handler_s *prev;
00021 } mib_handler;
00022 
00023 #define HANDLER_CAN_GETANDGETNEXT     0x1 /* must be able to do both */
00024 #define HANDLER_CAN_SET               0x2
00025 #define HANDLER_CAN_GETBULK           0x4
00026 
00027 #define HANDLER_CAN_RONLY   (HANDLER_CAN_GETANDGETNEXT)
00028 #define HANDLER_CAN_RWRITE  (HANDLER_CAN_GETANDGETNEXT | HANDLER_CAN_SET)
00029 #define HANDLER_CAN_DEFAULT HANDLER_CAN_RONLY
00030 
00031 /* root registration info */
00032 typedef struct handler_registration_s {
00033 
00034    char   *handlerName;  /* for mrTable listings, and other uses */
00035    char   *contextName;  /* NULL = default context */
00036 
00037    /* where are we registered at? */
00038    oid    *rootoid;
00039    size_t  rootoid_len;
00040 
00041    /* handler details */
00042    mib_handler *handler;
00043    int modes;
00044    
00045    /* more optional stuff */
00046    int     priority;
00047    int     range_subid;
00048    oid     range_ubound;
00049    int     timeout;
00050 
00051 } handler_registration;
00052 
00053 /* function handler definitions */
00054 typedef int (NodeHandler)(
00055     mib_handler               *handler,
00056     handler_registration      *reginfo, /* pointer to registration struct */
00057     agent_request_info        *reqinfo, /* pointer to current transaction */
00058     request_info              *requests
00059     );
00060 
00061 typedef struct delegated_cache_s {
00062    int                        transaction_id;
00063    mib_handler               *handler;
00064    handler_registration      *reginfo;
00065    agent_request_info        *reqinfo;
00066    request_info              *requests;
00067    void                      *localinfo;
00068 } delegated_cache;
00069 
00070 /* handler API functions */
00071 int register_handler(handler_registration *reginfo);
00072 int inject_handler(handler_registration *reginfo, mib_handler *handler);
00073 mib_handler *find_handler_by_name(handler_registration *reginfo, char *name);
00074 void *find_handler_data_by_name(handler_registration *reginfo, char *name);
00075 int call_handlers(handler_registration *reginfo,
00076                   agent_request_info   *reqinfo,
00077                   request_info         *requests);
00078 int call_handler(mib_handler          *next_handler,
00079                  handler_registration *reginfo,
00080                  agent_request_info   *reqinfo,
00081                  request_info         *requests);
00082 int call_next_handler(mib_handler          *current,
00083                       handler_registration *reginfo,
00084                       agent_request_info   *reqinfo,
00085                       request_info         *requests);
00086 mib_handler *create_handler(const char *name,
00087                             NodeHandler *handler_access_method);
00088 handler_registration *
00089 create_handler_registration(const char *name,
00090                             NodeHandler *handler_access_method,
00091                             oid *reg_oid, size_t reg_oid_len, int modes);
00092 delegated_cache *
00093 create_delegated_cache(mib_handler               *,
00094                        handler_registration      *,
00095                        agent_request_info        *,
00096                        request_info              *,
00097                        void                      *);
00098 inline delegated_cache *handler_check_cache(delegated_cache *dcache);
00099 
00100 inline void
00101 request_add_list_data(request_info *request, data_list *node);
00102 
00103 inline void *
00104 request_get_list_data(request_info *request, const char *name);
00105 
00106 inline void
00107 free_request_data_set(request_info *request);
00108 
00109 inline void
00110 free_request_data_sets(request_info *request);
00111 
00112 #define REQUEST_IS_DELEGATED     1
00113 #define REQUEST_IS_NOT_DELEGATED 0
00114 void handler_mark_requests_as_delegated(request_info *, int);
00115 void *handler_get_parent_data(request_info *, const char *);
00116 
00117 #ifdef __cplusplus
00118 };
00119 #endif
00120 
00121 #endif /* AGENT_HANDLER_H */

Generated on Sat Nov 10 14:21:00 2001 for net-snmp by doxygen1.2.11 written by Dimitri van Heesch, © 1997-2001
[an error occurred while processing this directive] [an error occurred while processing this directive]

Valid CSS!


Last modified: Wednesday, 01-Aug-2018 04:41:28 UTC
For questions regarding web content and site functionality, please write to the net-snmp-users mail list.