diff options
author | elie <elie> | 2012-08-12 06:52:29 +0000 |
---|---|---|
committer | elie <elie> | 2012-08-12 06:52:29 +0000 |
commit | 7ccc0a0962d881352f308472d04993b0b9cfb3a9 (patch) | |
tree | 03d2f1e694ec8e1716494dcacb798a0d8f664825 /pysnmp/entity/rfc3413/oneliner/target.py | |
parent | 30362e91d32ae26142cdac9d3836edee70c1a4af (diff) | |
download | pysnmp-7ccc0a0962d881352f308472d04993b0b9cfb3a9.tar.gz |
auth & target configuration containers moved to separate modules
Diffstat (limited to 'pysnmp/entity/rfc3413/oneliner/target.py')
-rw-r--r-- | pysnmp/entity/rfc3413/oneliner/target.py | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/pysnmp/entity/rfc3413/oneliner/target.py b/pysnmp/entity/rfc3413/oneliner/target.py new file mode 100644 index 0000000..a8249a9 --- /dev/null +++ b/pysnmp/entity/rfc3413/oneliner/target.py @@ -0,0 +1,65 @@ +import socket, sys +from pysnmp.carrier.asynsock.dgram import udp, udp6, unix +from pyasn1.compat.octets import null + +class _AbstractTransportTarget: + transportDomain = protoTransport = None + def __init__(self, transportAddr, timeout=1, retries=5, tagList=null): + self.transportAddr = transportAddr + self.timeout = timeout + self.retries = retries + self.tagList = tagList + + def __repr__(self): return '%s(%r, %r, %r, %r)' % ( + self.__class__.__name__, self.transportAddr, + self.timeout, self.retries, self.tagList + ) + + def __hash__(self): return hash(self.transportAddr) + + def __eq__(self, other): return self.transportAddr == other + def __ne__(self, other): return self.transportAddr != other + def __lt__(self, other): return self.transportAddr < other + def __le__(self, other): return self.transportAddr <= other + def __gt__(self, other): return self.transportAddr > other + def __ge__(self, other): return self.transportAddr >= other + + def openClientMode(self): + self.transport = self.protoTransport().openClientMode() + return self.transport + +class UdpTransportTarget(_AbstractTransportTarget): + transportDomain = udp.domainName + protoTransport = udp.UdpSocketTransport + def __init__(self, transportAddr, timeout=1, retries=5, tagList=null): + _AbstractTransportTarget.__init__(self, transportAddr, timeout, + retries, tagList) + try: + self.transportAddr = socket.getaddrinfo(transportAddr[0], + transportAddr[1], + socket.AF_INET, + socket.SOCK_DGRAM, + socket.IPPROTO_UDP)[0][4][:2] + except socket.gaierror: + raise error.PySnmpError('Bad IPv4/UDP transport address %s: %s' % ('@'.join([ str(x) for x in transportAddr ]), sys.exc_info()[1])) + +class Udp6TransportTarget(_AbstractTransportTarget): + transportDomain = udp6.domainName + protoTransport = udp6.Udp6SocketTransport + def __init__(self, transportAddr, timeout=1, retries=5, tagList=null): + _AbstractTransportTarget.__init__(self, transportAddr, timeout, + retries, tagList) + try: + self.transportAddr = socket.getaddrinfo(transportAddr[0], + transportAddr[1], + socket.AF_INET6, + socket.SOCK_DGRAM, + socket.IPPROTO_UDP)[0][4][:2] + except socket.gaierror: + raise error.PySnmpError('Bad IPv6/UDP transport address %s: %s' % ('@'.join([ str(x) for x in transportAddr ]), sys.exc_info()[1])) + +class UnixTransportTarget(_AbstractTransportTarget): + transportDomain = unix.domainName + protoTransport = unix.UnixSocketTransport + + |