From 8f929fad475601ee3cb164a26db3a9065fa7f909 Mon Sep 17 00:00:00 2001 From: Micael Karlberg Date: Sun, 28 Apr 2013 20:23:44 +0200 Subject: [snmp/agent] Preliminary doc update regarding mib_data behaviour --- lib/snmp/doc/src/files.mk | 1 + lib/snmp/doc/src/notes.xml | 129 ----------------------- lib/snmp/doc/src/snmp_config.xml | 18 +++- lib/snmp/doc/src/snmpa_mib_data.xml | 201 ++++++++++++++++++++++++++++++++++++ 4 files changed, 218 insertions(+), 131 deletions(-) create mode 100644 lib/snmp/doc/src/snmpa_mib_data.xml (limited to 'lib/snmp/doc') diff --git a/lib/snmp/doc/src/files.mk b/lib/snmp/doc/src/files.mk index 61c91c9729..e215143b03 100644 --- a/lib/snmp/doc/src/files.mk +++ b/lib/snmp/doc/src/files.mk @@ -41,6 +41,7 @@ XML_AGENT_REF3_FILES = \ snmpa_error_io.xml \ snmpa_error_logger.xml \ snmpa_local_db.xml \ + snmpa_mib_data.xml \ snmpa_mpd.xml \ snmpa_network_interface.xml \ snmpa_network_interface_filter.xml \ diff --git a/lib/snmp/doc/src/notes.xml b/lib/snmp/doc/src/notes.xml index 5222922848..b47d4237f5 100644 --- a/lib/snmp/doc/src/notes.xml +++ b/lib/snmp/doc/src/notes.xml @@ -1017,135 +1017,6 @@ -
- SNMP Development Toolkit 4.19 -

Version 4.19 supports code replacement in runtime from/to - version 4.18.

- -
- Improvements and new features - - - -

[compiler] Added support for textual convention - AGENT-CAPABILITIES and "full" support for textual - convention MODULE-COMPLIANCE, both defined by the SNMPv2-CONF - mib.

-

The reference and modules part(s) are - stored in the assocList of the mib-entry (me) - record. - Only handled if the option(s) agent_capabilities - and module_compliance (respectively) are provided to the - compiler.

-

See compile/2 - for more info.

-

For backward compatibillity, the MIBs provided with - this application are not compiled with these - options.

-

Own Id: OTP-8966

-
- - -

[agent] Added a "complete" set of (snmp) table and variable - print functions, for each mib handled by the SNMP (agent) - application. This will be usefull when debugging a running agent.

-

See - print_mib_info/0, - print_mib_tables/0 - and - print_mib_variables/0 - for more info.

-

Own Id: OTP-8977

-
- - -

[compiler] Added a MIB compiler (frontend) escript, - snmpc.

-

Own Id: OTP-9004

-
- -
-
- -
- Fixed Bugs and Malfunctions - - - -

[agent] For the table vacmAccessTable, - when performing the is_set_ok and set operation(s), - all values of the vacmAccessSecurityModel column was - incorrectly translated to any.

- -

Own Id: OTP-8980

-
- - -

[agent] When calling - snmp_view_based_acm_mib:reconfigure/1 - on a running node, the table vacmAccessTable was not properly - cleaned. - This meant that if some entries in the vacm.conf file was removed - (compared to the current config), - while others where modified and/or added, the removed entrie(s) - would still exist in the vacmAccessTable table.

-

Own Id: OTP-8981

-

Aux Id: Seq 11750

-
- -
-
- - -
- Incompatibilities -

-

-
- -
- - -
- SNMP Development Toolkit 4.18 -

Version 4.18 supports code replacement in runtime from/to - version 4.17.1 and 4.17.

- -
- Improvements and new features - - -

Prepared for R14B release.

-
-
-
- -
Fixed Bugs and Malfunctions -

-

- -
- -
- Incompatibilities -

-

