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