diff options
Diffstat (limited to 'lib/snmp/src/agent/snmpa_vacm.erl')
-rw-r--r-- | lib/snmp/src/agent/snmpa_vacm.erl | 29 |
1 files changed, 20 insertions, 9 deletions
diff --git a/lib/snmp/src/agent/snmpa_vacm.erl b/lib/snmp/src/agent/snmpa_vacm.erl index d7d588c30d..a04d8bbdd8 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-2021. All Rights Reserved. +%% Copyright Ericsson AB 1999-2023. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. @@ -142,12 +142,16 @@ split_prefix(_, _) -> false. %% ViewName is including length from now on loop_mib_view(ViewName, Subtree, Indexes, MibView) -> - [{value, Mask}, {value, Type}, {value, Status}] = - snmp_view_based_acm_mib:vacmViewTreeFamilyTable( - get, Indexes, - [?vacmViewTreeFamilyMask, - ?vacmViewTreeFamilyType, - ?vacmViewTreeFamilyStatus]), + {Mask, Type, Status} = + case loop_mib_view_get(Indexes) of + [{value, M}, {value, T}, {value, S}] -> + {M, T, S}; + Else -> + ?vinfo("Failed vacmViewTreeFamilyTable lookup:" + "~n Indexes: ~p" + "~n Result: ~p", [Indexes, Else]), + exit(noSuchView) + end, NextMibView = case Status of ?'RowStatus_active' -> @@ -169,6 +173,13 @@ loop_mib_view(ViewName, Subtree, Indexes, MibView) -> end end. +loop_mib_view_get(Indexes) -> + Cols = [?vacmViewTreeFamilyMask, + ?vacmViewTreeFamilyType, + ?vacmViewTreeFamilyStatus], + snmp_view_based_acm_mib:vacmViewTreeFamilyTable(get, Indexes, Cols). + + %%%----------------------------------------------------------------- %%% 1b. The ordered ets table that implements vacmAccessTable %%%----------------------------------------------------------------- @@ -306,7 +317,7 @@ dump_table() -> %% time dumping the table. unique_table_name(Pre) -> %% We want something that is guaranteed to be unique, - %% therefor we use erlang:timestamp() instead of os:timestamp() + %% therefore we use erlang:timestamp() instead of os:timestamp() unique_table_name(Pre, erlang:timestamp()). unique_table_name(Pre, {_A, _B, C} = Now) -> @@ -378,7 +389,7 @@ get_access_row(Key, GroupKey, ContextName, SecModel, SecLevel, Score, Found) -> {ok, NScore} when NScore > Score -> get_access_row(NextKey, GroupKey, ContextName, SecModel, SecLevel, NScore, Row); - {ok, _} -> % e.g. a throwed {ok, 0} + {ok, _} -> % e.g. a thrown {ok, 0} get_access_row(NextKey, GroupKey, ContextName, SecModel, SecLevel, Score, Found); false -> |