-
-
- - + + + + + + -- cgit v1.2.3 From 61ac3a2188af0f5d96ef9e1143845a12093acf4c Mon Sep 17 00:00:00 2001 From: Micael Karlberg Date: Tue, 30 Apr 2013 23:29:13 +0200 Subject: [snmp/agent] Some minor documentation additions --- lib/snmp/doc/src/snmpa_mib_data.xml | 40 ++++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) (limited to 'lib/snmp/doc') diff --git a/lib/snmp/doc/src/snmpa_mib_data.xml b/lib/snmp/doc/src/snmpa_mib_data.xml index 462112ac71..eeeb124d9d 100644 --- a/lib/snmp/doc/src/snmpa_mib_data.xml +++ b/lib/snmp/doc/src/snmpa_mib_data.xml @@ -180,7 +180,7 @@ Find the mib-entry corresponding to the Oid State = term() - Reply = {variable, ME} | {table_column, ME, TEOid} | {subagent, SAPid, SAOid} | [false, Reason} + Reply = {variable, ME} | {table_column, ME, TEOid} | {subagent, SAPid, SAOid} | {false, Reason} Oid = TEOid = SAOid = oid() SAPid = pid() ME = me() @@ -193,8 +193,46 @@ and if it is a table, Oid must be ....

+ + + + + + + next(State, Oid, MibView) -> Reply + Finds the lexicographically next oid + + State = term() + Reply = false | endOfTable | {subagent, SAPid, SAOid} | {variable, ME, VarOid} | {table, TableOid, TableRestOid, ME} + Oid = SAOid = VarOid = TableOid = TableRestOid = oid() + SAPid = pid() + ME = me() + + +

Finds the lexicographically next oid.

+ +
+ + + register_subagent(State, Oid, Pid) -> Reply + Register the subagent + + State = NewState = term() + Reply = {ok, NewState} | {error, Reason} + Oid = oid() + Pid = pid() + Reason = term() + + +

Register the the subagent, process, + handling part of the mib-tree.

+ + +
+
+ -- cgit v1.2.3 From 2d56595da89d9225d150912228cb158e80584f8e Mon Sep 17 00:00:00 2001 From: Micael Karlberg Date: Thu, 16 May 2013 19:43:59 +0200 Subject: [snmp/agent] Updated documentation and release notes --- lib/snmp/doc/src/notes.xml | 69 +++++++++++ lib/snmp/doc/src/ref_man.xml | 1 + lib/snmp/doc/src/snmp_app.xml | 27 ++++- lib/snmp/doc/src/snmp_config.xml | 31 +++-- lib/snmp/doc/src/snmpa_mib_data.xml | 232 +++++++++++++++++++++++++++++------- 5 files changed, 305 insertions(+), 55 deletions(-) (limited to 'lib/snmp/doc') diff --git a/lib/snmp/doc/src/notes.xml b/lib/snmp/doc/src/notes.xml index b47d4237f5..2dfe347e42 100644 --- a/lib/snmp/doc/src/notes.xml +++ b/lib/snmp/doc/src/notes.xml @@ -33,6 +33,75 @@ +
+ SNMP Development Toolkit 4.24 +

Version 4.24 supports code replacement in runtime from/to + version 4.23.1 and 4.23.

+ +
+ Improvements and new features + + + + +

[agent] Introduced a documented behaviour for the mib-server + mib-data backend. + At present only the default module (snmpa_mib_data_tttn) is + provided.

+

A config option for the (agent) + mib-servers + mib-data backend module has been added to the agent config options, + data_module.

+

Own Id: OTP-11101

+
+
+ +
+ +
+ Fixed Bugs and Malfunctions + + + + +

[compiler] Now handles MIBs importing the pesudotype BITS.

+

Own Id: OTP-10799

+
+ + +

[compiler] The MIB compiler could not handle a table index + that was defined later in the MIB.

+

Own Id: OTP-10808

+
+ +
+ +
+ +
+ Incompatibilities +

-

+ + +
+ +
+ +
SNMP Development Toolkit 4.23.1

