335 lines
12 KiB
Plaintext
335 lines
12 KiB
Plaintext
#######################################################################
|
|
## generic include for XXX. Do not use directly.
|
|
##
|
|
########################################################################
|
|
@if $m2c_mark_boundary == 1@
|
|
/** START code generated by mfd-interactive-setup.m2c */
|
|
@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 mfd-interactive-setup.m2c */
|
|
@end@
|