Open Ethernet Networking (OpEN) API Guide and Reference Manual  3.11.1.2
snmp_example.py
1 /*! \file snmp_example.py
2  */
3 
4 #!/mnt/fastpath/usr/bin/python
5 
6 """snmp_example.py: OpEN API Simple Network Management Protocol (SNMP) configuration example"""
7 
8 import OpEN_py as OpEN
9 from OpENUtil import *
10 import socket
11 import struct
12 import sys
13 import getopt
14 from sys import version_info
15 
16 open_ = OpENUtil()
17 
18 #
19 # Copyright 2016 Broadcom.
20 #
21 # Licensed under the Apache License, Version 2.0 (the "License")
22 # you may not use this file except in compliance with the License.
23 # You may obtain a copy of the License at
24 #
25 # http://www.apache.org/licenses/LICENSE-2.0
26 #
27 # Unless required by applicable law or agreed to in writing, software
28 # distributed under the License is distributed on an "AS IS" BASIS,
29 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
30 # See the License for the specific language governing permissions and
31 # limitations under the License.
32 #
33 
34 #
35 # Python 2.6.6
36 #
37 
38 # Define some constants for comparison convenience
39 SET = 'set'
40 MAP = 'map'
41 
42 # Define SNMP users
43 SNMP_USER_LIST = [
44  ("admin1", "network-admin1", OpEN.OPEN_USM_USER_AUTH_PROTOCOL_NONE, "", "", OpEN.OPEN_USM_USER_PRIV_PROTOCOL_NONE, "", "", ""),
45  ("admin2", "network-admin", OpEN.OPEN_USM_USER_AUTH_PROTOCOL_SHA, "ThisIsaShaPasswordThatIs32Chars.", "", OpEN.OPEN_USM_USER_PRIV_PROTOCOL_NONE, "", "", "0123456789abcdef"),
46  ("admin3", "network-admin", OpEN.OPEN_USM_USER_AUTH_PROTOCOL_SHA, "", "ThisIsaShaKeywordThatMustBe48CharactersInLength.", OpEN.OPEN_USM_USER_PRIV_PROTOCOL_NONE, "", "", "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"),
47  ("admin4", "network-admin", OpEN.OPEN_USM_USER_AUTH_PROTOCOL_SHA, "ThisIsaShaPasswordThatIs32Chars.", "", OpEN.OPEN_USM_USER_PRIV_PROTOCOL_DES, "ThisIsaDesPasswordThatIs32Chars.", "", "cccccccccccccccccccccccccccccccc"),
48  ("admin5", "network-admin", OpEN.OPEN_USM_USER_AUTH_PROTOCOL_SHA, "", "ThisIsaShaKeywordThatMustBe48CharactersInLength.", OpEN.OPEN_USM_USER_PRIV_PROTOCOL_DES, "", "ThisIsaDesKeywordThatMustBe32chr", "dddddddddddddddddddddddddddddddd"),
49  ("delete-user", "network-admin", OpEN.OPEN_USM_USER_AUTH_PROTOCOL_SHA, "", "ThisIsaShaKeywordThatMustBe48CharactersInLength.", OpEN.OPEN_USM_USER_PRIV_PROTOCOL_DES, "", "ThisIsaDesKeywordThatMustBe32chr", "dddddddddddddddddddddddddddddddd"),
50 ]
51 
52 # Define SNMP groups
53 SNMP_GROUP_LIST = [
54  ("network-admin", OpEN.OPEN_SNMP_SECURITY_MODEL_USM, OpEN.OPEN_SNMP_SECURITY_LEVEL_AUTHPRIV, "context-1", "view-1", "view-1", "view-1"),
55  ("network-guest", OpEN.OPEN_SNMP_SECURITY_MODEL_SNMPV1, OpEN.OPEN_SNMP_SECURITY_LEVEL_NOAUTHNOPRIV, "context-2", "view-2", "view-2", "view-2"),
56  ("delete-group", OpEN.OPEN_SNMP_SECURITY_MODEL_SNMPV2C, OpEN.OPEN_SNMP_SECURITY_LEVEL_NOAUTHNOPRIV, "context-3", "view-3", "view-3", "view-3"),
57 ]
58 
59 # Define SNMP views
60 SNMP_VIEW_LIST = [
61  ("view-1", "1.3.6.1.4.1.4413", OpEN.OPEN_SNMP_VIEW_TYPE_INCLUDED),
62  ("view-2", "ifEntry.*.1", OpEN.OPEN_SNMP_VIEW_TYPE_EXCLUDED),
63 ]
64 
65 # Define SNMP filters
66 SNMP_FILTER_LIST = [
67  ("filter-1", "1.3.6.1.4.1.4413", OpEN.OPEN_SNMP_VIEW_TYPE_INCLUDED),
68  ("filter-2", "ifEntry.*.1", OpEN.OPEN_SNMP_VIEW_TYPE_EXCLUDED),
69 ]
70 
71 # Define SNMP hosts
72 SNMP_HOST_LIST = [
73  ("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, ""),
74  ("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, ""),
75  ("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"),
76 ]
77 
78 # Define SNMP communities and community maps
79 SNMP_COMMUNITY_LIST = [
80  {SET:["public-test", OpEN.OPEN_SNMP_COMMUNITY_ACCESS_NONE, "view_test", "20.20.20.1"]},
81  {SET:["private-test", OpEN.OPEN_SNMP_COMMUNITY_ACCESS_RW, "", ""]},
82  {SET:["delete-community", OpEN.OPEN_SNMP_COMMUNITY_ACCESS_RO, "", ""]},
83  {MAP:["delete-private-map", OpEN.OPENAPI_SNMP_DEFAULT_WRITE_STR, "30.30.30.1"]},
84 ]
85 
86 def ip_to_int(addr):
87  """Convert ipv4 string to integer"""
88 
89  return struct.unpack("!I", socket.inet_aton(addr))[0]
90 
91 def int_to_ip(addr):
92  """Convert ipv4 integer to string"""
93 
94  return socket.inet_ntoa(struct.pack("!I", addr))
95 
96 def ipv6_to_int(addr):
97  """Convert ipv6 string to integer"""
98 
99  str_ = socket.inet_pton(socket.AF_INET6, addr)
100  a, b = struct.unpack('!2Q', str_)
101  return (a << 64) | b
102 
103 def int_to_ipv6(addr):
104  """Convert ipv6 integer to string"""
105 
106  a = addr >> 64
107  b = addr & ((1 << 64) - 1)
108  return socket.inet_ntop(socket.AF_INET6, struct.pack('!2Q', a, b))
109 
110 def get_type(itype) :
111  """Return text representation based on interface type"""
112 
113  if itype == OpEN.OPEN_INTF_TYPE_PHY:
114  return 'Port'
115  elif itype == OpEN.OPEN_INTF_TYPE_VLAN:
116  return 'VLAN'
117  elif itype == OpEN.OPEN_INTF_TYPE_LOOPBACK:
118  return 'Loop'
119  elif itype == OpEN.OPEN_INTF_TYPE_TUNNEL:
120  return 'Tnnl'
121  else:
122  return ''
123 
124 def get_link(state):
125  if state == OpEN.OPEN_LINK_UP:
126  return 'Up'
127  elif state == OpEN.OPEN_LINK_DOWN:
128  return 'Down'
129  else:
130  return 'Unknown'
131 
132 def print_sanity_results(result, test, msg, feat):
133  """Print overall comparison results"""
134 
135  if result == OpEN.OPEN_E_UNAVAIL:
136  print("Sanity test skipped.")
137  elif result == OpEN.OPEN_E_EXISTS:
138  print("Sanity Skipped (already exists) - %s - %s." % (msg, feat))
139  elif result == OpEN.OPEN_E_NONE and test == True:
140  print("Sanity Success - %s - %s." % (msg, feat))
141  else:
142  print("Sanity Failure - %s - %s." % (msg, feat))
143 
144 def print_bad_result(result, msg):
145  """Print some general error messages if the result is bad"""
146 
147  if result == OpEN.OPEN_E_UNAVAIL:
148  print("Feature not supported - %s (err %d)." % (msg, result))
149  elif result == OpEN.OPEN_E_NOT_FOUND:
150  print("Test Skipped (not found) - ", msg)
151  elif result != OpEN.OPEN_E_NONE:
152  print("Test Failure - %s (err %d)." % (msg, result))
153 
154 class SnmpExample :
155  """Simple SNMP class implementing basic CRUD examples """
156 
157  def __init__(self, client) :
158  self.m_client = client
159 
160  def test_snmp_sys_name_set(self, name) :
161  """Set the SNMP system name.
162 
163  An administratively-assigned name for this managed node.
164  By convention, this is the node's fully-qualified domain name."""
165 
166  try:
167  name_string = open_.getStringBuffer(len(name) + 1, name)
168  except OpENBufferSizeError:
169  print("test_snmp_sys_name_set: getStringBuffer raised OpENBufferSizeError")
170  return
171  except TypeError:
172  print("test_snmp_sys_name_set: getStringBuffer raised TypeError")
173  return
174  name_buff = OpEN.open_buffdesc()
175  name_buff.pstart = name_string
176  name_buff.size = len(name)+1
177 
178  result = OpEN.openapiSnmpSysNameSet(self.m_client, name_buff)
179  print_bad_result(result, 'openapiSnmpSysNameSet')
180  print_sanity_results(result, (1 == 1), 'openapiSnmpSysNameSet', name_string.cast())
181 
182  def test_snmp_sys_location_set(self, location) :
183  """Set the SNMP system location.
184  The physical location of this node, for example;
185  'telephone closet' or '3rd floor'."""
186 
187  try:
188  name_string = open_.getStringBuffer(len(location) + 1, location)
189  except OpENBufferSizeError:
190  print("test_snmp_sys_location_set: getStringBuffer raised OpENBufferSizeError")
191  return
192  except TypeError:
193  print("test_snmp_sys_location_set: getStringBuffer raised TypeError")
194  return
195  name_buff = OpEN.open_buffdesc()
196  name_buff.pstart = name_string
197  name_buff.size = len(location)+1
198 
199  result = OpEN.openapiSnmpSysLocationSet(self.m_client, name_buff)
200  print_bad_result(result, 'openapiSnmpSysLocationSet')
201  print_sanity_results(result, (1 == 1), 'openapiSnmpSysLocationSet', name_string.cast())
202 
203  def test_snmp_sys_contact_set(self, contact) :
204  """Set the SNMP system contact.
205 
206  The textual identification of the contact person for this managed node,
207  together with information on how to contact this person."""
208 
209  try:
210  name_string = open_.getStringBuffer(len(contact) + 1, contact)
211  except OpENBufferSizeError:
212  print("test_snmp_sys_contact_set: getStringBuffer raised OpENBufferSizeError")
213  return
214  except TypeError:
215  print("test_snmp_sys_contact_set: getStringBuffer raised TypeError")
216  return
217  name_buff = OpEN.open_buffdesc()
218  name_buff.pstart = name_string
219  name_buff.size = len(contact)+1
220 
221  result = OpEN.openapiSnmpSysContactSet(self.m_client, name_buff)
222  print_bad_result(result, 'openapiSnmpSysContactSet')
223  print_sanity_results(result, (1 == 1), 'openapiSnmpSysContactSet', name_string.cast())
224 
225  def test_snmp_local_engine_id_set(self, engine_id) :
226  """Set the SNMP engine id on the local device."""
227 
228  if engine_id == 'default':
229  engine_id = '1'
230 
231  try:
232  name_string = open_.getStringBuffer(len(engine_id) + 1, engine_id)
233  except OpENBufferSizeError:
234  print("test_snmp_local_engine_id_set: getStringBuffer raised OpENBufferSizeError")
235  return
236  except TypeError:
237  print("test_snmp_local_engine_id_set: getStringBuffer raised TypeError")
238  return
239  name_buff = OpEN.open_buffdesc()
240  name_buff.pstart = name_string
241  name_buff.size = len(engine_id)+1
242 
243  result = OpEN.openapiSnmpLocalEngineIdSet(self.m_client, name_buff)
244  print_bad_result(result, 'openapiSnmpLocalEngineIdSet')
245  print_sanity_results(result, (1 == 1), 'openapiSnmpLocalEngineIdSet', name_string.cast())
246 
247  def test_snmp_user_create(self, user_list) :
248  """Create a new SNMP user"""
249 
250  for val in user_list:
251  name = val[0]
252  group = val[1]
253  auth_proto = val[2]
254  auth_pwd = val[3]
255  auth_key = val[4]
256  priv_proto = val[5]
257  priv_pwd = val[6]
258  priv_key = val[7]
259  engine_id = val[8]
260 
261  try:
262  name_string = open_.getStringBuffer(len(name) + 1, name)
263  except OpENBufferSizeError:
264  print("test_snmp_user_create: getStringBuffer raised OpENBufferSizeError")
265  return
266  except TypeError:
267  print("test_snmp_user_create: getStringBuffer raised TypeError")
268  return
269  name_buff = OpEN.open_buffdesc()
270  name_buff.pstart = name_string
271  name_buff.size = len(name)+1
272 
273  try:
274  group_string = open_.getStringBuffer(len(group) + 1, group)
275  except OpENBufferSizeError:
276  print("test_snmp_user_create: getStringBuffer raised OpENBufferSizeError")
277  return
278  except TypeError:
279  print("test_snmp_user_create: getStringBuffer raised TypeError")
280  return
281  group_buff = OpEN.open_buffdesc()
282  group_buff.pstart = group_string
283  group_buff.size = len(group)+1
284 
285  try:
286  auth_pwd_string = open_.getStringBuffer(len(auth_pwd) + 1, auth_pwd)
287  except OpENBufferSizeError:
288  print("test_snmp_user_create: getStringBuffer raised OpENBufferSizeError")
289  return
290  except TypeError:
291  print("test_snmp_user_create: getStringBuffer raised TypeError")
292  return
293  auth_pwd_buff = OpEN.open_buffdesc()
294  auth_pwd_buff.pstart = auth_pwd_string
295  auth_pwd_buff.size = len(auth_pwd)+1
296 
297  try:
298  auth_key_string = open_.getStringBuffer(len(auth_key) + 1, auth_key)
299  except OpENBufferSizeError:
300  print("test_snmp_user_create: getStringBuffer raised OpENBufferSizeError")
301  return
302  except TypeError:
303  print("test_snmp_user_create: getStringBuffer raised TypeError")
304  return
305  auth_key_buff = OpEN.open_buffdesc()
306  auth_key_buff.pstart = auth_key_string
307  auth_key_buff.size = len(auth_key)+1
308 
309  try:
310  priv_pwd_string = open_.getStringBuffer(len(priv_pwd) + 1, priv_pwd)
311  except OpENBufferSizeError:
312  print("test_snmp_user_create: getStringBuffer raised OpENBufferSizeError")
313  return
314  except TypeError:
315  print("test_snmp_user_create: getStringBuffer raised TypeError")
316  return
317  priv_pwd_buff = OpEN.open_buffdesc()
318  priv_pwd_buff.pstart = priv_pwd_string
319  priv_pwd_buff.size = len(priv_pwd)+1
320 
321  try:
322  priv_key_string = open_.getStringBuffer(len(priv_key) + 1, priv_key)
323  except OpENBufferSizeError:
324  print("test_snmp_user_create: getStringBuffer raised OpENBufferSizeError")
325  return
326  except TypeError:
327  print("test_snmp_user_create: getStringBuffer raised TypeError")
328  return
329  priv_key_buff = OpEN.open_buffdesc()
330  priv_key_buff.pstart = priv_key_string
331  priv_key_buff.size = len(priv_key)+1
332 
333  try:
334  engine_id_string = open_.getStringBuffer(len(engine_id) + 1, engine_id)
335  except OpENBufferSizeError:
336  print("test_snmp_user_create: getStringBuffer raised OpENBufferSizeError")
337  return
338  except TypeError:
339  print("test_snmp_user_create: getStringBuffer raised TypeError")
340  return
341  engine_id_buff = OpEN.open_buffdesc()
342  engine_id_buff.pstart = engine_id_string
343  engine_id_buff.size = len(engine_id)+1
344 
345  result = OpEN.openapiSnmpUserCreate(self.m_client,
346  name_buff, group_buff,
347  auth_proto, auth_pwd_buff, auth_key_buff,
348  priv_proto, priv_pwd_buff, priv_key_buff,
349  engine_id_buff)
350  print_sanity_results(result, (1 == 1), 'openapiSnmpUserCreate', name_string.cast())
351 
352  def test_snmp_group_create(self, group_list) :
353  """Create a new SNMP group"""
354 
355  for val in group_list:
356  group = val[0]
357  security_model = val[1]
358  security_level = val[2]
359  context_prefix = val[3]
360  read_view = val[4]
361  write_view = val[5]
362  notify_view = val[6]
363 
364  try:
365  group_string = open_.getStringBuffer(len(group) + 1, group)
366  except OpENBufferSizeError:
367  print("test_snmp_group_create: getStringBuffer raised OpENBufferSizeError")
368  return
369  except TypeError:
370  print("test_snmp_group_create: getStringBuffer raised TypeError")
371  return
372  group_buff = OpEN.open_buffdesc()
373  group_buff.pstart = group_string
374  group_buff.size = len(group)+1
375 
376  try:
377  context_prefix_string = open_.getStringBuffer(len(context_prefix) + 1, context_prefix)
378  except OpENBufferSizeError:
379  print("test_snmp_group_create: getStringBuffer raised OpENBufferSizeError")
380  return
381  except TypeError:
382  print("test_snmp_group_create: getStringBuffer raised TypeError")
383  return
384  context_prefix_buff = OpEN.open_buffdesc()
385  context_prefix_buff.pstart = context_prefix_string
386  context_prefix_buff.size = len(context_prefix)+1
387 
388  try:
389  read_view_string = open_.getStringBuffer(len(read_view) + 1, read_view)
390  except OpENBufferSizeError:
391  print("test_snmp_group_create: getStringBuffer raised OpENBufferSizeError")
392  return
393  except TypeError:
394  print("test_snmp_group_create: getStringBuffer raised TypeError")
395  return
396  read_view_buff = OpEN.open_buffdesc()
397  read_view_buff.pstart = read_view_string
398  read_view_buff.size = len(read_view)+1
399 
400  try:
401  write_view_string = open_.getStringBuffer(len(write_view) + 1, write_view)
402  except OpENBufferSizeError:
403  print("test_snmp_group_create: getStringBuffer raised OpENBufferSizeError")
404  return
405  except TypeError:
406  print("test_snmp_group_create: getStringBuffer raised TypeError")
407  return
408  write_view_buff = OpEN.open_buffdesc()
409  write_view_buff.pstart = write_view_string
410  write_view_buff.size = len(write_view)+1
411 
412  try:
413  notify_view_string = open_.getStringBuffer(len(notify_view) + 1, notify_view)
414  except OpENBufferSizeError:
415  print("test_snmp_group_create: getStringBuffer raised OpENBufferSizeError")
416  return
417  except TypeError:
418  print("test_snmp_group_create: getStringBuffer raised TypeError")
419  return
420  notify_view_buff = OpEN.open_buffdesc()
421  notify_view_buff.pstart = notify_view_string
422  notify_view_buff.size = len(notify_view)+1
423 
424  result = OpEN.openapiSnmpGroupCreate(self.m_client,
425  group_buff, security_model, security_level,
426  context_prefix_buff, read_view_buff, write_view_buff, notify_view_buff)
427  print_sanity_results(result, (1 == 1), 'openapiSnmpGroupCreate', group_string.cast())
428 
429  def test_snmp_view_create(self, view_list) :
430  """Create a new SNMP view"""
431 
432  for val in view_list:
433  view_name = val[0]
434  oid_tree = val[1]
435  view_type = val[2]
436 
437  try:
438  view_name_string = open_.getStringBuffer(len(view_name) + 1, view_name)
439  except OpENBufferSizeError:
440  print("test_snmp_view_create: getStringBuffer raised OpENBufferSizeError")
441  return
442  except TypeError:
443  print("test_snmp_view_create: getStringBuffer raised TypeError")
444  return
445  view_name_buff = OpEN.open_buffdesc()
446  view_name_buff.pstart = view_name_string
447  view_name_buff.size = len(view_name)+1
448 
449  try:
450  oid_tree_string = open_.getStringBuffer(len(oid_tree) + 1, oid_tree)
451  except OpENBufferSizeError:
452  print("test_snmp_view_create: getStringBuffer raised OpENBufferSizeError")
453  return
454  except TypeError:
455  print("test_snmp_view_create: getStringBuffer raised TypeError")
456  return
457  oid_tree_buff = OpEN.open_buffdesc()
458  oid_tree_buff.pstart = oid_tree_string
459  oid_tree_buff.size = len(oid_tree)+1
460 
461  result = OpEN.openapiSnmpViewCreate(self.m_client, view_name_buff, oid_tree_buff, view_type)
462  print_sanity_results(result, (1 == 1), 'openapiSnmpViewCreate', view_name_string.cast())
463 
464  def test_snmp_filter_create(self, filter_list) :
465  """Create a new SNMP filter"""
466 
467  for val in filter_list:
468  filter_name = val[0]
469  oid_tree = val[1]
470  view_type = val[2]
471 
472  try:
473  filter_name_string = open_.getStringBuffer(len(filter_name) + 1, filter_name)
474  except OpENBufferSizeError:
475  print("test_snmp_filter_create: getStringBuffer raised OpENBufferSizeError")
476  return
477  except TypeError:
478  print("test_snmp_filter_create: getStringBuffer raised TypeError")
479  return
480  filter_name_buff = OpEN.open_buffdesc()
481  filter_name_buff.pstart = filter_name_string
482  filter_name_buff.size = len(filter_name)+1
483 
484  try:
485  oid_tree_string = open_.getStringBuffer(len(oid_tree) + 1, oid_tree)
486  except OpENBufferSizeError:
487  print("test_snmp_filter_create: getStringBuffer raised OpENBufferSizeError")
488  return
489  except TypeError:
490  print("test_snmp_filter_create: getStringBuffer raised TypeError")
491  return
492  oid_tree_buff = OpEN.open_buffdesc()
493  oid_tree_buff.pstart = oid_tree_string
494  oid_tree_buff.size = len(oid_tree)+1
495 
496  result = OpEN.openapiSnmpFilterCreate(self.m_client, filter_name_buff, oid_tree_buff, view_type)
497  print_sanity_results(result, (1 == 1), 'openapiSnmpFilterCreate', filter_name_string.cast())
498 
499  def test_snmp_host_create(self, host_list) :
500  """Create a new SNMP host"""
501 
502  for val in host_list:
503  host = val[0]
504  server_port = val[1]
505  security_name = val[2]
506  security_model = val[3]
507  security_level = val[4]
508  notify_type = val[5]
509  timeout = val[6]
510  retries = val[7]
511  filter_name = val[8]
512 
513  try:
514  host_string = open_.getStringBuffer(len(host) + 1, host)
515  except OpENBufferSizeError:
516  print("test_snmp_host_create: getStringBuffer raised OpENBufferSizeError")
517  return
518  except TypeError:
519  print("test_snmp_host_create: getStringBuffer raised TypeError")
520  return
521  host_buff = OpEN.open_buffdesc()
522  host_buff.pstart = host_string
523  host_buff.size = len(host)+1
524 
525  try:
526  security_name_string = open_.getStringBuffer(len(security_name) + 1, security_name)
527  except OpENBufferSizeError:
528  print("test_snmp_host_create: getStringBuffer raised OpENBufferSizeError")
529  return
530  except TypeError:
531  print("test_snmp_host_create: getStringBuffer raised TypeError")
532  return
533  security_name_buff = OpEN.open_buffdesc()
534  security_name_buff.pstart = security_name_string
535  security_name_buff.size = len(security_name)+1
536 
537  try:
538  filter_name_string = open_.getStringBuffer(len(filter_name) + 1, filter_name)
539  except OpENBufferSizeError:
540  print("test_snmp_host_create: getStringBuffer raised OpENBufferSizeError")
541  return
542  except TypeError:
543  print("test_snmp_host_create: getStringBuffer raised TypeError")
544  return
545  filter_name_buff = OpEN.open_buffdesc()
546  filter_name_buff.pstart = filter_name_string
547  filter_name_buff.size = len(filter_name)+1
548 
549  result = OpEN.openapiSnmpHostCreate(self.m_client,
550  host_buff, server_port,
551  security_name_buff, security_model, security_level,
552  notify_type, timeout, retries, filter_name_buff)
553  print_sanity_results(result, (1 == 1), 'openapiSnmpHostCreate', host_string.cast())
554 
555  def test_snmp_community_create(self, community_list) :
556  """Create a new SNMP community
557 
558  SET key defines a basic community creation.
559  MAP key indicates a map to a new internal security name for SNMP v1 and SNMP v2 security
560  models to an existing group name."""
561 
562  for community in community_list:
563  for key, val in community.items():
564 
565  if key == SET:
566  name = val[0]
567  access = val[1]
568  view = val[2]
569  address = val[3]
570 
571  try:
572  name_string = open_.getStringBuffer(len(name) + 1, name)
573  except OpENBufferSizeError:
574  print("test_snmp_community_create: getStringBuffer raised OpENBufferSizeError")
575  return
576  except TypeError:
577  print("test_snmp_community_create: getStringBuffer raised TypeError")
578  return
579  name_buff = OpEN.open_buffdesc()
580  name_buff.pstart = name_string
581  name_buff.size = len(name)+1
582 
583  try:
584  view_string = open_.getStringBuffer(len(view) + 1, view)
585  except OpENBufferSizeError:
586  print("test_snmp_community_create: getStringBuffer raised OpENBufferSizeError")
587  return
588  except TypeError:
589  print("test_snmp_community_create: getStringBuffer raised TypeError")
590  return
591  view_buff = OpEN.open_buffdesc()
592  view_buff.pstart = view_string
593  view_buff.size = len(view)+1
594 
595  ip_addr = OpEN.open_inet_addr_t()
596  if len(address) > 0:
597  ip_addr.addr.ipv4 = ip_to_int(address)
598  ip_addr.family = socket.AF_INET
599 
600  result = OpEN.openapiSnmpCommunityCreate(self.m_client, name_buff, access, view_buff, ip_addr)
601  print_sanity_results(result, (1 == 1), 'openapiSnmpCommunityCreate', name_string.cast())
602 
603  elif key == MAP:
604  name = val[0]
605  map_name = val[1]
606  address = val[2]
607 
608  try:
609  name_string = open_.getStringBuffer(len(name) + 1, name)
610  except OpENBufferSizeError:
611  print("test_snmp_community_create: getStringBuffer raised OpENBufferSizeError")
612  return
613  except TypeError:
614  print("test_snmp_community_create: getStringBuffer raised TypeError")
615  return
616  name_buff = OpEN.open_buffdesc()
617  name_buff.pstart = name_string
618  name_buff.size = len(name)+1
619 
620  try:
621  map_name_string = open_.getStringBuffer(len(map_name) + 1, map_name)
622  except OpENBufferSizeError:
623  print("test_snmp_community_create: getStringBuffer raised OpENBufferSizeError")
624  return
625  except TypeError:
626  print("test_snmp_community_create: getStringBuffer raised TypeError")
627  return
628  map_name_buff = OpEN.open_buffdesc()
629  map_name_buff.pstart = map_name_string
630  map_name_buff.size = len(map_name)+1
631 
632  ip_addr = OpEN.open_inet_addr_t()
633  if len(address) > 0:
634  ip_addr.addr.ipv4 = ip_to_int(address)
635  ip_addr.family = socket.AF_INET
636 
637  result = OpEN.openapiSnmpCommunityGroupCreate(self.m_client, name_buff, map_name_buff, ip_addr)
638  print_sanity_results(result, (1 == 1), 'openapiSnmpCommunityGroupCreate', name_string.cast())
639 
640  def testSnmpTrapFlagSet(self, flags, mode) :
641  """Enable or disable the traps identified via the flags selection"""
642 
643  val = mode
644  flag_bits = 0
645 
646  for flag in flags:
647  flag_bits |= flag
648 
649  result = OpEN.openapiSnmpTrapFlagSet(self.m_client, flag_bits, val)
650  print_sanity_results(result, (1 == 1), 'openapiSnmpTrapFlagSet', str(flag_bits))
651 
652  def test_snmp_sys_name_get(self) :
653  """Get the SNMP system name.
654 
655  An administratively-assigned name for this managed node.
656  By convention, this is the node's fully-qualified domain name."""
657 
658  max_len = 255+1
659 
660  try:
661  name_string = open_.getStringBuffer(max_len)
662  except OpENBufferSizeError:
663  print("test_snmp_sys_name_get: getStringBuffer raised OpENBufferSizeError")
664  return
665  except TypeError:
666  print("test_snmp_sys_name_get: getStringBuffer raised TypeError")
667  return
668  name_buff = OpEN.open_buffdesc()
669  name_buff.pstart = name_string
670  name_buff.size = max_len
671 
672  result = OpEN.openapiSnmpSysNameGet(self.m_client, name_buff)
673  print_bad_result(result, 'openapiSnmpSysNameGet')
674  print_sanity_results(result, (1 == 1), 'openapiSnmpSysNameGet', name_string.cast())
675 
676  def test_snmp_sys_location_get(self) :
677  """Get the SNMP system location.
678 
679  The physical location of this node, for example;
680  'telephone closet' or '3rd floor'."""
681 
682  max_len = 255+1
683 
684  try:
685  name_string = open_.getStringBuffer(max_len)
686  except OpENBufferSizeError:
687  print("test_snmp_sys_location_get: getStringBuffer raised OpENBufferSizeError")
688  return
689  except TypeError:
690  print("test_snmp_sys_location_get: getStringBuffer raised TypeError")
691  return
692  name_buff = OpEN.open_buffdesc()
693  name_buff.pstart = name_string
694  name_buff.size = max_len
695 
696  result = OpEN.openapiSnmpSysLocationGet(self.m_client, name_buff)
697  print_bad_result(result, 'openapiSnmpSysLocationGet')
698  print_sanity_results(result, (1 == 1), 'openapiSnmpSysLocationGet', name_string.cast())
699 
700  def test_snmp_sys_contact_get(self) :
701  """Get the SNMP system contact.
702 
703  The textual identification of the contact person for this managed node,
704  together with information on how to contact this person."""
705 
706  max_len = 255+1
707 
708  try:
709  name_string = open_.getStringBuffer(max_len)
710  except OpENBufferSizeError:
711  print("test_snmp_sys_contact_get: getStringBuffer raised OpENBufferSizeError")
712  return
713  except TypeError:
714  print("test_snmp_sys_contact_get: getStringBuffer raised TypeError")
715  return
716  name_buff = OpEN.open_buffdesc()
717  name_buff.pstart = name_string
718  name_buff.size = max_len
719 
720  result = OpEN.openapiSnmpSysContactGet(self.m_client, name_buff)
721  print_bad_result(result, 'openapiSnmpSysContactGet')
722  print_sanity_results(result, (1 == 1), 'openapiSnmpSysContactGet', name_string.cast())
723 
724  def test_snmp_local_engine_id_get(self) :
725  """Get the SNMP engine id on the local device."""
726 
727  max_len = 32+1
728 
729  try:
730  engine_id_string = open_.getStringBuffer(max_len)
731  except OpENBufferSizeError:
732  print("test_snmp_local_engine_id_get: getStringBuffer raised OpENBufferSizeError")
733  return
734  except TypeError:
735  print("test_snmp_local_engine_id_get: getStringBuffer raised TypeError")
736  return
737  engine_id_buff = OpEN.open_buffdesc()
738  engine_id_buff.pstart = engine_id_string
739  engine_id_buff.size = max_len
740  result = OpEN.openapiSnmpLocalEngineIdGet(self.m_client, engine_id_buff)
741  print_bad_result(result, 'openapiSnmpLocalEngineIdGet')
742 
743  if result == OpEN.OPEN_E_NONE:
744  engine_id = ''
745  if version_info >= (3,0,0):
746  for idx in range(0, engine_id_buff.size):
747  engine_id += engine_id_string[idx].encode('hex')
748  else:
749  for idx in xrange(0, engine_id_buff.size):
750  engine_id += engine_id_string[idx].encode('hex')
751 
752  print_sanity_results(result, (1 == 1), 'openapiSnmpLocalEngineIdGet', engine_id)
753 
754  def test_snmp_user_get(self, user_name) :
755  """Get the specified SNMP user"""
756 
757  found = False
758  max_user_len = 30+1
759  max_engine_id_len = 32+1
760 
761  auth_p = OpEN.new_OPEN_USM_USER_AUTH_PROTOCOL_tp()
762  priv_p = OpEN.new_OPEN_USM_USER_PRIV_PROTOCOL_tp()
763 
764  try:
765  user_string = open_.getStringBuffer(max_user_len)
766  except OpENBufferSizeError:
767  print("test_snmp_user_get: getStringBuffer raised OpENBufferSizeError")
768  return
769  except TypeError:
770  print("test_snmp_user_get: getStringBuffer raised TypeError")
771  return
772  user_buff = OpEN.open_buffdesc()
773  user_buff.pstart = user_string
774  user_buff.size = max_user_len
775 
776  try:
777  group_string = open_.getStringBuffer(max_user_len)
778  except OpENBufferSizeError:
779  print("test_snmp_user_get: getStringBuffer raised OpENBufferSizeError")
780  return
781  except TypeError:
782  print("test_snmp_user_get: getStringBuffer raised TypeError")
783  return
784  group_buff = OpEN.open_buffdesc()
785  group_buff.pstart = group_string
786  group_buff.size = max_user_len
787 
788  try:
789  engine_id_string = open_.getStringBuffer(max_engine_id_len)
790  except OpENBufferSizeError:
791  print("test_snmp_user_get: getStringBuffer raised OpENBufferSizeError")
792  return
793  except TypeError:
794  print("test_snmp_user_get: getStringBuffer raised TypeError")
795  return
796  engine_id_buff = OpEN.open_buffdesc()
797  engine_id_buff.pstart = engine_id_string
798  engine_id_buff.size = max_engine_id_len
799 
800  try:
801  next_user_string = open_.getStringBuffer(max_user_len)
802  except OpENBufferSizeError:
803  print("test_snmp_user_get: getStringBuffer raised OpENBufferSizeError")
804  return
805  except TypeError:
806  print("test_snmp_user_get: getStringBuffer raised TypeError")
807  return
808  next_user_buff = OpEN.open_buffdesc()
809  next_user_buff.pstart = next_user_string
810  next_user_buff.size = max_user_len
811 
812  try:
813  next_engine_id_string = open_.getStringBuffer(max_engine_id_len)
814  except OpENBufferSizeError:
815  print("test_snmp_user_get: getStringBuffer raised OpENBufferSizeError")
816  return
817  except TypeError:
818  print("test_snmp_user_get: getStringBuffer raised TypeError")
819  return
820  next_engine_id_buff = OpEN.open_buffdesc()
821  next_engine_id_buff.pstart = next_engine_id_string
822  next_engine_id_buff.size = max_engine_id_len
823 
824  while OpEN.openapiSnmpUserGetNext(self.m_client,
825  user_buff,
826  engine_id_buff,
827  group_buff,
828  auth_p,
829  priv_p,
830  next_user_buff,
831  next_engine_id_buff) == OpEN.OPEN_E_NONE:
832 
833  if user_name == next_user_string.cast():
834  found = True
835  break
836 
837  user_buff.pstart = next_user_buff.pstart
838  user_buff.size = next_user_buff.size
839  engine_id_buff.pstart = next_engine_id_buff.pstart
840  engine_id_buff.size = next_engine_id_buff.size
841  next_user_buff.size = max_user_len
842  next_engine_id_buff.size = max_engine_id_len
843 
844  print_sanity_results(OpEN.OPEN_E_NONE, found, 'openapiSnmpUserGetNext', user_name)
845 
846  if found and verbose:
847  print(" User name : ", next_user_string.cast())
848  print(" Group name : ", group_string.cast())
849  print(" Authentication : ", OpEN.OPEN_USM_USER_AUTH_PROTOCOL_tp_value(auth_p))
850  print(" Privilege : ", OpEN.OPEN_USM_USER_PRIV_PROTOCOL_tp_value(priv_p))
851 
852  engine_id = ''
853  if version_info >= (3,0,0):
854  for idx in range(0, next_engine_id_buff.size):
855  engine_id += next_engine_id_string[idx].encode('hex')
856  else:
857  for idx in xrange(0, next_engine_id_buff.size):
858  engine_id += next_engine_id_string[idx].encode('hex')
859  print(" Engine Id : ", engine_id)
860 
861  OpEN.delete_OPEN_USM_USER_AUTH_PROTOCOL_tp(auth_p)
862  OpEN.delete_OPEN_USM_USER_PRIV_PROTOCOL_tp(priv_p)
863 
864  def test_snmp_group_get(self, group_name, security_model, security_level, context_name) :
865  """Get the specified SNMP group"""
866 
867  found = False
868  max_user_len = 30+1
869  max_context_len = 30+1
870  max_view_len = 30+1
871 
872  model_p = OpEN.new_OPEN_SNMP_SECURITY_MODEL_tp()
873  level_p = OpEN.new_OPEN_SNMP_SECURITY_LEVEL_tp()
874 
875  try:
876  group_string = open_.getStringBuffer(max_user_len)
877  except OpENBufferSizeError:
878  print("test_snmp_group_get: getStringBuffer raised OpENBufferSizeError")
879  return
880  except TypeError:
881  print("test_snmp_group_get: getStringBuffer raised TypeError")
882  return
883  group_buff = OpEN.open_buffdesc()
884  group_buff.pstart = group_string
885  group_buff.size = max_user_len
886 
887  try:
888  read_string = open_.getStringBuffer(max_view_len)
889  except OpENBufferSizeError:
890  print("test_snmp_group_get: getStringBuffer raised OpENBufferSizeError")
891  return
892  except TypeError:
893  print("test_snmp_group_get: getStringBuffer raised TypeError")
894  return
895  read_buff = OpEN.open_buffdesc()
896  read_buff.pstart = read_string
897  read_buff.size = max_view_len
898 
899  try:
900  write_string = open_.getStringBuffer(max_view_len)
901  except OpENBufferSizeError:
902  print("test_snmp_group_get: getStringBuffer raised OpENBufferSizeError")
903  return
904  except TypeError:
905  print("test_snmp_group_get: getStringBuffer raised TypeError")
906  return
907  write_buff = OpEN.open_buffdesc()
908  write_buff.pstart = write_string
909  write_buff.size = max_view_len
910 
911  try:
912  notify_string = open_.getStringBuffer(max_view_len)
913  except OpENBufferSizeError:
914  print("test_snmp_group_get: getStringBuffer raised OpENBufferSizeError")
915  return
916  except TypeError:
917  print("test_snmp_group_get: getStringBuffer raised TypeError")
918  return
919  notify_buff = OpEN.open_buffdesc()
920  notify_buff.pstart = notify_string
921  notify_buff.size = max_view_len
922 
923  try:
924  context_string = open_.getStringBuffer(max_user_len)
925  except OpENBufferSizeError:
926  print("test_snmp_group_get: getStringBuffer raised OpENBufferSizeError")
927  return
928  except TypeError:
929  print("test_snmp_group_get: getStringBuffer raised TypeError")
930  return
931  context_buff = OpEN.open_buffdesc()
932  context_buff.pstart = context_string
933  context_buff.size = max_context_len
934 
935  try:
936  next_group_string = open_.getStringBuffer(max_user_len)
937  except OpENBufferSizeError:
938  print("test_snmp_group_get: getStringBuffer raised OpENBufferSizeError")
939  return
940  except TypeError:
941  print("test_snmp_group_get: getStringBuffer raised TypeError")
942  return
943  next_group_buff = OpEN.open_buffdesc()
944  next_group_buff.pstart = next_group_string
945  next_group_buff.size = max_user_len
946 
947  try:
948  next_context_string = open_.getStringBuffer(max_user_len)
949  except OpENBufferSizeError:
950  print("test_snmp_group_get: getStringBuffer raised OpENBufferSizeError")
951  return
952  except TypeError:
953  print("test_snmp_group_get: getStringBuffer raised TypeError")
954  return
955  next_context_buff = OpEN.open_buffdesc()
956  next_context_buff.pstart = next_context_string
957  next_context_buff.size = max_user_len
958 
959  while OpEN.openapiSnmpGroupGetNext(self.m_client,
960  group_buff,
961  model_p,
962  level_p,
963  context_buff,
964  read_buff,
965  write_buff,
966  notify_buff,
967  next_group_buff,
968  next_context_buff) == OpEN.OPEN_E_NONE:
969 
970  if (group_name == next_group_string.cast() and
971  context_name == next_context_string.cast()):
972  found = True
973  break
974 
975  try:
976  read_string = open_.getStringBuffer(max_view_len)
977  except OpENBufferSizeError:
978  print("test_snmp_group_get: getStringBuffer raised OpENBufferSizeError")
979  return
980  except TypeError:
981  print("test_snmp_group_get: getStringBuffer raised TypeError")
982  return
983  read_buff.pstart = read_string
984  read_buff.size = max_view_len
985  try:
986  write_string = open_.getStringBuffer(max_view_len)
987  except OpENBufferSizeError:
988  print("test_snmp_group_get: getStringBuffer raised OpENBufferSizeError")
989  return
990  except TypeError:
991  print("test_snmp_group_get: getStringBuffer raised TypeError")
992  return
993  write_buff.pstart = write_string
994  write_buff.size = max_view_len
995  try:
996  notify_string = open_.getStringBuffer(max_view_len)
997  except OpENBufferSizeError:
998  print("test_snmp_group_get: getStringBuffer raised OpENBufferSizeError")
999  return
1000  except TypeError:
1001  print("test_snmp_group_get: getStringBuffer raised TypeError")
1002  return
1003  notify_buff.pstart = notify_string
1004  notify_buff.size = max_view_len
1005 
1006  group_buff.pstart = next_group_buff.pstart
1007  group_buff.size = next_group_buff.size
1008  context_buff.pstart = next_context_buff.pstart
1009  context_buff.size = next_context_buff.size
1010  next_group_buff.size = max_user_len
1011  next_context_buff.size = max_context_len
1012 
1013  print_sanity_results(OpEN.OPEN_E_NONE, found, 'openapiSnmpGroupGetNext', group_name)
1014 
1015  if found and verbose:
1016  print(" Group name : ", next_group_string.cast())
1017  print(" Security model : ", OpEN.OPEN_SNMP_SECURITY_MODEL_tp_value(model_p))
1018  print(" Security level : ", OpEN.OPEN_SNMP_SECURITY_LEVEL_tp_value(level_p))
1019  print(" Context name : ", next_context_string.cast())
1020  print(" Read view : ", read_string.cast())
1021  print(" Write view : ", write_string.cast())
1022  print(" Notify view : ", notify_string.cast())
1023 
1024  OpEN.delete_OPEN_SNMP_SECURITY_MODEL_tp(model_p)
1025  OpEN.delete_OPEN_SNMP_SECURITY_LEVEL_tp(level_p)
1026 
1027  def test_snmp_view_get(self, view_name, oid_tree) :
1028  """Get the specified SNMP view name
1029 
1030  Iterate through the existing SNMP views until a match for view and oid is found.
1031  If found, display the associated view parameters."""
1032 
1033  found = False
1034  max_oid_len = 128+1
1035  max_view_len = 30+1
1036 
1037  view_p = OpEN.new_OPEN_SNMP_VIEW_TYPE_tp()
1038 
1039  try:
1040  view_string = open_.getStringBuffer(len(view_name) + 1,view_name)
1041  except OpENBufferSizeError:
1042  print("test_snmp_view_get: getStringBuffer raised OpENBufferSizeError")
1043  return
1044  except TypeError:
1045  print("test_snmp_view_get: getStringBuffer raised TypeError")
1046  return
1047  view_buff = OpEN.open_buffdesc()
1048  view_buff.pstart = view_string
1049  view_buff.size = len(view_name) + 1
1050 
1051  try:
1052  oid_string = open_.getStringBuffer(len(oid_tree) + 1,oid_tree)
1053  except OpENBufferSizeError:
1054  print("test_snmp_view_get: getStringBuffer raised OpENBufferSizeError")
1055  return
1056  except TypeError:
1057  print("test_snmp_view_get: getStringBuffer raised TypeError")
1058  return
1059  oid_buff = OpEN.open_buffdesc()
1060  oid_buff.pstart = oid_string
1061  oid_buff.size = len(oid_tree) + 1
1062 
1063  try:
1064  next_view_string = open_.getStringBuffer(max_view_len)
1065  except OpENBufferSizeError:
1066  print("test_snmp_view_get: getStringBuffer raised OpENBufferSizeError")
1067  return
1068  except TypeError:
1069  print("test_snmp_view_get: getStringBuffer raised TypeError")
1070  return
1071  next_view_buff = OpEN.open_buffdesc()
1072  next_view_buff.pstart = next_view_string
1073  next_view_buff.size = max_view_len
1074 
1075  try:
1076  next_oid_string = open_.getStringBuffer(max_oid_len)
1077  except OpENBufferSizeError:
1078  print("test_snmp_view_get: getStringBuffer raised OpENBufferSizeError")
1079  return
1080  except TypeError:
1081  print("test_snmp_view_get: getStringBuffer raised TypeError")
1082  return
1083  next_oid_buff = OpEN.open_buffdesc()
1084  next_oid_buff.pstart = next_oid_string
1085  next_oid_buff.size = max_oid_len
1086 
1087  try:
1088  oid_string_string = open_.getStringBuffer(max_oid_len)
1089  except OpENBufferSizeError:
1090  print("test_snmp_view_get: getStringBuffer raised OpENBufferSizeError")
1091  return
1092  except TypeError:
1093  print("test_snmp_view_get: getStringBuffer raised TypeError")
1094  return
1095  oid_string_buff = OpEN.open_buffdesc()
1096  oid_string_buff.pstart = oid_string_string
1097  oid_string_buff.size = max_oid_len
1098 
1099  try:
1100  oid_val_string = open_.getStringBuffer(max_oid_len)
1101  except OpENBufferSizeError:
1102  print("test_snmp_view_get: getStringBuffer raised OpENBufferSizeError")
1103  return
1104  except TypeError:
1105  print("test_snmp_view_get: getStringBuffer raised TypeError")
1106  return
1107  oid_val_buff = OpEN.open_buffdesc()
1108  oid_val_buff.pstart = oid_val_string
1109  oid_val_buff.size = max_oid_len
1110 
1111  OpEN.openapiSnmpTreeFamilyOidStringGet(self.m_client, view_buff, oid_buff, OpEN.OPEN_SNMP_VIEW_TREE, oid_string_buff)
1112  OpEN.openapiSnmpTreeFamilyOidValGet(self.m_client, view_buff, oid_buff, OpEN.OPEN_SNMP_VIEW_TREE, oid_val_buff)
1113 
1114  try:
1115  view_string = open_.getStringBuffer(max_view_len)
1116  except OpENBufferSizeError:
1117  print("test_snmp_view_get: getStringBuffer raised OpENBufferSizeError")
1118  return
1119  except TypeError:
1120  print("test_snmp_view_get: getStringBuffer raised TypeError")
1121  return
1122  view_buff = OpEN.open_buffdesc()
1123  view_buff.pstart = view_string
1124  view_buff.size = max_view_len
1125 
1126  try:
1127  oid_string = open_.getStringBuffer(max_oid_len)
1128  except OpENBufferSizeError:
1129  print("test_snmp_view_get: getStringBuffer raised OpENBufferSizeError")
1130  return
1131  except TypeError:
1132  print("test_snmp_view_get: getStringBuffer raised TypeError")
1133  return
1134  oid_buff = OpEN.open_buffdesc()
1135  oid_buff.pstart = oid_string
1136  oid_buff.size = max_oid_len
1137 
1138  while OpEN.openapiSnmpViewGetNext(self.m_client,
1139  view_buff,
1140  oid_buff,
1141  view_p,
1142  next_view_buff,
1143  next_oid_buff) == OpEN.OPEN_E_NONE:
1144 
1145  if (view_name == next_view_string.cast() and
1146  oid_val_string.cast() == next_oid_string.cast()):
1147  found = True
1148  break
1149 
1150  view_buff.pstart = next_view_buff.pstart
1151  view_buff.size = next_view_buff.size
1152  oid_buff.pstart = next_oid_buff.pstart
1153  oid_buff.size = next_oid_buff.size
1154  next_view_buff.size = max_view_len
1155  next_oid_buff.size = max_oid_len
1156 
1157  print_sanity_results(OpEN.OPEN_E_NONE, found, 'openapiSnmpViewGetNext', view_name)
1158 
1159  if found and verbose:
1160  print(" View name : ", next_view_string.cast())
1161  print(" OID Tree : ", next_oid_string.cast())
1162  print(" OID String : ", oid_string_string.cast())
1163  print(" View Type : ", OpEN.OPEN_SNMP_VIEW_TYPE_tp_value(view_p))
1164 
1165  OpEN.delete_OPEN_SNMP_VIEW_TYPE_tp(view_p)
1166 
1167  def test_snmp_filter_get(self, filter_name, oid_tree) :
1168  """Get the specified SNMP filter name
1169 
1170  Iterate through the existing SNMP views until a match for view and oid is found.
1171  If found, display the associated view parameters."""
1172 
1173  found = False
1174  max_oid_len = 128+1
1175  max_filter_len = 30+1
1176 
1177  filter_p = OpEN.new_OPEN_SNMP_NOTIFY_FILTER_TYPE_tp()
1178 
1179  try:
1180  filter_string = open_.getStringBuffer(len(filter_name) + 1,filter_name)
1181  except OpENBufferSizeError:
1182  print("test_snmp_filter_get: getStringBuffer raised OpENBufferSizeError")
1183  return
1184  except TypeError:
1185  print("test_snmp_filter_get: getStringBuffer raised TypeError")
1186  return
1187  filter_buff = OpEN.open_buffdesc()
1188  filter_buff.pstart = filter_string
1189  filter_buff.size = len(filter_name) + 1
1190 
1191  try:
1192  oid_string = open_.getStringBuffer(len(oid_tree) + 1,oid_tree)
1193  except OpENBufferSizeError:
1194  print("test_snmp_filter_get: getStringBuffer raised OpENBufferSizeError")
1195  return
1196  except TypeError:
1197  print("test_snmp_filter_get: getStringBuffer raised TypeError")
1198  return
1199  oid_buff = OpEN.open_buffdesc()
1200  oid_buff.pstart = oid_string
1201  oid_buff.size = len(oid_tree)
1202 
1203  try:
1204  next_filter_string = open_.getStringBuffer(max_filter_len)
1205  except OpENBufferSizeError:
1206  print("test_snmp_filter_get: getStringBuffer raised OpENBufferSizeError")
1207  return
1208  except TypeError:
1209  print("test_snmp_filter_get: getStringBuffer raised TypeError")
1210  return
1211  next_filter_buff = OpEN.open_buffdesc()
1212  next_filter_buff.pstart = next_filter_string
1213  next_filter_buff.size = max_filter_len
1214 
1215  try:
1216  next_oid_string = open_.getStringBuffer(max_oid_len)
1217  except OpENBufferSizeError:
1218  print("test_snmp_filter_get: getStringBuffer raised OpENBufferSizeError")
1219  return
1220  except TypeError:
1221  print("test_snmp_filter_get: getStringBuffer raised TypeError")
1222  return
1223  next_oid_buff = OpEN.open_buffdesc()
1224  next_oid_buff.pstart = next_oid_string
1225  next_oid_buff.size = max_oid_len
1226 
1227  try:
1228  oid_string_string = open_.getStringBuffer(max_oid_len)
1229  except OpENBufferSizeError:
1230  print("test_snmp_filter_get: getStringBuffer raised OpENBufferSizeError")
1231  return
1232  except TypeError:
1233  print("test_snmp_filter_get: getStringBuffer raised TypeError")
1234  return
1235  oid_string_buff = OpEN.open_buffdesc()
1236  oid_string_buff.pstart = oid_string_string
1237  oid_string_buff.size = max_oid_len
1238 
1239  try:
1240  oid_val_string = open_.getStringBuffer(max_oid_len)
1241  except OpENBufferSizeError:
1242  print("test_snmp_filter_get: getStringBuffer raised OpENBufferSizeError")
1243  return
1244  except TypeError:
1245  print("test_snmp_filter_get: getStringBuffer raised TypeError")
1246  return
1247  oid_val_buff = OpEN.open_buffdesc()
1248  oid_val_buff.pstart = oid_val_string
1249  oid_val_buff.size = max_oid_len
1250 
1251  OpEN.openapiSnmpTreeFamilyOidStringGet(self.m_client, filter_buff, oid_buff, OpEN.OPEN_SNMP_FILTER_TREE, oid_string_buff)
1252  OpEN.openapiSnmpTreeFamilyOidValGet(self.m_client, filter_buff, oid_buff, OpEN.OPEN_SNMP_FILTER_TREE, oid_val_buff)
1253 
1254  try:
1255  filter_string = open_.getStringBuffer(max_filter_len)
1256  except OpENBufferSizeError:
1257  print("test_snmp_filter_get: getStringBuffer raised OpENBufferSizeError")
1258  return
1259  except TypeError:
1260  print("test_snmp_filter_get: getStringBuffer raised TypeError")
1261  return
1262  filter_buff = OpEN.open_buffdesc()
1263  filter_buff.pstart = filter_string
1264  filter_buff.size = max_filter_len
1265 
1266  try:
1267  oid_string = open_.getStringBuffer(max_oid_len)
1268  except OpENBufferSizeError:
1269  print("test_snmp_filter_get: getStringBuffer raised OpENBufferSizeError")
1270  return
1271  except TypeError:
1272  print("test_snmp_filter_get: getStringBuffer raised TypeError")
1273  return
1274  oid_buff = OpEN.open_buffdesc()
1275  oid_buff.pstart = oid_string
1276  oid_buff.size = max_oid_len
1277 
1278  while OpEN.openapiSnmpFilterGetNext(self.m_client,
1279  filter_buff,
1280  oid_buff,
1281  filter_p,
1282  next_filter_buff,
1283  next_oid_buff) == OpEN.OPEN_E_NONE:
1284 
1285  if (filter_name == next_filter_string.cast() and
1286  oid_val_string.cast() == next_oid_string.cast()):
1287  found = True
1288  break
1289 
1290  filter_buff.pstart = next_filter_buff.pstart
1291  filter_buff.size = next_filter_buff.size
1292  oid_buff.pstart = next_oid_buff.pstart
1293  oid_buff.size = next_oid_buff.size
1294  next_filter_buff.size = max_filter_len
1295  next_oid_buff.size = max_oid_len
1296 
1297  print_sanity_results(OpEN.OPEN_E_NONE, found, 'openapiSnmpFilterGetNext', filter_name)
1298 
1299  if found and verbose:
1300  print(" Filter name : ", next_filter_string.cast())
1301  print(" OID Tree : ", next_oid_string.cast())
1302  print(" OID String : ", oid_string_string.cast())
1303  print(" View Type : ", OpEN.OPEN_SNMP_NOTIFY_FILTER_TYPE_tp_value(filter_p))
1304 
1305  OpEN.delete_OPEN_SNMP_NOTIFY_FILTER_TYPE_tp(filter_p)
1306 
1307  def test_snmp_host_get(self, host) :
1308  """Get the specified SNMP host name
1309 
1310  Iterate through the existing SNMP hosts until a match for
1311  host is found. If found, display the associated host parameters."""
1312 
1313  found = False
1314  max_host_len = 158+1
1315  max_filter_len = 30+1
1316  max_security_len = 30+1
1317 
1318  port_p = OpEN.new_uint32_tp()
1319  model_p = OpEN.new_OPEN_SNMP_SECURITY_MODEL_tp()
1320  level_p = OpEN.new_OPEN_SNMP_SECURITY_LEVEL_tp()
1321  type_p = OpEN.new_OPEN_SNMP_NOTIFY_TYPE_tp()
1322  timeout_p = OpEN.new_uint32_tp()
1323  retries_p = OpEN.new_uint32_tp()
1324 
1325  try:
1326  host_string = open_.getStringBuffer(max_host_len)
1327  except OpENBufferSizeError:
1328  print("test_snmp_host_get: getStringBuffer raised OpENBufferSizeError")
1329  return
1330  except TypeError:
1331  print("test_snmp_host_get: getStringBuffer raised TypeError")
1332  return
1333  host_buff = OpEN.open_buffdesc()
1334  host_buff.pstart = host_string
1335  host_buff.size = max_host_len
1336 
1337  try:
1338  security_string = open_.getStringBuffer(max_security_len)
1339  except OpENBufferSizeError:
1340  print("test_snmp_host_get: getStringBuffer raised OpENBufferSizeError")
1341  return
1342  except TypeError:
1343  print("test_snmp_host_get: getStringBuffer raised TypeError")
1344  return
1345  security_buff = OpEN.open_buffdesc()
1346  security_buff.pstart = security_string
1347  security_buff.size = max_security_len
1348 
1349  try:
1350  filter_string = open_.getStringBuffer(max_filter_len)
1351  except OpENBufferSizeError:
1352  print("test_snmp_host_get: getStringBuffer raised OpENBufferSizeError")
1353  return
1354  except TypeError:
1355  print("test_snmp_host_get: getStringBuffer raised TypeError")
1356  return
1357  filter_buff = OpEN.open_buffdesc()
1358  filter_buff.pstart = filter_string
1359  filter_buff.size = max_filter_len
1360 
1361  try:
1362  next_host_string = open_.getStringBuffer(max_host_len)
1363  except OpENBufferSizeError:
1364  print("test_snmp_host_get: getStringBuffer raised OpENBufferSizeError")
1365  return
1366  except TypeError:
1367  print("test_snmp_host_get: getStringBuffer raised TypeError")
1368  return
1369  next_host_buff = OpEN.open_buffdesc()
1370  next_host_buff.pstart = next_host_string
1371  next_host_buff.size = max_host_len
1372 
1373  while OpEN.openapiSnmpHostGetNext(self.m_client,
1374  host_buff,
1375  port_p,
1376  security_buff,
1377  model_p,
1378  level_p,
1379  type_p,
1380  timeout_p,
1381  retries_p,
1382  filter_buff,
1383  next_host_buff) == OpEN.OPEN_E_NONE:
1384 
1385  if host == next_host_string.cast():
1386  found = True
1387  break
1388 
1389  try:
1390  security_string = open_.getStringBuffer(max_security_len)
1391  except OpENBufferSizeError:
1392  print("test_snmp_host_get: getStringBuffer raised OpENBufferSizeError")
1393  return
1394  except TypeError:
1395  print("test_snmp_host_get: getStringBuffer raised TypeError")
1396  return
1397  security_buff = OpEN.open_buffdesc()
1398  security_buff.pstart = security_string
1399  security_buff.size = max_security_len
1400 
1401  try:
1402  filter_string = open_.getStringBuffer(max_filter_len)
1403  except OpENBufferSizeError:
1404  print("test_snmp_host_get: getStringBuffer raised OpENBufferSizeError")
1405  return
1406  except TypeError:
1407  print("test_snmp_host_get: getStringBuffer raised TypeError")
1408  return
1409  filter_buff = OpEN.open_buffdesc()
1410  filter_buff.pstart = filter_string
1411  filter_buff.size = max_filter_len
1412 
1413  host_buff.pstart = next_host_buff.pstart
1414  host_buff.size = next_host_buff.size
1415  next_host_buff.size = max_host_len
1416 
1417  print_sanity_results(OpEN.OPEN_E_NONE, found, 'openapiSnmpHostGetNext', host)
1418 
1419  if found and verbose:
1420  print(" Address port : %s %d" % (next_host_string.cast(), OpEN.uint32_tp_value(port_p)))
1421  print(" Security name : ", security_string.cast())
1422  print(" Security model : ", OpEN.OPEN_SNMP_SECURITY_MODEL_tp_value(model_p))
1423  print(" Security level : ", OpEN.OPEN_SNMP_SECURITY_LEVEL_tp_value(level_p))
1424  print(" Notify type : ", OpEN.OPEN_SNMP_NOTIFY_TYPE_tp_value(type_p))
1425  print(" Timeout : ", OpEN.uint32_tp_value(timeout_p))
1426  print(" Retries : ", OpEN.uint32_tp_value(retries_p))
1427  print(" Filter name : ", filter_string.cast())
1428 
1429  OpEN.delete_uint32_tp(port_p)
1430  OpEN.delete_OPEN_SNMP_SECURITY_MODEL_tp(model_p)
1431  OpEN.delete_OPEN_SNMP_SECURITY_LEVEL_tp(level_p)
1432  OpEN.delete_OPEN_SNMP_NOTIFY_TYPE_tp(type_p)
1433  OpEN.delete_uint32_tp(timeout_p)
1434  OpEN.delete_uint32_tp(retries_p)
1435 
1436  def test_snmp_community_get(self, community_name) :
1437  """Get the specified SNMP community name
1438 
1439  Iterate through the existing SNMP hosts until a match for
1440  host is found. If found, display the associated host parameters."""
1441 
1442  max_community_len = 20+1
1443  max_view_len = 30+1
1444  access_p = OpEN.new_OPEN_SNMP_COMMUNITY_ACCESS_TYPE_tp()
1445  addr = OpEN.open_inet_addr_t()
1446 
1447  try:
1448  community_string = open_.getStringBuffer(max_community_len)
1449  except OpENBufferSizeError:
1450  print("test_snmp_community_get: getStringBuffer raised OpENBufferSizeError")
1451  return
1452  except TypeError:
1453  print("test_snmp_community_get: getStringBuffer raised TypeError")
1454  return
1455  community_buff = OpEN.open_buffdesc()
1456  community_buff.pstart = community_string
1457  community_buff.size = max_community_len
1458 
1459  try:
1460  view_string = open_.getStringBuffer(max_view_len)
1461  except OpENBufferSizeError:
1462  print("test_snmp_community_get: getStringBuffer raised OpENBufferSizeError")
1463  return
1464  except TypeError:
1465  print("test_snmp_community_get: getStringBuffer raised TypeError")
1466  return
1467  view_buff = OpEN.open_buffdesc()
1468  view_buff.pstart = view_string
1469  view_buff.size = max_view_len
1470 
1471  try:
1472  next_community_string = open_.getStringBuffer(max_community_len)
1473  except OpENBufferSizeError:
1474  print("test_snmp_community_get: getStringBuffer raised OpENBufferSizeError")
1475  return
1476  except TypeError:
1477  print("test_snmp_community_get: getStringBuffer raised TypeError")
1478  return
1479  next_community_buff = OpEN.open_buffdesc()
1480  next_community_buff.pstart = next_community_string
1481  next_community_buff.size = max_community_len
1482 
1483  while OpEN.openapiSnmpCommunityGetNext(self.m_client,
1484  community_buff,
1485  access_p,
1486  view_buff,
1487  addr,
1488  next_community_buff) == OpEN.OPEN_E_NONE:
1489 
1490  if community_name == next_community_string.cast():
1491  found = True
1492  break
1493 
1494  try:
1495  view_string = open_.getStringBuffer(max_view_len)
1496  except OpENBufferSizeError:
1497  print("test_snmp_community_get: getStringBuffer raised OpENBufferSizeError")
1498  return
1499  except TypeError:
1500  print("test_snmp_community_get: getStringBuffer raised TypeError")
1501  return
1502  view_buff = OpEN.open_buffdesc()
1503  view_buff.pstart = view_string
1504  view_buff.size = max_view_len
1505 
1506  community_buff.pstart = next_community_buff.pstart
1507  community_buff.size = next_community_buff.size
1508  next_community_buff.size = max_community_len
1509 
1510  print_sanity_results(OpEN.OPEN_E_NONE, found, 'openapiSnmpCommunityGetNext', community_name)
1511 
1512  if found and verbose:
1513  print(" Community :", next_community_string.cast())
1514  print(" Access Type :", OpEN.OPEN_SNMP_COMMUNITY_ACCESS_TYPE_tp_value(access_p))
1515  print(" View Name :", view_string.cast())
1516  print(" IP Address :", int_to_ip(addr.addr.ipv4))
1517 
1518  OpEN.delete_OPEN_SNMP_COMMUNITY_ACCESS_TYPE_tp(access_p)
1519 
1520  def test_snmp_trap_flag_get(self, flag_bits, mode) :
1521  """Retrieve the trap mode for a single trap."""
1522 
1523  mode_p = OpEN.new_bool_tp()
1524 
1525  result = OpEN.openapiSnmpTrapFlagGet(self.m_client, flag_bits, mode_p)
1526  print_bad_result(result, 'openapiSnmpTrapFlagGet')
1527  print_sanity_results(result, mode == OpEN.bool_tp_value(mode_p), 'openapiSnmpTrapFlagGet', str(flag_bits))
1528  OpEN.delete_bool_tp(mode_p)
1529 
1530  def test_snmp_local_engine_id_delete(self) :
1531  """Delete the SNMP engine id on the local device.
1532 
1533  The engine id is actually reset to the default id which is
1534  automatically generated based on the local MAC address."""
1535 
1536  result = OpEN.openapiSnmpLocalEngineIdDelete(self.m_client)
1537  print_bad_result(result, 'openapiSnmpLocalEngineIdDelete')
1538  print_sanity_results(OpEN.OPEN_E_NONE, True, 'openapiSnmpLocalEngineIdDelete', '')
1539 
1540  def test_snmp_view_delete(self, view_name, oid_tree) :
1541  """Delete an existing SNMP view."""
1542 
1543  try:
1544  view_string = open_.getStringBuffer(len(view_name) + 1,view_name)
1545  except OpENBufferSizeError:
1546  print("test_snmp_view_delete: getStringBuffer raised OpENBufferSizeError")
1547  return
1548  except TypeError:
1549  print("test_snmp_view_delete: getStringBuffer raised TypeError")
1550  return
1551  view_buff = OpEN.open_buffdesc()
1552  view_buff.pstart = view_string
1553  view_buff.size = len(view_name) + 1
1554 
1555  try:
1556  oid_string = open_.getStringBuffer(len(oid_tree) + 1,oid_tree)
1557  except OpENBufferSizeError:
1558  print("test_snmp_view_delete: getStringBuffer raised OpENBufferSizeError")
1559  return
1560  except TypeError:
1561  print("test_snmp_view_delete: getStringBuffer raised TypeError")
1562  return
1563  oid_buff = OpEN.open_buffdesc()
1564  oid_buff.pstart = oid_string
1565  oid_buff.size = len(oid_tree)
1566 
1567  result = OpEN.openapiSnmpViewDelete(self.m_client, view_buff, oid_buff)
1568  print_bad_result(result, 'openapiSnmpViewDelete')
1569  print_sanity_results(result, True, 'openapiSnmpViewDelete', view_name)
1570 
1571  def test_snmp_filter_delete(self, filter_name, oid_tree) :
1572  """Delete an existing SNMP filter."""
1573 
1574  filter_string = open_.getStringBuffer(len(filter_name) + 1,filter_name)
1575  filter_buff = OpEN.open_buffdesc()
1576  filter_buff.pstart = filter_string
1577  filter_buff.size = len(filter_name) + 1
1578 
1579  try:
1580  oid_string = open_.getStringBuffer(len(oid_tree) + 1,oid_tree)
1581  except OpENBufferSizeError:
1582  print("test_snmp_filter_delete: getStringBuffer raised OpENBufferSizeError")
1583  return
1584  except TypeError:
1585  print("test_snmp_filter_delete: getStringBuffer raised TypeError")
1586  return
1587  oid_buff = OpEN.open_buffdesc()
1588  oid_buff.pstart = oid_string
1589  oid_buff.size = len(oid_tree) + 1
1590 
1591  result = OpEN.openapiSnmpFilterDelete(self.m_client, filter_buff, oid_buff)
1592  print_bad_result(result, 'openapiSnmpFilterDelete')
1593  print_sanity_results(result, True, 'openapiSnmpFilterDelete', filter_name)
1594 
1595  def test_snmp_host_delete(self, host, notify_type) :
1596  """Delete an existing SNMP host."""
1597 
1598  try:
1599  host_string = open_.getStringBuffer(len(host) + 1, host)
1600  except OpENBufferSizeError:
1601  print("test_snmp_host_delete: getStringBuffer raised OpENBufferSizeError")
1602  return
1603  except TypeError:
1604  print("test_snmp_host_delete: getStringBuffer raised TypeError")
1605  return
1606  host_buff = OpEN.open_buffdesc()
1607  host_buff.pstart = host_string
1608  host_buff.size = len(host) + 1
1609 
1610  result = OpEN.openapiSnmpHostDelete(self.m_client, host_buff, notify_type)
1611  print_bad_result(result, 'openapiSnmpHostDelete')
1612  print_sanity_results(result, True, 'openapiSnmpHostDelete', host)
1613 
1614  def test_snmp_user_delete(self, user_name, engine_id) :
1615  """Delete a SNMP user."""
1616 
1617  try:
1618  user_string = open_.getStringBuffer(len(user_name) + 1, user_name)
1619  except OpENBufferSizeError:
1620  print("test_snmp_user_delete: getStringBuffer raised OpENBufferSizeError")
1621  return
1622  except TypeError:
1623  print("test_snmp_user_delete: getStringBuffer raised TypeError")
1624  return
1625  user_buff = OpEN.open_buffdesc()
1626  user_buff.pstart = user_string
1627  user_buff.size = len(user_name) + 1
1628 
1629  try:
1630  engine_id_string = open_.getStringBuffer(len(engine_id) + 1, engine_id)
1631  except OpENBufferSizeError:
1632  print("test_snmp_user_delete: getStringBuffer raised OpENBufferSizeError")
1633  return
1634  except TypeError:
1635  print("test_snmp_user_delete: getStringBuffer raised TypeError")
1636  return
1637  engine_id_buff = OpEN.open_buffdesc()
1638  engine_id_buff.pstart = engine_id_string
1639  engine_id_buff.size = len(engine_id) + 1
1640 
1641  result = OpEN.openapiSnmpUserDelete(self.m_client, user_buff, engine_id_buff)
1642  print_bad_result(result, 'openapiSnmpUserDelete')
1643  print_sanity_results(result, True, 'openapiSnmpUserDelete', user_name)
1644 
1645  def test_snmp_group_delete(self, group_name, model, level, context_name) :
1646  """Delete a SNMP group."""
1647 
1648  try:
1649  group_string = open_.getStringBuffer(len(group_name) + 1, group_name)
1650  except OpENBufferSizeError:
1651  print("test_snmp_group_delete: getStringBuffer raised OpENBufferSizeError")
1652  return
1653  except TypeError:
1654  print("test_snmp_group_delete: getStringBuffer raised TypeError")
1655  return
1656  group_buff = OpEN.open_buffdesc()
1657  group_buff.pstart = group_string
1658  group_buff.size = len(group_name) + 1
1659 
1660  try:
1661  context_string = open_.getStringBuffer(len(context_name) + 1, context_name)
1662  except OpENBufferSizeError:
1663  print("test_snmp_group_delete: getStringBuffer raised OpENBufferSizeError")
1664  return
1665  except TypeError:
1666  print("test_snmp_group_delete: getStringBuffer raised TypeError")
1667  return
1668  context_buff = OpEN.open_buffdesc()
1669  context_buff.pstart = context_string
1670  context_buff.size = len(context_name) + 1
1671 
1672  result = OpEN.openapiSnmpGroupDelete(self.m_client, group_buff, model, level, context_buff)
1673  print_bad_result(result, 'openapiSnmpGroupDelete')
1674  print_sanity_results(result, True, 'openapiSnmpGroupDelete', group_name)
1675 
1676  def test_snmp_community_delete(self, community_name) :
1677  """Delete an SNMP community."""
1678 
1679  try:
1680  community_string = open_.getStringBuffer(len(community_name) + 1, community_name)
1681  except OpENBufferSizeError:
1682  print("test_snmp_community_delete: getStringBuffer raised OpENBufferSizeError")
1683  return
1684  except TypeError:
1685  print("test_snmp_community_delete: getStringBuffer raised TypeError")
1686  return
1687  community_buff = OpEN.open_buffdesc()
1688  community_buff.pstart = community_string
1689  community_buff.size = len(community_name) + 1
1690 
1691  result = OpEN.openapiSnmpCommunityDelete(self.m_client, community_buff)
1692  print_bad_result(result, 'openapiSnmpCommunityDelete')
1693  print_sanity_results(result, True, 'openapiSnmpCommunityDelete', community_name)
1694 
1695  def test_snmp_trap_source_interface(self, interface_type) :
1696  """Set, then get the source interface which SNMP trap originates.
1697 
1698  For demonstration purposes, this function retrieves the first
1699  interface based on interface type and attempts to set it as the
1700  source interface. If successful, the interface attributes are
1701  retrieved and verified. """
1702 
1703  val_p = OpEN.new_uint32_tp()
1704  intf_p = OpEN.new_uint32_tp()
1705  type_p = OpEN.new_OPEN_INTF_TYPE_tp()
1706  state_p = OpEN.new_OPEN_LINK_STATE_tp()
1707 
1708  msg = 'interface type : ' + get_type(interface_type)
1709 
1710  # retrieve first available interface for demonstration
1711  result = OpEN.openapiIfFirstGet(self.m_client, interface_type, val_p)
1712  if result == OpEN.OPEN_E_FAIL:
1713  result = OpEN.OPEN_E_NOT_FOUND
1714  print_bad_result(result, '%s - %s' % ('openapiIfFirstGet', msg))
1715 
1716  if result == OpEN.OPEN_E_NONE:
1717  intf = OpEN.uint32_tp_value(val_p)
1718  result = OpEN.openapiSnmpTrapSrcIntfSet(self.m_client, intf)
1719  print_bad_result(result, '%s - %s' % ('openapiSnmpTrapSrcIntfSet', msg))
1720 
1721  if result == OpEN.OPEN_E_NONE:
1722  tmp_addr = OpEN.open_inet_addr_t()
1723  result = OpEN.openapiSnmpTrapSrcIntfGet(self.m_client, intf_p, type_p, tmp_addr)
1724  print_bad_result(result, '%s - %s' % ('openapiSnmpTrapSrcIntfGet', msg))
1725 
1726  if result == OpEN.OPEN_E_NONE:
1727  if tmp_addr.family == OpEN.OPEN_AF_INET or tmp_addr.family == OpEN.OPEN_AF_UNIX:
1728  ip_addr = int_to_ip(tmp_addr.addr.ipv4)
1729  else:
1730  result = OpEN.OPEN_E_PARAM
1731  print_bad_result(result, '%s - %s' % ('inet_ntoa', msg))
1732 
1733  if result == OpEN.OPEN_E_NONE:
1734  result = OpEN.openapiIfLinkStateGet(self.m_client, intf, state_p)
1735  print_bad_result(result, '%s - %s' % ('openapiIfLinkStateGet', msg))
1736 
1737  if result == OpEN.OPEN_E_NONE:
1738  print_sanity_results(result, True, 'openapiSnmpTrapSrcIntfSet', msg)
1739  if verbose:
1740  print(" Interface : ", intf)
1741  print(" Type : ", get_type(interface_type))
1742  print(" Address : ", ip_addr)
1743  print(" State : ", get_link(OpEN.OPEN_LINK_STATE_tp_value(state_p)))
1744 
1745  OpEN.delete_uint32_tp(val_p)
1746  OpEN.delete_uint32_tp(intf_p)
1747  OpEN.delete_OPEN_INTF_TYPE_tp(type_p)
1748  OpEN.delete_OPEN_LINK_STATE_tp(state_p)
1749 
1750 def main(argv):
1751  """Demonstrate OpEN usage for SNMP APIs"""
1752 
1753  try:
1754  opts, args = getopt.getopt(argv,"hv")
1755  except getopt.GetoptError:
1756  print("snmp_example.py <-v>")
1757  sys.exit(2)
1758  for opt, arg in opts:
1759  if opt == '-h':
1760  print("snmp_example.py <-v>")
1761  sys.exit()
1762  elif opt == '-v':
1763  global verbose
1764  verbose = True
1765 
1766  ret = open_.connect("snmp_example")
1767  if ret == OpEN.OPEN_E_NONE :
1768  open_.getNetworkOSVersion()
1769  client = open_.get_client()
1770  example = SnmpExample(client)
1771  print("Begin Sanity tests...")
1772  example.test_snmp_sys_name_set('system-name')
1773  example.test_snmp_sys_location_set("system-location")
1774  example.test_snmp_sys_contact_set("system-contact")
1775  example.test_snmp_local_engine_id_set("default")
1776  print("\nCreate SNMP users...")
1777  example.test_snmp_user_create(SNMP_USER_LIST)
1778  print("\nCreate SNMP groups...")
1779  example.test_snmp_group_create(SNMP_GROUP_LIST)
1780  print("\nCreate SNMP views...")
1781  example.test_snmp_view_create(SNMP_VIEW_LIST)
1782  print("\nCreate SNMP filters...")
1783  example.test_snmp_filter_create(SNMP_FILTER_LIST)
1784  print("\nCreate SNMP hosts...")
1785  example.test_snmp_host_create(SNMP_HOST_LIST)
1786  print("\nCreate SNMP communities...")
1787  example.test_snmp_community_create(SNMP_COMMUNITY_LIST)
1788  print("\nEnable misc SNMP trap flags...")
1789  example.testSnmpTrapFlagSet([OpEN.OPEN_SNMP_MULTI_USERS_TRAP_FLAG, OpEN.OPEN_SNMP_USER_AUTH_TRAP_FLAG], True)
1790  print("\nRetrieve some SNMP records...")
1791  example.test_snmp_sys_name_get()
1792  example.test_snmp_sys_location_get()
1793  example.test_snmp_sys_contact_get()
1794  example.test_snmp_local_engine_id_get()
1795  example.test_snmp_user_get('admin1')
1796  example.test_snmp_group_get('network-admin', OpEN.OPEN_SNMP_SECURITY_MODEL_USM, OpEN.OPEN_SNMP_SECURITY_LEVEL_AUTHPRIV, 'context-1')
1797  example.test_snmp_view_get('view-1', 'broadcom')
1798  example.test_snmp_view_get('view-2', 'ifEntry.*.1')
1799  example.test_snmp_filter_get('filter-1', 'broadcom')
1800  example.test_snmp_filter_get('filter-2', 'ifEntry.*.1')
1801  example.test_snmp_host_get('2001::')
1802  example.test_snmp_community_get('public-test')
1803  example.test_snmp_community_get('private-test')
1804  example.test_snmp_community_get('delete-private-map')
1805  example.test_snmp_trap_flag_get(OpEN.OPEN_SNMP_MULTI_USERS_TRAP_FLAG, True)
1806  example.test_snmp_trap_flag_get(OpEN.OPEN_SNMP_USER_AUTH_TRAP_FLAG, True)
1807  print("\nDelete some SNMP records...")
1808  example.test_snmp_local_engine_id_delete()
1809  example.test_snmp_view_delete("view-2", "ifEntry.*.1")
1810  example.test_snmp_filter_delete("filter-2", "ifEntry.*.1")
1811  example.test_snmp_host_delete("10.10.10.2", OpEN.OPEN_SNMP_NOTIFY_TYPE_TRAP)
1812  example.test_snmp_user_delete("delete-user", "dddddddddddddddddddddddddddddddd")
1813  example.test_snmp_group_delete("delete-group", OpEN.OPEN_SNMP_SECURITY_MODEL_SNMPV2C, OpEN.OPEN_SNMP_SECURITY_LEVEL_NOAUTHNOPRIV, "context-3")
1814  example.test_snmp_community_delete("delete-community")
1815  example.test_snmp_community_delete("delete-private-map")
1816  print("\nAttempt to set the trap source-interface...")
1817  # Routing must be enabled on first interface
1818  example.test_snmp_trap_source_interface(OpEN.OPEN_INTF_TYPE_PHY)
1819 
1820  open_.terminate()
1821  else :
1822  print("Unable to connect")
1823 
1824 if __name__ == '__main__':
1825  verbose = False
1826  main(sys.argv[1:])
1827 
1828