Version 4.23.1 supports code replacement in runtime from/to diff --git a/lib/snmp/doc/src/ref_man.xml b/lib/snmp/doc/src/ref_man.xml index 92e8927f6d..2c12ac665a 100644 --- a/lib/snmp/doc/src/ref_man.xml +++ b/lib/snmp/doc/src/ref_man.xml @@ -44,6 +44,7 @@ + diff --git a/lib/snmp/doc/src/snmp_app.xml b/lib/snmp/doc/src/snmp_app.xml index 62dfa515d1..6ce5285a68 100644 --- a/lib/snmp/doc/src/snmp_app.xml +++ b/lib/snmp/doc/src/snmp_app.xml @@ -4,7 +4,7 @@

- 19972012 + 19972013 Ericsson AB. All Rights Reserved. @@ -340,7 +340,7 @@ ]]> -

mib_server_opt() = {mibentry_override, mibentry_override()} | {trapentry_override, trapentry_override()} | {verbosity, verbosity()} | {cache, mibs_cache()}

+

mib_server_opt() = {mibentry_override, mibentry_override()} | {trapentry_override, trapentry_override()} | {verbosity, verbosity()} | {cache, mibs_cache()} | {data_module, mib_data_module()}

Defines options specific for the SNMP agent mib server.

For defaults see the options in mib_server_opt().

@@ -365,7 +365,28 @@

Default is false.

- + + + ]]> + +

Defines the backend mib_data storage module of the + SNMP agent mib-server as defined by the + snmpa_mib_data + behaviour.

+

At present only the default module is provided with the agent, + snmpa_mib_data_tttn.

+ +

Default module is snmpa_mib_data_tttn.

+
+ + ]]>

Shall the agent utilize the mib server lookup cache or not.

diff --git a/lib/snmp/doc/src/snmp_config.xml b/lib/snmp/doc/src/snmp_config.xml index 42831ecb34..4e2e932b46 100644 --- a/lib/snmp/doc/src/snmp_config.xml +++ b/lib/snmp/doc/src/snmp_config.xml @@ -337,7 +337,7 @@ ]]> -

mib_server_opt() = {mibentry_override, mibentry_override()} | {trapentry_override, trapentry_override()} | {verbosity, verbosity()} | {cache, mibs_cache()} | {mob_data_mod, mib_data_mod()}

+

mib_server_opt() = {mibentry_override, mibentry_override()} | {trapentry_override, trapentry_override()} | {verbosity, verbosity()} | {cache, mibs_cache()} | {data_module, mib_data_module()}

Defines options specific for the SNMP agent mib server.

For defaults see the options in mib_server_opt().

@@ -362,28 +362,35 @@

Default is false.

- - ]]> - -

Shall the agent utilize the mib server lookup cache or not.

-

Default is true (in which case the mibs_cache_opts() - default values apply).

-
- - - ]]> + + + ]]>

Defines the backend mib_data storage module of the SNMP agent mib-server as defined by the snmpa_mib_data behaviour.

+

At present only the default module is provided with the agent, + snmpa_mib_data_tttn.

+

Default module is snmpa_mib_data_tttn.

+ + ]]> + +

Shall the agent utilize the mib server lookup cache or not.

+

Default is true (in which case the mibs_cache_opts() + default values apply).

+
+ ]]> diff --git a/lib/snmp/doc/src/snmpa_mib_data.xml b/lib/snmp/doc/src/snmpa_mib_data.xml index eeeb124d9d..8e79bb1673 100644 --- a/lib/snmp/doc/src/snmpa_mib_data.xml +++ b/lib/snmp/doc/src/snmpa_mib_data.xml @@ -23,10 +23,7 @@ snmpa_mib_data - - - snmpa_mib_data.xml @@ -41,76 +38,89 @@ must export the following functions:

-

new/1

+ new/1
-

close/1

+ close/1
-

sync/1

+ sync/1
-

load_mib/4

+ load_mib/4
-

unload_mib/4

+ unload_mib/4
-

lookup/2

+ lookup/2
-

next/3

+ next/3
-

register_subagent/3

+ register_subagent/3
-

