%%
%% %CopyrightBegin%
%%
%% Copyright Ericsson AB 2010-2016. 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.
%% You may obtain a copy of the License at
%%
%% http://www.apache.org/licenses/LICENSE-2.0
%%
%% Unless required by applicable law or agreed to in writing, software
%% distributed under the License is distributed on an "AS IS" BASIS,
%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
%% See the License for the specific language governing permissions and
%% limitations under the License.
%%
%% %CopyrightEnd%
%%
%%----------------------------------------------------------------------
%% Purpose: Utility functions for the (snmp manager) user test(s).
%%----------------------------------------------------------------------
-module(snmp_manager_user_old).
-behaviour(snmpm_user_old).
%%----------------------------------------------------------------------
%% Include files
%%----------------------------------------------------------------------
-include_lib("common_test/include/ct.hrl").
-include("snmp_test_lib.hrl").
%%----------------------------------------------------------------------
%% External exports
%%----------------------------------------------------------------------
-export([
start/0, start/1,
stop/0,
register_agent/1, register_agent/2, register_agent/3,
unregister_agent/1, unregister_agent/2,
agent_info/3,
update_agent_info/4,
which_agents/0, which_users/0,
load_mib/1, unload_mib/1,
sync_get/2, sync_get/3,
async_get/2, async_get/3,
sync_get_next/2, sync_get_next/3,
async_get_next/2, async_get_next/3,
sync_set/2, sync_set/3,
async_set/2, async_set/3,
sync_get_bulk/4, sync_get_bulk/5,
async_get_bulk/4, async_get_bulk/5,
name_to_oid/1, oid_to_name/1,
purify_oid/1
]).
-export([
handle_error/3,
handle_agent/4,
handle_pdu/5,
handle_trap/4,
handle_inform/4,
handle_report/4
]).
%%----------------------------------------------------------------------
%% Internal exports
%%----------------------------------------------------------------------
%% -define(SERVER, ?MODULE).
-define(USER_ID, ?MODULE).
%% -record(state, {parent, id, reqs = []}).
%% -record(request, {from, ref, tmr, req_id, type}).
%%----------------------------------------------------------------------
%% The user API
%%----------------------------------------------------------------------
start() ->
start([]).
start(DefaultAgentConfig) when is_list(DefaultAgentConfig) ->
snmpm:register_user(?USER_ID, ?MODULE, self(), DefaultAgentConfig).
stop() ->
snmpm:unregister_user(?USER_ID).
register_agent(Addr) ->
snmpm:register_agent(?USER_ID, Addr).
register_agent(Addr, PortOrConfig) ->
snmpm:register_agent(?USER_ID, Addr, PortOrConfig).
register_agent(Addr, Port, Config) ->
snmpm:register_agent(?USER_ID, Addr, Port, Config).
unregister_agent(Addr) ->
snmpm:unregister_agent(?USER_ID, Addr).
unregister_agent(Addr, Port) ->
snmpm:unregister_agent(?USER_ID, Addr, Port).
agent_info(Addr, Port, Item) ->
case snmpm:target_name(Addr, Port) of
{ok, TargetName} ->
snmpm:agent_info(TargetName, Item);
Error ->
Error
end.
update_agent_info(Addr, Port, Item, Val) ->
case snmpm:target_name(Addr, Port) of
{ok, TargetName} ->
snmpm:update_agent_info(?USER_ID, TargetName, Item, Val);
Error ->
Error
end.
which_agents() ->
snmpm:which_agents().
which_users() ->
snmpm:which_users().
load_mib(Mib) ->
snmpm:load_mib(?USER_ID, Mib).
unload_mib(Mib) ->
snmpm:unload_mib(?USER_ID, Mib).
%% --
sync_get(Addr, Oids) ->
case snmpm:target_name(Addr) of
{ok, TargetName} ->
snmpm:sync_get2(?USER_ID, TargetName, Oids);
Error ->
Error
end.
sync_get(Addr, Port, Oids) ->
case snmpm:target_name(Addr, Port) of
{ok, TargetName} ->
snmpm:sync_get2(?USER_ID, TargetName, Oids);
Error ->
Error
end.
%% --
async_get(Addr, Oids) ->
case snmpm:target_name(Addr) of
{ok, TargetName} ->
snmpm:async_get2(?USER_ID, TargetName, Oids);
Error ->
Error
end.
async_get(Addr, Port, Oids) ->
case snmpm:target_name(Addr, Port) of
{ok, TargetName} ->
snmpm:async_get2(?USER_ID, TargetName, Oids);
Error ->
Error
end.
%% --
sync_get_next(Addr, Oids) ->
case snmpm:target_name(Addr) of
{ok, TargetName} ->
snmpm:sync_get_next2(?USER_ID, TargetName, Oids);
Error ->
Error
end.
sync_get_next(Addr, Port, Oids) ->
case snmpm:target_name(Addr, Port) of
{ok, TargetName} ->
snmpm:sync_get_next2(?USER_ID, TargetName, Oids);
Error ->
Error
end.
%% --
async_get_next(Addr, Oids) ->
case snmpm:target_name(Addr) of
{ok, TargetName} ->
snmpm:async_get_next2(?USER_ID, TargetName, Oids);
Error ->
Error
end.
async_get_next(Addr, Port, Oids) ->
case snmpm:target_name(Addr, Port) of
{ok, TargetName} ->
snmpm:async_get_next2(?USER_ID, TargetName, Oids);
Error ->
Error
end.
%% --
sync_set(Addr, VAV) ->
case snmpm:target_name(Addr) of
{ok, TargetName} ->
snmpm:sync_set2(?USER_ID, TargetName, VAV);
Error ->
Error
end.
sync_set(Addr, Port, VAV) ->
case snmpm:target_name(Addr, Port) of
{ok, TargetName} ->
snmpm:sync_set2(?USER_ID, TargetName, VAV);
Error ->
Error
end.
%% --
async_set(Addr, VAV) ->
case snmpm:target_name(Addr) of
{ok, TargetName} ->
snmpm:async_set2(?USER_ID, TargetName, VAV);
Error ->
Error
end.
async_set(Addr, Port, VAV) ->
case snmpm:target_name(Addr, Port) of
{ok, TargetName} ->
snmpm:async_set2(?USER_ID, TargetName, VAV);
Error ->
Error
end.
%% --
sync_get_bulk(Addr, NonRep, MaxRep, Oids) ->
case snmpm:target_name(Addr) of
{ok, TargetName} ->
snmpm:sync_get_bulk2(?USER_ID, TargetName, NonRep, MaxRep, Oids);
Error ->
Error
end.
sync_get_bulk(Addr, Port, NonRep, MaxRep, Oids) ->
case snmpm:target_name(Addr, Port) of
{ok, TargetName} ->
snmpm:sync_get_bulk2(?USER_ID, TargetName, NonRep, MaxRep, Oids);
Error ->
Error
end.
%% --
async_get_bulk(Addr, NonRep, MaxRep, Oids) ->
case snmpm:target_name(Addr) of
{ok, TargetName} ->
snmpm:async_get_bulk2(?USER_ID, TargetName, NonRep, MaxRep, Oids);
Error ->
Error
end.
async_get_bulk(Addr, Port, NonRep, MaxRep, Oids) ->
case snmpm:target_name(Addr, Port) of
{ok, TargetName} ->
snmpm:async_get_bulk2(?USER_ID, TargetName, NonRep, MaxRep, Oids);
Error ->
Error
end.
%% --
name_to_oid(Name) ->
snmpm:name_to_oid(Name).
oid_to_name(Oid) ->
snmpm:oid_to_name(Oid).
purify_oid(Oid) ->
snmpm:purify_oid(Oid).
%%----------------------------------------------------------------------
%% User callback functions:
%%----------------------------------------------------------------------
handle_error(ReqId, Reason, UserPid) ->
UserPid ! {handle_error, self(), ReqId, Reason},
ignore.
handle_agent(Addr, Port, SnmpInfo, UserPid) ->
UserPid ! {handle_agent, self(), Addr, Port, SnmpInfo},
ignore.
handle_pdu(Addr, Port, ReqId, SnmpResponse, UserPid) ->
UserPid ! {handle_pdu, self(), Addr, Port, ReqId, SnmpResponse},
ignore.
handle_trap(Addr, Port, SnmpTrap, UserPid) ->
UserPid ! {handle_trap, self(), Addr, Port, SnmpTrap},
ok.
handle_inform(Addr, Port, SnmpInform, UserPid) ->
UserPid ! {handle_inform, self(), Addr, Port, SnmpInform},
receive
{handle_inform_no_response, {Addr, Port}} ->
no_reply;
{handle_inform_response, {Addr, Port}} ->
ok
end.
handle_report(Addr, Port, SnmpReport, UserPid) ->
UserPid ! {handle_report, self(), Addr, Port, SnmpReport},
ok.
%%----------------------------------------------------------------------
%% Debug
%%----------------------------------------------------------------------
%% d(F) ->
%% d(F, []).
%% d(F, A) ->
%% d(get(debug), F, A).
%% d(true, F, A) ->
%% io:format("~w:" ++ F ++ "~n", [?SERVER|A]);
%% d(_, _, _) ->
%% ok.