mfd-top.m2c
上传用户:wxp200602
上传日期:2007-10-30
资源大小:4028k
文件大小:12k
源码类别:

SNMP编程

开发平台:

Unix_Linux

  1. #############################################################  -*- c -*-
  2. ## generic include for XXX. Do not use directly.
  3. ## $Id: mfd-top.m2c,v 1.32.2.3 2005/03/24 00:41:47 rstory Exp $
  4. ########################################################################
  5. ########################################################################
  6. ##
  7. ## mfd function params
  8. ##
  9. @ifconf ${name}.m2d@
  10. @   include ${name}.m2d@
  11. @end@
  12. ########################################################################
  13. @eval $m2c_processing_type = 'h'@
  14. @open ${name}.h@
  15. @eval $hack = "Id"@
  16. /*
  17.  * Note: this file originally auto-generated by mib2c using
  18.  *       version $Revision: 1.32.2.3 $ of $RCSfile: mfd-top.m2c,v $
  19.  *
  20.  * $$hack:$
  21.  */
  22. @include generic-header-top.m2i@
  23. /** @defgroup misc misc: Miscelaneous routines
  24.  *
  25.  * @{
  26.  */
  27. @if $m2c_mark_boundary == 1@
  28. /** START header generated by $RCSfile: mfd-top.m2c,v $ $Revision: 1.32.2.3 $ */
  29. @end@
  30. #include <net-snmp/library/asn1.h>
  31. /* other required module components */
  32.     /* *INDENT-OFF*  */
  33. config_require($name.module/${name}/${name}_interface);
  34. config_require($name.module/${name}/${name}_data_access);
  35. @if $m2c_create_fewer_files != 1@
  36. config_require($name.module/${name}/${name}_data_get);
  37. config_require($name.module/${name}/${name}_data_set);
  38.     /* *INDENT-ON*  */
  39. /* OID and column number definitions for $context */
  40. #include "${name}_oids.h"
  41. /* enum definions */
  42. #include "${name}_enums.h"
  43. @else@
  44.     /* *INDENT-ON*  */
  45. /* OID, column number and enum definions for $context */
  46. #include "${name}_constants.h"
  47. @end@ // m2c_create_fewer_files
  48. /* *********************************************************************
  49.  * function declarations
  50.  */
  51. void init_$name(void);
  52. /* *********************************************************************
  53.  * Table declarations
  54.  */
  55. @foreach $table table@
  56. @    include m2c_setup_table.m2i@
  57. @    include details-table.m2i@
  58. /* *********************************************************************
  59.  * When you register your mib, you get to provide a generic
  60.  * pointer that will be passed back to you for most of the
  61.  * functions calls.
  62.  *
  63.  * TODO:100:r: Review all context structures
  64.  */
  65.     /*
  66.      * TODO:101:o: |-> Review $context registration context.
  67.      */
  68. @    if "x$m2c_context_reg" eq "x"@
  69. @        eval $m2c_context_reg = "void *"@
  70. @    end@
  71. typedef $m2c_context_reg ${context}_registration_ptr;
  72. @    include generic-data-context.m2i@
  73. @   if $m2c_table_settable@
  74. /* *********************************************************************
  75.  * TODO:115:o: |-> Review $context undo context.
  76.  * We're just going to use the same data structure for our
  77.  * undo_context. If you want to do something more efficent,
  78.  * define your typedef here.
  79.  */
  80. typedef ${context}_data ${context}_undo_data;
  81. @    end@
  82. @    include generic-table-indexes.m2i@
  83. /* *********************************************************************
  84.  * TODO:130:o: |-> Review $context Row request (rowreq) context.
  85.  * When your functions are called, you will be passed a
  86.  * ${context}_rowreq_ctx pointer.
  87.  */
  88. typedef struct ${context}_rowreq_ctx_s {
  89.     /** this must be first for container compare to work */
  90.     netsnmp_index        oid_idx;
  91. ##                                             /* xxx-rks: shrink index oid_tmp? */
  92.     oid                  oid_tmp[MAX_${context}_IDX_LEN];
  93.     
  94.     ${context}_mib_index        tbl_idx;
  95.     
  96. @    if $m2c_data_allocate == 1@
  97. @        eval $mfd_tmp = "*"@
  98. @    else@
  99. @        eval $mfd_tmp = " "@
  100. @    end@
  101.     ${context}_data            $mfd_tmp data;
  102. @   if $m2c_table_settable@
  103. @      if $m2c_undo_embed == 1@
  104. @         eval $mfd_tmp = " "@
  105. @      else@
  106. @         eval $mfd_tmp = "*"@
  107. @      end@ # embed
  108.     ${context}_undo_data       $mfd_tmp undo;
  109.     unsigned int                column_set_flags; /* flags for set columns */
  110. @   end@ # settable
  111.     /*
  112.      * flags per row. Currently, the first (lower) 8 bits are reserved
  113.      * for the user. See mfd.h for other flags.
  114.      */
  115.     u_int                       rowreq_flags;
  116.     /*
  117.      * implementor's context pointer (provided during registration)
  118.      */
  119.     ${context}_registration_ptr ${context}_reg;
  120.     /*
  121.      * TODO:131:o: |   |-> Add useful data to $context rowreq context.
  122.      */
  123.     
  124.     /*
  125.      * storage for future expansion
  126.      */
  127.     netsnmp_data_list             *${context}_data_list;
  128. } ${context}_rowreq_ctx;
  129. typedef struct ${context}_ref_rowreq_ctx_s {
  130.     ${context}_rowreq_ctx *rowreq_ctx;
  131. } ${context}_ref_rowreq_ctx;
  132. /* *********************************************************************
  133.  * function prototypes
  134.  */
  135. ## {
  136.     int ${context}_pre_request(${context}_registration_ptr user_context);
  137.     int ${context}_post_request(${context}_registration_ptr user_context);
  138. @   if $m2c_data_init == 1@
  139.     int ${context}_rowreq_ctx_init(${context}_rowreq_ctx *rowreq_ctx);
  140.     void ${context}_rowreq_ctx_cleanup(${context}_rowreq_ctx *rowreq_ctx);
  141. @   end@
  142. @    if "$m2c_data_context" ne "generated"@
  143. @        if ($m2c_data_allocate == 1) || ($m2c_undo_embed == 1)@
  144.     ${context}_data * ${context}_allocate_data(void);
  145.     void ${context}_release_data(${context}_data *data);
  146. @        end@
  147. @   end@
  148. @   if $m2c_table_settable@
  149. @      if $m2c_table_dependencies == 1@
  150.     int ${context}_check_dependencies(${context}_rowreq_ctx * rowreq_ctx); 
  151. @      end@ 
  152.     int ${context}_commit(${context}_rowreq_ctx * rowreq_ctx);
  153. @      if $m2c_irreversible_commit == 1@
  154.     int ${context}_irreversible_commit(${context}_rowreq_ctx * rowreq_ctx);
  155. @      end@
  156. @   end@ # writable
  157. extern oid ${context}_oid[];
  158. extern int ${context}_oid_size;
  159. @end@ # for each
  160. #include "${name}_interface.h"
  161. #include "${name}_data_access.h"
  162. @if $m2c_create_fewer_files != 1@
  163. #include "${name}_data_get.h"
  164. #include "${name}_data_set.h"
  165. @else@
  166. @   eval $mfd_processing_types = "h"@
  167. @   include mfd-data-get.m2c@
  168. @   include mfd-data-set.m2c@
  169. @end@ // m2c_create_fewer_files
  170. /*
  171.  * DUMMY markers, ignore
  172.  *
  173.  * TODO:099:x: *************************************************************
  174.  * TODO:199:x: *************************************************************
  175.  * TODO:299:x: *************************************************************
  176.  * TODO:399:x: *************************************************************
  177.  * TODO:499:x: *************************************************************
  178.  */
  179. @if $m2c_mark_boundary == 1@
  180. /** END header generated by $RCSfile: mfd-top.m2c,v $ $Revision: 1.32.2.3 $ */
  181. @end@
  182. @include generic-header-bottom.m2i@
  183. ######################################################################
  184. ## Do the .c file
  185. ######################################################################
  186. @eval $m2c_processing_type = 'c'@
  187. @open ${name}.c@
  188. /*
  189.  * Note: this file originally auto-generated by mib2c using
  190.  *       version $Revision: 1.32.2.3 $ of $RCSfile: mfd-top.m2c,v $ 
  191.  *
  192.  * $$hack:$
  193.  */
  194. /** mainpage MFD helper for ${name}
  195.  *
  196.  * section intro Introduction
  197.  * Introductory text.
  198.  *
  199.  */
  200. @include generic-source-includes.m2i@
  201. #include <net-snmp/agent/mib_modules.h>
  202. @if $m2c_mark_boundary == 1@
  203. /** START code generated by $RCSfile: mfd-top.m2c,v $ $Revision: 1.32.2.3 $ */
  204. @end@
  205. #include "${name}_interface.h"
  206. @foreach $table table@
  207. @    include m2c_setup_table.m2i@
  208. oid ${context}_oid[] = { $context.uc_OID };
  209. int ${context}_oid_size = OID_LENGTH(${context}_oid);
  210. void initialize_table_$context(void);
  211. @end@
  212. /**
  213.  * Initializes the $name module
  214.  */
  215. void
  216. init_$name(void)
  217. {
  218.     DEBUGMSGTL(("verbose:$name:init_$name","calledn"));
  219.     /*
  220.      * TODO:300:o: Perform $name one-time module initialization.
  221.      */
  222.      
  223.     /*
  224.      * here we initialize all the tables we're planning on supporting
  225.      */
  226.   @foreach $table table@
  227.     if (should_init("$context"))
  228.         initialize_table_$context();
  229.   @end@
  230. } /* init_$name */
  231. ########################################################################
  232. ##
  233. @foreach $table table@
  234. @    include m2c_setup_table.m2i@
  235. /**
  236.  * Initialize the table $context 
  237.  *    (Define its contents and how it's structured)
  238.  */
  239. void
  240. initialize_table_$context(void)
  241. {
  242.     ${context}_registration_ptr user_context;
  243.     u_long flags;
  244.     DEBUGMSGTL(("verbose:$context:initialize_table_$context","calledn"));
  245.     /*
  246.      * TODO:301:o: Perform $context one-time table initialization.
  247.      */
  248.     /*
  249.      * TODO:302:o: |->Initialize $context user context
  250.      * if you'd like to pass in a pointer to some data for this
  251.      * table, allocate or set it up here.
  252.      */
  253. @    if "$m2c_context_reg" eq "netsnmp_data_list *"@
  254.     /*
  255.      * a netsnmp_data_list is a simple way to store void pointers. A simple
  256.      * string token is used to add, find or remove pointers.
  257.      */
  258.     user_context = netsnmp_create_data_list("$context", NULL, NULL);
  259. @    else@
  260.     user_context = NULL;
  261. @   end@
  262.     
  263.     /*
  264.      * No support for any flags yet, but in the future you would
  265.      * set any flags here.
  266.      */
  267.     flags = 0;
  268.     
  269.     /*
  270.      * call interface initialization code
  271.      */
  272.     _${context}_initialize_interface(user_context, flags);
  273. } /* initialize_table_$context */
  274. ########################################################################
  275. @   if $m2c_data_init == 1@
  276. /**
  277.  * extra context initialization
  278.  *
  279.  * @param rowreq_ctx    : row request context
  280.  * @param user_init_ctx : void pointer for user (parameter to rowreq_ctx_allocate)
  281.  *
  282.  * @retval MFD_SUCCESS  : no errors
  283.  * @retval MFD_ERROR    : error (context allocate will fail)
  284.  */
  285. int
  286. ${context}_rowreq_ctx_init(${context}_rowreq_ctx *rowreq_ctx,
  287.                            void *user_init_ctx)
  288. {
  289.     DEBUGMSGTL(("verbose:$context:${context}_rowreq_ctx_init","calledn"));
  290.     netsnmp_assert(NULL != rowreq_ctx);
  291.     
  292.     /*
  293.      * TODO:210:o: |-> Perform extra $context rowreq initialization.
  294.      */
  295.     return MFD_SUCCESS;
  296. } /* ${context}_rowreq_ctx_init */
  297. /**
  298.  * extra context cleanup
  299.  *
  300.  */
  301. void ${context}_rowreq_ctx_cleanup(${context}_rowreq_ctx *rowreq_ctx)
  302. {
  303.     DEBUGMSGTL(("verbose:$context:${context}_rowreq_ctx_cleanup","calledn"));
  304.     netsnmp_assert(NULL != rowreq_ctx);
  305.     
  306.     /*
  307.      * TODO:211:o: |-> Perform extra $context rowreq cleanup.
  308.      */
  309. } /* ${context}_rowreq_ctx_cleanup */
  310. @   end@ // data_init
  311. ########################################################################
  312. /**
  313.  * pre-request callback
  314.  *
  315.  *
  316.  * @retval MFD_SUCCESS              : success.
  317.  * @retval MFD_ERROR                : other error
  318.  */
  319. int
  320. ${context}_pre_request(${context}_registration_ptr user_context)
  321. {
  322.     DEBUGMSGTL(("verbose:${context}:${context}_pre_request","calledn"));
  323.     /*
  324.      * TODO:510:o: Perform $context pre-request actions.
  325.      */
  326.     return MFD_SUCCESS;
  327. } /* ${context}_pre_request */
  328. /**
  329.  * post-request callback
  330.  *
  331.  *
  332.  * @retval MFD_SUCCESS : success.
  333.  * @retval MFD_ERROR   : other error (ignored)
  334.  */
  335. int
  336. ${context}_post_request(${context}_registration_ptr user_context)
  337. {
  338.     DEBUGMSGTL(("verbose:${context}:${context}_post_request","calledn"));
  339.     /*
  340.      * TODO:511:o: Perform $context pos-request actions.
  341.      */
  342.     return MFD_SUCCESS;
  343. } /* ${context}_post_request */
  344. @end@ // table
  345. ########################################################################
  346. @if $m2c_create_fewer_files == 1@
  347. @   eval $mfd_processing_types = "c"@
  348. @   include mfd-data-get.m2c@
  349. @   include mfd-data-set.m2c@
  350. @else@
  351. @   eval $mfd_processing_types = "chi"@
  352. @   run mfd-data-get.m2c@
  353. @   run mfd-data-set.m2c@
  354. @end@
  355. ########################################################################
  356. /** @{ */
  357. @if $m2c_mark_boundary == 1@
  358. /** END code generated by $RCSfile: mfd-top.m2c,v $ $Revision: 1.32.2.3 $ */
  359. @end@
  360. ##
  361. ########################################################################
  362. ##
  363. ## Do support files
  364. ##
  365. ########################################################################
  366. @run generic-table-constants.m2c@
  367. @run mfd-interface.m2c@
  368. @run mfd-data-access.m2c@
  369. @run mfd-readme.m2c@
  370. ##@run mfd-doxygen.m2c@