unregister_subagent/2

+ unregister_subagent/2
-

which_mib/2

+ which_mib/2
-

which_mibs/1

+ which_mibs/1
-

whereis_mib/2

+ whereis_mib/2
-

backup/2

+ dump/2
-

dump/2

+ info/1
-

info/1,2

+ backup/2
-

code_change/2

+ code_change/4
-

The semantics of them and their exact signatures are explained - below.

- +

The semantics of them and their exact signatures are + explained below.

+ +

Note that some of the data need to be "passed on" to the + symbolic-store for storage, see the default mib-server data + module, snmpa_mib_data_tttn for details.

+ + +
+ CALLBACK FUNCTIONS +

The following functions must be exported from a + mib-server data callback module:

+ + +
+ - new(Storage) -> State - Create new (mib-storage) instance + Module:new(Storage) -> State + Create new (mib-server) data instance Storage = mib_storage() State = term() -

Create a new mib-storage instance.

+

Create a new mib-server data instance.

- close(State) -> void() + Module:close(State) -> void() Close the mib-storage State = term() @@ -123,13 +133,13 @@ - sync(State) -> void() + Module:sync(State) -> void() Synchronize to disc State = term() -

Synchronize (write to disc, if possible) the data to disc. +

Synchronize (write to disc, if possible) the mib-server data. This depends on the mib_storage option, and will only have an effect if the mib-storage option has an actual disc component (such as dets, or ets with a file).

@@ -139,7 +149,7 @@
- load_mib(State, Filename, MeOverride, TeOverride) -> {ok, NewState} | {error, Reason} + Module:load_mib(State, Filename, MeOverride, TeOverride) -> {ok, NewState} | {error, Reason} Load a mib into the mib-server State = NewState = term() @@ -160,7 +170,7 @@ - unload_mib(State, Filename) -> {ok, NewState} | {error, Reason} + Module:unload_mib(State, Filename) -> {ok, NewState} | {error, Reason} Unload mib from the mib-server State = NewState = term() @@ -176,7 +186,7 @@ - lookup(State, Oid) -> Reply + Module:lookup(State, Oid) -> Reply Find the mib-entry corresponding to the Oid State = term() @@ -187,19 +197,18 @@ Reason = term() -

Find the mib-entry corresponding to the Oid. - If it is a variable, the Oid must be - .0 - and if it is a table, Oid must be -

....

- +

Find the mib-entry corresponding to the Oid. + If it is a variable, the Oid must be + <Oid for var>.0 + and if it is a table, Oid must be + <table>.<entry>.<col>.<any>.

- next(State, Oid, MibView) -> Reply + Module:next(State, Oid, MibView) -> Reply Finds the lexicographically next oid State = term() @@ -216,7 +225,7 @@ - register_subagent(State, Oid, Pid) -> Reply + Module:register_subagent(State, Oid, Pid) -> Reply Register the subagent State = NewState = term() @@ -226,13 +235,156 @@ Reason = term() -

Register the the subagent, process, +

Register the subagent, process, handling part of the mib-tree.

+ + Module:unregister_subagent(State, PidOrOid) -> Reply + Unregister the subagent + + State = NewState = term() + Reply = {ok, NewState} | {ok, NewState, Pid} | {error, Reason} + PidOrOid = pid() | oid() + Pid = pid() + Reason = term() + + +

Unregister the subagent, handling part of the mib-tree, + as specified by the oid() or pid() + (PidOrOid).

+

When unregister the subagent using an oid(), the pid() + of the process handling the sub-tree is also returned.

+ + +
+
+ + + Module:dump(State, Destination) -> Reply + Unregister the subagent + + State = term() + Reply = ok | {error, Reason} + Destination = io | filename() + Pid = pid() + Reason = term() + + +

Dump the mib-server data to stdio (Destination = io) or + the specified file.

+ + +
+
+ + + Module:which_mib(State, Oid) -> Reply + Retrieve the mib file for an oid() + + State = term() + Reply = {ok, MibFile} | {error, Reason} + Oid = oid() + MibFile = string() + Reason = term() + + +

