summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorelie <elie>2005-10-10 14:32:52 +0000
committerelie <elie>2005-10-10 14:32:52 +0000
commit3f9e025afd245d672c994b3367c1b6722607c191 (patch)
tree5fd0600d0ca41fa4484781ef891e04eb199dcbc3
parent59f991280491cee7c7fb9025c66a5f648c0c3962 (diff)
downloadpysnmp-3f9e025afd245d672c994b3367c1b6722607c191.tar.gz
initial revision
-rw-r--r--pysnmp/entity/rfc3413/oneliner/ntforg.py81
1 files changed, 81 insertions, 0 deletions
diff --git a/pysnmp/entity/rfc3413/oneliner/ntforg.py b/pysnmp/entity/rfc3413/oneliner/ntforg.py
new file mode 100644
index 0000000..551f49c
--- /dev/null
+++ b/pysnmp/entity/rfc3413/oneliner/ntforg.py
@@ -0,0 +1,81 @@
+from pysnmp.entity import config
+from pysnmp.entity.rfc3413 import ntforg, context
+from pysnmp.entity.rfc3413.oneliner import cmdgen
+
+# Auth protocol
+usmHMACMD5AuthProtocol = cmdgen.usmHMACMD5AuthProtocol
+usmHMACSHAAuthProtocol = cmdgen.usmHMACSHAAuthProtocol
+usmNoAuthProtocol = cmdgen.usmNoAuthProtocol
+
+# Privacy protocol
+usmDESPrivProtocol = cmdgen.usmDESPrivProtocol
+usmNoPrivProtocol = cmdgen.usmNoPrivProtocol
+
+# Credentials
+CommunityData = cmdgen.CommunityData
+UsmUserData = cmdgen.UsmUserData
+
+# Transport
+UdpTransportTarget = cmdgen.UdpTransportTarget
+
+class AsynNotificationOriginator(cmdgen.AsynCommandGenerator):
+ def __init__(self, snmpEngine=None, snmpContext=None):
+ cmdgen.AsynCommandGenerator.__init__(self, snmpEngine)
+ self.snmpContext = snmpContext
+ self.__knownAuths = {}
+
+ def asyncSendNotification(
+ self, authData, transportTarget, notificationType, varBinds=None
+ ):
+ tagList = 'notify-list'
+ addrName, paramsName = cmdgen.AsynCommandGenerator._configure(
+ self, authData, transportTarget, tagList
+ )
+
+ notifyName = '%s-name' % tagList
+ if not self.__knownAuths.has_key(authData):
+ config.addNotificationTarget(
+ self.snmpEngine,
+ notifyName,
+ paramsName,
+ tagList
+ )
+ config.addContext(
+ self.snmpEngine, ''
+ )
+ config.addTrapUser(
+ self.snmpEngine,
+ authData.securityModel,
+ authData.securityName,
+ authData.securityLevel,
+ (1,3,6)
+ )
+ if self.snmpContext is None:
+ self.snmpContext = context.SnmpContext(self.snmpEngine)
+ self.__knownAuths[authData] = 1
+
+ if varBinds:
+ __varBinds = []
+ for varName, varVal in varBinds:
+ name, oid = mibvar.mibNameToOid(
+ self.mibViewController, varName
+ )
+ __varBinds.append((name + oid, varVal))
+ else:
+ __varBinds = None
+
+ return ntforg.NotificationOriginator(snmpContext).sendNotification(
+ self.snmpEngine, notifyName, notificationType, __varBinds
+ )
+
+class NotificationOriginator(AsynNotificationOriginator):
+ def sendNotification(
+ self, authData, transportTarget, notificationType, varBinds=None
+ ):
+ errorIndication = self.asyncSendNotification(
+ authData, transportTarget, notificationType, varBinds
+ )
+ if errorIndication:
+ return errorIndication
+ self.snmpEngine.transportDispatcher.runDispatcher()
+