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