Retrieve the mib-file to which an given oid() belongs.

+ + +
+
+ + + Module:which_mibs(State) -> Reply + Retrieve all loaded mib files + + State = term() + Reply = [{MibName, Filename}] + MibName = atom() + Filename = string() + + +

Retrieve all loaded mib-files.

+ + +
+
+ + + Module:whereis_mib(State, MibName) -> Reply + Retrieve the mib file for the mib + + State = term() + MibName = atom() + Reply = {ok, Filename} | {error, Reason} + Filename = string() + Reason = term() + + +

Retrieve the mib file for the mib.

+ + +
+
+ + + Module:info(State) -> Reply + Retrieve misc info for the mib data + + State = term() + Reply = {ok, Filename} | {error, Reason} + Filename = string() + Reason = term() + + +

Retrieve misc info for the mib data.

+

This is a utility function used to inspect, for instance, + memory usage, in a simple way.

+ + +
+
+ + + Module:backup(State, BackupDir) -> Reply + Perform a backup of the mib-server data + + State = term() + Reply = ok | {error, Reason} + BackupDir = string() + Reason = term() + + +

Perform a backup of the mib-server data.

+

Note that its implementation dependant (and also + dependent on mib-storage is used) if a backup is possible.

+ + +
+
+ + + Module:code_change(Destination, Vsn, Extra, State) -> NewState + Perform a code-change + + Destination = up | down + Vsn = term() + Extra = term() + State = NewState = term() + + +

Perform a code-change (upgrade or downgrade).

+

See + gen_server + for more info regarding the Vsn and Extra arguments.

+ +
+
+ -- cgit v1.2.3 From 2d71b25ef2f0edf15012a5f81210ce7f9fe507e8 Mon Sep 17 00:00:00 2001 From: Micael Karlberg Date: Fri, 17 May 2013 19:35:57 +0200 Subject: [snmp/agent] Improved mib-server data module overview text --- lib/snmp/doc/src/snmpa_mib_data.xml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'lib/snmp/doc') diff --git a/lib/snmp/doc/src/snmpa_mib_data.xml b/lib/snmp/doc/src/snmpa_mib_data.xml index 8e79bb1673..4c971ec5d9 100644 --- a/lib/snmp/doc/src/snmpa_mib_data.xml +++ b/lib/snmp/doc/src/snmpa_mib_data.xml @@ -90,8 +90,9 @@

The semantics of them and their exact signatures are explained below.

-

Note that some of the data need to be "passed on" to the - symbolic-store for storage, see the default mib-server data +

Note that the data extracted from the imported (loaded) + mibs are stored partly by the mib-server and partly by the + symbolic-store server. See the default mib-server data module, snmpa_mib_data_tttn for details.

-- cgit v1.2.3 From 3ffa5b5c87518b6579f48b935cb67c7eb22b10b4 Mon Sep 17 00:00:00 2001 From: Micael Karlberg Date: Tue, 21 May 2013 11:52:14 +0200 Subject: [snmp/agent] Some mib-server options rewording --- lib/snmp/doc/src/snmp_app.xml | 32 ++++++++++++++++---------------- lib/snmp/doc/src/snmp_config.xml | 34 +++++++++++++++++----------------- 2 files changed, 33 insertions(+), 33 deletions(-) (limited to 'lib/snmp/doc') diff --git a/lib/snmp/doc/src/snmp_app.xml b/lib/snmp/doc/src/snmp_app.xml index 6ce5285a68..c7a74f0ca6 100644 --- a/lib/snmp/doc/src/snmp_app.xml +++ b/lib/snmp/doc/src/snmp_app.xml @@ -340,7 +340,7 @@ ]]> -

mib_server_opt() = {mibentry_override, mibentry_override()} | {trapentry_override, trapentry_override()} | {verbosity, verbosity()} | {cache, mibs_cache()} | {data_module, mib_data_module()}

+

