📄 mfd-top.m2c
字号:
############################################################# -*- c -*-## generic include for XXX. Do not use directly.## $Id: mfd-top.m2c 14170 2006-01-26 17:02:48Z dts12 $#################################################################################################################################################### mfd function params##@ifconf ${name}.m2d@@ include ${name}.m2d@@end@#### set up defaults##@foreach $table table@@ include default-mfd-top.m2c@ # get defaults@ eval $context = $table@#### set up defaults##@ print Defaults for $table...@@ eval $m2c_context_reg = "$mfd_default_context_reg"@@ eval $m2c_data_allocate = $mfd_default_data_allocate@@ eval $m2c_data_cache = $mfd_default_data_cache@@ eval $m2c_data_context = "$mfd_default_data_context"@@ eval $m2c_data_init = $mfd_default_data_init@@ eval $m2c_data_transient = $mfd_default_data_transient@@ eval $m2c_include_examples = $mfd_default_include_examples@@ eval $m2c_irreversible_commit = 0@@ eval $m2c_table_access = "$mfd_default_table_access"@@ eval $m2c_table_dependencies = table_is_writable($context)@@ eval $m2c_table_persistent = 0@@ eval $m2c_table_row_creation = table_has_create($context)@@ eval $m2c_table_settable = table_is_writable($context)@@ eval $m2c_table_skip_mapping = -1@ # -1 = no default; based on type@ eval $m2c_table_sparse = 0@@ eval $mfd_generate_makefile = $mfd_default_generate_makefile@@ eval $mfd_generate_subagent = $mfd_default_generate_subagent@#### allow for user override, or save defaults##@ ifconf default-table-${context}.m2d@@ print Warning: using defaults in current directory. Consider moving@@ print them to $m2c_defaults_dir.@@ eval $m2c_defaults_dir = "default-"@@ end@@ ifconf ${m2c_defaults_dir}table-${context}.m2d@@ if $mfd_interactive_setup == 1@@ print There are existing defaults for $context (${m2c_defaults_dir}table-${context}.m2d).@@ prompt $ans r)econfigure or u)se existing [default=u] : @@ if "x$ans" eq "xr"@@ eval $mfd_interactive_setup = -1@ # already asked to overwrite@ run -again mfd-interactive-setup.m2c@@ eval $mfd_interactive_setup = 1@@ else@## ## read in old, write them back (this should add any new vars@ include ${m2c_defaults_dir}table-${context}.m2d@@ include m2c_table_save_defaults.m2i@@ end@ @ end@@ else@ # no existing defaults@ ifdir defaults@## NOP@ else@@ perleval my $rc = mkdir(defaults,0775); return $rc != 1 @@ end@@ run mfd-interactive-setup.m2c@@ end@ # no conf file@end@ # foreach table@if $m2c_gen_table_defaults == 1@@ exit@@end@@print Starting MFD code generation...@########################################################################@eval $m2c_processing_type = 'h'@@open ${name}.h@@eval $hack = "Id"@/* * Note: this file originally auto-generated by mib2c using * version $Revision: 14170 $ of $RCSfile$ * * $$hack:$ */@include generic-header-top.m2i@/** @addtogroup misc misc: Miscellaneous routines * * @{ */@if $m2c_mark_boundary == 1@/** START header generated by $RCSfile$ $Revision: 14170 $ */@end@#include <net-snmp/library/asn1.h>/* other required module components */ /* *INDENT-OFF* */config_add_mib($name.module)config_require($name.module/${name}/${name}_interface)config_require($name.module/${name}/${name}_data_access)@if $m2c_create_fewer_files != 1@config_require($name.module/${name}/${name}_data_get)config_require($name.module/${name}/${name}_data_set) /* *INDENT-ON* *//* OID and column number definitions for $context */#include "${name}_oids.h"/* enum definions */#include "${name}_enums.h"@else@ /* *INDENT-ON* *//* OID, column number and enum definions for $context */#include "${name}_constants.h"@end@ // m2c_create_fewer_files/* ********************************************************************* * function declarations */void init_$name(void);void shutdown_$context(void);/* ********************************************************************* * Table declarations */@foreach $table table@@ include m2c_setup_table.m2i@@ include details-table.m2i@/* ********************************************************************* * When you register your mib, you get to provide a generic * pointer that will be passed back to you for most of the * functions calls. * * TODO:100:r: Review all context structures */ /* * TODO:101:o: |-> Review $context registration context. */@ if "x$m2c_context_reg" eq "x"@@ eval $m2c_context_reg = "netsnmp_data_list"@@ end@typedef $m2c_context_reg ${context}_registration;@ include generic-data-context.m2i@@ if $m2c_table_settable@/* ********************************************************************* * TODO:115:o: |-> Review $context undo context. * We're just going to use the same data structure for our * undo_context. If you want to do something more efficent, * define your typedef here. */typedef ${context}_data ${context}_undo_data;@ end@@ include generic-table-indexes.m2i@/* ********************************************************************* * TODO:130:o: |-> Review $context Row request (rowreq) context. * When your functions are called, you will be passed a * ${context}_rowreq_ctx pointer. */typedef struct ${context}_rowreq_ctx_s { /** this must be first for container compare to work */ netsnmp_index oid_idx;## /* xxx-rks: shrink index oid_tmp? */ oid oid_tmp[MAX_${context}_IDX_LEN]; ${context}_mib_index tbl_idx; @ if $m2c_data_allocate == 1@@ eval $mfd_tmp = "*"@@ else@@ eval $mfd_tmp = " "@@ end@ ${context}_data $mfd_tmp data;@ if $m2c_table_sparse == 1@ unsigned int column_exists_flags; /* flags for existence */@ end@@ if $m2c_table_settable@@ if $m2c_undo_embed == 1@@ eval $mfd_tmp = " "@@ else@@ eval $mfd_tmp = "*"@@ end@ # embed ${context}_undo_data $mfd_tmp undo; unsigned int column_set_flags; /* flags for set columns */@ end@ # settable /* * flags per row. Currently, the first (lower) 8 bits are reserved * for the user. See mfd.h for other flags. */ u_int rowreq_flags;@ if $m2c_table_refcounts == 1@ u_int ref_count;@ end@ /* * TODO:131:o: | |-> Add useful data to $context rowreq context. */ /* * storage for future expansion */ netsnmp_data_list *${context}_data_list;} ${context}_rowreq_ctx;typedef struct ${context}_ref_rowreq_ctx_s { ${context}_rowreq_ctx *rowreq_ctx;} ${context}_ref_rowreq_ctx;/* ********************************************************************* * function prototypes */## { int ${context}_pre_request(${context}_registration * user_context); int ${context}_post_request(${context}_registration * user_context, int rc);@ if $m2c_data_init == 1@ int ${context}_rowreq_ctx_init(${context}_rowreq_ctx *rowreq_ctx, void *user_init_ctx); void ${context}_rowreq_ctx_cleanup(${context}_rowreq_ctx *rowreq_ctx);@ end@@ if "$m2c_data_context" ne "generated"@@ if ($m2c_data_allocate == 1) || ($m2c_undo_embed == 1)@ ${context}_data * ${context}_allocate_data(void); void ${context}_release_data(${context}_data *data);@ end@@ end@@ if $m2c_table_settable@@ if $m2c_table_dependencies == 1@ int ${context}_check_dependencies(${context}_rowreq_ctx * rowreq_ctx); @ end@ int ${context}_commit(${context}_rowreq_ctx * rowreq_ctx);@ if $m2c_irreversible_commit == 1@ int ${context}_irreversible_commit(${context}_rowreq_ctx * rowreq_ctx);@ end@@ end@ # writable ${context}_rowreq_ctx * ${context}_row_find_by_mib_index(${context}_mib_index *mib_idx);@ if $m2c_table_refcounts == 1@int ${context}_row_ref_increment(${context}_rowreq_ctx *rowreq_ctx);int ${context}_row_ref_decrement(${context}_rowreq_ctx *rowreq_ctx);@ end@extern oid ${context}_oid[];extern int ${context}_oid_size;@end@ # for each#include "${name}_interface.h"#include "${name}_data_access.h"@if $m2c_create_fewer_files != 1@#include "${name}_data_get.h"#include "${name}_data_set.h"@else@@ eval $mfd_processing_types = "h"@@ include mfd-data-get.m2c@@ include mfd-data-set.m2c@@end@ // m2c_create_fewer_files/* * DUMMY markers, ignore * * TODO:099:x: ************************************************************* * TODO:199:x: ************************************************************* * TODO:299:x: ************************************************************* * TODO:399:x: ************************************************************* * TODO:499:x: ************************************************************* */@if $m2c_mark_boundary == 1@/** END header generated by $RCSfile$ $Revision: 14170 $ */@end@@include generic-header-bottom.m2i@/** @} */######################################################################## Do the .c file######################################################################@eval $m2c_processing_type = 'c'@@open ${name}.c@/* * Note: this file originally auto-generated by mib2c using * version $Revision: 14170 $ of $RCSfile$ * * $$hack:$ *//** \page MFD helper for ${name} * * \section intro Introduction * Introductory text. * */@include generic-source-includes.m2i@#include <net-snmp/agent/mib_modules.h>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -