summaryrefslogtreecommitdiff
path: root/pysnmp/smi
diff options
context:
space:
mode:
authorIlya Etingof <etingof@gmail.com>2017-10-18 11:48:50 +0200
committerIlya Etingof <etingof@gmail.com>2017-10-18 11:48:50 +0200
commit05df34cc3ae0a04dbd1854f633e58b6180157d59 (patch)
tree45a85f6ab0ac6a3d5a16f30083cd4db48e709c23 /pysnmp/smi
parent1065d25a16a6fa8dcb7ce98155f2d1babcff6ed5 (diff)
downloadpysnmp-git-05df34cc3ae0a04dbd1854f633e58b6180157d59.tar.gz
make sure not to pass `None` to SMI .setValue()
This is a prerequisite for pyasn1 0.4.x
Diffstat (limited to 'pysnmp/smi')
-rw-r--r--pysnmp/smi/mibs/SNMPv2-SMI.py3
-rw-r--r--pysnmp/smi/mibs/SNMPv2-TC.py12
2 files changed, 15 insertions, 0 deletions
diff --git a/pysnmp/smi/mibs/SNMPv2-SMI.py b/pysnmp/smi/mibs/SNMPv2-SMI.py
index cc20bd82..8c472798 100644
--- a/pysnmp/smi/mibs/SNMPv2-SMI.py
+++ b/pysnmp/smi/mibs/SNMPv2-SMI.py
@@ -10,6 +10,7 @@ from pysnmp.smi.indices import OidOrderedDict
from pysnmp.smi import exval, error
from pysnmp.proto import rfc1902
from pysnmp import cache, debug
+from pyasn1.type import univ
from pyasn1.error import PyAsn1Error
Integer, ObjectIdentifier = mibBuilder.importSymbols(
@@ -619,6 +620,8 @@ class MibScalarInstance(MibTree):
return self.syntax.clone()
def setValue(self, value, name, idx):
+ if value is None:
+ value = univ.noValue
try:
if hasattr(self.syntax, 'setValue'):
return self.syntax.setValue(value)
diff --git a/pysnmp/smi/mibs/SNMPv2-TC.py b/pysnmp/smi/mibs/SNMPv2-TC.py
index f21dd33b..57371bd8 100644
--- a/pysnmp/smi/mibs/SNMPv2-TC.py
+++ b/pysnmp/smi/mibs/SNMPv2-TC.py
@@ -9,6 +9,7 @@ import inspect
import string
from pysnmp.smi.error import *
from pysnmp import debug
+from pyasn1.type import univ
from pyasn1.compat import octets
from pyasn1.type.base import Asn1Item
@@ -45,6 +46,8 @@ class TextualConvention(object):
return self.clone()
def setValue(self, value):
+ if value is None:
+ value = univ.noValue
return self.clone(value)
def prettyOut(self, value): # override asn1 type method
@@ -406,6 +409,8 @@ class TestAndIncr(TextualConvention, Integer):
value += 1
if value > 2147483646:
value = 0
+ if value is None:
+ value = univ.noValue
return self.clone(value)
@@ -476,6 +481,9 @@ class RowStatus(TextualConvention, Integer):
}
def setValue(self, value):
+ if value is None:
+ value = univ.noValue
+
value = self.clone(value)
# Run through states transition matrix,
@@ -485,6 +493,10 @@ class RowStatus(TextualConvention, Integer):
self.hasValue() and self or self.stNotExists),
(MibOperationError, None)
)
+
+ if newState is None:
+ newState = univ.noValue
+
newState = self.clone(newState)
debug.logger & debug.flagIns and debug.logger(