1%%
2%% %CopyrightBegin%
3%%
4%% Copyright Ericsson AB 2010-2016. All Rights Reserved.
5%%
6%% Licensed under the Apache License, Version 2.0 (the "License");
7%% you may not use this file except in compliance with the License.
8%% You may obtain a copy of the License at
9%%
10%%     http://www.apache.org/licenses/LICENSE-2.0
11%%
12%% Unless required by applicable law or agreed to in writing, software
13%% distributed under the License is distributed on an "AS IS" BASIS,
14%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15%% See the License for the specific language governing permissions and
16%% limitations under the License.
17%%
18%% %CopyrightEnd%
19%%
20
21%%----------------------------------------------------------------------
22%% Purpose: Utility functions for the (snmp manager) user test(s).
23%%----------------------------------------------------------------------
24
25-module(snmp_manager_user_old).
26
27-behaviour(snmpm_user_old).
28
29
30%%----------------------------------------------------------------------
31%% Include files
32%%----------------------------------------------------------------------
33-include_lib("common_test/include/ct.hrl").
34-include("snmp_test_lib.hrl").
35
36
37%%----------------------------------------------------------------------
38%% External exports
39%%----------------------------------------------------------------------
40-export([
41	 start/0, start/1,
42	 stop/0,
43	 register_agent/1, register_agent/2, register_agent/3,
44	 unregister_agent/1, unregister_agent/2,
45	 agent_info/3,
46	 update_agent_info/4,
47	 which_agents/0, which_users/0,
48	 load_mib/1, unload_mib/1,
49	 sync_get/2,       sync_get/3,
50	 async_get/2,      async_get/3,
51	 sync_get_next/2,  sync_get_next/3,
52	 async_get_next/2, async_get_next/3,
53	 sync_set/2,       sync_set/3,
54	 async_set/2,      async_set/3,
55	 sync_get_bulk/4,  sync_get_bulk/5,
56	 async_get_bulk/4, async_get_bulk/5,
57	 name_to_oid/1, oid_to_name/1,
58	 purify_oid/1
59        ]).
60
61-export([
62	 handle_error/3,
63         handle_agent/4,
64         handle_pdu/5,
65         handle_trap/4,
66         handle_inform/4,
67         handle_report/4
68	]).
69
70
71%%----------------------------------------------------------------------
72%% Internal exports
73%%----------------------------------------------------------------------
74
75%% -define(SERVER, ?MODULE).
76-define(USER_ID, ?MODULE).
77
78%% -record(state, {parent, id, reqs = []}).
79%% -record(request, {from, ref, tmr, req_id, type}).
80
81
82%%----------------------------------------------------------------------
83%% The user API
84%%----------------------------------------------------------------------
85
86start() ->
87    start([]).
88
89start(DefaultAgentConfig) when is_list(DefaultAgentConfig) ->
90    snmpm:register_user(?USER_ID, ?MODULE, self(), DefaultAgentConfig).
91
92stop() ->
93    snmpm:unregister_user(?USER_ID).
94
95register_agent(Addr) ->
96    snmpm:register_agent(?USER_ID, Addr).
97
98register_agent(Addr, PortOrConfig) ->
99    snmpm:register_agent(?USER_ID, Addr, PortOrConfig).
100
101register_agent(Addr, Port, Config) ->
102    snmpm:register_agent(?USER_ID, Addr, Port, Config).
103
104unregister_agent(Addr) ->
105    snmpm:unregister_agent(?USER_ID, Addr).
106
107unregister_agent(Addr, Port) ->
108    snmpm:unregister_agent(?USER_ID, Addr, Port).
109
110agent_info(Addr, Port, Item) ->
111    case snmpm:target_name(Addr, Port) of
112	{ok, TargetName} ->
113	    snmpm:agent_info(TargetName, Item);
114	Error ->
115	    Error
116    end.
117
118update_agent_info(Addr, Port, Item, Val) ->
119    case snmpm:target_name(Addr, Port) of
120	{ok, TargetName} ->
121	    snmpm:update_agent_info(?USER_ID, TargetName, Item, Val);
122	Error ->
123	    Error
124    end.
125
126which_agents() ->
127    snmpm:which_agents().
128
129which_users() ->
130    snmpm:which_users().
131
132load_mib(Mib) ->
133    snmpm:load_mib(?USER_ID, Mib).
134
135unload_mib(Mib) ->
136    snmpm:unload_mib(?USER_ID, Mib).
137
138
139%% --
140
141sync_get(Addr, Oids) ->
142    case snmpm:target_name(Addr) of
143	{ok, TargetName} ->
144	    snmpm:sync_get2(?USER_ID, TargetName, Oids);
145	Error ->
146	    Error
147    end.
148
149sync_get(Addr, Port, Oids) ->
150    case snmpm:target_name(Addr, Port) of
151	{ok, TargetName} ->
152	    snmpm:sync_get2(?USER_ID, TargetName, Oids);
153	Error ->
154	    Error
155    end.
156
157
158%% --
159
160async_get(Addr, Oids) ->
161    case snmpm:target_name(Addr) of
162	{ok, TargetName} ->
163	    snmpm:async_get2(?USER_ID, TargetName, Oids);
164	Error ->
165	    Error
166    end.
167
168async_get(Addr, Port, Oids) ->
169    case snmpm:target_name(Addr, Port) of
170	{ok, TargetName} ->
171	    snmpm:async_get2(?USER_ID, TargetName, Oids);
172	Error ->
173	    Error
174    end.
175
176
177%% --
178
179sync_get_next(Addr, Oids) ->
180    case snmpm:target_name(Addr) of
181	{ok, TargetName} ->
182	    snmpm:sync_get_next2(?USER_ID, TargetName, Oids);
183	Error ->
184	    Error
185    end.
186
187sync_get_next(Addr, Port, Oids) ->
188    case snmpm:target_name(Addr, Port) of
189	{ok, TargetName} ->
190	    snmpm:sync_get_next2(?USER_ID, TargetName, Oids);
191	Error ->
192	    Error
193    end.
194
195
196%% --
197
198async_get_next(Addr, Oids) ->
199    case snmpm:target_name(Addr) of
200	{ok, TargetName} ->
201	    snmpm:async_get_next2(?USER_ID, TargetName, Oids);
202	Error ->
203	    Error
204    end.
205
206async_get_next(Addr, Port, Oids) ->
207    case snmpm:target_name(Addr, Port) of
208	{ok, TargetName} ->
209	    snmpm:async_get_next2(?USER_ID, TargetName, Oids);
210	Error ->
211	    Error
212    end.
213
214
215%% --
216
217sync_set(Addr, VAV) ->
218    case snmpm:target_name(Addr) of
219	{ok, TargetName} ->
220	    snmpm:sync_set2(?USER_ID, TargetName, VAV);
221	Error ->
222	    Error
223    end.
224
225sync_set(Addr, Port, VAV) ->
226    case snmpm:target_name(Addr, Port) of
227	{ok, TargetName} ->
228	    snmpm:sync_set2(?USER_ID, TargetName, VAV);
229	Error ->
230	    Error
231    end.
232
233
234%% --
235
236async_set(Addr, VAV) ->
237    case snmpm:target_name(Addr) of
238	{ok, TargetName} ->
239	    snmpm:async_set2(?USER_ID, TargetName, VAV);
240	Error ->
241	    Error
242    end.
243
244async_set(Addr, Port, VAV) ->
245    case snmpm:target_name(Addr, Port) of
246	{ok, TargetName} ->
247	    snmpm:async_set2(?USER_ID, TargetName, VAV);
248	Error ->
249	    Error
250    end.
251
252
253%% --
254
255sync_get_bulk(Addr, NonRep, MaxRep, Oids) ->
256    case snmpm:target_name(Addr) of
257	{ok, TargetName} ->
258	    snmpm:sync_get_bulk2(?USER_ID, TargetName, NonRep, MaxRep, Oids);
259	Error ->
260	    Error
261    end.
262
263sync_get_bulk(Addr, Port, NonRep, MaxRep, Oids) ->
264    case snmpm:target_name(Addr, Port) of
265	{ok, TargetName} ->
266	    snmpm:sync_get_bulk2(?USER_ID, TargetName, NonRep, MaxRep, Oids);
267	Error ->
268	    Error
269    end.
270
271
272%% --
273
274async_get_bulk(Addr, NonRep, MaxRep, Oids) ->
275    case snmpm:target_name(Addr) of
276	{ok, TargetName} ->
277	    snmpm:async_get_bulk2(?USER_ID, TargetName, NonRep, MaxRep, Oids);
278	Error ->
279	    Error
280    end.
281
282async_get_bulk(Addr, Port, NonRep, MaxRep, Oids) ->
283    case snmpm:target_name(Addr, Port) of
284	{ok, TargetName} ->
285	    snmpm:async_get_bulk2(?USER_ID, TargetName, NonRep, MaxRep, Oids);
286	Error ->
287	    Error
288    end.
289
290
291%% --
292
293name_to_oid(Name) ->
294    snmpm:name_to_oid(Name).
295
296oid_to_name(Oid) ->
297    snmpm:oid_to_name(Oid).
298
299purify_oid(Oid) ->
300    snmpm:purify_oid(Oid).
301
302
303%%----------------------------------------------------------------------
304%% User callback functions:
305%%----------------------------------------------------------------------
306
307handle_error(ReqId, Reason, UserPid) ->
308    UserPid ! {handle_error, self(), ReqId, Reason},
309    ignore.
310
311
312handle_agent(Addr, Port, SnmpInfo, UserPid) ->
313    UserPid ! {handle_agent, self(), Addr, Port, SnmpInfo},
314    ignore.
315
316
317handle_pdu(Addr, Port, ReqId, SnmpResponse, UserPid) ->
318    UserPid ! {handle_pdu, self(), Addr, Port, ReqId, SnmpResponse},
319    ignore.
320
321
322handle_trap(Addr, Port, SnmpTrap, UserPid) ->
323    UserPid ! {handle_trap, self(), Addr, Port, SnmpTrap},
324    ok.
325
326
327handle_inform(Addr, Port, SnmpInform, UserPid) ->
328    UserPid ! {handle_inform, self(), Addr, Port, SnmpInform},
329    receive
330	{handle_inform_no_response, {Addr, Port}} ->
331	    no_reply;
332	{handle_inform_response, {Addr, Port}} ->
333	    ok
334    end.
335
336
337handle_report(Addr, Port, SnmpReport, UserPid) ->
338    UserPid ! {handle_report, self(), Addr, Port, SnmpReport},
339    ok.
340
341
342%%----------------------------------------------------------------------
343%% Debug
344%%----------------------------------------------------------------------
345
346%% d(F) ->
347%%     d(F, []).
348
349%% d(F, A) ->
350%%     d(get(debug), F, A).
351
352%% d(true, F, A) ->
353%%     io:format("~w:" ++ F ++ "~n", [?SERVER|A]);
354%% d(_, _, _) ->
355%%     ok.
356