summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorelie <elie>2005-07-12 09:07:48 +0000
committerelie <elie>2005-07-12 09:07:48 +0000
commitd98cbc287d2504a55c958a64f18ac9d546936eae (patch)
treec918bd6bba1f37a72062f2b935554361d53336cc
parentc39442b990a1be06cd296dc4c433343bdd240b6f (diff)
downloadpysnmp-d98cbc287d2504a55c958a64f18ac9d546936eae.tar.gz
* addNotificationTarget() added
* ignore missing UNIX domain socket (for winz)
-rw-r--r--pysnmp/entity/config.py95
1 files changed, 92 insertions, 3 deletions
diff --git a/pysnmp/entity/config.py b/pysnmp/entity/config.py
index d3ecefc..f74cc7d 100644
--- a/pysnmp/entity/config.py
+++ b/pysnmp/entity/config.py
@@ -1,7 +1,13 @@
-# SNMP engine configuration functions
+# Initial SNMP engine configuration functions. During further operation,
+# SNMP engine might be configured remotely (through SNMP).
import string
from pysnmp.carrier.asynsock import dispatch
-from pysnmp.carrier.asynsock.dgram import udp, unix
+from pysnmp.carrier.asynsock.dgram import udp
+try:
+ from pysnmp.carrier.asynsock.dgram import unix
+ snmpLocalDomain = unix.snmpLocalDomain
+except ImportError: # may not be always available
+ pass
from pysnmp.proto import rfc3412
from pysnmp.proto.secmod.rfc3414 import localkey
from pysnmp.entity import engine
@@ -10,7 +16,6 @@ from pysnmp import error
# XXX
snmpUDPDomain = udp.snmpUDPDomain
-snmpLocalDomain = unix.snmpLocalDomain
def addV1System(snmpEngine, securityName, communityName,
contextEngineID=None, contextName=None,
@@ -509,3 +514,87 @@ def addRwUser(snmpEngine, securityModel, securityName, securityLevel, subTree):
addVacmView(
snmpEngine, groupName+'-view-rw', 1, subTree, ''
)
+
+# Notification configuration
+
+def addNotificationTarget(snmpEngine, notificationName, paramsName,
+ transportTag, notifyType=None, filterSubtree=None,
+ filterMask=None, filterType=None):
+ # Configure snmpNotifyTable
+
+ # Build entry index
+ snmpNotifyEntry, = snmpEngine.msgAndPduDsp.mibInstrumController.mibBuilder.importSymbols('SNMP-NOTIFICATION-MIB', 'snmpNotifyEntry')
+ tblIdx = snmpNotifyEntry.getInstIdFromIndices(
+ notificationName
+ )
+
+ # Create new row
+ snmpEngine.msgAndPduDsp.mibInstrumController.writeVars(
+ ((snmpNotifyEntry.name + (5,) + tblIdx, 4),)
+ )
+
+ # Commit table cell
+ snmpNotifyTag = snmpNotifyEntry.getNode(
+ snmpNotifyEntry.name + (2,) + tblIdx
+ )
+ snmpNotifyTag.syntax = snmpNotifyTag.syntax.clone(transportTag)
+
+ if notifyType is not None:
+ snmpNotifyType = snmpNotifyEntry.getNode(
+ snmpNotifyEntry.name + (3,) + tblIdx
+ )
+ snmpNotifyType.syntax = snmpNotifyType.syntax.clone(notifyType)
+
+ # Configure snmpNotifyFilterProfileTable
+ snmpNotifyFilterProfileEntry, = snmpEngine.msgAndPduDsp.mibInstrumController.mibBuilder.importSymbols('SNMP-NOTIFICATION-MIB', 'snmpNotifyFilterProfileEntry')
+ tblIdx = snmpNotifyFilterProfileEntry.getInstIdFromIndices(
+ paramsName
+ )
+
+ # Create new row
+ snmpEngine.msgAndPduDsp.mibInstrumController.writeVars(
+ ((snmpNotifyFilterProfileEntry.name + (3,) + tblIdx, 4),)
+ )
+
+ profileName = '%s-filter' % notificationName
+
+ # Commit table cell
+ snmpNotifyFilterProfileName = snmpNotifyFilterProfileEntry.getNode(
+ snmpNotifyFilterProfileEntry.name + (1,) + tblIdx
+ )
+ snmpNotifyFilterProfileName.syntax = snmpNotifyFilterProfileName.syntax.clone(profileName)
+
+ # Configure snmpNotifyFilterEntry
+
+ snmpNotifyFilterEntry, = snmpEngine.msgAndPduDsp.mibInstrumController.mibBuilder.importSymbols('SNMP-NOTIFICATION-MIB', 'snmpNotifyFilterEntry')
+ tblIdx = snmpNotifyFilterProfileEntry.getInstIdFromIndices(profileName)
+
+ if filterSubtree == filterMask == filterType == None:
+ return
+
+ # Create new row
+ snmpEngine.msgAndPduDsp.mibInstrumController.writeVars(
+ ((snmpNotifyFilterEntry.name + (5,) + tblIdx, 4),)
+ )
+
+ # Commit table cell
+ snmpNotifyFilterSubtree =snmpNotifyFilterEntry.getNode(
+ snmpNotifyFilterEntry.name + (1,) + tblIdx
+ )
+ snmpNotifyFilterSubtree.syntax = snmpNotifyFilterSubtree.syntax.clone(
+ filterSubtree
+ )
+
+ snmpNotifyFilterMask =snmpNotifyFilterEntry.getNode(
+ snmpNotifyFilterEntry.name + (2,) + tblIdx
+ )
+ snmpNotifyFilterMask.syntax = snmpNotifyFilterMask.syntax.clone(
+ filterMask
+ )
+
+ snmpNotifyFilterType =snmpNotifyFilterEntry.getNode(
+ snmpNotifyFilterEntry.name + (3,) + tblIdx
+ )
+ snmpNotifyFilterType.syntax = snmpNotifyFilterType.syntax.clone(
+ filterType
+ )