mib_server_opt() = {mibentry_override, mibentry_override()} | {trapentry_override, trapentry_override()} | {verbosity, verbosity()} | {cache, mibs_cache()} | {data_module, mib_server_data_module()}

Defines options specific for the SNMP agent mib server.

For defaults see the options in mib_server_opt().

@@ -367,12 +367,12 @@ - ]]> + ]]> -

Defines the backend mib_data storage module of the - SNMP agent mib-server as defined by the +

Defines the backend data module of the SNMP agent mib-server as + defined by the snmpa_mib_data behaviour.

At present only the default module is provided with the agent, @@ -406,30 +406,30 @@ ]]>

Defines if the mib server shall perform cache gc automatically or - leave it to the user (see - gc_mibs_cache/0,1,2,3).

+ leave it to the user (see + gc_mibs_cache/0,1,2,3).

Default is true.

0 ]]> -

Defines how old the entries in the cache will be allowed before - they are GC'ed (assuming GC is performed). Each entry in the - cache is "touched" whenever it is accessed.

-

The age is defined in milliseconds.

-

Default is 10 timutes.

+

Defines how old the entries in the cache will be allowed + to become before they are GC'ed (assuming GC is performed). + Each entry in the cache is "touched" whenever it is accessed.

+

The age is defined in milliseconds.

+

Default is 10 timutes.

0 | infinity ]]>

When performing a GC, this is the max number of cache entries - that will be deleted from the cache.

+ that will be deleted from the cache.

The reason for having this limit is that if the cache is - large, the GC can potentially take a long time, during which - the agent is locked.

-

Default is 100.

+ large, the GC can potentially take a long time, during which + the agent is locked.

+

Default is 100.

diff --git a/lib/snmp/doc/src/snmp_config.xml b/lib/snmp/doc/src/snmp_config.xml index 4e2e932b46..28bfcbb3de 100644 --- a/lib/snmp/doc/src/snmp_config.xml +++ b/lib/snmp/doc/src/snmp_config.xml @@ -337,7 +337,7 @@ ]]> -

mib_server_opt() = {mibentry_override, mibentry_override()} | {trapentry_override, trapentry_override()} | {verbosity, verbosity()} | {cache, mibs_cache()} | {data_module, mib_data_module()}

+

mib_server_opt() = {mibentry_override, mibentry_override()} | {trapentry_override, trapentry_override()} | {verbosity, verbosity()} | {cache, mibs_cache()} | {data_module, mib_server_data_module()}

Defines options specific for the SNMP agent mib server.

For defaults see the options in mib_server_opt().

@@ -364,12 +364,12 @@ - ]]> + ]]> -

Defines the backend mib_data storage module of the - SNMP agent mib-server as defined by the +

Defines the backend data module of the SNMP agent mib-server as + defined by the snmpa_mib_data behaviour.

At present only the default module is provided with the agent, @@ -403,18 +403,18 @@ ]]>

Defines if the mib server shall perform cache gc automatically or - leave it to the user (see - gc_mibs_cache/0,1,2,3).

-

Default is true.

+ leave it to the user (see + gc_mibs_cache/0,1,2,3).

+

Default is true.

0 ]]> -

Defines how old the entries in the cache will be allowed before - they are GC'ed (assuming GC is performed). Each entry in the - cache is "touched" whenever it is accessed.

-

The age is defined in milliseconds.

+

Defines how old the entries in the cache will be allowed + to become before they are GC'ed (assuming GC is performed). + Each entry in the cache is "touched" whenever it is accessed.

+

The age is defined in milliseconds.

Default is 10 timutes.

@@ -422,11 +422,11 @@ 0 | infinity ]]>

When performing a GC, this is the max number of cache entries - that will be deleted from the cache.

-

The reason for having this limit is that if the cache is - large, the GC can potentially take a long time, during which - the agent is locked.

-

Default is 100.

+ that will be deleted from the cache.

+

The reason for having this limit is that if the cache is + large, the GC can potentially take a long time, during which + the agent is locked.

+

Default is 100.

-- cgit v1.2.3