From aa7bbf1ec743389c1b3a461fa40a858800ae5049 Mon Sep 17 00:00:00 2001
From: Micael Karlberg
Date: Tue, 7 Dec 2010 13:46:13 +0100
Subject: [agent] When calling snmp_view_based_acm_mib:reconfigure/1 on a
running node, the vacmAccessTable whas not properly cleaned. This means 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.
---
lib/snmp/doc/src/notes.xml | 45 +++++++++++++---
lib/snmp/doc/src/snmp_view_based_acm_mib.xml | 74 +++++++++++++++-----------
lib/snmp/doc/src/snmpa_error.xml | 7 ++-
lib/snmp/src/agent/snmp_view_based_acm_mib.erl | 2 +
lib/snmp/src/agent/snmpa_vacm.erl | 8 ++-
lib/snmp/src/app/snmp.appup.src | 12 +++++
lib/snmp/vsn.mk | 21 +++++++-
7 files changed, 128 insertions(+), 41 deletions(-)
(limited to 'lib/snmp')
diff --git a/lib/snmp/doc/src/notes.xml b/lib/snmp/doc/src/notes.xml
index 493e7aa092..cb41ca8e3a 100644
--- a/lib/snmp/doc/src/notes.xml
+++ b/lib/snmp/doc/src/notes.xml
@@ -32,23 +32,54 @@
notes.xml
+
+ SNMP Development Toolkit 4.18.1
+ Version 4.18.1 supports code replacement in runtime from/to
+ version 4.18, 4.17.1 and 4.17.
+
+
+ Improvements and new features
+ -
+
+
+
+ Reported Fixed Bugs and Malfunctions
+
+ -
+
[agent] When calling
+ snmp_view_based_acm_mib:reconfigure/1
+ on a running node, the table vacmAccessTable was not properly
+ cleaned.
+ This means 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.
+ Own Id: OTP-8981
+ Aux Id: Seq 11750
+
+
+
+
+
+ Incompatibilities
+ -
+
+
+
+
SNMP 4.18
Fixed Bugs and Malfunctions
-
-
- When the function FilterMod:accept_recv/2 returned false
- the SNMP agent stopped collecting messages from UDP.
-
- Own Id: OTP-8761
+ Prepared for R14B.
-
+
-
+
SNMP Development Toolkit 4.17.1
Version 4.17.1 supports code replacement in runtime from/to
version 4.17, 4.16.2, 4.16.1, 4.16, 4.15, 4.14 and 4.13.5.
diff --git a/lib/snmp/doc/src/snmp_view_based_acm_mib.xml b/lib/snmp/doc/src/snmp_view_based_acm_mib.xml
index ffea256608..d595f6b93b 100644
--- a/lib/snmp/doc/src/snmp_view_based_acm_mib.xml
+++ b/lib/snmp/doc/src/snmp_view_based_acm_mib.xml
@@ -4,7 +4,7 @@
- 19992009
+ 19992010
Ericsson AB. All Rights Reserved.
@@ -38,7 +38,10 @@
SNMP-VIEW-BASED-ACM-MIB, and functions for configuring the database.
The configuration files are described in the SNMP User's Manual.
+
+
+
configure(ConfDir) -> void()
@@ -48,27 +51,24 @@
This function is called from the supervisor at system
- start-up.
-
+ start-up.
Inserts all data in the configuration files into the
- database and destroys all old rows with StorageType
- volatile. The rows created from the configuration file
- will have StorageType nonVolatile.
-
- All snmp counters are set to zero.
-
+ database and destroys all old rows with StorageType
+ volatile. The rows created from the configuration file
+ will have StorageType nonVolatile.
+ All snmp counters are set to zero.
If an error is found in the configuration file, it is
- reported using the function config_err/2 of the error
- report module, and the function fails with the reason
- configuration_error.
-
+ reported using the function config_err/2 of the error
+ report module, and the function fails with the reason
+ configuration_error.
ConfDir is a string which points to the directory
- where the configuration files are found.
-
- The configuration file read is: vacm.conf.
-
+ where the configuration files are found.
+ The configuration file read is: vacm.conf.
+
+
+
reconfigure(ConfDir) -> void()
Configure the SNMP-VIEW-BASED-ACM-MIB
@@ -88,18 +88,20 @@
All snmp counters are set to zero.
If an error is found in the configuration file, it is
- reported using the function config_err/2 of the error
- report module, and the function fails with the reason
+ reported using the function
+ config_err/2
+ of the error report module, and the function fails with the reason
configuration_error.
ConfDir is a string which points to the directory
where the configuration files are found.
- The configuration file read is: vacm.conf.
-
-
+ The configuration file read is: vacm.conf.
+
+
+
add_sec2group(SecModel, SecName, GroupName) -> Ret
Add one security to group definition
@@ -113,10 +115,13 @@
Adds a security to group definition to the agent config.
- Equivalent to one vacmSecurityToGroup-line in the vacm.conf file.
+ Equivalent to one vacmSecurityToGroup-line in the
+ vacm.conf file.
+
+
delete_sec2group(Key) -> Ret
Delete one security to group definition
@@ -127,9 +132,11 @@
Delete a security to group definition from the agent config.
+
+
add_access(GroupName, Prefix, SecModel, SecLevel, Match, RV, WV, NV) -> Ret
Add one access definition
@@ -148,10 +155,12 @@
Adds a access definition to the agent config.
- Equivalent to one vacmAccess-line in the vacm.conf file.
-
+ Equivalent to one vacmAccess-line in the vacm.conf file.
+
+
+
delete_access(Key) -> Ret
Delete one access definition
@@ -161,10 +170,12 @@
Reason = term()
- Delete a access definition from the agent config.
-
+ Delete a access definition from the agent config.
+
+
+
add_view_tree_fam(ViewIndex, SubTree, Status, Mask) -> Ret
Add one view tree family definition
@@ -178,11 +189,14 @@
Reason = term()
- Adds a view tree family definition to the agent config.
- Equivalent to one vacmViewTreeFamily-line in the vacm.conf file.
-
+ Adds a view tree family definition to the agent config.
+ Equivalent to one vacmViewTreeFamily-line in the
+ vacm.conf file.
+
+
+
delete_view_tree_fam(Key) -> Ret
Delete one view tree family definition
diff --git a/lib/snmp/doc/src/snmpa_error.xml b/lib/snmp/doc/src/snmpa_error.xml
index a7312e8b24..4dbafdfbb7 100644
--- a/lib/snmp/doc/src/snmpa_error.xml
+++ b/lib/snmp/doc/src/snmpa_error.xml
@@ -4,7 +4,7 @@
- 20022009
+ 20022010
Ericsson AB. All Rights Reserved.
@@ -51,6 +51,8 @@
error_report_mod, see
configuration parameters.
+
+
@@ -67,8 +69,11 @@
Format and Args are as in
io:format(Format, Args).
+
+
+
user_err(Format, Args) -> void()
Called if a user related error occurs
diff --git a/lib/snmp/src/agent/snmp_view_based_acm_mib.erl b/lib/snmp/src/agent/snmp_view_based_acm_mib.erl
index 657207b36e..5e188c74c5 100644
--- a/lib/snmp/src/agent/snmp_view_based_acm_mib.erl
+++ b/lib/snmp/src/agent/snmp_view_based_acm_mib.erl
@@ -181,6 +181,8 @@ init_tabs(Sec2Group, Access, View) ->
snmpa_local_db:table_delete(db(vacmSecurityToGroupTable)),
snmpa_local_db:table_create(db(vacmSecurityToGroupTable)),
init_sec2group_table(Sec2Group),
+ ?vdebug("create vacm access table",[]),
+ snmpa_vacm:cleanup(),
init_access_table(Access),
?vdebug("create vacm view-tree-family table",[]),
snmpa_local_db:table_delete(db(vacmViewTreeFamilyTable)),
diff --git a/lib/snmp/src/agent/snmpa_vacm.erl b/lib/snmp/src/agent/snmpa_vacm.erl
index 2eacea4301..91cecfcd1e 100644
--- a/lib/snmp/src/agent/snmpa_vacm.erl
+++ b/lib/snmp/src/agent/snmpa_vacm.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1999-2009. All Rights Reserved.
+%% Copyright Ericsson AB 1999-2010. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -21,7 +21,7 @@
-export([get_mib_view/5]).
-export([init/1, init/2, backup/1]).
-export([delete/1, get_row/1, get_next_row/1, insert/1, insert/2,
- dump_table/0]).
+ cleanup/0, dump_table/0]).
-include("SNMPv2-TC.hrl").
-include("SNMP-VIEW-BASED-ACM-MIB.hrl").
@@ -256,6 +256,10 @@ delete(Key) ->
ets:delete(snmpa_vacm, Key),
dump_table().
+
+cleanup() ->
+ ets:delete_all_objects(snmpa_vacm).
+
dump_table(true) ->
dump_table();
dump_table(_) ->
diff --git a/lib/snmp/src/app/snmp.appup.src b/lib/snmp/src/app/snmp.appup.src
index 2375e3df70..fafbf79bb7 100644
--- a/lib/snmp/src/app/snmp.appup.src
+++ b/lib/snmp/src/app/snmp.appup.src
@@ -22,6 +22,12 @@
%% ----- U p g r a d e -------------------------------------------------------
[
+ {"4.18",
+ [
+ {load_module, snmpa_vacm, soft_purge, soft_purge, []},
+ {load_module, snmp_view_based_acm_mib, soft_purge, soft_purge, [snmpa_vacm]}
+ ]
+ },
{"4.17.1",
[
{load_module, snmp_community_mib, soft_purge, soft_purge, []},
@@ -66,6 +72,12 @@
%% ------D o w n g r a d e ---------------------------------------------------
[
+ {"4.18",
+ [
+ {load_module, snmpa_vacm, soft_purge, soft_purge, []},
+ {load_module, snmp_view_based_acm_mib, soft_purge, soft_purge, [snmpa_vacm]}
+ ]
+ },
{"4.17.1",
[
{load_module, snmp_community_mib, soft_purge, soft_purge, []},
diff --git a/lib/snmp/vsn.mk b/lib/snmp/vsn.mk
index 1229b12ae2..67cc05687d 100644
--- a/lib/snmp/vsn.mk
+++ b/lib/snmp/vsn.mk
@@ -1,3 +1,22 @@
-SNMP_VSN = 4.18
+#-*-makefile-*- ; force emacs to enter makefile-mode
+
+# %CopyrightBegin%
+#
+# Copyright Ericsson AB 1997-2010. All Rights Reserved.
+#
+# The contents of this file are subject to the Erlang Public License,
+# Version 1.1, (the "License"); you may not use this file except in
+# compliance with the License. You should have received a copy of the
+# Erlang Public License along with this software. If not, it can be
+# retrieved online at http://www.erlang.org/.
+#
+# Software distributed under the License is distributed on an "AS IS"
+# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+# the License for the specific language governing rights and limitations
+# under the License.
+#
+# %CopyrightEnd%
+
+SNMP_VSN = 4.18.1
PRE_VSN =
APP_VSN = "snmp-$(SNMP_VSN)$(PRE_VSN)"
--
cgit v1.2.3