diff options
author | Ilya Etingof <etingof@gmail.com> | 2017-02-04 19:25:45 +0100 |
---|---|---|
committer | Ilya Etingof <etingof@gmail.com> | 2017-02-04 19:25:45 +0100 |
commit | 4fdba5575917df54b010288516aba1a65e55227c (patch) | |
tree | 8a5f8f373145edea172ee0ebab8d4dc8b3add71a | |
parent | 230d6268196fb599dc95685a23af5a843e6be57c (diff) | |
download | pysnmp-git-4fdba5575917df54b010288516aba1a65e55227c.tar.gz |
transport address objects made iterable to override pyasn1's __iter__
-rw-r--r-- | pysnmp/smi/mibs/SNMPv2-TM.py | 10 | ||||
-rw-r--r-- | pysnmp/smi/mibs/TRANSPORT-ADDRESS-MIB.py | 20 |
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' |