summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIlya Etingof <etingof@gmail.com>2017-02-04 19:25:45 +0100
committerIlya Etingof <etingof@gmail.com>2017-02-04 19:25:45 +0100
commit4fdba5575917df54b010288516aba1a65e55227c (patch)
tree8a5f8f373145edea172ee0ebab8d4dc8b3add71a
parent230d6268196fb599dc95685a23af5a843e6be57c (diff)
downloadpysnmp-git-4fdba5575917df54b010288516aba1a65e55227c.tar.gz
transport address objects made iterable to override pyasn1's __iter__
-rw-r--r--pysnmp/smi/mibs/SNMPv2-TM.py10
-rw-r--r--pysnmp/smi/mibs/TRANSPORT-ADDRESS-MIB.py20
2 files changed, 24 insertions, 6 deletions
diff --git a/pysnmp/smi/mibs/SNMPv2-TM.py b/pysnmp/smi/mibs/SNMPv2-TM.py
index d7137951..1f12109b 100644
--- a/pysnmp/smi/mibs/SNMPv2-TM.py
+++ b/pysnmp/smi/mibs/SNMPv2-TM.py
@@ -38,14 +38,20 @@ class SnmpUDPAddress(TextualConvention, OctetString):
return OctetString.prettyIn(self, value)
# Socket address syntax coercion
- def __getitem__(self, i):
+ def __asSocketAddress(self):
if not hasattr(self, '__tuple_value'):
v = self.asOctets()
self.__tuple_value = (
inet_ntop(AF_INET, v[:4]),
oct2int(v[4]) << 8 | oct2int(v[5])
)
- return self.__tuple_value[i]
+ return self.__tuple_value
+
+ def __iter__(self):
+ return iter(self.__asSocketAddress())
+
+ def __getitem__(self, item):
+ return self.__asSocketAddress()[item]
snmpCLNSDomain = ObjectIdentity(snmpDomains.name + (2,))
diff --git a/pysnmp/smi/mibs/TRANSPORT-ADDRESS-MIB.py b/pysnmp/smi/mibs/TRANSPORT-ADDRESS-MIB.py
index 9240727b..e18e8d44 100644
--- a/pysnmp/smi/mibs/TRANSPORT-ADDRESS-MIB.py
+++ b/pysnmp/smi/mibs/TRANSPORT-ADDRESS-MIB.py
@@ -255,14 +255,21 @@ class TransportAddressIPv4(TextualConvention, OctetString):
return OctetString.prettyIn(self, value)
# Socket address syntax coercion
- def __getitem__(self, i):
+ def __asSocketAddress(self):
if not hasattr(self, '__tuple_value'):
v = self.asOctets()
self.__tuple_value = (
inet_ntop(socket.AF_INET, v[:4]),
oct2int(v[4]) << 8 | oct2int(v[5]),
)
- return self.__tuple_value[i]
+ self.__tuple_value
+
+ def __iter__(self):
+ return iter(self.__asSocketAddress())
+
+
+ def __getitem__(self, item):
+ return self.__asSocketAddress()[item]
class TransportAddressIPv6(TextualConvention, OctetString):
@@ -278,7 +285,7 @@ class TransportAddressIPv6(TextualConvention, OctetString):
return OctetString.prettyIn(self, value)
# Socket address syntax coercion
- def __getitem__(self, i):
+ def __asSocketAddress(self):
if not hasattr(self, '__tuple_value'):
if not has_ipv6:
raise error.PySnmpError('IPv6 not supported by platform')
@@ -288,8 +295,13 @@ class TransportAddressIPv6(TextualConvention, OctetString):
oct2int(v[16]) << 8 | oct2int(v[17]),
0, # flowinfo
0) # scopeid
- return self.__tuple_value[i]
+ return self.__tuple_value
+
+ def __iter__(self):
+ return iter(self.__asSocketAddress())
+ def __getitem__(self, item):
+ return self.__asSocketAddress()[item]
class TransportAddressIPv4z(OctetString, TextualConvention):
displayHint = '1d.1d.1d.1d%4d:2d'