| ############################################## -*- Mib2c -*- |
| ## |
| ## File : mib2c.emulation.conf |
| ## Author : Robert Story <rstory@freesnmp.com> |
| ## Purpose: A mib2c conf file to generate snmpd.conf configuration to |
| ## provide basic/simplistic emulation for a particular MIB. |
| ## |
| ## |
| ## $Id$ |
| ###################################################################### |
| @open ${name}-emulation.conf@ |
| # |
| # $name.module MIB emulation |
| # Base OID: $name.objectID |
| # |
| # Requirements: Net-SNMP 5.2 or greater |
| # |
| # This file can be used as (part of) a Net-SNMP snmpd.conf |
| # configuration file to emulate (in a minimal fashion) the objects defined |
| # in the $name MIB. |
| # |
| # It is important to note that this file merely creates dummy values |
| # and variables and does not implement any of the functionality which |
| # the mib objects are actually supposed to implement! |
| # |
| # Also, it just defaults to 0, '' or 0.0 for initial values, so you'll need |
| # to tweak all the vaules. For any tables, you'll have set any indexes. |
| # |
| # The configuration tokens used in this file are documented in the |
| # snmpd.conf manual page, with the exception of the first line, which |
| # is documented in the snmp.conf and snmp_config manual pages. |
| # |
| # |
| # To use this file, you have several options: |
| # |
| # 1) add the contents to your existing snmpd.conf file |
| # 2) copy it to a new snmpd.conf, somewhere in SNMPCONFPATH |
| # 3) copy it to snmpd.conf.local, somewhere in SNMPCONFPATH |
| # |
| # The command 'net-snmp-config --snmpconfpath' will give your the |
| # SNMPCONFPATH (5.3.x and later). |
| |
| |
| # Here we tell the agent to load the MIB, so we can use names instead |
| # of OIDs. You may need to add other MIBs that this MIB depends on. |
| # Also, you might want to consider adding these to the global snmp.conf, |
| # so all users can reference them. |
| # |
| # See the Net-SNMP FAQ for more information on MIB loading. |
| # |
| [snmp] mibs +$name.module |
| |
| # |
| # $name Scalar variables |
| # |
| |
| @foreach $node scalar@ |
| @ print Scalar: $node@ |
| # $node.module::$node.parent.$node($node.subid) [$node.syntax = $node.type] |
| @ if "$node.status" eq "Deprecated"@ |
| # **** WARNING: deprecated object **** |
| @ end@ |
| @if $node.enums == 1@ |
| @ eval $m2c_evals = ""@ |
| @ eval $m2c_first = 1@ |
| @ foreach $e $v enum@ |
| @ if $m2c_first == 1@ |
| @ eval $m2c_first = 0@ |
| @ else@ |
| @ eval $m2c_evals = "$m2c_evals,"@ |
| @ end@ |
| @ eval $m2c_evals = "$m2c_evals $e($v)"@ |
| @ if $node.hasdefval == 1@ |
| @ if (("$node.defval" eq "$e") || ("$node.defval" eq "$v"))@ |
| @ eval $m2c_evals = "${m2c_evals}*"@ |
| @ end@ |
| @ end@ |
| @ end@ |
| # Enum range: $node.enumrange. Values: $m2c_evals |
| @elsif $node.ranges == 1@ |
| @ eval $m2c_range_max = 0@ |
| @ eval $m2c_evals = ""@ |
| @ eval $m2c_first = 1@ |
| @ foreach $a $b range $node@ |
| @ if $m2c_first == 1@ |
| @ eval $m2c_first = 0@ |
| @ else@ |
| @ eval $m2c_evals = "$m2c_evals,"@ |
| @ end@ |
| @ if $a == $b@ |
| @ eval $m2c_evals = "$m2c_evals $a"@ |
| @ else@ |
| @ eval $m2c_evals = "$m2c_evals $a - $b"@ |
| @ end@ |
| @ eval $m2c_range_max = max($m2c_range_max,$b)@ |
| @ end@ |
| # Ranges: $m2c_evals; |
| @end@ #ranges |
| @ if $node.hasdefval == 1@ |
| @ eval $m2c_emu_def = "$node.defval"@ |
| @ else@ |
| # (no default value) |
| @ if "$node.type" eq "ASN_OCTET_STR"@ |
| @ eval $m2c_emu_def = "''" @ |
| @ elsif "$node.type" eq "ASN_OBJECT_ID"@ |
| @ eval $m2c_emu_def = "0.0" @ |
| @ else@ |
| @ eval $m2c_emu_def = "0" @ |
| @ end@ |
| @ end@ |
| ## uggh.. try to convert type into something 5.3.x override understands |
| @ eval $m2c_emu_type = lc($node.type)@ |
| @ perleval $vars{'m2c_emu_type'} =~ s/asn_//; 0;@ |
| @ if $node.settable@ |
| #override -rw ${node}.0 $m2c_emu_type $m2c_emu_def |
| @ else@ |
| #override ${node}.0 $m2c_emu_type $m2c_emu_def |
| @ end@ |
| |
| @end@ |
| |
| |
| ##====================================================================== |
| # |
| # Note that in tables, all indices are shown first, then each |
| # readable column. This results in indices being given twice. |
| # |
| @foreach $node table@ |
| @ print Table: $node@ |
| # $node.module::$node.parent.$node($node.subid) |
| table $node |
| ##============================================================ |
| @ eval $m2c_idx_def = ""@ |
| @ eval $m2c_add_def = ""@ |
| @ foreach $col index@ |
| # [$col] ($node.accessible) $col.syntax / $col.type / $m2c_decl ($col.decl) |
| @ if $col.enums == 1@ |
| @ eval $m2c_evals = ""@ |
| @ eval $m2c_first = 1@ |
| @ foreach $e $v enum@ |
| @ if $m2c_first == 1@ |
| @ eval $m2c_first = 0@ |
| @ else@ |
| @ eval $m2c_evals = "$m2c_evals,"@ |
| @ end@ |
| @ eval $m2c_evals = "$m2c_evals $e($v)"@ |
| @ if $col.hasdefval == 1@ |
| @ if (("$col.defval" eq "$e") || ("$col.defval" eq "$v"))@ |
| @ eval $m2c_evals = "${m2c_evals}*"@ |
| @ end@ |
| @ end@ |
| @ end@ |
| # enum range: $col.enumrange. Values: $m2c_evals |
| @ elsif $col.ranges == 1@ |
| @ eval $m2c_range_max = 0@ |
| @ eval $m2c_evals = ""@ |
| @ eval $m2c_first = 1@ |
| @ foreach $a $b range $col@ |
| @ if $m2c_first == 1@ |
| @ eval $m2c_first = 0@ |
| @ else@ |
| @ eval $m2c_evals = "$m2c_evals,"@ |
| @ end@ |
| @ if $a == $b@ |
| @ eval $m2c_evals = "$m2c_evals $a"@ |
| @ else@ |
| @ eval $m2c_evals = "$m2c_evals $a - $b"@ |
| @ end@ |
| @ eval $m2c_range_max = max($m2c_range_max,$b)@ |
| @ end@ |
| # ranges: $m2c_evals; |
| @ end@ #ranges |
| @ if $col.hasdefval == 1@ |
| @ eval $m2c_col_def = '$col.defval'@ |
| @ else@ |
| @ if "$col.type" eq "ASN_OCTET_STR"@ |
| @ eval $m2c_col_def = "''" @ |
| @ elsif "$col.type" eq "ASN_OBJECT_ID"@ |
| @ eval $m2c_col_def = "0.0" @ |
| @ else@ |
| @ eval $m2c_col_def = "0" @ |
| @ end@ |
| @ end@ |
| @ eval $m2c_add_def = "$m2c_add_def $m2c_col_def"@ |
| ##@ if $node.accessible == 1@ |
| @ eval $m2c_idx_def = "$m2c_idx_def $m2c_col_def"@ |
| ##@ end@ |
| @ end@ ## col |
| ##=================================================== |
| @ foreach $col nonindex@ |
| # $col [$col.syntax = $col.type] |
| @ if "$col.status" eq "Deprecated"@ |
| # **** WARNING: deprecated object **** |
| @ end@ |
| @ if $col.enums == 1@ |
| @ eval $m2c_evals = ""@ |
| @ eval $m2c_first = 1@ |
| @ foreach $e $v enum@ |
| @ if $m2c_first == 1@ |
| @ eval $m2c_first = 0@ |
| @ else@ |
| @ eval $m2c_evals = "$m2c_evals,"@ |
| @ end@ |
| @ eval $m2c_evals = "$m2c_evals $e($v)"@ |
| @ if $col.hasdefval == 1@ |
| @ if (("$col.defval" eq "$e") || ("$col.defval" eq "$v"))@ |
| @ eval $m2c_evals = "${m2c_evals}*"@ |
| @ end@ |
| @ end@ |
| @ end@ |
| # enum range: $col.enumrange. Values: $m2c_evals |
| @ elsif $col.ranges == 1@ |
| @ eval $m2c_range_max = 0@ |
| @ eval $m2c_evals = ""@ |
| @ eval $m2c_first = 1@ |
| @ foreach $a $b range $col@ |
| @ if $m2c_first == 1@ |
| @ eval $m2c_first = 0@ |
| @ else@ |
| @ eval $m2c_evals = "$m2c_evals,"@ |
| @ end@ |
| @ if $a == $b@ |
| @ eval $m2c_evals = "$m2c_evals $a"@ |
| @ else@ |
| @ eval $m2c_evals = "$m2c_evals $a - $b"@ |
| @ end@ |
| @ eval $m2c_range_max = max($m2c_range_max,$b)@ |
| @ end@ |
| # ranges: $m2c_evals; |
| @ end@ #ranges |
| @ if $col.hasdefval == 1@ |
| @ eval $m2c_col_def = '$col.defval'@ |
| @ else@ |
| @ if "$col.type" eq "ASN_OCTET_STR"@ |
| @ eval $m2c_col_def = "''" @ |
| @ elsif "$col.type" eq "ASN_OBJECT_ID"@ |
| @ eval $m2c_col_def = "0.0" @ |
| @ else@ |
| @ eval $m2c_col_def = "0" @ |
| @ end@ |
| @ end@ |
| @ eval $m2c_add_def = "$m2c_add_def $m2c_col_def"@ |
| @ end@ ## col |
| #add_row $node $m2c_idx_def $m2c_add_def |
| |
| @end@ ## table |