aboutsummaryrefslogtreecommitdiffstats
path: root/lib/snmp/src/agent/snmpa_supervisor.erl
diff options
context:
space:
mode:
authorMicael Karlberg <[email protected]>2012-01-24 13:49:45 +0100
committerMicael Karlberg <[email protected]>2012-01-24 13:49:45 +0100
commit8ae3c543864bfe62b80667a950340281e9fb79f3 (patch)
treeba992366873ba156a5da06e7f27ddebf3ab2727e /lib/snmp/src/agent/snmpa_supervisor.erl
parent7619b94a2c1098cbd176507b34d291806833a4b7 (diff)
parente0e862b42d508b5112395f41584bed90c74a8a92 (diff)
downloadotp-8ae3c543864bfe62b80667a950340281e9fb79f3.tar.gz
otp-8ae3c543864bfe62b80667a950340281e9fb79f3.tar.bz2
otp-8ae3c543864bfe62b80667a950340281e9fb79f3.zip
[snmp] Merged from R13B and also fixed appup
Merge from R13B maintenance branch (snmp-4.17.3), fixed appup and source diff (there is some between snmp-4.17.3 and 4.21.6). Merge branch 'maint-r13' into bmk/snmp/snmp4216_integration/r14 Conflicts: lib/snmp/doc/src/notes.xml lib/snmp/src/agent/snmpa.erl lib/snmp/src/agent/snmpa_agent.erl lib/snmp/src/agent/snmpa_trap.erl lib/snmp/src/app/snmp.appup.src lib/snmp/test/snmp_agent_test.erl lib/snmp/vsn.mk
Diffstat (limited to 'lib/snmp/src/agent/snmpa_supervisor.erl')
-rw-r--r--lib/snmp/src/agent/snmpa_supervisor.erl40
1 files changed, 36 insertions, 4 deletions
diff --git a/lib/snmp/src/agent/snmpa_supervisor.erl b/lib/snmp/src/agent/snmpa_supervisor.erl
index 5ef5914e18..7a9c214e0d 100644
--- a/lib/snmp/src/agent/snmpa_supervisor.erl
+++ b/lib/snmp/src/agent/snmpa_supervisor.erl
@@ -176,8 +176,8 @@ init([AgentType, Opts]) ->
"~n AgentType: ~p"
"~n Opts: ~p", [AgentType, Opts]),
- put(sname, asup),
- put(verbosity,get_verbosity(Opts)),
+ put(sname, asup),
+ put(verbosity, get_verbosity(Opts)),
?vlog("starting",[]),
@@ -203,7 +203,12 @@ init([AgentType, Opts]) ->
Vsns = get_opt(versions, Opts, [v1,v2,v3]),
?vdebug("[agent table] store versions: ~p",[Vsns]),
ets:insert(snmp_agent_table, {versions, Vsns}),
-
+
+ %% -- Max number of VBs in a Get-BULK response --
+ GbMaxVBs = get_gb_max_vbs(Opts),
+ ?vdebug("[agent table] Get-BULK max VBs: ~p", [GbMaxVBs]),
+ ets:insert(snmp_agent_table, {gb_max_vbs, GbMaxVBs}),
+
%% -- DB-directory --
DbDir = get_opt(db_dir, Opts),
?vdebug("[agent table] store db_dir: ~n ~p",[DbDir]),
@@ -377,7 +382,8 @@ init([AgentType, Opts]) ->
{versions, Vsns},
{net_if, NiOpts},
{mib_server, MibsOpts},
- {note_store, NsOpts}|
+ {note_store, NsOpts},
+ {gb_max_vbs, GbMaxVBs} |
get_opt(master_agent_options, Opts, [])],
AgentSpec =
@@ -542,6 +548,32 @@ get_verbosity(Opts) ->
get_agent_type(Opts) ->
get_opt(agent_type, Opts, master).
+
+%% We validate this option! This should really be done for all
+%% options, but it is beyond the scope of this ticket, OTP-9700.
+
+get_gb_max_vbs(Opts) ->
+ Validate =
+ fun(GbMaxVBs)
+ when ((is_integer(GbMaxVBs) andalso (GbMaxVBs > 0)) orelse
+ (GbMaxVBs =:= infinity)) ->
+ ok;
+ (_) ->
+ error
+ end,
+ get_option(gb_max_vbs, ?DEFAULT_GB_MAX_VBS, Validate, Opts).
+
+get_option(Key, Default, Validate, Opts)
+ when is_list(Opts) andalso is_function(Validate) ->
+ Value = get_opt(Key, Opts, Default),
+ case Validate(Value) of
+ ok ->
+ Value;
+ error ->
+ exit({bad_option, Key, Value})
+ end.
+
+
get_opt(Key, Opts) ->
snmp_misc:get_option(Key, Opts).