| ####################################################################### |
| ## generic include for XXX. Do not use directly. |
| ## |
| ## $Id$ |
| ######################################################################## |
| @if $m2c_mark_boundary == 1@ |
| /** START code generated by $RCSfile$ $Revision$ */ |
| @end@ |
| ######################################################################## |
| @eval $m2c_temp_writable = table_is_writable($context)@ |
| @eval $m2c_temp_create = table_has_create($context)@ |
| @eval $m2c_temp_dependencies = $m2c_temp_writable@ |
| @eval $m2c_temp_context_reg = "$mfd_default_context_reg"@ |
| @eval $m2c_temp_data_context = "$mfd_default_data_context"@ |
| @eval $m2c_temp_data_allocate = $mfd_default_data_allocate@ |
| @eval $m2c_temp_data_cache = $mfd_default_data_cache@ |
| @eval $m2c_temp_undo_embed = $mfd_default_undo_embed@ |
| @eval $m2c_temp_data_init = $mfd_default_data_init@ |
| @eval $m2c_temp_persistent = $m2c_temp_writable@ |
| @eval $m2c_temp_table_access = "$mfd_default_table_access"@ |
| @eval $m2c_temp_data_transient = $mfd_default_data_transient@ |
| @eval $m2c_temp_include_examples = $mfd_default_include_examples@ |
| @eval $m2c_temp_table_skip_mapping = $mfd_default_table_skip_mapping@ |
| @eval $m2c_temp_table_sparse = $mfd_default_data_sparse@ |
| @eval $m2c_temp_generate_makefile = $mfd_default_generate_makefile@ |
| @eval $m2c_temp_generate_subagent = $mfd_default_generate_subagent@ |
| ## |
| @if $mfd_interactive_setup != 0@ |
| @open -@ |
| @ if $mfd_interactive_setup != -1@ |
| There are no defaults for ${context}. Would you like to |
| |
| 1) Accept hard-coded defaults |
| 2) Set defaults now [DEFAULT] |
| |
| @ eval $ans = 2@ |
| @ prompt $ans Select your choice : @ |
| @ else@ |
| @ eval $ans = 2@ |
| @ end@ |
| @ if $ans == 1@ |
| @ else@ |
| |
| |
| ## --------------------------------------------------- |
| @ if $m2c_temp_writable == 1@ |
| This table has writable columns. Do you want to generate |
| code for writeable columns, or restrict the table to read-only? |
| |
| 1) generate code with writeable columns [DEFAULT] |
| 2) generate code with read-only columns |
| |
| @ prompt $ans Select your choice : @ |
| @ if $ans == 2@ |
| @ eval $m2c_temp_writable = 0@ |
| @ eval $m2c_temp_create = 0@ |
| @ eval $m2c_temp_dependencies = 0@ |
| @ eval $m2c_temp_persistent = 0@ |
| @ end@ |
| |
| |
| @ end@ # writable |
| ## --------------------------------------------------- |
| @ if $m2c_temp_persistent == 1@ |
| @ eval $m2c_temp_persistent = 0@ |
| Since your table is writable, do you want to generate code to save and |
| restore rows in the Net-SNMP persistent store? You should only use this |
| option if the agent 'owns' the data, and doesn't get the data from an |
| external source. |
| |
| 1) do not generate persistent store code [DEFAULT] |
| 2) generate persistent store code |
| |
| @ prompt $ans Select your choice : @ |
| @ if $ans == 2@ |
| @ eval $m2c_temp_persistent = 1@ |
| @ end@ |
| |
| |
| @ end@ # persistent |
| ## --------------------------------------------------- |
| @ if $m2c_temp_dependencies == 1@ |
| @ eval $m2c_temp_dependencies = 0@ |
| Writable tables sometimes have dependencies beteen columns |
| or with other tables. If there are no dependencies in this table, you |
| probably do not want the extra code. |
| |
| 1) do not generate dependency code [DEFAULT] |
| 2) generate dependency code |
| |
| @ prompt $ans Select your choice : @ |
| @ if $ans == 2@ |
| @ eval $m2c_temp_dependencies = 1@ |
| @ end@ |
| |
| |
| @ end@ # dependencies |
| ## --------------------------------------------------- |
| @ if $m2c_temp_create == 1@ |
| This table has read-create columns. Do you want to generate |
| code for dynamic row creation? |
| |
| 1) generate code for row creation [DEFAULT] |
| 2) do not generate code for row creation |
| |
| @ prompt $ans Select your choice : @ |
| @ if $ans == 2@ |
| @ eval $m2c_temp_create = 0@ |
| @ end@ |
| |
| |
| @ end@ # create |
| ## --------------------------------------------------- |
| Do you want to use an existing data structure for the USER context? |
| This would be a structure used to track data for the entire table, |
| (similar to a global variable) not individual rows. (Many |
| implementations won't need this, in which case the default is fine). |
| |
| |
| 1) No, use $m2c_temp_context_reg [DEFAULT] |
| 2) Yes, use my own structure |
| |
| @ prompt $ans Select your choice : @ |
| @ if $ans == 2@ |
| @ prompt $m2c_temp_context_reg Enter your USER context : @ |
| @ end@ |
| |
| |
| ## --------------------------------------------------- |
| Do you want to use an existing data structure for the DATA context? |
| The DATA context holds the data for each MIB column in a given row. By |
| default, a new data structure will be created with an element for each |
| column. If you already have a structure that holds your data, select 2. |
| |
| 1) No, use $m2c_temp_data_context [DEFAULT] |
| 2) Yes, use my own structure |
| |
| @ prompt $ans Select your choice : @ |
| @ if $ans == 2@ |
| |
| |
| Note: Do not enter a pointer type. Use the base structure name. For |
| example, use 'struct widget', not 'struct widget *'. If you will be |
| using pointer to the structure, select dynamic allocation in the |
| next question. |
| |
| @ prompt $m2c_temp_data_context Enter your DATA context : @ |
| @ end@ |
| |
| |
| ## --------------------------------------------------- |
| @ if "x$m2c_temp_data_context" ne "x$mfd_default_data_context"@ |
| Do you want to allocate your '$m2c_temp_data_context' DATA context, or |
| embed it directly? If your data is INTERNAL (controlled by the agent), you |
| probably want embedded. If your data is EXTERNAL (controlled by another |
| process) and you have pointers to the data, you probably want allocated. |
| |
| 1) directly embed structure [DEFAULT] |
| 2) dynamically allocate structure |
| |
| @ prompt $ans Select your choice : @ |
| @ if $ans == 2@ |
| @ eval $m2c_temp_data_allocate = 1@ |
| @ end@ |
| |
| |
| @ end@ # ! default (generated) |
| ## --------------------------------------------------- |
| Do you need to initialize elements in the '$m2c_temp_data_context' DATA |
| context when a new instance is created (eg default values, or other structures |
| you are going to add that might need initialization to the row request context? |
| (The most common reasons you might need to do this is are if you want to keep |
| some non-MIB data for every row, or some columns have default values.) |
| |
| 1) no, no initialization needed |
| 2) yes, initilization is needed [DEFAULT] |
| |
| @ prompt $ans Select your choice : @ |
| @ if $ans == 1@ |
| @ eval $m2c_temp_data_init = 0@ |
| @ end@ |
| |
| |
| ## --------------------------------------------------- |
| Do you plan on keeping all data in the format defined by the MIB? If so, |
| no functions will be generated to map values. If some data will be |
| stored in a different format, the mapping functions will be generated. |
| If your MIB has integers with enumerations, mapping functions are more |
| likely to be needed. (e.g. A TruthValue object will hold the value |
| 1 or 2, but a C boolean would be 1 or 0.) |
| |
| 1) All values will be stored as defined by the MIB [DEFAULT] |
| 2) I need to map values to the format defined by the MIB. |
| |
| @ prompt $ans Select your choice : @ |
| @ if $ans == 2@ |
| @ eval $m2c_temp_table_skip_mapping = -1@ |
| @ end@ |
| |
| |
| ## --------------------------------------------------- |
| Which method would you like to use to gather data about available rows? |
| |
| 1) container : [DEFAULT] This access method uses a netsnmp_container |
| to store all row data in memory. This method is best for: |
| - Internal data (maintained by the agent) |
| - Access speed is important |
| - Sufficient memory exists to contain all rows |
| |
| 2) container-cached : This access method uses a netsnmp_container |
| to keep track of the indexes (and data, usually) for each |
| row. This method is best for: |
| - External data (maintained by another process/the kernel) |
| - Access speed is important |
| - Sufficient memory exists to contain all indexes |
| |
| 3) unsorted-external : This access method iterates over all of your data |
| to find the row with the appropriate index. This method is good for |
| - External data (maintained by another process/the kernel) |
| - Using less memory is much more important than access speed |
| |
| @ prompt $ans Select your choice : @ |
| @ if $ans == 3@ |
| @ eval $m2c_temp_table_access = "unsorted-external"@ |
| @ elsif $ans == 2@ |
| @ eval $m2c_temp_table_access = "container-cached"@ |
| @ eval $m2c_temp_data_cache = 1@ |
| @ else@ |
| @ eval $m2c_temp_table_access = "container-cached"@ |
| @ eval $m2c_temp_data_cache = 0@ |
| @ end@ |
| |
| |
| ## --------------------------------------------------- |
| When accessing your data, is your data TRANSIENT? |
| |
| 1) Yes. My data is TRANSIENT (e.g. a pointer to a static buffer that |
| my be overwritten during a request) and needs to be copied during |
| processing. |
| |
| 2) Yes. My data is SEMI-TRANSIENT (e.g. an allocated pointer to a |
| copy of the data). |
| |
| 3) No, my data is PERSISTENT (e.g. an allocated pointer to the actual |
| data, which is under the agent's control) |
| ## ' |
| |
| @ prompt $ans Select your choice [DEFAULT=1] : @ |
| @ if $ans == 3@ |
| @ eval $m2c_temp_data_transient = 0@ |
| @ elsif $ans == 2@ |
| @ eval $m2c_temp_data_transient = 1@ |
| @ else@ |
| @ eval $m2c_temp_data_transient = 2@ |
| @ end@ |
| |
| |
| ## --------------------------------------------------- |
| Do you want example code to be generated? This will generate example code |
| for reading data from a text file. |
| |
| 1) generate example code [DEFAULT] |
| 2) do not generate example code |
| |
| @ prompt $ans Select your choice : @ |
| @ if $ans == 2@ |
| @ eval $m2c_temp_include_examples = 0@ |
| @ else@ |
| @ eval $m2c_temp_include_examples = 1@ |
| @ end@ |
| |
| ## --------------------------------------------------- |
| Is your table sparse? A sparse table is a table where some |
| columns might not exist for all rows. Note that if your table |
| contains a RowStaus column and it supports createAndWait, you |
| will need sparse table support. |
| |
| 1) No, all columns always exist for every row [DEFAULT] |
| 2) Yes, my table is sparse |
| |
| @ prompt $ans Select your choice : @ |
| @ if $ans == 2@ |
| @ eval $m2c_temp_table_sparse = 1@ |
| @ end@ |
| |
| ## --------------------------------------------------- |
| Do you want a makefile and AgentX subagent source file generated? |
| This will let you test your table without having to link it into |
| snmpd. (You can still link it in later.) |
| |
| 1) do not generate makefile/AgentX code [DEFAULT] |
| 2) generate makefile/AgentX code |
| |
| @ prompt $ans Select your choice : @ |
| @ if $ans == 2@ |
| @ eval $m2c_temp_generate_makefile = 1@ |
| @ eval $m2c_temp_generate_subagent = 1@ |
| @ else@ |
| @ eval $m2c_temp_generate_makefile = 0@ |
| @ eval $m2c_temp_generate_subagent = 0@ |
| @ end@ |
| |
| @ end@ # do not use hardcoded |
| @end@ # $mfd_interactive_setup == 1 |
| ################################## |
| ## |
| ## save values |
| ## Note: if you add a var here, add it in m2c_table_save_defaults.m2i too |
| ## |
| @eval $m2c_context_reg = "$m2c_temp_context_reg"@ |
| @eval $m2c_data_allocate = $m2c_temp_data_allocate@ |
| @eval $m2c_data_cache = $m2c_temp_data_cache@ |
| @eval $m2c_data_context = "$m2c_temp_data_context"@ |
| @eval $m2c_data_init = $m2c_temp_data_init@ |
| @eval $m2c_data_transient = $m2c_temp_data_transient@ |
| @eval $m2c_include_examples = $m2c_temp_include_examples@ |
| @eval $m2c_irreversible_commit = $m2c_irreversible_commit@ |
| @eval $m2c_table_access = "$m2c_temp_table_access"@ |
| @eval $m2c_table_dependencies = $m2c_temp_dependencies@ |
| @eval $m2c_table_persistent = $m2c_temp_persistent@ |
| @eval $m2c_table_row_creation = $m2c_temp_create@ |
| @eval $m2c_table_settable = $m2c_temp_writable@ |
| @eval $m2c_table_skip_mapping = $m2c_temp_table_skip_mapping@ |
| @eval $m2c_table_sparse = $m2c_temp_table_sparse@ |
| @eval $mfd_generate_makefile = $m2c_temp_generate_makefile@ |
| @eval $mfd_generate_subagent = $m2c_temp_generate_subagent@ |
| ## |
| ## write them back |
| ## |
| @include m2c_table_save_defaults.m2i@ |
| ## |
| ######################################################################## |
| @if $m2c_mark_boundary == 1@ |
| /** END code generated by $RCSfile$ $Revision$ */ |
| @end@ |