summaryrefslogtreecommitdiff
path: root/cleopatre/application/spidnetsnmp/local/mib2c.conf
diff options
context:
space:
mode:
Diffstat (limited to 'cleopatre/application/spidnetsnmp/local/mib2c.conf')
-rw-r--r--cleopatre/application/spidnetsnmp/local/mib2c.conf284
1 files changed, 284 insertions, 0 deletions
diff --git a/cleopatre/application/spidnetsnmp/local/mib2c.conf b/cleopatre/application/spidnetsnmp/local/mib2c.conf
new file mode 100644
index 0000000000..329e71e73b
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/local/mib2c.conf
@@ -0,0 +1,284 @@
+@open -@
+mib2c has multiple configuration files depending on the type of
+code you need to write. You must pick one depending on your need.
+
+You requested mib2c to be run on the following part of the MIB tree:
+ OID: $name
+ numeric translation: $name.objectID
+@eval $num = count_scalars@
+ number of scalars within: $num
+@eval $num = count_tables@
+ number of tables within: $num
+@eval $num = count_notifications@
+ number of notifications within: $num
+
+First, do you want to generate code that is compatible with the
+ucd-snmp 4.X line of code, or code for the newer Net-SNMP 5.X code
+base (which provides a much greater choice of APIs to pick from):
+
+ 1) ucd-snmp style code
+ 2) Net-SNMP style code
+
+@prompt $ans Select your choice : @
+@if $ans == 1@
+**********************************************************************
+ GENERATING CODE FOR THE 4.X LINE OF CODE (THE OLDER API)
+**********************************************************************
+
+ using the mib2c.old-api.conf configuration file to generate your code.
+ @run mib2c.old-api.conf@
+
+@elsif $ans != 2@
+Invalid answer.
+@else@
+@if count_scalars() > 0@
+
+**********************************************************************
+ GENERATING CODE FOR SCALAR OBJECTS:
+**********************************************************************
+
+ It looks like you have some scalars in the mib you requested, so I
+ will now generate code for them if you wish. You have two choices
+ for scalar API styles currently. Pick between them, or choose not
+ to generate any code for the scalars:
+
+ 1) If you're writing code for some generic scalars
+ (by hand use: "mib2c -c mib2c.scalar.conf $name")
+
+ 2) If you want to magically "tie" integer variables to integer
+ scalars
+ (by hand use: "mib2c -c mib2c.int_watch.conf $name")
+
+ 3) Don't generate any code for the scalars
+
+ @prompt $ans Select your choice: @
+ @if $ans == 1@
+ using the mib2c.scalar.conf configuration file to generate your code.
+ @run mib2c.scalar.conf@
+ @elsif $ans == 2@
+ using the mib2c.int_watch.conf configuration file to generate your code.
+ @run mib2c.int_watch.conf@
+ @elsif $ans != 3@
+ WARNING: Unknown response. Skipping code generation for scalars.
+ @end@
+@end@ # scalars
+
+@if count_tables() > 0@
+**********************************************************************
+ GENERATING CODE FOR TABLES:
+**********************************************************************
+
+ Your tables will likely either fall into one of two categories:
+
+ 1) tables where the list of rows is external to the agent.
+ This is suited to MIBs which monitor or manipulate external
+ data (perhaps extracted from the operating system kernel
+ or other system interfaces), and where rows are typically
+ created or destroyed independently of the SNMP agent.
+
+ 2) tables where the list of rows is held by the agent itself.
+ This is particularly suited to tables that are primarily
+ manipulated via SNMP, or where the rows of the table are
+ relatively static.
+
+ 3) Do not generate code for the tables.
+
+ @prompt $ans Select the option that best fits you: @
+ @if $ans != 3@
+ @if $ans == 1@
+
+ This style of table tends to use the iterator helper to instrument
+ the external data, so it can be represented by an SNMP table.
+ The main characteristic of this helper is the use of a pair
+ of "iteration hook" routines to loop through the rows in turn
+ (in the most natural order for the underlying data).
+ There are a couple of different template configurations that
+ can be used as a framework for this:
+
+ 1) One based around a single handler, that includes code to handle
+ both GET and SET requests, as well as row creation and deletion.
+ This template defines a suitable data structure, and implements
+ the table as an internally-held linked list, but both of these
+ are mainly for illustration, and could reasonably be replaced by
+ code more appropriate for the table being implemented.
+ The same template can be generated using
+ mib2c -c mib2c.iterate.conf $name
+
+ 2) An alternative framework, designed as an API wrapper on top of
+ the basic iterator helper, that seeks to separate the standard
+ processing of the syntax of a MIB table (which can be generated
+ automaticall), from the semantics of a given table (which cannot).
+ It generates a number of separate code files, but typically
+ only one or two of these will need to be edited. These contain
+ separate 'get_column()' and 'set_column()' functions for each
+ column in the table, plus some other routines for manipulating
+ rows (plus the standard iterator hook routines).
+ The same templates can be generated using
+ mib2c -c mib2c.iterate_access.conf $name
+ (See the agent/mibgroup/example/netSnmpHostsTable.c file for example)
+
+ 3) An API layer (not based on the iterator helper) that attempts
+ to reduce the amount of SNMP specific knowledge required to
+ implement a module. It provides more APIs than 2, which are
+ (hopefully) smaller and more specific, with less SNMP terminology.
+ This API is also known as "MIBs for Dummies". Numerous tables
+ in the Net-SNMP agent have been re-written to use this API.
+ The same templates can be generated using
+ mib2c -c mib2c.mfd.conf $name
+ (See the agent/mibgroup/if-mib/ifTable/ifTable*.c files for examples)
+
+ 4) Do not generate code for the tables.
+
+ If you are unsure which option to pick, choices 2) or 3) are perhaps
+ more suited for those less familiar with the concepts behind the SNMP
+ protocol operations, while choice 1) gives more control over exactly
+ what is done.
+
+ @prompt $ans Select the API style you wish to use: @
+ @if $ans != 5@
+ @if $ans == 1@
+ using the mib2c.iterate.conf configuration file to generate your code.
+ @run mib2c.iterate.conf@
+ @elsif $ans == 2@
+ using the mib2c.iterate_access.conf configuration file to
+ generate your code.
+ @run mib2c.iterate_access.conf@
+ @elsif $ans == 3@
+ using the mib2c.mfd.conf configuration file to
+ generate your code.
+ @run mib2c.mfd.conf@
+ @else@
+ WARNING: Unknown response. Skipping code generation for tables.
+ @end@
+ @end@
+ @else@
+ @if $ans == 2@
+ This style of table holds a list of the table rows internally
+ within the agent itself. Typically this will tend to include
+ the column values for each particular row, and that is the
+ model used by the generated template code. But it should usually
+ be possible to read in some or all of the column values from an
+ external source, should this be necessary for a particular MIB table.
+ There are a number of different template configurations that
+ can be used as a framework for this:
+
+
+ 1) dataset storage: The data for the table is stored completely
+ within the agent, and the user-visible code does not need to
+ be concerned with the internal representation of an individual
+ row. This is most suited to MIB tables that are purely internal
+ to the agent, rather than modelling external data, or using
+ existing data structures.
+ The same template can be generated using
+ mib2c -c mib2c.create-dataset.conf $name
+
+ 2) row-data storage: The data for the table is held by the agent,
+ but using an arbitrary (user-provided) data structure for the
+ representation of an individual row. This is suited for MIB
+ tables where there is a natural existing data structure,
+ or where the contents of the table may need to be interpreted
+ for some additional purpose, other than simply implementing
+ the table for SNMP requests.
+ The same template can be generated using
+ mib2c -c mib2c.table_data.conf $name
+
+ 3) container storage: This is very similar to the previous row-data
+ mechanism, but uses a different (and slightly more efficient)
+ internal representation. The main practical effect is to
+ introduce a slight constraint on the form of the per-row data
+ structure.
+ The same template can be generated using
+ mib2c -c mib2c.container.conf $name
+
+ All three of these templates generate a single code file, and
+ use a "single handler" format for the driving code.
+
+ 4) sorted array: The data for the table is stored in a sorted
+ array.
+ (manually mib2c -c mib2c.array-user.conf ${name})
+
+ 5) Net-SNMP container: (Also known as "MIBs for Dummies", or MFD.)
+ The data for the table is stored via a
+ generic interface. Various types of containers may be
+ selected, including linked lists or binary arrays.
+ (manually mib2c -c mib2c.mfd.conf ${name})
+
+ 6) Do not generate code for the tables.
+
+ All APIs are fully functional with little-to-no required code
+ to make the table operational on your end once the template
+ code is produced. The MFD and dataset APIs are a bit better
+ documented, but the sorted array is probably better tested
+ as it was used heavily in the net-policy sourceforge project.
+ The MFD API is the successor to the array-user API, and several
+ tables in the Net-SNMP agent have been re-written to use it.
+ The dataset API is used inside the snmptrapd application for
+ logging incoming traps.
+
+ @prompt $ans Select the API style you wish to use: @
+ @if $ans != 6@
+ @if $ans == 1@
+ using the mib2c.create-dataset.conf configuration file
+ to generate your code.
+ @run mib2c.create-dataset.conf@
+ @elsif $ans == 2@
+ using the mib2c.table_data.conf configuration file to
+ generate your code.
+ @run mib2c.table_data.conf@
+ @elsif $ans == 3@
+ using the mib2c.container.conf configuration file to
+ generate your code.
+ @run mib2c.container.conf@
+ @elsif $ans == 4@
+ using the mib2c.array-user.conf configuration file to
+ generate your code.
+ @run mib2c.array-user.conf@
+ @elsif $ans == 5@
+ using the mib2c.mfd.conf configuration file to generate your code.
+ @run mib2c.mfd.conf@
+ @else@
+ WARNING: Unknown response. Skipping code generation for tables.
+ @end@
+ @else@
+ WARNING: Unknown response. Skipping code generation for tables.
+ @end@
+ @end@
+ @end@
+ @end@ # != 3
+@end@ # tables
+
+@if count_notifications() > 0@
+**********************************************************************
+ GENERATING CODE FOR NOTIFICATIONS:
+**********************************************************************
+
+Would you like to generate code for sending notifications from within
+the agent?
+
+ @prompt $ans "y" or "n": @
+ @if ("$ans" eq "y") or ("$ans" eq "yes")@
+ using mib2c.notify.conf to generate code for sending notifications
+ @run mib2c.notify.conf@
+ @end@
+
+# GENERATING HEADER FILE DEFINITIONS
+#
+# To generate just a header with a define for each column number in
+# your table:
+#
+# mib2c -c mib2c.column_defines.conf ${name}
+#
+# To generate just a header with a define for each enum for any
+# column containing enums:
+#
+# mib2c -c mib2c.column_enums.conf ${name}
+
+@end@ # notifications
+@end@ # new style code
+
+**********************************************************************
+* NOTE WELL: The code generated by mib2c is only a template. *YOU* *
+* must fill in the code before it'll work most of the time. In many *
+* cases, spots that MUST be edited within the files are marked with *
+* /* XXX */ or /* TODO */ comments. *
+**********************************************************************