⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 table_generic.c

📁 开发snmp的开发包有两个开放的SNMP开发库
💻 C
字号:
/* * table_generic.c * *    Generic table API framework *//** @defgroup table_generic generic_table_API *  General requirements for a table helper. *  @ingroup table * * A given table helper need not implement the whole of this API, *   and may need to adjust the prototype of certain routines. * But this description provides a suitable standard design framework. *    * @{ *//* ======================================================= *  *  Table Maintenance: *      create/delete table *      create/copy/clone/delete row *      add/replace/remove row * * ======================================================= *//** @defgroup table_maintenance table_maintenance * * Routines for maintaining the contents of a table. * This would typically be part of implementing an SNMP MIB, *   but could potentially also be used for a standalone table. * * This section of the generic API is primarily relevant to *   table helpers where the representation of the table is  *   constructed and maintained within the helper itself. * "External" tables will typically look after such aspects *   directly, although this section of the abstract API  *   framework could also help direct the design of such *   table-specific implementations. * * @{ *//** Create a structure to represent the table.  *  * This could be as simple as the head of a linked  *   list, or a more complex container structure.  * The 'name' field would typically be used to  *  distinguish between several tables implemented  *  using the same table helper.  The 'flags' field  *  would be used to control various (helper-specific)  *  aspects of table behaviour.  *  * The table structure returned should typically be  *  regarded as an opaque, private structure. All  *  operations on the content of the table should  *  ideally use the appropriate routines from this API.  */void *netsnmp_generic_create_table( const char *name, int flags ) {}/** Release the structure representing a table.  * Any rows still contained within the table  *   should also be removed and deleted.  */voidnetsnmp_generic_delete_table( void *table ) {}/** Create a new row structure suitable for this style of table.  * Note that this would typically be a 'standalone' row, and  *   would not automatically be inserted into an actual table.  */void *netsnmp_generic_create_row( void ) {}/** Create a new copy of the specified row.  */void *netsnmp_generic_clone_row( void *row ) {}/** Copy the contents of one row into another.  * The destination row structure should be  *   created before this routine is called.  */intnetsnmp_generic_copy_row( void *dst_row, void *src_row ) {}/** Delete a row data structure.  * The row should be removed from any relevant  *   table(s) before this routine is called.  */voidnetsnmp_generic_delete_row( void *row ) {}/** Add a row to the table.  */intnetsnmp_generic_add_row( void *table, void *row ) {}/** Replace one row with another in the table.  * This will typically (but not necessarily) involve  *   two rows sharing the same index information (e.g.  *   to implement update/restore-style SET behaviour).  */intnetsnmp_generic_replace_row( void *table, void *old_row, void *new_row ) {}/** Remove a row from the table.  * The data structure for the row should not be released,  *   and would be the return value of this routine.  */void *netsnmp_generic_remove_row( void *table, void *row ) {}/** Remove and delete a row from the table.  */voidnetsnmp_generic_remove_delete_row( void *table, void *row ) {}/** @} end of table_maintenance *//* ======================================================= *  *  MIB Maintenance: *      create a handler registration *      register/unregister table *      extract table from request *      extract/insert row * * ======================================================= *//** @defgroup mib_maintenance mib_maintenance * * Routines for maintaining a MIB table. * * @{ *//** Create a MIB handler structure.  * This will typically be invoked within the corresponding  *   'netsnmp_generic_register' routine (or the registration  *   code of a sub-helper based on this helper).  *  * Alternatively, it might be called from the initialisation  *   code of a particular MIB table implementation.  */netsnmp_mib_handler *netsnmp_generic_get_handler(void /* table specific */ ) {}/** Free a MIB handler structure, releasing any related resources.  * Possibly called automatically by 'netsnmp_unregister_handler' ?  */netsnmp_generic_free_handler( netsnmp_mib_handler *handler ) {}/** Register a MIB table with the SNMP agent.  */intnetsnmp_generic_register(netsnmp_handler_registration    *reginfo,                         void                            *table,                         netsnmp_table_registration_info *table_info) {}/** Unregister a MIB table from the SNMP agent.  * This should also release the internal representation of the table.  * ?? Is a table-specific version of this needed, or would  *    'netsnmp_unregister_handler' + 'netsnmp_generic_free_handler' do?  */intnetsnmp_generic_unregister(netsnmp_handler_registration    *reginfo) {}/** Extract the table relating to a requested varbind.  */voidnetsnmp_generic_extract_table( netsnmp_request_info *request ) {}/** Extract the row relating to a requested varbind.  */voidnetsnmp_generic_extract_row( netsnmp_request_info *request ) {}/** Associate a (new) row with the requested varbind.  * The row should also be associated with any other  *   varbinds that refer to the same index values.  */voidnetsnmp_generic_insert_row( netsnmp_request_info *request, void *row ) {}/** @} end of mib_maintenance *//* ======================================================= *  *  Row Operations *      get first/this/next row *      get row/next row by index *      get row/next row by OID *      number of rows * * ======================================================= *//** @defgroup table_rows table_rows * * Routines for working with the rows of a table. * * @{ *//** Retrieve the first row of the table.  */void *netsnmp_generic_row_first( void *table ) {}/** Retrieve the given row from the table.  * This could either be the same data pointer,  *   passed in, or a separate row structure  *   sharing the same index values (or NULL).  *  * This routine also provides a means to tell  *   whether a given row is present in the table.  */void *netsnmp_generic_row_get( void *table, void *row ) {}/** Retrieve the following row from the table.  * If the specified row is not present, this  *   routine should return the entry next after  *   the position this row would have occupied.  */void *netsnmp_generic_row_next( void *table, void *row ) {}/** Retrieve the row with the specified index values.  */void *netsnmp_generic_row_get_byidx(  void *table,                                netsnmp_variable_list *indexes ) {}/** Retrieve the next row after the specified index values.  */void *netsnmp_generic_row_next_byidx( void *table,                                netsnmp_variable_list *indexes ) {}/** Retrieve the row with the specified instance OIDs.  */void *netsnmp_generic_row_get_byoid(  void *table, oid *instance, size_t len ) {}/** Retrieve the next row after the specified instance OIDs.  */void *netsnmp_generic_row_next_byoid( void *table, oid *instance, size_t len ) {}/** Report the number of rows in the table.  */intnetsnmp_generic_row_count( void *table ) {}/** @} end of table_rows *//* ======================================================= *  *  Index Operations *      get table index structure *      get row index values/OIDs *      compare row with index/OIDs *      subtree comparisons (index/OIDs) * * ======================================================= *//** @defgroup table_indexes table_indexes * * Routines for working with row indexes. * * @{ *//** Retrieve the indexing structure of the table.  */netsnmp_variable_list *netsnmp_generic_idx( void *table ) {}/** Report the index values for a row.  */netsnmp_variable_list *netsnmp_generic_row_idx( void *row ) {}/** Report the instance OIDs for a row.  */size_tnetsnmp_generic_row_oid( void *row, oid *instances ) {}/** Compare a row against the specified index values.  */intnetsnmp_generic_compare_idx( void *row, netsnmp_variable_list *index ) {}/** Compare a row against the specified instance OIDs.  */intnetsnmp_generic_compare_oid( void *row, oid *instances, size_t len ) {}/** Check if a row lies within a subtree of index values.  */intnetsnmp_generic_compare_subtree_idx( void *row, netsnmp_variable_list *index ) {}/** Check if a row lies within a subtree of instance OIDs.  */intnetsnmp_generic_compare_subtree_oid( void *row, oid *instances, size_t len ) {}/** @} end of table_indexes *//** @} end of table_generic */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -