1 /*! \file snmp_example.py
6 """snmp_example.py: OpEN API Simple Network Management Protocol (SNMP) configuration example"""
43 (
"admin1",
"network-admin1", OpEN.OPEN_USM_USER_AUTH_PROTOCOL_NONE,
"",
"", OpEN.OPEN_USM_USER_PRIV_PROTOCOL_NONE,
"",
"",
""),
44 (
"admin2",
"network-admin", OpEN.OPEN_USM_USER_AUTH_PROTOCOL_SHA,
"ThisIsaShaPasswordThatIs32Chars.",
"", OpEN.OPEN_USM_USER_PRIV_PROTOCOL_NONE,
"",
"",
"0123456789abcdef"),
45 (
"admin3",
"network-admin", OpEN.OPEN_USM_USER_AUTH_PROTOCOL_SHA,
"",
"ThisIsaShaKeywordThatMustBe48CharactersInLength.", OpEN.OPEN_USM_USER_PRIV_PROTOCOL_NONE,
"",
"",
"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"),
46 (
"admin4",
"network-admin", OpEN.OPEN_USM_USER_AUTH_PROTOCOL_SHA,
"ThisIsaShaPasswordThatIs32Chars.",
"", OpEN.OPEN_USM_USER_PRIV_PROTOCOL_DES,
"ThisIsaDesPasswordThatIs32Chars.",
"",
"cccccccccccccccccccccccccccccccc"),
47 (
"admin5",
"network-admin", OpEN.OPEN_USM_USER_AUTH_PROTOCOL_SHA,
"",
"ThisIsaShaKeywordThatMustBe48CharactersInLength.", OpEN.OPEN_USM_USER_PRIV_PROTOCOL_DES,
"",
"ThisIsaDesKeywordThatMustBe32chr",
"dddddddddddddddddddddddddddddddd"),
48 (
"delete-user",
"network-admin", OpEN.OPEN_USM_USER_AUTH_PROTOCOL_SHA,
"",
"ThisIsaShaKeywordThatMustBe48CharactersInLength.", OpEN.OPEN_USM_USER_PRIV_PROTOCOL_DES,
"",
"ThisIsaDesKeywordThatMustBe32chr",
"dddddddddddddddddddddddddddddddd"),
53 (
"network-admin", OpEN.OPEN_SNMP_SECURITY_MODEL_USM, OpEN.OPEN_SNMP_SECURITY_LEVEL_AUTHPRIV,
"context-1",
"view-1",
"view-1",
"view-1"),
54 (
"network-guest", OpEN.OPEN_SNMP_SECURITY_MODEL_SNMPV1, OpEN.OPEN_SNMP_SECURITY_LEVEL_NOAUTHNOPRIV,
"context-2",
"view-2",
"view-2",
"view-2"),
55 (
"delete-group", OpEN.OPEN_SNMP_SECURITY_MODEL_SNMPV2C, OpEN.OPEN_SNMP_SECURITY_LEVEL_NOAUTHNOPRIV,
"context-3",
"view-3",
"view-3",
"view-3"),
60 (
"view-1",
"1.3.6.1.4.1.4413", OpEN.OPEN_SNMP_VIEW_TYPE_INCLUDED),
61 (
"view-2",
"ifEntry.*.1", OpEN.OPEN_SNMP_VIEW_TYPE_EXCLUDED),
66 (
"filter-1",
"1.3.6.1.4.1.4413", OpEN.OPEN_SNMP_VIEW_TYPE_INCLUDED),
67 (
"filter-2",
"ifEntry.*.1", OpEN.OPEN_SNMP_VIEW_TYPE_EXCLUDED),
72 (
"10.10.10.1", 0,
"public", OpEN.OPEN_SNMP_SECURITY_MODEL_SNMPV1, OpEN.OPEN_SNMP_SECURITY_LEVEL_NOAUTHNOPRIV, OpEN.OPEN_SNMP_NOTIFY_TYPE_TRAP, 0, 0,
""),
73 (
"10.10.10.2", 0,
"public", OpEN.OPEN_SNMP_SECURITY_MODEL_SNMPV2C, OpEN.OPEN_SNMP_SECURITY_LEVEL_NOAUTHNOPRIV, OpEN.OPEN_SNMP_NOTIFY_TYPE_TRAP, 0, 0,
""),
74 (
"2001::", 65535,
"admin", OpEN.OPEN_SNMP_SECURITY_MODEL_USM, OpEN.OPEN_SNMP_SECURITY_LEVEL_AUTHPRIV, OpEN.OPEN_SNMP_NOTIFY_TYPE_INFORM, 100, 200,
"ipv6-filter"),
78 SNMP_COMMUNITY_LIST = [
79 {SET:[
"public-test", OpEN.OPEN_SNMP_COMMUNITY_ACCESS_NONE,
"view_test",
"20.20.20.1"]},
80 {SET:[
"private-test", OpEN.OPEN_SNMP_COMMUNITY_ACCESS_RW,
"",
""]},
81 {SET:[
"delete-community", OpEN.OPEN_SNMP_COMMUNITY_ACCESS_RO,
"",
""]},
82 {MAP:[
"delete-private-map", OpEN.OPENAPI_SNMP_DEFAULT_WRITE_STR,
"30.30.30.1"]},
86 """Convert ipv4 string to integer"""
88 return struct.unpack(
"!I", socket.inet_aton(addr))[0]
91 """Convert ipv4 integer to string"""
93 return socket.inet_ntoa(struct.pack(
"!I", addr))
95 def ipv6_to_int(addr):
96 """Convert ipv6 string to integer"""
98 str_ = socket.inet_pton(socket.AF_INET6, addr)
99 a, b = struct.unpack(
'!2Q', str_)
102 def int_to_ipv6(addr):
103 """Convert ipv6 integer to string"""
106 b = addr & ((1 << 64) - 1)
107 return socket.inet_ntop(socket.AF_INET6, struct.pack(
'!2Q', a, b))
109 def get_type(itype) :
110 """Return text representation based on interface type"""
112 if itype == OpEN.OPEN_INTF_TYPE_PHY:
114 elif itype == OpEN.OPEN_INTF_TYPE_VLAN:
116 elif itype == OpEN.OPEN_INTF_TYPE_LOOPBACK:
118 elif itype == OpEN.OPEN_INTF_TYPE_TUNNEL:
124 if state == OpEN.OPEN_LINK_UP:
126 elif state == OpEN.OPEN_LINK_DOWN:
131 def print_sanity_results(result, test, msg, feat):
132 """Print overall comparison results"""
134 if result == OpEN.OPEN_E_UNAVAIL:
135 print "Sanity test skipped."
136 elif result == OpEN.OPEN_E_EXISTS:
137 print "Sanity Skipped (already exists) - %s - %s." % (msg, feat)
138 elif result == OpEN.OPEN_E_NONE
and test ==
True:
139 print "Sanity Success - %s - %s." % (msg, feat)
141 print "Sanity Failure - %s - %s." % (msg, feat)
143 def print_bad_result(result, msg):
144 """Print some general error messages if the result is bad"""
146 if result == OpEN.OPEN_E_UNAVAIL:
147 print "Feature not supported - %s (err %d)." % (msg, result)
148 elif result == OpEN.OPEN_E_NOT_FOUND:
149 print "Test Skipped (not found) - ", msg
150 elif result != OpEN.OPEN_E_NONE:
151 print "Test Failure - %s (err %d)." % (msg, result)
154 """Simple SNMP class implementing basic CRUD examples """
156 def __init__(self, client) :
157 self.m_client = client
159 def test_snmp_sys_name_set(self, name) :
160 """Set the SNMP system name.
162 An administratively-assigned name for this managed node.
163 By convention, this is the node's fully-qualified domain name."""
166 name_string = open_.getStringBuffer(len(name) + 1, name)
167 except OpENBufferSizeError:
168 print(
"test_snmp_sys_name_set: getStringBuffer raised OpENBufferSizeError")
171 print(
"test_snmp_sys_name_set: getStringBuffer raised TypeError")
173 name_buff = OpEN.open_buffdesc()
174 name_buff.pstart = name_string
175 name_buff.size = len(name)+1
177 result = OpEN.openapiSnmpSysNameSet(self.m_client, name_buff)
178 print_bad_result(result,
'openapiSnmpSysNameSet')
179 print_sanity_results(result, (1 == 1),
'openapiSnmpSysNameSet', name_string.cast())
181 def test_snmp_sys_location_set(self, location) :
182 """Set the SNMP system location.
183 The physical location of this node, for example;
184 'telephone closet' or '3rd floor'."""
187 name_string = open_.getStringBuffer(len(location) + 1, location)
188 except OpENBufferSizeError:
189 print(
"test_snmp_sys_location_set: getStringBuffer raised OpENBufferSizeError")
192 print(
"test_snmp_sys_location_set: getStringBuffer raised TypeError")
194 name_buff = OpEN.open_buffdesc()
195 name_buff.pstart = name_string
196 name_buff.size = len(location)+1
198 result = OpEN.openapiSnmpSysLocationSet(self.m_client, name_buff)
199 print_bad_result(result,
'openapiSnmpSysLocationSet')
200 print_sanity_results(result, (1 == 1),
'openapiSnmpSysLocationSet', name_string.cast())
202 def test_snmp_sys_contact_set(self, contact) :
203 """Set the SNMP system contact.
205 The textual identification of the contact person for this managed node,
206 together with information on how to contact this person."""
209 name_string = open_.getStringBuffer(len(contact) + 1, contact)
210 except OpENBufferSizeError:
211 print(
"test_snmp_sys_contact_set: getStringBuffer raised OpENBufferSizeError")
214 print(
"test_snmp_sys_contact_set: getStringBuffer raised TypeError")
216 name_buff = OpEN.open_buffdesc()
217 name_buff.pstart = name_string
218 name_buff.size = len(contact)+1
220 result = OpEN.openapiSnmpSysContactSet(self.m_client, name_buff)
221 print_bad_result(result,
'openapiSnmpSysContactSet')
222 print_sanity_results(result, (1 == 1),
'openapiSnmpSysContactSet', name_string.cast())
224 def test_snmp_local_engine_id_set(self, engine_id) :
225 """Set the SNMP engine id on the local device."""
227 if engine_id ==
'default':
231 name_string = open_.getStringBuffer(len(engine_id) + 1, engine_id)
232 except OpENBufferSizeError:
233 print(
"test_snmp_local_engine_id_set: getStringBuffer raised OpENBufferSizeError")
236 print(
"test_snmp_local_engine_id_set: getStringBuffer raised TypeError")
238 name_buff = OpEN.open_buffdesc()
239 name_buff.pstart = name_string
240 name_buff.size = len(engine_id)+1
242 result = OpEN.openapiSnmpLocalEngineIdSet(self.m_client, name_buff)
243 print_bad_result(result,
'openapiSnmpLocalEngineIdSet')
244 print_sanity_results(result, (1 == 1),
'openapiSnmpLocalEngineIdSet', name_string.cast())
246 def test_snmp_user_create(self, user_list) :
247 """Create a new SNMP user"""
249 for val
in user_list:
261 name_string = open_.getStringBuffer(len(name) + 1, name)
262 except OpENBufferSizeError:
263 print(
"test_snmp_user_create: getStringBuffer raised OpENBufferSizeError")
266 print(
"test_snmp_user_create: getStringBuffer raised TypeError")
268 name_buff = OpEN.open_buffdesc()
269 name_buff.pstart = name_string
270 name_buff.size = len(name)+1
273 group_string = open_.getStringBuffer(len(group) + 1, group)
274 except OpENBufferSizeError:
275 print(
"test_snmp_user_create: getStringBuffer raised OpENBufferSizeError")
278 print(
"test_snmp_user_create: getStringBuffer raised TypeError")
280 group_buff = OpEN.open_buffdesc()
281 group_buff.pstart = group_string
282 group_buff.size = len(group)+1
285 auth_pwd_string = open_.getStringBuffer(len(auth_pwd) + 1, auth_pwd)
286 except OpENBufferSizeError:
287 print(
"test_snmp_user_create: getStringBuffer raised OpENBufferSizeError")
290 print(
"test_snmp_user_create: getStringBuffer raised TypeError")
292 auth_pwd_buff = OpEN.open_buffdesc()
293 auth_pwd_buff.pstart = auth_pwd_string
294 auth_pwd_buff.size = len(auth_pwd)+1
297 auth_key_string = open_.getStringBuffer(len(auth_key) + 1, auth_key)
298 except OpENBufferSizeError:
299 print(
"test_snmp_user_create: getStringBuffer raised OpENBufferSizeError")
302 print(
"test_snmp_user_create: getStringBuffer raised TypeError")
304 auth_key_buff = OpEN.open_buffdesc()
305 auth_key_buff.pstart = auth_key_string
306 auth_key_buff.size = len(auth_key)+1
309 priv_pwd_string = open_.getStringBuffer(len(priv_pwd) + 1, priv_pwd)
310 except OpENBufferSizeError:
311 print(
"test_snmp_user_create: getStringBuffer raised OpENBufferSizeError")
314 print(
"test_snmp_user_create: getStringBuffer raised TypeError")
316 priv_pwd_buff = OpEN.open_buffdesc()
317 priv_pwd_buff.pstart = priv_pwd_string
318 priv_pwd_buff.size = len(priv_pwd)+1
321 priv_key_string = open_.getStringBuffer(len(priv_key) + 1, priv_key)
322 except OpENBufferSizeError:
323 print(
"test_snmp_user_create: getStringBuffer raised OpENBufferSizeError")
326 print(
"test_snmp_user_create: getStringBuffer raised TypeError")
328 priv_key_buff = OpEN.open_buffdesc()
329 priv_key_buff.pstart = priv_key_string
330 priv_key_buff.size = len(priv_key)+1
333 engine_id_string = open_.getStringBuffer(len(engine_id) + 1, engine_id)
334 except OpENBufferSizeError:
335 print(
"test_snmp_user_create: getStringBuffer raised OpENBufferSizeError")
338 print(
"test_snmp_user_create: getStringBuffer raised TypeError")
340 engine_id_buff = OpEN.open_buffdesc()
341 engine_id_buff.pstart = engine_id_string
342 engine_id_buff.size = len(engine_id)+1
344 result = OpEN.openapiSnmpUserCreate(self.m_client,
345 name_buff, group_buff,
346 auth_proto, auth_pwd_buff, auth_key_buff,
347 priv_proto, priv_pwd_buff, priv_key_buff,
349 print_sanity_results(result, (1 == 1),
'openapiSnmpUserCreate', name_string.cast())
351 def test_snmp_group_create(self, group_list) :
352 """Create a new SNMP group"""
354 for val
in group_list:
356 security_model = val[1]
357 security_level = val[2]
358 context_prefix = val[3]
364 group_string = open_.getStringBuffer(len(group) + 1, group)
365 except OpENBufferSizeError:
366 print(
"test_snmp_group_create: getStringBuffer raised OpENBufferSizeError")
369 print(
"test_snmp_group_create: getStringBuffer raised TypeError")
371 group_buff = OpEN.open_buffdesc()
372 group_buff.pstart = group_string
373 group_buff.size = len(group)+1
376 context_prefix_string = open_.getStringBuffer(len(context_prefix) + 1, context_prefix)
377 except OpENBufferSizeError:
378 print(
"test_snmp_group_create: getStringBuffer raised OpENBufferSizeError")
381 print(
"test_snmp_group_create: getStringBuffer raised TypeError")
383 context_prefix_buff = OpEN.open_buffdesc()
384 context_prefix_buff.pstart = context_prefix_string
385 context_prefix_buff.size = len(context_prefix)+1
388 read_view_string = open_.getStringBuffer(len(read_view) + 1, read_view)
389 except OpENBufferSizeError:
390 print(
"test_snmp_group_create: getStringBuffer raised OpENBufferSizeError")
393 print(
"test_snmp_group_create: getStringBuffer raised TypeError")
395 read_view_buff = OpEN.open_buffdesc()
396 read_view_buff.pstart = read_view_string
397 read_view_buff.size = len(read_view)+1
400 write_view_string = open_.getStringBuffer(len(write_view) + 1, write_view)
401 except OpENBufferSizeError:
402 print(
"test_snmp_group_create: getStringBuffer raised OpENBufferSizeError")
405 print(
"test_snmp_group_create: getStringBuffer raised TypeError")
407 write_view_buff = OpEN.open_buffdesc()
408 write_view_buff.pstart = write_view_string
409 write_view_buff.size = len(write_view)+1
412 notify_view_string = open_.getStringBuffer(len(notify_view) + 1, notify_view)
413 except OpENBufferSizeError:
414 print(
"test_snmp_group_create: getStringBuffer raised OpENBufferSizeError")
417 print(
"test_snmp_group_create: getStringBuffer raised TypeError")
419 notify_view_buff = OpEN.open_buffdesc()
420 notify_view_buff.pstart = notify_view_string
421 notify_view_buff.size = len(notify_view)+1
423 result = OpEN.openapiSnmpGroupCreate(self.m_client,
424 group_buff, security_model, security_level,
425 context_prefix_buff, read_view_buff, write_view_buff, notify_view_buff)
426 print_sanity_results(result, (1 == 1),
'openapiSnmpGroupCreate', group_string.cast())
428 def test_snmp_view_create(self, view_list) :
429 """Create a new SNMP view"""
431 for val
in view_list:
437 view_name_string = open_.getStringBuffer(len(view_name) + 1, view_name)
438 except OpENBufferSizeError:
439 print(
"test_snmp_view_create: getStringBuffer raised OpENBufferSizeError")
442 print(
"test_snmp_view_create: getStringBuffer raised TypeError")
444 view_name_buff = OpEN.open_buffdesc()
445 view_name_buff.pstart = view_name_string
446 view_name_buff.size = len(view_name)+1
449 oid_tree_string = open_.getStringBuffer(len(oid_tree) + 1, oid_tree)
450 except OpENBufferSizeError:
451 print(
"test_snmp_view_create: getStringBuffer raised OpENBufferSizeError")
454 print(
"test_snmp_view_create: getStringBuffer raised TypeError")
456 oid_tree_buff = OpEN.open_buffdesc()
457 oid_tree_buff.pstart = oid_tree_string
458 oid_tree_buff.size = len(oid_tree)+1
460 result = OpEN.openapiSnmpViewCreate(self.m_client, view_name_buff, oid_tree_buff, view_type)
461 print_sanity_results(result, (1 == 1),
'openapiSnmpViewCreate', view_name_string.cast())
463 def test_snmp_filter_create(self, filter_list) :
464 """Create a new SNMP filter"""
466 for val
in filter_list:
472 filter_name_string = open_.getStringBuffer(len(filter_name) + 1, filter_name)
473 except OpENBufferSizeError:
474 print(
"test_snmp_filter_create: getStringBuffer raised OpENBufferSizeError")
477 print(
"test_snmp_filter_create: getStringBuffer raised TypeError")
479 filter_name_buff = OpEN.open_buffdesc()
480 filter_name_buff.pstart = filter_name_string
481 filter_name_buff.size = len(filter_name)+1
484 oid_tree_string = open_.getStringBuffer(len(oid_tree) + 1, oid_tree)
485 except OpENBufferSizeError:
486 print(
"test_snmp_filter_create: getStringBuffer raised OpENBufferSizeError")
489 print(
"test_snmp_filter_create: getStringBuffer raised TypeError")
491 oid_tree_buff = OpEN.open_buffdesc()
492 oid_tree_buff.pstart = oid_tree_string
493 oid_tree_buff.size = len(oid_tree)+1
495 result = OpEN.openapiSnmpFilterCreate(self.m_client, filter_name_buff, oid_tree_buff, view_type)
496 print_sanity_results(result, (1 == 1),
'openapiSnmpFilterCreate', filter_name_string.cast())
498 def test_snmp_host_create(self, host_list) :
499 """Create a new SNMP host"""
501 for val
in host_list:
504 security_name = val[2]
505 security_model = val[3]
506 security_level = val[4]
513 host_string = open_.getStringBuffer(len(host) + 1, host)
514 except OpENBufferSizeError:
515 print(
"test_snmp_host_create: getStringBuffer raised OpENBufferSizeError")
518 print(
"test_snmp_host_create: getStringBuffer raised TypeError")
520 host_buff = OpEN.open_buffdesc()
521 host_buff.pstart = host_string
522 host_buff.size = len(host)+1
525 security_name_string = open_.getStringBuffer(len(security_name) + 1, security_name)
526 except OpENBufferSizeError:
527 print(
"test_snmp_host_create: getStringBuffer raised OpENBufferSizeError")
530 print(
"test_snmp_host_create: getStringBuffer raised TypeError")
532 security_name_buff = OpEN.open_buffdesc()
533 security_name_buff.pstart = security_name_string
534 security_name_buff.size = len(security_name)+1
537 filter_name_string = open_.getStringBuffer(len(filter_name) + 1, filter_name)
538 except OpENBufferSizeError:
539 print(
"test_snmp_host_create: getStringBuffer raised OpENBufferSizeError")
542 print(
"test_snmp_host_create: getStringBuffer raised TypeError")
544 filter_name_buff = OpEN.open_buffdesc()
545 filter_name_buff.pstart = filter_name_string
546 filter_name_buff.size = len(filter_name)+1
548 result = OpEN.openapiSnmpHostCreate(self.m_client,
549 host_buff, server_port,
550 security_name_buff, security_model, security_level,
551 notify_type, timeout, retries, filter_name_buff)
552 print_sanity_results(result, (1 == 1),
'openapiSnmpHostCreate', host_string.cast())
554 def test_snmp_community_create(self, community_list) :
555 """Create a new SNMP community
557 SET key defines a basic community creation.
558 MAP key indicates a map to a new internal security name for SNMP v1 and SNMP v2 security
559 models to an existing group name."""
561 for community
in community_list:
562 for key, val
in community.items():
571 name_string = open_.getStringBuffer(len(name) + 1, name)
572 except OpENBufferSizeError:
573 print(
"test_snmp_community_create: getStringBuffer raised OpENBufferSizeError")
576 print(
"test_snmp_community_create: getStringBuffer raised TypeError")
578 name_buff = OpEN.open_buffdesc()
579 name_buff.pstart = name_string
580 name_buff.size = len(name)+1
583 view_string = open_.getStringBuffer(len(view) + 1, view)
584 except OpENBufferSizeError:
585 print(
"test_snmp_community_create: getStringBuffer raised OpENBufferSizeError")
588 print(
"test_snmp_community_create: getStringBuffer raised TypeError")
590 view_buff = OpEN.open_buffdesc()
591 view_buff.pstart = view_string
592 view_buff.size = len(view)+1
594 ip_addr = OpEN.open_inet_addr_t()
596 ip_addr.addr.ipv4 = ip_to_int(address)
597 ip_addr.family = socket.AF_INET
599 result = OpEN.openapiSnmpCommunityCreate(self.m_client, name_buff, access, view_buff, ip_addr)
600 print_sanity_results(result, (1 == 1),
'openapiSnmpCommunityCreate', name_string.cast())
608 name_string = open_.getStringBuffer(len(name) + 1, name)
609 except OpENBufferSizeError:
610 print(
"test_snmp_community_create: getStringBuffer raised OpENBufferSizeError")
613 print(
"test_snmp_community_create: getStringBuffer raised TypeError")
615 name_buff = OpEN.open_buffdesc()
616 name_buff.pstart = name_string
617 name_buff.size = len(name)+1
620 map_name_string = open_.getStringBuffer(len(map_name) + 1, map_name)
621 except OpENBufferSizeError:
622 print(
"test_snmp_community_create: getStringBuffer raised OpENBufferSizeError")
625 print(
"test_snmp_community_create: getStringBuffer raised TypeError")
627 map_name_buff = OpEN.open_buffdesc()
628 map_name_buff.pstart = map_name_string
629 map_name_buff.size = len(map_name)+1
631 ip_addr = OpEN.open_inet_addr_t()
633 ip_addr.addr.ipv4 = ip_to_int(address)
634 ip_addr.family = socket.AF_INET
636 result = OpEN.openapiSnmpCommunityGroupCreate(self.m_client, name_buff, map_name_buff, ip_addr)
637 print_sanity_results(result, (1 == 1),
'openapiSnmpCommunityGroupCreate', name_string.cast())
639 def testSnmpTrapFlagSet(self, flags, mode) :
640 """Enable or disable the traps identified via the flags selection"""
648 result = OpEN.openapiSnmpTrapFlagSet(self.m_client, flag_bits, val)
649 print_sanity_results(result, (1 == 1),
'openapiSnmpTrapFlagSet', str(flag_bits))
651 def test_snmp_sys_name_get(self) :
652 """Get the SNMP system name.
654 An administratively-assigned name for this managed node.
655 By convention, this is the node's fully-qualified domain name."""
660 name_string = open_.getStringBuffer(max_len)
661 except OpENBufferSizeError:
662 print(
"test_snmp_sys_name_get: getStringBuffer raised OpENBufferSizeError")
665 print(
"test_snmp_sys_name_get: getStringBuffer raised TypeError")
667 name_buff = OpEN.open_buffdesc()
668 name_buff.pstart = name_string
669 name_buff.size = max_len
671 result = OpEN.openapiSnmpSysNameGet(self.m_client, name_buff)
672 print_bad_result(result,
'openapiSnmpSysNameGet')
673 print_sanity_results(result, (1 == 1),
'openapiSnmpSysNameGet', name_string.cast())
675 def test_snmp_sys_location_get(self) :
676 """Get the SNMP system location.
678 The physical location of this node, for example;
679 'telephone closet' or '3rd floor'."""
684 name_string = open_.getStringBuffer(max_len)
685 except OpENBufferSizeError:
686 print(
"test_snmp_sys_location_get: getStringBuffer raised OpENBufferSizeError")
689 print(
"test_snmp_sys_location_get: getStringBuffer raised TypeError")
691 name_buff = OpEN.open_buffdesc()
692 name_buff.pstart = name_string
693 name_buff.size = max_len
695 result = OpEN.openapiSnmpSysLocationGet(self.m_client, name_buff)
696 print_bad_result(result,
'openapiSnmpSysLocationGet')
697 print_sanity_results(result, (1 == 1),
'openapiSnmpSysLocationGet', name_string.cast())
699 def test_snmp_sys_contact_get(self) :
700 """Get the SNMP system contact.
702 The textual identification of the contact person for this managed node,
703 together with information on how to contact this person."""
708 name_string = open_.getStringBuffer(max_len)
709 except OpENBufferSizeError:
710 print(
"test_snmp_sys_contact_get: getStringBuffer raised OpENBufferSizeError")
713 print(
"test_snmp_sys_contact_get: getStringBuffer raised TypeError")
715 name_buff = OpEN.open_buffdesc()
716 name_buff.pstart = name_string
717 name_buff.size = max_len
719 result = OpEN.openapiSnmpSysContactGet(self.m_client, name_buff)
720 print_bad_result(result,
'openapiSnmpSysContactGet')
721 print_sanity_results(result, (1 == 1),
'openapiSnmpSysContactGet', name_string.cast())
723 def test_snmp_local_engine_id_get(self) :
724 """Get the SNMP engine id on the local device."""
729 engine_id_string = open_.getStringBuffer(max_len)
730 except OpENBufferSizeError:
731 print(
"test_snmp_local_engine_id_get: getStringBuffer raised OpENBufferSizeError")
734 print(
"test_snmp_local_engine_id_get: getStringBuffer raised TypeError")
736 engine_id_buff = OpEN.open_buffdesc()
737 engine_id_buff.pstart = engine_id_string
738 engine_id_buff.size = max_len
739 result = OpEN.openapiSnmpLocalEngineIdGet(self.m_client, engine_id_buff)
740 print_bad_result(result,
'openapiSnmpLocalEngineIdGet')
742 if result == OpEN.OPEN_E_NONE:
744 for idx
in xrange(0, engine_id_buff.size):
745 engine_id += engine_id_string[idx].encode(
'hex')
747 print_sanity_results(result, (1 == 1),
'openapiSnmpLocalEngineIdGet', engine_id)
749 def test_snmp_user_get(self, user_name) :
750 """Get the specified SNMP user"""
754 max_engine_id_len = 32+1
756 auth_p = OpEN.new_OPEN_USM_USER_AUTH_PROTOCOL_tp()
757 priv_p = OpEN.new_OPEN_USM_USER_PRIV_PROTOCOL_tp()
760 user_string = open_.getStringBuffer(max_user_len)
761 except OpENBufferSizeError:
762 print(
"test_snmp_user_get: getStringBuffer raised OpENBufferSizeError")
765 print(
"test_snmp_user_get: getStringBuffer raised TypeError")
767 user_buff = OpEN.open_buffdesc()
768 user_buff.pstart = user_string
769 user_buff.size = max_user_len
772 group_string = open_.getStringBuffer(max_user_len)
773 except OpENBufferSizeError:
774 print(
"test_snmp_user_get: getStringBuffer raised OpENBufferSizeError")
777 print(
"test_snmp_user_get: getStringBuffer raised TypeError")
779 group_buff = OpEN.open_buffdesc()
780 group_buff.pstart = group_string
781 group_buff.size = max_user_len
784 engine_id_string = open_.getStringBuffer(max_engine_id_len)
785 except OpENBufferSizeError:
786 print(
"test_snmp_user_get: getStringBuffer raised OpENBufferSizeError")
789 print(
"test_snmp_user_get: getStringBuffer raised TypeError")
791 engine_id_buff = OpEN.open_buffdesc()
792 engine_id_buff.pstart = engine_id_string
793 engine_id_buff.size = max_engine_id_len
796 next_user_string = open_.getStringBuffer(max_user_len)
797 except OpENBufferSizeError:
798 print(
"test_snmp_user_get: getStringBuffer raised OpENBufferSizeError")
801 print(
"test_snmp_user_get: getStringBuffer raised TypeError")
803 next_user_buff = OpEN.open_buffdesc()
804 next_user_buff.pstart = next_user_string
805 next_user_buff.size = max_user_len
808 next_engine_id_string = open_.getStringBuffer(max_engine_id_len)
809 except OpENBufferSizeError:
810 print(
"test_snmp_user_get: getStringBuffer raised OpENBufferSizeError")
813 print(
"test_snmp_user_get: getStringBuffer raised TypeError")
815 next_engine_id_buff = OpEN.open_buffdesc()
816 next_engine_id_buff.pstart = next_engine_id_string
817 next_engine_id_buff.size = max_engine_id_len
819 while OpEN.openapiSnmpUserGetNext(self.m_client,
826 next_engine_id_buff) == OpEN.OPEN_E_NONE:
828 if user_name == next_user_string.cast():
832 user_buff.pstart = next_user_buff.pstart
833 user_buff.size = next_user_buff.size
834 engine_id_buff.pstart = next_engine_id_buff.pstart
835 engine_id_buff.size = next_engine_id_buff.size
836 next_user_buff.size = max_user_len
837 next_engine_id_buff.size = max_engine_id_len
839 print_sanity_results(OpEN.OPEN_E_NONE, found,
'openapiSnmpUserGetNext', user_name)
841 if found
and verbose:
842 print ' User name : ', next_user_string.cast()
843 print ' Group name : ', group_string.cast()
844 print ' Authentication : ', OpEN.OPEN_USM_USER_AUTH_PROTOCOL_tp_value(auth_p)
845 print ' Privilege : ', OpEN.OPEN_USM_USER_PRIV_PROTOCOL_tp_value(priv_p)
848 for idx
in xrange(0, next_engine_id_buff.size):
849 engine_id += next_engine_id_string[idx].encode(
'hex')
850 print ' Engine Id : ', engine_id
852 OpEN.delete_OPEN_USM_USER_AUTH_PROTOCOL_tp(auth_p)
853 OpEN.delete_OPEN_USM_USER_PRIV_PROTOCOL_tp(priv_p)
855 def test_snmp_group_get(self, group_name, security_model, security_level, context_name) :
856 """Get the specified SNMP group"""
860 max_context_len = 30+1
863 model_p = OpEN.new_OPEN_SNMP_SECURITY_MODEL_tp()
864 level_p = OpEN.new_OPEN_SNMP_SECURITY_LEVEL_tp()
867 group_string = open_.getStringBuffer(max_user_len)
868 except OpENBufferSizeError:
869 print(
"test_snmp_group_get: getStringBuffer raised OpENBufferSizeError")
872 print(
"test_snmp_group_get: getStringBuffer raised TypeError")
874 group_buff = OpEN.open_buffdesc()
875 group_buff.pstart = group_string
876 group_buff.size = max_user_len
879 read_string = open_.getStringBuffer(max_view_len)
880 except OpENBufferSizeError:
881 print(
"test_snmp_group_get: getStringBuffer raised OpENBufferSizeError")
884 print(
"test_snmp_group_get: getStringBuffer raised TypeError")
886 read_buff = OpEN.open_buffdesc()
887 read_buff.pstart = read_string
888 read_buff.size = max_view_len
891 write_string = open_.getStringBuffer(max_view_len)
892 except OpENBufferSizeError:
893 print(
"test_snmp_group_get: getStringBuffer raised OpENBufferSizeError")
896 print(
"test_snmp_group_get: getStringBuffer raised TypeError")
898 write_buff = OpEN.open_buffdesc()
899 write_buff.pstart = write_string
900 write_buff.size = max_view_len
903 notify_string = open_.getStringBuffer(max_view_len)
904 except OpENBufferSizeError:
905 print(
"test_snmp_group_get: getStringBuffer raised OpENBufferSizeError")
908 print(
"test_snmp_group_get: getStringBuffer raised TypeError")
910 notify_buff = OpEN.open_buffdesc()
911 notify_buff.pstart = notify_string
912 notify_buff.size = max_view_len
915 context_string = open_.getStringBuffer(max_user_len)
916 except OpENBufferSizeError:
917 print(
"test_snmp_group_get: getStringBuffer raised OpENBufferSizeError")
920 print(
"test_snmp_group_get: getStringBuffer raised TypeError")
922 context_buff = OpEN.open_buffdesc()
923 context_buff.pstart = context_string
924 context_buff.size = max_context_len
927 next_group_string = open_.getStringBuffer(max_user_len)
928 except OpENBufferSizeError:
929 print(
"test_snmp_group_get: getStringBuffer raised OpENBufferSizeError")
932 print(
"test_snmp_group_get: getStringBuffer raised TypeError")
934 next_group_buff = OpEN.open_buffdesc()
935 next_group_buff.pstart = next_group_string
936 next_group_buff.size = max_user_len
939 next_context_string = open_.getStringBuffer(max_user_len)
940 except OpENBufferSizeError:
941 print(
"test_snmp_group_get: getStringBuffer raised OpENBufferSizeError")
944 print(
"test_snmp_group_get: getStringBuffer raised TypeError")
946 next_context_buff = OpEN.open_buffdesc()
947 next_context_buff.pstart = next_context_string
948 next_context_buff.size = max_user_len
950 while OpEN.openapiSnmpGroupGetNext(self.m_client,
959 next_context_buff) == OpEN.OPEN_E_NONE:
961 if (group_name == next_group_string.cast()
and
962 context_name == next_context_string.cast()):
967 read_string = open_.getStringBuffer(max_view_len)
968 except OpENBufferSizeError:
969 print(
"test_snmp_group_get: getStringBuffer raised OpENBufferSizeError")
972 print(
"test_snmp_group_get: getStringBuffer raised TypeError")
974 read_buff.pstart = read_string
975 read_buff.size = max_view_len
977 write_string = open_.getStringBuffer(max_view_len)
978 except OpENBufferSizeError:
979 print(
"test_snmp_group_get: getStringBuffer raised OpENBufferSizeError")
982 print(
"test_snmp_group_get: getStringBuffer raised TypeError")
984 write_buff.pstart = write_string
985 write_buff.size = max_view_len
987 notify_string = open_.getStringBuffer(max_view_len)
988 except OpENBufferSizeError:
989 print(
"test_snmp_group_get: getStringBuffer raised OpENBufferSizeError")
992 print(
"test_snmp_group_get: getStringBuffer raised TypeError")
994 notify_buff.pstart = notify_string
995 notify_buff.size = max_view_len
997 group_buff.pstart = next_group_buff.pstart
998 group_buff.size = next_group_buff.size
999 context_buff.pstart = next_context_buff.pstart
1000 context_buff.size = next_context_buff.size
1001 next_group_buff.size = max_user_len
1002 next_context_buff.size = max_context_len
1004 print_sanity_results(OpEN.OPEN_E_NONE, found,
'openapiSnmpGroupGetNext', group_name)
1006 if found
and verbose:
1007 print ' Group name : ', next_group_string.cast()
1008 print ' Security model : ', OpEN.OPEN_SNMP_SECURITY_MODEL_tp_value(model_p)
1009 print ' Security level : ', OpEN.OPEN_SNMP_SECURITY_LEVEL_tp_value(level_p)
1010 print ' Context name : ', next_context_string.cast()
1011 print ' Read view : ', read_string.cast()
1012 print ' Write view : ', write_string.cast()
1013 print ' Notify view : ', notify_string.cast()
1015 OpEN.delete_OPEN_SNMP_SECURITY_MODEL_tp(model_p)
1016 OpEN.delete_OPEN_SNMP_SECURITY_LEVEL_tp(level_p)
1018 def test_snmp_view_get(self, view_name, oid_tree) :
1019 """Get the specified SNMP view name
1021 Iterate through the existing SNMP views until a match for view and oid is found.
1022 If found, display the associated view parameters."""
1028 view_p = OpEN.new_OPEN_SNMP_VIEW_TYPE_tp()
1031 view_string = open_.getStringBuffer(len(view_name) + 1,view_name)
1032 except OpENBufferSizeError:
1033 print(
"test_snmp_view_get: getStringBuffer raised OpENBufferSizeError")
1036 print(
"test_snmp_view_get: getStringBuffer raised TypeError")
1038 view_buff = OpEN.open_buffdesc()
1039 view_buff.pstart = view_string
1040 view_buff.size = len(view_name) + 1
1043 oid_string = open_.getStringBuffer(len(oid_tree) + 1,oid_tree)
1044 except OpENBufferSizeError:
1045 print(
"test_snmp_view_get: getStringBuffer raised OpENBufferSizeError")
1048 print(
"test_snmp_view_get: getStringBuffer raised TypeError")
1050 oid_buff = OpEN.open_buffdesc()
1051 oid_buff.pstart = oid_string
1052 oid_buff.size = len(oid_tree) + 1
1055 next_view_string = open_.getStringBuffer(max_view_len)
1056 except OpENBufferSizeError:
1057 print(
"test_snmp_view_get: getStringBuffer raised OpENBufferSizeError")
1060 print(
"test_snmp_view_get: getStringBuffer raised TypeError")
1062 next_view_buff = OpEN.open_buffdesc()
1063 next_view_buff.pstart = next_view_string
1064 next_view_buff.size = max_view_len
1067 next_oid_string = open_.getStringBuffer(max_oid_len)
1068 except OpENBufferSizeError:
1069 print(
"test_snmp_view_get: getStringBuffer raised OpENBufferSizeError")
1072 print(
"test_snmp_view_get: getStringBuffer raised TypeError")
1074 next_oid_buff = OpEN.open_buffdesc()
1075 next_oid_buff.pstart = next_oid_string
1076 next_oid_buff.size = max_oid_len
1079 oid_string_string = open_.getStringBuffer(max_oid_len)
1080 except OpENBufferSizeError:
1081 print(
"test_snmp_view_get: getStringBuffer raised OpENBufferSizeError")
1084 print(
"test_snmp_view_get: getStringBuffer raised TypeError")
1086 oid_string_buff = OpEN.open_buffdesc()
1087 oid_string_buff.pstart = oid_string_string
1088 oid_string_buff.size = max_oid_len
1091 oid_val_string = open_.getStringBuffer(max_oid_len)
1092 except OpENBufferSizeError:
1093 print(
"test_snmp_view_get: getStringBuffer raised OpENBufferSizeError")
1096 print(
"test_snmp_view_get: getStringBuffer raised TypeError")
1098 oid_val_buff = OpEN.open_buffdesc()
1099 oid_val_buff.pstart = oid_val_string
1100 oid_val_buff.size = max_oid_len
1102 OpEN.openapiSnmpTreeFamilyOidStringGet(self.m_client, view_buff, oid_buff, OpEN.OPEN_SNMP_VIEW_TREE, oid_string_buff)
1103 OpEN.openapiSnmpTreeFamilyOidValGet(self.m_client, view_buff, oid_buff, OpEN.OPEN_SNMP_VIEW_TREE, oid_val_buff)
1106 view_string = open_.getStringBuffer(max_view_len)
1107 except OpENBufferSizeError:
1108 print(
"test_snmp_view_get: getStringBuffer raised OpENBufferSizeError")
1111 print(
"test_snmp_view_get: getStringBuffer raised TypeError")
1113 view_buff = OpEN.open_buffdesc()
1114 view_buff.pstart = view_string
1115 view_buff.size = max_view_len
1118 oid_string = open_.getStringBuffer(max_oid_len)
1119 except OpENBufferSizeError:
1120 print(
"test_snmp_view_get: getStringBuffer raised OpENBufferSizeError")
1123 print(
"test_snmp_view_get: getStringBuffer raised TypeError")
1125 oid_buff = OpEN.open_buffdesc()
1126 oid_buff.pstart = oid_string
1127 oid_buff.size = max_oid_len
1129 while OpEN.openapiSnmpViewGetNext(self.m_client,
1134 next_oid_buff) == OpEN.OPEN_E_NONE:
1136 if (view_name == next_view_string.cast()
and
1137 oid_val_string.cast() == next_oid_string.cast()):
1141 view_buff.pstart = next_view_buff.pstart
1142 view_buff.size = next_view_buff.size
1143 oid_buff.pstart = next_oid_buff.pstart
1144 oid_buff.size = next_oid_buff.size
1145 next_view_buff.size = max_view_len
1146 next_oid_buff.size = max_oid_len
1148 print_sanity_results(OpEN.OPEN_E_NONE, found,
'openapiSnmpViewGetNext', view_name)
1150 if found
and verbose:
1151 print ' View name : ', next_view_string.cast()
1152 print ' OID Tree : ', next_oid_string.cast()
1153 print ' OID String : ', oid_string_string.cast()
1154 print ' View Type : ', OpEN.OPEN_SNMP_VIEW_TYPE_tp_value(view_p)
1156 OpEN.delete_OPEN_SNMP_VIEW_TYPE_tp(view_p)
1158 def test_snmp_filter_get(self, filter_name, oid_tree) :
1159 """Get the specified SNMP filter name
1161 Iterate through the existing SNMP views until a match for view and oid is found.
1162 If found, display the associated view parameters."""
1166 max_filter_len = 30+1
1168 filter_p = OpEN.new_OPEN_SNMP_NOTIFY_FILTER_TYPE_tp()
1171 filter_string = open_.getStringBuffer(len(filter_name) + 1,filter_name)
1172 except OpENBufferSizeError:
1173 print(
"test_snmp_filter_get: getStringBuffer raised OpENBufferSizeError")
1176 print(
"test_snmp_filter_get: getStringBuffer raised TypeError")
1178 filter_buff = OpEN.open_buffdesc()
1179 filter_buff.pstart = filter_string
1180 filter_buff.size = len(filter_name) + 1
1183 oid_string = open_.getStringBuffer(len(oid_tree) + 1,oid_tree)
1184 except OpENBufferSizeError:
1185 print(
"test_snmp_filter_get: getStringBuffer raised OpENBufferSizeError")
1188 print(
"test_snmp_filter_get: getStringBuffer raised TypeError")
1190 oid_buff = OpEN.open_buffdesc()
1191 oid_buff.pstart = oid_string
1192 oid_buff.size = len(oid_tree)
1195 next_filter_string = open_.getStringBuffer(max_filter_len)
1196 except OpENBufferSizeError:
1197 print(
"test_snmp_filter_get: getStringBuffer raised OpENBufferSizeError")
1200 print(
"test_snmp_filter_get: getStringBuffer raised TypeError")
1202 next_filter_buff = OpEN.open_buffdesc()
1203 next_filter_buff.pstart = next_filter_string
1204 next_filter_buff.size = max_filter_len
1207 next_oid_string = open_.getStringBuffer(max_oid_len)
1208 except OpENBufferSizeError:
1209 print(
"test_snmp_filter_get: getStringBuffer raised OpENBufferSizeError")
1212 print(
"test_snmp_filter_get: getStringBuffer raised TypeError")
1214 next_oid_buff = OpEN.open_buffdesc()
1215 next_oid_buff.pstart = next_oid_string
1216 next_oid_buff.size = max_oid_len
1219 oid_string_string = open_.getStringBuffer(max_oid_len)
1220 except OpENBufferSizeError:
1221 print(
"test_snmp_filter_get: getStringBuffer raised OpENBufferSizeError")
1224 print(
"test_snmp_filter_get: getStringBuffer raised TypeError")
1226 oid_string_buff = OpEN.open_buffdesc()
1227 oid_string_buff.pstart = oid_string_string
1228 oid_string_buff.size = max_oid_len
1231 oid_val_string = open_.getStringBuffer(max_oid_len)
1232 except OpENBufferSizeError:
1233 print(
"test_snmp_filter_get: getStringBuffer raised OpENBufferSizeError")
1236 print(
"test_snmp_filter_get: getStringBuffer raised TypeError")
1238 oid_val_buff = OpEN.open_buffdesc()
1239 oid_val_buff.pstart = oid_val_string
1240 oid_val_buff.size = max_oid_len
1242 OpEN.openapiSnmpTreeFamilyOidStringGet(self.m_client, filter_buff, oid_buff, OpEN.OPEN_SNMP_FILTER_TREE, oid_string_buff)
1243 OpEN.openapiSnmpTreeFamilyOidValGet(self.m_client, filter_buff, oid_buff, OpEN.OPEN_SNMP_FILTER_TREE, oid_val_buff)
1246 filter_string = open_.getStringBuffer(max_filter_len)
1247 except OpENBufferSizeError:
1248 print(
"test_snmp_filter_get: getStringBuffer raised OpENBufferSizeError")
1251 print(
"test_snmp_filter_get: getStringBuffer raised TypeError")
1253 filter_buff = OpEN.open_buffdesc()
1254 filter_buff.pstart = filter_string
1255 filter_buff.size = max_filter_len
1258 oid_string = open_.getStringBuffer(max_oid_len)
1259 except OpENBufferSizeError:
1260 print(
"test_snmp_filter_get: getStringBuffer raised OpENBufferSizeError")
1263 print(
"test_snmp_filter_get: getStringBuffer raised TypeError")
1265 oid_buff = OpEN.open_buffdesc()
1266 oid_buff.pstart = oid_string
1267 oid_buff.size = max_oid_len
1269 while OpEN.openapiSnmpFilterGetNext(self.m_client,
1274 next_oid_buff) == OpEN.OPEN_E_NONE:
1276 if (filter_name == next_filter_string.cast()
and
1277 oid_val_string.cast() == next_oid_string.cast()):
1281 filter_buff.pstart = next_filter_buff.pstart
1282 filter_buff.size = next_filter_buff.size
1283 oid_buff.pstart = next_oid_buff.pstart
1284 oid_buff.size = next_oid_buff.size
1285 next_filter_buff.size = max_filter_len
1286 next_oid_buff.size = max_oid_len
1288 print_sanity_results(OpEN.OPEN_E_NONE, found,
'openapiSnmpFilterGetNext', filter_name)
1290 if found
and verbose:
1291 print ' Filter name : ', next_filter_string.cast()
1292 print ' OID Tree : ', next_oid_string.cast()
1293 print ' OID String : ', oid_string_string.cast()
1294 print ' View Type : ', OpEN.OPEN_SNMP_NOTIFY_FILTER_TYPE_tp_value(filter_p)
1296 OpEN.delete_OPEN_SNMP_NOTIFY_FILTER_TYPE_tp(filter_p)
1298 def test_snmp_host_get(self, host) :
1299 """Get the specified SNMP host name
1301 Iterate through the existing SNMP hosts until a match for
1302 host is found. If found, display the associated host parameters."""
1305 max_host_len = 158+1
1306 max_filter_len = 30+1
1307 max_security_len = 30+1
1309 port_p = OpEN.new_uint32_tp()
1310 model_p = OpEN.new_OPEN_SNMP_SECURITY_MODEL_tp()
1311 level_p = OpEN.new_OPEN_SNMP_SECURITY_LEVEL_tp()
1312 type_p = OpEN.new_OPEN_SNMP_NOTIFY_TYPE_tp()
1313 timeout_p = OpEN.new_uint32_tp()
1314 retries_p = OpEN.new_uint32_tp()
1317 host_string = open_.getStringBuffer(max_host_len)
1318 except OpENBufferSizeError:
1319 print(
"test_snmp_host_get: getStringBuffer raised OpENBufferSizeError")
1322 print(
"test_snmp_host_get: getStringBuffer raised TypeError")
1324 host_buff = OpEN.open_buffdesc()
1325 host_buff.pstart = host_string
1326 host_buff.size = max_host_len
1329 security_string = open_.getStringBuffer(max_security_len)
1330 except OpENBufferSizeError:
1331 print(
"test_snmp_host_get: getStringBuffer raised OpENBufferSizeError")
1334 print(
"test_snmp_host_get: getStringBuffer raised TypeError")
1336 security_buff = OpEN.open_buffdesc()
1337 security_buff.pstart = security_string
1338 security_buff.size = max_security_len
1341 filter_string = open_.getStringBuffer(max_filter_len)
1342 except OpENBufferSizeError:
1343 print(
"test_snmp_host_get: getStringBuffer raised OpENBufferSizeError")
1346 print(
"test_snmp_host_get: getStringBuffer raised TypeError")
1348 filter_buff = OpEN.open_buffdesc()
1349 filter_buff.pstart = filter_string
1350 filter_buff.size = max_filter_len
1353 next_host_string = open_.getStringBuffer(max_host_len)
1354 except OpENBufferSizeError:
1355 print(
"test_snmp_host_get: getStringBuffer raised OpENBufferSizeError")
1358 print(
"test_snmp_host_get: getStringBuffer raised TypeError")
1360 next_host_buff = OpEN.open_buffdesc()
1361 next_host_buff.pstart = next_host_string
1362 next_host_buff.size = max_host_len
1364 while OpEN.openapiSnmpHostGetNext(self.m_client,
1374 next_host_buff) == OpEN.OPEN_E_NONE:
1376 if host == next_host_string.cast():
1381 security_string = open_.getStringBuffer(max_security_len)
1382 except OpENBufferSizeError:
1383 print(
"test_snmp_host_get: getStringBuffer raised OpENBufferSizeError")
1386 print(
"test_snmp_host_get: getStringBuffer raised TypeError")
1388 security_buff = OpEN.open_buffdesc()
1389 security_buff.pstart = security_string
1390 security_buff.size = max_security_len
1393 filter_string = open_.getStringBuffer(max_filter_len)
1394 except OpENBufferSizeError:
1395 print(
"test_snmp_host_get: getStringBuffer raised OpENBufferSizeError")
1398 print(
"test_snmp_host_get: getStringBuffer raised TypeError")
1400 filter_buff = OpEN.open_buffdesc()
1401 filter_buff.pstart = filter_string
1402 filter_buff.size = max_filter_len
1404 host_buff.pstart = next_host_buff.pstart
1405 host_buff.size = next_host_buff.size
1406 next_host_buff.size = max_host_len
1408 print_sanity_results(OpEN.OPEN_E_NONE, found,
'openapiSnmpHostGetNext', host)
1410 if found
and verbose:
1411 print ' Address port : %s %d' % (next_host_string.cast(), OpEN.uint32_tp_value(port_p))
1412 print ' Security name : ', security_string.cast()
1413 print ' Security model : ', OpEN.OPEN_SNMP_SECURITY_MODEL_tp_value(model_p)
1414 print ' Security level : ', OpEN.OPEN_SNMP_SECURITY_LEVEL_tp_value(level_p)
1415 print ' Notify type : ', OpEN.OPEN_SNMP_NOTIFY_TYPE_tp_value(type_p)
1416 print ' Timeout : ', OpEN.uint32_tp_value(timeout_p)
1417 print ' Retries : ', OpEN.uint32_tp_value(retries_p)
1418 print ' Filter name : ', filter_string.cast()
1420 OpEN.delete_uint32_tp(port_p)
1421 OpEN.delete_OPEN_SNMP_SECURITY_MODEL_tp(model_p)
1422 OpEN.delete_OPEN_SNMP_SECURITY_LEVEL_tp(level_p)
1423 OpEN.delete_OPEN_SNMP_NOTIFY_TYPE_tp(type_p)
1424 OpEN.delete_uint32_tp(timeout_p)
1425 OpEN.delete_uint32_tp(retries_p)
1427 def test_snmp_community_get(self, community_name) :
1428 """Get the specified SNMP community name
1430 Iterate through the existing SNMP hosts until a match for
1431 host is found. If found, display the associated host parameters."""
1433 max_community_len = 20+1
1435 access_p = OpEN.new_OPEN_SNMP_COMMUNITY_ACCESS_TYPE_tp()
1436 addr = OpEN.open_inet_addr_t()
1439 community_string = open_.getStringBuffer(max_community_len)
1440 except OpENBufferSizeError:
1441 print(
"test_snmp_community_get: getStringBuffer raised OpENBufferSizeError")
1444 print(
"test_snmp_community_get: getStringBuffer raised TypeError")
1446 community_buff = OpEN.open_buffdesc()
1447 community_buff.pstart = community_string
1448 community_buff.size = max_community_len
1451 view_string = open_.getStringBuffer(max_view_len)
1452 except OpENBufferSizeError:
1453 print(
"test_snmp_community_get: getStringBuffer raised OpENBufferSizeError")
1456 print(
"test_snmp_community_get: getStringBuffer raised TypeError")
1458 view_buff = OpEN.open_buffdesc()
1459 view_buff.pstart = view_string
1460 view_buff.size = max_view_len
1463 next_community_string = open_.getStringBuffer(max_community_len)
1464 except OpENBufferSizeError:
1465 print(
"test_snmp_community_get: getStringBuffer raised OpENBufferSizeError")
1468 print(
"test_snmp_community_get: getStringBuffer raised TypeError")
1470 next_community_buff = OpEN.open_buffdesc()
1471 next_community_buff.pstart = next_community_string
1472 next_community_buff.size = max_community_len
1474 while OpEN.openapiSnmpCommunityGetNext(self.m_client,
1479 next_community_buff) == OpEN.OPEN_E_NONE:
1481 if community_name == next_community_string.cast():
1486 view_string = open_.getStringBuffer(max_view_len)
1487 except OpENBufferSizeError:
1488 print(
"test_snmp_community_get: getStringBuffer raised OpENBufferSizeError")
1491 print(
"test_snmp_community_get: getStringBuffer raised TypeError")
1493 view_buff = OpEN.open_buffdesc()
1494 view_buff.pstart = view_string
1495 view_buff.size = max_view_len
1497 community_buff.pstart = next_community_buff.pstart
1498 community_buff.size = next_community_buff.size
1499 next_community_buff.size = max_community_len
1501 print_sanity_results(OpEN.OPEN_E_NONE, found,
'openapiSnmpCommunityGetNext', community_name)
1503 if found
and verbose:
1504 print ' Community :', next_community_string.cast()
1505 print ' Access Type :', OpEN.OPEN_SNMP_COMMUNITY_ACCESS_TYPE_tp_value(access_p)
1506 print ' View Name :', view_string.cast()
1507 print ' IP Address :', int_to_ip(addr.addr.ipv4)
1509 OpEN.delete_OPEN_SNMP_COMMUNITY_ACCESS_TYPE_tp(access_p)
1511 def test_snmp_trap_flag_get(self, flag_bits, mode) :
1512 """Retrieve the trap mode for a single trap."""
1514 mode_p = OpEN.new_bool_tp()
1516 result = OpEN.openapiSnmpTrapFlagGet(self.m_client, flag_bits, mode_p)
1517 print_bad_result(result,
'openapiSnmpTrapFlagGet')
1518 print_sanity_results(result, mode == OpEN.bool_tp_value(mode_p),
'openapiSnmpTrapFlagGet', str(flag_bits))
1519 OpEN.delete_bool_tp(mode_p)
1521 def test_snmp_local_engine_id_delete(self) :
1522 """Delete the SNMP engine id on the local device.
1524 The engine id is actually reset to the default id which is
1525 automatically generated based on the local MAC address."""
1527 result = OpEN.openapiSnmpLocalEngineIdDelete(self.m_client)
1528 print_bad_result(result,
'openapiSnmpLocalEngineIdDelete')
1529 print_sanity_results(OpEN.OPEN_E_NONE,
True,
'openapiSnmpLocalEngineIdDelete',
'')
1531 def test_snmp_view_delete(self, view_name, oid_tree) :
1532 """Delete an existing SNMP view."""
1535 view_string = open_.getStringBuffer(len(view_name) + 1,view_name)
1536 except OpENBufferSizeError:
1537 print(
"test_snmp_view_delete: getStringBuffer raised OpENBufferSizeError")
1540 print(
"test_snmp_view_delete: getStringBuffer raised TypeError")
1542 view_buff = OpEN.open_buffdesc()
1543 view_buff.pstart = view_string
1544 view_buff.size = len(view_name) + 1
1547 oid_string = open_.getStringBuffer(len(oid_tree) + 1,oid_tree)
1548 except OpENBufferSizeError:
1549 print(
"test_snmp_view_delete: getStringBuffer raised OpENBufferSizeError")
1552 print(
"test_snmp_view_delete: getStringBuffer raised TypeError")
1554 oid_buff = OpEN.open_buffdesc()
1555 oid_buff.pstart = oid_string
1556 oid_buff.size = len(oid_tree)
1558 result = OpEN.openapiSnmpViewDelete(self.m_client, view_buff, oid_buff)
1559 print_bad_result(result,
'openapiSnmpViewDelete')
1560 print_sanity_results(result,
True,
'openapiSnmpViewDelete', view_name)
1562 def test_snmp_filter_delete(self, filter_name, oid_tree) :
1563 """Delete an existing SNMP filter."""
1565 filter_string = open_.getStringBuffer(len(filter_name) + 1,filter_name)
1566 filter_buff = OpEN.open_buffdesc()
1567 filter_buff.pstart = filter_string
1568 filter_buff.size = len(filter_name) + 1
1571 oid_string = open_.getStringBuffer(len(oid_tree) + 1,oid_tree)
1572 except OpENBufferSizeError:
1573 print(
"test_snmp_filter_delete: getStringBuffer raised OpENBufferSizeError")
1576 print(
"test_snmp_filter_delete: getStringBuffer raised TypeError")
1578 oid_buff = OpEN.open_buffdesc()
1579 oid_buff.pstart = oid_string
1580 oid_buff.size = len(oid_tree) + 1
1582 result = OpEN.openapiSnmpFilterDelete(self.m_client, filter_buff, oid_buff)
1583 print_bad_result(result,
'openapiSnmpFilterDelete')
1584 print_sanity_results(result,
True,
'openapiSnmpFilterDelete', filter_name)
1586 def test_snmp_host_delete(self, host, notify_type) :
1587 """Delete an existing SNMP host."""
1590 host_string = open_.getStringBuffer(len(host) + 1, host)
1591 except OpENBufferSizeError:
1592 print(
"test_snmp_host_delete: getStringBuffer raised OpENBufferSizeError")
1595 print(
"test_snmp_host_delete: getStringBuffer raised TypeError")
1597 host_buff = OpEN.open_buffdesc()
1598 host_buff.pstart = host_string
1599 host_buff.size = len(host) + 1
1601 result = OpEN.openapiSnmpHostDelete(self.m_client, host_buff, notify_type)
1602 print_bad_result(result,
'openapiSnmpHostDelete')
1603 print_sanity_results(result,
True,
'openapiSnmpHostDelete', host)
1605 def test_snmp_user_delete(self, user_name, engine_id) :
1606 """Delete a SNMP user."""
1609 user_string = open_.getStringBuffer(len(user_name) + 1, user_name)
1610 except OpENBufferSizeError:
1611 print(
"test_snmp_user_delete: getStringBuffer raised OpENBufferSizeError")
1614 print(
"test_snmp_user_delete: getStringBuffer raised TypeError")
1616 user_buff = OpEN.open_buffdesc()
1617 user_buff.pstart = user_string
1618 user_buff.size = len(user_name) + 1
1621 engine_id_string = open_.getStringBuffer(len(engine_id) + 1, engine_id)
1622 except OpENBufferSizeError:
1623 print(
"test_snmp_user_delete: getStringBuffer raised OpENBufferSizeError")
1626 print(
"test_snmp_user_delete: getStringBuffer raised TypeError")
1628 engine_id_buff = OpEN.open_buffdesc()
1629 engine_id_buff.pstart = engine_id_string
1630 engine_id_buff.size = len(engine_id) + 1
1632 result = OpEN.openapiSnmpUserDelete(self.m_client, user_buff, engine_id_buff)
1633 print_bad_result(result,
'openapiSnmpUserDelete')
1634 print_sanity_results(result,
True,
'openapiSnmpUserDelete', user_name)
1636 def test_snmp_group_delete(self, group_name, model, level, context_name) :
1637 """Delete a SNMP group."""
1640 group_string = open_.getStringBuffer(len(group_name) + 1, group_name)
1641 except OpENBufferSizeError:
1642 print(
"test_snmp_group_delete: getStringBuffer raised OpENBufferSizeError")
1645 print(
"test_snmp_group_delete: getStringBuffer raised TypeError")
1647 group_buff = OpEN.open_buffdesc()
1648 group_buff.pstart = group_string
1649 group_buff.size = len(group_name) + 1
1652 context_string = open_.getStringBuffer(len(context_name) + 1, context_name)
1653 except OpENBufferSizeError:
1654 print(
"test_snmp_group_delete: getStringBuffer raised OpENBufferSizeError")
1657 print(
"test_snmp_group_delete: getStringBuffer raised TypeError")
1659 context_buff = OpEN.open_buffdesc()
1660 context_buff.pstart = context_string
1661 context_buff.size = len(context_name) + 1
1663 result = OpEN.openapiSnmpGroupDelete(self.m_client, group_buff, model, level, context_buff)
1664 print_bad_result(result,
'openapiSnmpGroupDelete')
1665 print_sanity_results(result,
True,
'openapiSnmpGroupDelete', group_name)
1667 def test_snmp_community_delete(self, community_name) :
1668 """Delete an SNMP community."""
1671 community_string = open_.getStringBuffer(len(community_name) + 1, community_name)
1672 except OpENBufferSizeError:
1673 print(
"test_snmp_community_delete: getStringBuffer raised OpENBufferSizeError")
1676 print(
"test_snmp_community_delete: getStringBuffer raised TypeError")
1678 community_buff = OpEN.open_buffdesc()
1679 community_buff.pstart = community_string
1680 community_buff.size = len(community_name) + 1
1682 result = OpEN.openapiSnmpCommunityDelete(self.m_client, community_buff)
1683 print_bad_result(result,
'openapiSnmpCommunityDelete')
1684 print_sanity_results(result,
True,
'openapiSnmpCommunityDelete', community_name)
1686 def test_snmp_trap_source_interface(self, interface_type) :
1687 """Set, then get the source interface which SNMP trap originates.
1689 For demonstration purposes, this function retrieves the first
1690 interface based on interface type and attempts to set it as the
1691 source interface. If successful, the interface attributes are
1692 retrieved and verified. """
1694 val_p = OpEN.new_uint32_tp()
1695 intf_p = OpEN.new_uint32_tp()
1696 type_p = OpEN.new_OPEN_INTF_TYPE_tp()
1697 state_p = OpEN.new_OPEN_LINK_STATE_tp()
1699 msg =
'interface type : ' + get_type(interface_type)
1702 result = OpEN.openapiIfFirstGet(self.m_client, interface_type, val_p)
1703 if result == OpEN.OPEN_E_FAIL:
1704 result = OpEN.OPEN_E_NOT_FOUND
1705 print_bad_result(result,
'%s - %s' % (
'openapiIfFirstGet', msg))
1707 if result == OpEN.OPEN_E_NONE:
1708 intf = OpEN.uint32_tp_value(val_p)
1709 result = OpEN.openapiSnmpTrapSrcIntfSet(self.m_client, intf)
1710 print_bad_result(result,
'%s - %s' % (
'openapiSnmpTrapSrcIntfSet', msg))
1712 if result == OpEN.OPEN_E_NONE:
1713 tmp_addr = OpEN.open_inet_addr_t()
1714 result = OpEN.openapiSnmpTrapSrcIntfGet(self.m_client, intf_p, type_p, tmp_addr)
1715 print_bad_result(result,
'%s - %s' % (
'openapiSnmpTrapSrcIntfGet', msg))
1717 if result == OpEN.OPEN_E_NONE:
1718 if tmp_addr.family == OpEN.OPEN_AF_INET
or tmp_addr.family == OpEN.OPEN_AF_UNIX:
1719 ip_addr = int_to_ip(tmp_addr.addr.ipv4)
1721 result = OpEN.OPEN_E_PARAM
1722 print_bad_result(result,
'%s - %s' % (
'inet_ntoa', msg))
1724 if result == OpEN.OPEN_E_NONE:
1725 result = OpEN.openapiIfLinkStateGet(self.m_client, intf, state_p)
1726 print_bad_result(result,
'%s - %s' % (
'openapiIfLinkStateGet', msg))
1728 if result == OpEN.OPEN_E_NONE:
1729 print_sanity_results(result,
True,
'openapiSnmpTrapSrcIntfSet', msg)
1731 print ' Interface : ', intf
1732 print ' Type : ', get_type(interface_type)
1733 print ' Address : ', ip_addr
1734 print ' State : ', get_link(OpEN.OPEN_LINK_STATE_tp_value(state_p))
1736 OpEN.delete_uint32_tp(val_p)
1737 OpEN.delete_uint32_tp(intf_p)
1738 OpEN.delete_OPEN_INTF_TYPE_tp(type_p)
1739 OpEN.delete_OPEN_LINK_STATE_tp(state_p)
1742 """Demonstrate OpEN usage for SNMP APIs"""
1745 opts, args = getopt.getopt(argv,
"hv")
1746 except getopt.GetoptError:
1747 print 'snmp_example.py <-v>'
1749 for opt, arg
in opts:
1751 print 'snmp_example.py <-v>'
1757 ret = open_.connect(
"snmp_example")
1758 if ret == OpEN.OPEN_E_NONE :
1759 open_.getNetworkOSVersion()
1760 client = open_.get_client()
1761 example = SnmpExample(client)
1762 print "Begin Sanity tests..."
1763 example.test_snmp_sys_name_set(
'system-name')
1764 example.test_snmp_sys_location_set(
"system-location")
1765 example.test_snmp_sys_contact_set(
"system-contact")
1766 example.test_snmp_local_engine_id_set(
"default")
1767 print "\nCreate SNMP users..."
1768 example.test_snmp_user_create(SNMP_USER_LIST)
1769 print "\nCreate SNMP groups..."
1770 example.test_snmp_group_create(SNMP_GROUP_LIST)
1771 print "\nCreate SNMP views..."
1772 example.test_snmp_view_create(SNMP_VIEW_LIST)
1773 print "\nCreate SNMP filters..."
1774 example.test_snmp_filter_create(SNMP_FILTER_LIST)
1775 print "\nCreate SNMP hosts..."
1776 example.test_snmp_host_create(SNMP_HOST_LIST)
1777 print "\nCreate SNMP communities..."
1778 example.test_snmp_community_create(SNMP_COMMUNITY_LIST)
1779 print "\nEnable misc SNMP trap flags..."
1780 example.testSnmpTrapFlagSet([OpEN.OPEN_SNMP_MULTI_USERS_TRAP_FLAG, OpEN.OPEN_SNMP_USER_AUTH_TRAP_FLAG],
True)
1781 print "\nRetrieve some SNMP records..."
1782 example.test_snmp_sys_name_get()
1783 example.test_snmp_sys_location_get()
1784 example.test_snmp_sys_contact_get()
1785 example.test_snmp_local_engine_id_get()
1786 example.test_snmp_user_get(
'admin1')
1787 example.test_snmp_group_get(
'network-admin', OpEN.OPEN_SNMP_SECURITY_MODEL_USM, OpEN.OPEN_SNMP_SECURITY_LEVEL_AUTHPRIV,
'context-1')
1788 example.test_snmp_view_get(
'view-1',
'broadcom')
1789 example.test_snmp_view_get(
'view-2',
'ifEntry.*.1')
1790 example.test_snmp_filter_get(
'filter-1',
'broadcom')
1791 example.test_snmp_filter_get(
'filter-2',
'ifEntry.*.1')
1792 example.test_snmp_host_get(
'2001::')
1793 example.test_snmp_community_get(
'public-test')
1794 example.test_snmp_community_get(
'private-test')
1795 example.test_snmp_community_get(
'delete-private-map')
1796 example.test_snmp_trap_flag_get(OpEN.OPEN_SNMP_MULTI_USERS_TRAP_FLAG,
True)
1797 example.test_snmp_trap_flag_get(OpEN.OPEN_SNMP_USER_AUTH_TRAP_FLAG,
True)
1798 print "\nDelete some SNMP records..."
1799 example.test_snmp_local_engine_id_delete()
1800 example.test_snmp_view_delete(
"view-2",
"ifEntry.*.1")
1801 example.test_snmp_filter_delete(
"filter-2",
"ifEntry.*.1")
1802 example.test_snmp_host_delete(
"10.10.10.2", OpEN.OPEN_SNMP_NOTIFY_TYPE_TRAP)
1803 example.test_snmp_user_delete(
"delete-user",
"dddddddddddddddddddddddddddddddd")
1804 example.test_snmp_group_delete(
"delete-group", OpEN.OPEN_SNMP_SECURITY_MODEL_SNMPV2C, OpEN.OPEN_SNMP_SECURITY_LEVEL_NOAUTHNOPRIV,
"context-3")
1805 example.test_snmp_community_delete(
"delete-community")
1806 example.test_snmp_community_delete(
"delete-private-map")
1807 print "\nAttempt to set the trap source-interface..."
1809 example.test_snmp_trap_source_interface(OpEN.OPEN_INTF_TYPE_PHY)
1813 print "Unable to connect"
1815 if __name__ ==
'__main__':