summaryrefslogtreecommitdiff
path: root/pysnmp
diff options
context:
space:
mode:
authorIlya Etingof <etingof@gmail.com>2018-12-29 23:45:49 +0100
committerIlya Etingof <etingof@gmail.com>2018-12-30 00:12:21 +0100
commit695e84ab17955fa1a3603f560113bad7f4446716 (patch)
tree72273a5c2cdc0d219e15678af44babb6bf53e39e /pysnmp
parent27082a9663de244b58a895b5c75c59c9e24df057 (diff)
downloadpysnmp-git-695e84ab17955fa1a3603f560113bad7f4446716.tar.gz
Extend copyright notice to year 2019
Diffstat (limited to 'pysnmp')
-rw-r--r--pysnmp/cache.py2
-rw-r--r--pysnmp/carrier/asyncio/base.py2
-rw-r--r--pysnmp/carrier/asyncio/dgram/base.py2
-rw-r--r--pysnmp/carrier/asyncio/dgram/udp.py2
-rw-r--r--pysnmp/carrier/asyncio/dgram/udp6.py2
-rw-r--r--pysnmp/carrier/asyncio/dispatch.py2
-rw-r--r--pysnmp/carrier/asyncore/base.py2
-rw-r--r--pysnmp/carrier/asyncore/dgram/base.py2
-rw-r--r--pysnmp/carrier/asyncore/dgram/udp.py2
-rw-r--r--pysnmp/carrier/asyncore/dgram/udp6.py2
-rw-r--r--pysnmp/carrier/asyncore/dgram/unix.py61
-rw-r--r--pysnmp/carrier/asyncore/dispatch.py2
-rw-r--r--pysnmp/carrier/asynsock/dgram/udp.py7
-rw-r--r--pysnmp/carrier/asynsock/dgram/udp6.py7
-rw-r--r--pysnmp/carrier/asynsock/dgram/unix.py7
-rw-r--r--pysnmp/carrier/asynsock/dispatch.py9
-rw-r--r--pysnmp/carrier/base.py2
-rw-r--r--pysnmp/carrier/error.py2
-rw-r--r--pysnmp/carrier/sockfix.py2
-rw-r--r--pysnmp/carrier/sockmsg.py2
-rw-r--r--pysnmp/carrier/twisted/base.py2
-rw-r--r--pysnmp/carrier/twisted/dgram/base.py2
-rw-r--r--pysnmp/carrier/twisted/dgram/udp.py2
-rw-r--r--pysnmp/carrier/twisted/dgram/unix.py46
-rw-r--r--pysnmp/carrier/twisted/dispatch.py2
-rw-r--r--pysnmp/debug.py2
-rw-r--r--pysnmp/entity/config.py2
-rw-r--r--pysnmp/entity/engine.py2
-rw-r--r--pysnmp/entity/observer.py2
-rw-r--r--pysnmp/entity/rfc3413/cmdgen.py2
-rw-r--r--pysnmp/entity/rfc3413/cmdrsp.py2
-rw-r--r--pysnmp/entity/rfc3413/config.py2
-rw-r--r--pysnmp/entity/rfc3413/context.py2
-rw-r--r--pysnmp/entity/rfc3413/mibvar.py82
-rw-r--r--pysnmp/entity/rfc3413/ntforg.py2
-rw-r--r--pysnmp/entity/rfc3413/ntfrcv.py2
-rw-r--r--pysnmp/entity/rfc3413/oneliner/cmdgen.py254
-rw-r--r--pysnmp/entity/rfc3413/oneliner/ntforg.py180
-rw-r--r--pysnmp/error.py2
-rw-r--r--pysnmp/hlapi/__init__.py2
-rw-r--r--pysnmp/hlapi/asyncore/sync/__init__.py19
-rw-r--r--pysnmp/hlapi/transport.py2
-rw-r--r--pysnmp/hlapi/v1arch/__init__.py2
-rw-r--r--pysnmp/hlapi/v1arch/asyncore/__init__.py2
-rw-r--r--pysnmp/hlapi/v1arch/asyncore/cmdgen.py2
-rw-r--r--pysnmp/hlapi/v1arch/asyncore/dispatch.py2
-rw-r--r--pysnmp/hlapi/v1arch/asyncore/ntforg.py2
-rw-r--r--pysnmp/hlapi/v1arch/asyncore/sync/__init__.py2
-rw-r--r--pysnmp/hlapi/v1arch/asyncore/sync/cmdgen.py2
-rw-r--r--pysnmp/hlapi/v1arch/asyncore/sync/ntforg.py2
-rw-r--r--pysnmp/hlapi/v1arch/asyncore/transport.py2
-rw-r--r--pysnmp/hlapi/v1arch/auth.py2
-rw-r--r--pysnmp/hlapi/v1arch/dispatch.py2
-rw-r--r--pysnmp/hlapi/v3arch/__init__.py2
-rw-r--r--pysnmp/hlapi/v3arch/asyncio/__init__.py2
-rw-r--r--pysnmp/hlapi/v3arch/asyncio/cmdgen.py2
-rw-r--r--pysnmp/hlapi/v3arch/asyncio/ntforg.py2
-rw-r--r--pysnmp/hlapi/v3arch/asyncio/transport.py2
-rw-r--r--pysnmp/hlapi/v3arch/asyncore/__init__.py2
-rw-r--r--pysnmp/hlapi/v3arch/asyncore/cmdgen.py2
-rw-r--r--pysnmp/hlapi/v3arch/asyncore/ntforg.py2
-rw-r--r--pysnmp/hlapi/v3arch/asyncore/sync/__init__.py2
-rw-r--r--pysnmp/hlapi/v3arch/asyncore/sync/cmdgen.py2
-rw-r--r--pysnmp/hlapi/v3arch/asyncore/sync/compat/cmdgen.py2
-rw-r--r--pysnmp/hlapi/v3arch/asyncore/sync/compat/ntforg.py2
-rw-r--r--pysnmp/hlapi/v3arch/asyncore/sync/ntforg.py2
-rw-r--r--pysnmp/hlapi/v3arch/asyncore/transport.py2
-rw-r--r--pysnmp/hlapi/v3arch/auth.py2
-rw-r--r--pysnmp/hlapi/v3arch/context.py2
-rw-r--r--pysnmp/hlapi/v3arch/lcd.py2
-rw-r--r--pysnmp/hlapi/v3arch/twisted/cmdgen.py2
-rw-r--r--pysnmp/hlapi/v3arch/twisted/ntforg.py2
-rw-r--r--pysnmp/hlapi/v3arch/twisted/transport.py2
-rw-r--r--pysnmp/hlapi/varbinds.py2
-rw-r--r--pysnmp/nextid.py2
-rw-r--r--pysnmp/proto/acmod/rfc3415.py2
-rw-r--r--pysnmp/proto/acmod/void.py2
-rw-r--r--pysnmp/proto/api/__init__.py2
-rw-r--r--pysnmp/proto/api/v1.py2
-rw-r--r--pysnmp/proto/api/v2c.py2
-rw-r--r--pysnmp/proto/api/verdec.py2
-rw-r--r--pysnmp/proto/cache.py2
-rw-r--r--pysnmp/proto/errind.py2
-rw-r--r--pysnmp/proto/error.py2
-rw-r--r--pysnmp/proto/mpmod/base.py2
-rw-r--r--pysnmp/proto/mpmod/cache.py2
-rw-r--r--pysnmp/proto/mpmod/rfc2576.py2
-rw-r--r--pysnmp/proto/proxy/rfc2576.py2
-rw-r--r--pysnmp/proto/rfc1155.py2
-rw-r--r--pysnmp/proto/rfc1157.py2
-rw-r--r--pysnmp/proto/rfc1901.py2
-rw-r--r--pysnmp/proto/rfc1902.py2
-rw-r--r--pysnmp/proto/rfc1905.py2
-rw-r--r--pysnmp/proto/rfc3411.py2
-rw-r--r--pysnmp/proto/rfc3412.py2
-rw-r--r--pysnmp/proto/secmod/base.py2
-rw-r--r--pysnmp/proto/secmod/cache.py2
-rw-r--r--pysnmp/proto/secmod/eso/priv/aes192.py2
-rw-r--r--pysnmp/proto/secmod/eso/priv/aes256.py2
-rw-r--r--pysnmp/proto/secmod/eso/priv/aesbase.py2
-rw-r--r--pysnmp/proto/secmod/eso/priv/des3.py2
-rw-r--r--pysnmp/proto/secmod/rfc2576.py2
-rw-r--r--pysnmp/proto/secmod/rfc3414/__init__.py2
-rw-r--r--pysnmp/proto/secmod/rfc3414/auth/base.py2
-rw-r--r--pysnmp/proto/secmod/rfc3414/auth/hmacmd5.py2
-rw-r--r--pysnmp/proto/secmod/rfc3414/auth/hmacsha.py2
-rw-r--r--pysnmp/proto/secmod/rfc3414/auth/noauth.py2
-rw-r--r--pysnmp/proto/secmod/rfc3414/localkey.py2
-rw-r--r--pysnmp/proto/secmod/rfc3414/priv/base.py2
-rw-r--r--pysnmp/proto/secmod/rfc3414/priv/des.py2
-rw-r--r--pysnmp/proto/secmod/rfc3414/priv/nopriv.py2
-rw-r--r--pysnmp/proto/secmod/rfc3414/service.py2
-rw-r--r--pysnmp/proto/secmod/rfc3826/priv/aes.py2
-rw-r--r--pysnmp/smi/builder.py2
-rw-r--r--pysnmp/smi/compiler.py2
-rw-r--r--pysnmp/smi/error.py2
-rw-r--r--pysnmp/smi/exval.py2
-rw-r--r--pysnmp/smi/indices.py2
-rw-r--r--pysnmp/smi/instrum.py2
-rw-r--r--pysnmp/smi/mibs/ASN1-ENUMERATION.py2
-rw-r--r--pysnmp/smi/mibs/ASN1-REFINEMENT.py2
-rw-r--r--pysnmp/smi/mibs/ASN1.py2
-rw-r--r--pysnmp/smi/mibs/INET-ADDRESS-MIB.py2
-rw-r--r--pysnmp/smi/mibs/PYSNMP-MIB.py2
-rw-r--r--pysnmp/smi/mibs/PYSNMP-SOURCE-MIB.py2
-rw-r--r--pysnmp/smi/mibs/PYSNMP-USM-MIB.py2
-rw-r--r--pysnmp/smi/mibs/RFC1158-MIB.py2
-rw-r--r--pysnmp/smi/mibs/RFC1213-MIB.py2
-rw-r--r--pysnmp/smi/mibs/SNMP-COMMUNITY-MIB.py2
-rw-r--r--pysnmp/smi/mibs/SNMP-FRAMEWORK-MIB.py2
-rw-r--r--pysnmp/smi/mibs/SNMP-MPD-MIB.py2
-rw-r--r--pysnmp/smi/mibs/SNMP-NOTIFICATION-MIB.py2
-rw-r--r--pysnmp/smi/mibs/SNMP-PROXY-MIB.py2
-rw-r--r--pysnmp/smi/mibs/SNMP-TARGET-MIB.py2
-rw-r--r--pysnmp/smi/mibs/SNMP-USER-BASED-SM-3DES-MIB.py2
-rw-r--r--pysnmp/smi/mibs/SNMP-USER-BASED-SM-MIB.py2
-rw-r--r--pysnmp/smi/mibs/SNMP-USM-AES-MIB.py2
-rw-r--r--pysnmp/smi/mibs/SNMP-VIEW-BASED-ACM-MIB.py2
-rw-r--r--pysnmp/smi/mibs/SNMPv2-CONF.py2
-rw-r--r--pysnmp/smi/mibs/SNMPv2-MIB.py2
-rw-r--r--pysnmp/smi/mibs/SNMPv2-SMI.py2
-rw-r--r--pysnmp/smi/mibs/SNMPv2-TC.py2
-rw-r--r--pysnmp/smi/mibs/SNMPv2-TM.py2
-rw-r--r--pysnmp/smi/mibs/TRANSPORT-ADDRESS-MIB.py2
-rw-r--r--pysnmp/smi/mibs/instances/__PYSNMP-USM-MIB.py2
-rw-r--r--pysnmp/smi/mibs/instances/__SNMP-FRAMEWORK-MIB.py2
-rw-r--r--pysnmp/smi/mibs/instances/__SNMP-MPD-MIB.py2
-rw-r--r--pysnmp/smi/mibs/instances/__SNMP-TARGET-MIB.py2
-rw-r--r--pysnmp/smi/mibs/instances/__SNMP-USER-BASED-SM-MIB.py2
-rw-r--r--pysnmp/smi/mibs/instances/__SNMP-VIEW-BASED-ACM-MIB.py2
-rw-r--r--pysnmp/smi/mibs/instances/__SNMPv2-MIB.py2
-rw-r--r--pysnmp/smi/rfc1902.py2
-rw-r--r--pysnmp/smi/view.py2
153 files changed, 815 insertions, 143 deletions
diff --git a/pysnmp/cache.py b/pysnmp/cache.py
index 3c8d7c10..f4b8796e 100644
--- a/pysnmp/cache.py
+++ b/pysnmp/cache.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
# Limited-size dictionary-like class to use for caches
diff --git a/pysnmp/carrier/asyncio/base.py b/pysnmp/carrier/asyncio/base.py
index 3b09b3af..ce1b644f 100644
--- a/pysnmp/carrier/asyncio/base.py
+++ b/pysnmp/carrier/asyncio/base.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
# Copyright (C) 2014, Zebra Technologies
diff --git a/pysnmp/carrier/asyncio/dgram/base.py b/pysnmp/carrier/asyncio/dgram/base.py
index af649db6..a845fa1e 100644
--- a/pysnmp/carrier/asyncio/dgram/base.py
+++ b/pysnmp/carrier/asyncio/dgram/base.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
# Copyright (C) 2014, Zebra Technologies
diff --git a/pysnmp/carrier/asyncio/dgram/udp.py b/pysnmp/carrier/asyncio/dgram/udp.py
index c407eb4a..41ada723 100644
--- a/pysnmp/carrier/asyncio/dgram/udp.py
+++ b/pysnmp/carrier/asyncio/dgram/udp.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
# Copyright (C) 2014, Zebra Technologies
diff --git a/pysnmp/carrier/asyncio/dgram/udp6.py b/pysnmp/carrier/asyncio/dgram/udp6.py
index 12fba842..bc03b447 100644
--- a/pysnmp/carrier/asyncio/dgram/udp6.py
+++ b/pysnmp/carrier/asyncio/dgram/udp6.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
import socket
diff --git a/pysnmp/carrier/asyncio/dispatch.py b/pysnmp/carrier/asyncio/dispatch.py
index 74f9ae10..e92fe95e 100644
--- a/pysnmp/carrier/asyncio/dispatch.py
+++ b/pysnmp/carrier/asyncio/dispatch.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
# Copyright (C) 2014, Zebra Technologies
diff --git a/pysnmp/carrier/asyncore/base.py b/pysnmp/carrier/asyncore/base.py
index a1424d7d..61c55221 100644
--- a/pysnmp/carrier/asyncore/base.py
+++ b/pysnmp/carrier/asyncore/base.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
import socket
diff --git a/pysnmp/carrier/asyncore/dgram/base.py b/pysnmp/carrier/asyncore/dgram/base.py
index cff98636..37510a80 100644
--- a/pysnmp/carrier/asyncore/dgram/base.py
+++ b/pysnmp/carrier/asyncore/dgram/base.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
import socket
diff --git a/pysnmp/carrier/asyncore/dgram/udp.py b/pysnmp/carrier/asyncore/dgram/udp.py
index ed9a70e5..08ae5ceb 100644
--- a/pysnmp/carrier/asyncore/dgram/udp.py
+++ b/pysnmp/carrier/asyncore/dgram/udp.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from socket import AF_INET
diff --git a/pysnmp/carrier/asyncore/dgram/udp6.py b/pysnmp/carrier/asyncore/dgram/udp6.py
index 944048b7..900ef3c7 100644
--- a/pysnmp/carrier/asyncore/dgram/udp6.py
+++ b/pysnmp/carrier/asyncore/dgram/udp6.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pysnmp.carrier import sockfix
diff --git a/pysnmp/carrier/asyncore/dgram/unix.py b/pysnmp/carrier/asyncore/dgram/unix.py
new file mode 100644
index 00000000..15f68b2b
--- /dev/null
+++ b/pysnmp/carrier/asyncore/dgram/unix.py
@@ -0,0 +1,61 @@
+#
+# This file is part of pysnmp software.
+#
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
+# License: http://snmplabs.com/pysnmp/license.html
+#
+import os
+import random
+
+try:
+ from socket import AF_UNIX
+except ImportError:
+ AF_UNIX = None
+from pysnmp.carrier.base import AbstractTransportAddress
+from pysnmp.carrier.asyncore.dgram.base import DgramSocketTransport
+
+domainName = snmpLocalDomain = (1, 3, 6, 1, 2, 1, 100, 1, 13)
+
+random.seed()
+
+
+class UnixTransportAddress(str, AbstractTransportAddress):
+ pass
+
+
+class UnixSocketTransport(DgramSocketTransport):
+ sockFamily = AF_UNIX
+ addressType = UnixTransportAddress
+ _iface = ''
+
+ def openClientMode(self, iface=None):
+ if iface is None:
+ # UNIX domain sockets must be explicitly bound
+ iface = ''
+ while len(iface) < 8:
+ iface += chr(random.randrange(65, 91))
+ iface += chr(random.randrange(97, 123))
+ iface = os.path.sep + 'tmp' + os.path.sep + 'pysnmp' + iface
+ if os.path.exists(iface):
+ os.remove(iface)
+ DgramSocketTransport.openClientMode(self, iface)
+ self._iface = iface
+ return self
+
+ def openServerMode(self, iface):
+ DgramSocketTransport.openServerMode(self, iface)
+ self._iface = iface
+ return self
+
+ def closeTransport(self):
+ DgramSocketTransport.closeTransport(self)
+ try:
+ os.remove(self._iface)
+ except OSError:
+ pass
+
+
+UnixTransport = UnixSocketTransport
+
+# Compatibility stub
+UnixDgramSocketTransport = UnixSocketTransport
diff --git a/pysnmp/carrier/asyncore/dispatch.py b/pysnmp/carrier/asyncore/dispatch.py
index 4cdd61bf..221c596c 100644
--- a/pysnmp/carrier/asyncore/dispatch.py
+++ b/pysnmp/carrier/asyncore/dispatch.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from time import time
diff --git a/pysnmp/carrier/asynsock/dgram/udp.py b/pysnmp/carrier/asynsock/dgram/udp.py
new file mode 100644
index 00000000..ab44b28f
--- /dev/null
+++ b/pysnmp/carrier/asynsock/dgram/udp.py
@@ -0,0 +1,7 @@
+#
+# This file is part of pysnmp software.
+#
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
+# License: http://snmplabs.com/pysnmp/license.html
+#
+from pysnmp.carrier.asyncore.dgram.udp import *
diff --git a/pysnmp/carrier/asynsock/dgram/udp6.py b/pysnmp/carrier/asynsock/dgram/udp6.py
new file mode 100644
index 00000000..b3a8aec0
--- /dev/null
+++ b/pysnmp/carrier/asynsock/dgram/udp6.py
@@ -0,0 +1,7 @@
+#
+# This file is part of pysnmp software.
+#
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
+# License: http://snmplabs.com/pysnmp/license.html
+#
+from pysnmp.carrier.asyncore.dgram.udp6 import *
diff --git a/pysnmp/carrier/asynsock/dgram/unix.py b/pysnmp/carrier/asynsock/dgram/unix.py
new file mode 100644
index 00000000..887b4edb
--- /dev/null
+++ b/pysnmp/carrier/asynsock/dgram/unix.py
@@ -0,0 +1,7 @@
+#
+# This file is part of pysnmp software.
+#
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
+# License: http://snmplabs.com/pysnmp/license.html
+#
+from pysnmp.carrier.asyncore.dgram.unix import *
diff --git a/pysnmp/carrier/asynsock/dispatch.py b/pysnmp/carrier/asynsock/dispatch.py
new file mode 100644
index 00000000..478d9e49
--- /dev/null
+++ b/pysnmp/carrier/asynsock/dispatch.py
@@ -0,0 +1,9 @@
+#
+# This file is part of pysnmp software.
+#
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
+# License: http://snmplabs.com/pysnmp/license.html
+#
+from pysnmp.carrier.asyncore.dispatch import *
+
+AsynsockDispatcher = AsyncoreDispatcher
diff --git a/pysnmp/carrier/base.py b/pysnmp/carrier/base.py
index ef6485c0..017a1520 100644
--- a/pysnmp/carrier/base.py
+++ b/pysnmp/carrier/base.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pysnmp.carrier import error
diff --git a/pysnmp/carrier/error.py b/pysnmp/carrier/error.py
index 601fd0ee..34d1add2 100644
--- a/pysnmp/carrier/error.py
+++ b/pysnmp/carrier/error.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pysnmp import error
diff --git a/pysnmp/carrier/sockfix.py b/pysnmp/carrier/sockfix.py
index 01b69223..d4ea504e 100644
--- a/pysnmp/carrier/sockfix.py
+++ b/pysnmp/carrier/sockfix.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
import socket
diff --git a/pysnmp/carrier/sockmsg.py b/pysnmp/carrier/sockmsg.py
index 634ea187..0d79b2c7 100644
--- a/pysnmp/carrier/sockmsg.py
+++ b/pysnmp/carrier/sockmsg.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
# The following routines act like sendto()/recvfrom() calls but additionally
diff --git a/pysnmp/carrier/twisted/base.py b/pysnmp/carrier/twisted/base.py
index f7d0f306..d8b75bc7 100644
--- a/pysnmp/carrier/twisted/base.py
+++ b/pysnmp/carrier/twisted/base.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
# Copyright (C) 2008 Truelite Srl <info@truelite.it>
diff --git a/pysnmp/carrier/twisted/dgram/base.py b/pysnmp/carrier/twisted/dgram/base.py
index 7df96d93..4995aec4 100644
--- a/pysnmp/carrier/twisted/dgram/base.py
+++ b/pysnmp/carrier/twisted/dgram/base.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
import sys
diff --git a/pysnmp/carrier/twisted/dgram/udp.py b/pysnmp/carrier/twisted/dgram/udp.py
index 1eaf8636..ac0f23f1 100644
--- a/pysnmp/carrier/twisted/dgram/udp.py
+++ b/pysnmp/carrier/twisted/dgram/udp.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
import sys
diff --git a/pysnmp/carrier/twisted/dgram/unix.py b/pysnmp/carrier/twisted/dgram/unix.py
new file mode 100644
index 00000000..a256969c
--- /dev/null
+++ b/pysnmp/carrier/twisted/dgram/unix.py
@@ -0,0 +1,46 @@
+#
+# This file is part of pysnmp software.
+#
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
+# License: http://snmplabs.com/pysnmp/license.html
+#
+import sys
+from twisted.internet import reactor
+from pysnmp.carrier.base import AbstractTransportAddress
+from pysnmp.carrier.twisted.dgram.base import DgramTwistedTransport
+from pysnmp.carrier import error
+
+domainName = snmpLocalDomain = (1, 3, 6, 1, 2, 1, 100, 1, 13)
+
+class UnixTransportAddress(str, AbstractTransportAddress):
+ pass
+
+class UnixTwistedTransport(DgramTwistedTransport):
+ addressType = UnixTransportAddress
+ _lport = None
+
+ # AbstractTwistedTransport API
+
+ def openClientMode(self, iface=''):
+ try:
+ self._lport = reactor.connectUNIXDatagram(iface, self)
+ except Exception:
+ raise error.CarrierError(sys.exc_info()[1])
+ return self
+
+ def openServerMode(self, iface):
+ try:
+ self._lport = reactor.listenUNIXDatagram(iface, self)
+ except Exception:
+ raise error.CarrierError(sys.exc_info()[1])
+
+ return self
+
+ def closeTransport(self):
+ if self._lport is not None:
+ d = self._lport.stopListening()
+ if d:
+ d.addCallback(lambda x: None)
+ DgramTwistedTransport.closeTransport(self)
+
+UnixTransport = UnixTwistedTransport
diff --git a/pysnmp/carrier/twisted/dispatch.py b/pysnmp/carrier/twisted/dispatch.py
index 5113e7b2..def16f6f 100644
--- a/pysnmp/carrier/twisted/dispatch.py
+++ b/pysnmp/carrier/twisted/dispatch.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
# Copyright (C) 2008 Truelite Srl <info@truelite.it>
diff --git a/pysnmp/debug.py b/pysnmp/debug.py
index 83502867..715a3876 100644
--- a/pysnmp/debug.py
+++ b/pysnmp/debug.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
import logging
diff --git a/pysnmp/entity/config.py b/pysnmp/entity/config.py
index 6aed74c4..4b285538 100644
--- a/pysnmp/entity/config.py
+++ b/pysnmp/entity/config.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pyasn1.compat.octets import null
diff --git a/pysnmp/entity/engine.py b/pysnmp/entity/engine.py
index 0550871b..a299267c 100644
--- a/pysnmp/entity/engine.py
+++ b/pysnmp/entity/engine.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
import os
diff --git a/pysnmp/entity/observer.py b/pysnmp/entity/observer.py
index a5239471..3f7bd845 100644
--- a/pysnmp/entity/observer.py
+++ b/pysnmp/entity/observer.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pysnmp import error
diff --git a/pysnmp/entity/rfc3413/cmdgen.py b/pysnmp/entity/rfc3413/cmdgen.py
index 9f5d891d..98cac48c 100644
--- a/pysnmp/entity/rfc3413/cmdgen.py
+++ b/pysnmp/entity/rfc3413/cmdgen.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
import sys
diff --git a/pysnmp/entity/rfc3413/cmdrsp.py b/pysnmp/entity/rfc3413/cmdrsp.py
index 0aa3b1e1..772cc5ea 100644
--- a/pysnmp/entity/rfc3413/cmdrsp.py
+++ b/pysnmp/entity/rfc3413/cmdrsp.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
import sys
diff --git a/pysnmp/entity/rfc3413/config.py b/pysnmp/entity/rfc3413/config.py
index 5562784c..144aa486 100644
--- a/pysnmp/entity/rfc3413/config.py
+++ b/pysnmp/entity/rfc3413/config.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pysnmp.smi.error import SmiError, NoSuchInstanceError
diff --git a/pysnmp/entity/rfc3413/context.py b/pysnmp/entity/rfc3413/context.py
index ec705a72..3975e670 100644
--- a/pysnmp/entity/rfc3413/context.py
+++ b/pysnmp/entity/rfc3413/context.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pyasn1.type import univ
diff --git a/pysnmp/entity/rfc3413/mibvar.py b/pysnmp/entity/rfc3413/mibvar.py
new file mode 100644
index 00000000..bfc63a06
--- /dev/null
+++ b/pysnmp/entity/rfc3413/mibvar.py
@@ -0,0 +1,82 @@
+#
+# This file is part of pysnmp software.
+#
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
+# License: http://snmplabs.com/pysnmp/license.html
+#
+# THESE FUNCTIONS ARE OBSOLETE AND MUST NOT BE USED!
+# USE pysnmp.entity.rfc3413.oneliner.mibvar INSTEAD
+#
+from pyasn1.type import univ
+from pysnmp.smi.error import NoSuchObjectError
+
+
+# Name
+
+def mibNameToOid(mibView, name):
+ if isinstance(name[0], tuple):
+ f = lambda x='', y='': (x, y)
+ modName, symName = f(*name[0])
+ if modName: # load module if needed
+ mibView.mibBuilder.loadModules(modName)
+ else:
+ mibView.mibBuilder.loadModules() # load all (slow)
+ if symName:
+ oid, label, suffix = mibView.getNodeNameByDesc(symName, modName)
+ else:
+ oid, label, suffix = mibView.getFirstNodeName(modName)
+ suffix = name[1:]
+ modName, symName, _s = mibView.getNodeLocation(oid)
+ mibNode, = mibView.mibBuilder.importSymbols(
+ modName, symName
+ )
+ if hasattr(mibNode, 'createTest'): # table column XXX
+ modName, symName, _s = mibView.getNodeLocation(oid[:-1])
+ rowNode, = mibView.mibBuilder.importSymbols(modName, symName)
+ return oid, rowNode.getInstIdFromIndices(*suffix)
+ else: # scalar or incomplete spec
+ return oid, suffix
+ elif not isinstance(name, tuple):
+ name = tuple(univ.ObjectIdentifier(name))
+
+ oid, label, suffix = mibView.getNodeNameByOid(name)
+
+ return oid, suffix
+
+
+__scalarSuffix = (univ.Integer(0),)
+
+
+def oidToMibName(mibView, oid):
+ if not isinstance(oid, tuple):
+ oid = tuple(univ.ObjectIdentifier(oid))
+ _oid, label, suffix = mibView.getNodeNameByOid(oid)
+ modName, symName, __suffix = mibView.getNodeLocation(_oid)
+ mibNode, = mibView.mibBuilder.importSymbols(
+ modName, symName
+ )
+ if hasattr(mibNode, 'createTest'): # table column
+ __modName, __symName, __s = mibView.getNodeLocation(_oid[:-1])
+ rowNode, = mibView.mibBuilder.importSymbols(__modName, __symName)
+ return (symName, modName), rowNode.getIndicesFromInstId(suffix)
+ elif not suffix: # scalar
+ return (symName, modName), suffix
+ elif suffix == (0,): # scalar
+ return (symName, modName), __scalarSuffix
+ else:
+ raise NoSuchObjectError(
+ str='No MIB registered that defines %s object, closest known parent is %s (%s::%s)' % (
+ univ.ObjectIdentifier(oid), univ.ObjectIdentifier(mibNode.name), modName, symName)
+ )
+
+
+# Value
+
+def cloneFromMibValue(mibView, modName, symName, value):
+ mibNode, = mibView.mibBuilder.importSymbols(
+ modName, symName
+ )
+ if hasattr(mibNode, 'syntax'): # scalar
+ return mibNode.syntax.clone(value)
+ else:
+ return # identifier
diff --git a/pysnmp/entity/rfc3413/ntforg.py b/pysnmp/entity/rfc3413/ntforg.py
index 85bdb9d0..19442b3a 100644
--- a/pysnmp/entity/rfc3413/ntforg.py
+++ b/pysnmp/entity/rfc3413/ntforg.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
import sys
diff --git a/pysnmp/entity/rfc3413/ntfrcv.py b/pysnmp/entity/rfc3413/ntfrcv.py
index df394a0c..fbec47ca 100644
--- a/pysnmp/entity/rfc3413/ntfrcv.py
+++ b/pysnmp/entity/rfc3413/ntfrcv.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
import sys
diff --git a/pysnmp/entity/rfc3413/oneliner/cmdgen.py b/pysnmp/entity/rfc3413/oneliner/cmdgen.py
new file mode 100644
index 00000000..b74b7f13
--- /dev/null
+++ b/pysnmp/entity/rfc3413/oneliner/cmdgen.py
@@ -0,0 +1,254 @@
+#
+# This file is part of pysnmp software.
+#
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
+# License: http://snmplabs.com/pysnmp/license.html
+#
+# All code in this file belongs to obsolete, compatibility wrappers.
+# Never use interfaces below for new applications!
+#
+from pysnmp.hlapi.asyncore import *
+from pysnmp.hlapi.asyncore import sync
+from pysnmp.hlapi.varbinds import *
+from pysnmp.hlapi.lcd import *
+from pyasn1.compat.octets import null
+from pyasn1.type import univ
+
+__all__ = ['AsynCommandGenerator', 'CommandGenerator', 'MibVariable']
+
+MibVariable = ObjectIdentity
+
+
+class AsynCommandGenerator(object):
+ _null = univ.Null('')
+
+ vbProcessor = CommandGeneratorVarBinds()
+ lcd = CommandGeneratorLcdConfigurator()
+
+ def __init__(self, snmpEngine=None):
+ if snmpEngine is None:
+ self.snmpEngine = SnmpEngine()
+ else:
+ self.snmpEngine = snmpEngine
+
+ self.mibViewController = self.vbProcessor.getMibViewController(self.snmpEngine)
+
+ def __del__(self):
+ self.lcd.unconfigure(self.snmpEngine)
+
+ def cfgCmdGen(self, authData, transportTarget):
+ return self.lcd.configure(self.snmpEngine, authData, transportTarget)
+
+ def uncfgCmdGen(self, authData=None):
+ return self.lcd.unconfigure(self.snmpEngine, authData)
+
+ # compatibility stub
+ def makeReadVarBinds(self, varNames):
+ return self.makeVarBinds([(x, self._null) for x in varNames])
+
+ def makeVarBinds(self, varBinds):
+ return self.vbProcessor.makeVarBinds(self.snmpEngine, varBinds)
+
+ def unmakeVarBinds(self, varBinds, lookupNames, lookupValues):
+ return self.vbProcessor.unmakeVarBinds(
+ self.snmpEngine, varBinds, lookupNames or lookupValues
+ )
+
+ def getCmd(self, authData, transportTarget, varNames, cbInfo,
+ lookupNames=False, lookupValues=False,
+ contextEngineId=None, contextName=null):
+
+ def __cbFun(snmpEngine, sendRequestHandle,
+ errorIndication, errorStatus, errorIndex,
+ varBindTable, cbInfo):
+ cbFun, cbCtx = cbInfo
+ cbFun(sendRequestHandle,
+ errorIndication, errorStatus, errorIndex,
+ varBindTable, cbCtx)
+
+ # for backward compatibility
+ if contextName is null and authData.contextName:
+ contextName = authData.contextName
+
+ return getCmd(
+ self.snmpEngine, authData, transportTarget,
+ ContextData(contextEngineId, contextName),
+ *[(x, self._null) for x in varNames],
+ **dict(cbFun=__cbFun, cbCtx=cbInfo,
+ lookupMib=lookupNames or lookupValues)
+ )
+
+ asyncGetCmd = getCmd
+
+ def setCmd(self, authData, transportTarget, varBinds, cbInfo,
+ lookupNames=False, lookupValues=False,
+ contextEngineId=None, contextName=null):
+
+ def __cbFun(snmpEngine, sendRequestHandle,
+ errorIndication, errorStatus, errorIndex,
+ varBindTable, cbInfo):
+ cbFun, cbCtx = cbInfo
+ cbFun(sendRequestHandle,
+ errorIndication, errorStatus, errorIndex,
+ varBindTable, cbCtx)
+
+ # for backward compatibility
+ if contextName is null and authData.contextName:
+ contextName = authData.contextName
+
+ return setCmd(
+ self.snmpEngine, authData, transportTarget,
+ ContextData(contextEngineId, contextName), *varBinds,
+ **dict(cbFun=__cbFun, cbCtx=cbInfo,
+ lookupMib=lookupNames or lookupValues)
+ )
+
+ asyncSetCmd = setCmd
+
+ def nextCmd(self, authData, transportTarget, varNames, cbInfo,
+ lookupNames=False, lookupValues=False,
+ contextEngineId=None, contextName=null):
+
+ def __cbFun(snmpEngine, sendRequestHandle,
+ errorIndication, errorStatus, errorIndex,
+ varBindTable, cbInfo):
+ cbFun, cbCtx = cbInfo
+ return cbFun(sendRequestHandle,
+ errorIndication, errorStatus, errorIndex,
+ varBindTable, cbCtx)
+
+ # for backward compatibility
+ if contextName is null and authData.contextName:
+ contextName = authData.contextName
+
+ return nextCmd(
+ self.snmpEngine, authData, transportTarget,
+ ContextData(contextEngineId, contextName),
+ *[(x, self._null) for x in varNames],
+ **dict(cbFun=__cbFun, cbCtx=cbInfo,
+ lookupMib=lookupNames or lookupValues)
+ )
+
+ asyncNextCmd = nextCmd
+
+ def bulkCmd(self, authData, transportTarget,
+ nonRepeaters, maxRepetitions, varNames, cbInfo,
+ lookupNames=False, lookupValues=False,
+ contextEngineId=None, contextName=null):
+
+ def __cbFun(snmpEngine, sendRequestHandle,
+ errorIndication, errorStatus, errorIndex,
+ varBindTable, cbInfo):
+ cbFun, cbCtx = cbInfo
+ return cbFun(sendRequestHandle,
+ errorIndication, errorStatus, errorIndex,
+ varBindTable, cbCtx)
+
+ # for backward compatibility
+ if contextName is null and authData.contextName:
+ contextName = authData.contextName
+
+ return bulkCmd(
+ self.snmpEngine, authData, transportTarget,
+ ContextData(contextEngineId, contextName),
+ nonRepeaters, maxRepetitions,
+ *[(x, self._null) for x in varNames],
+ **dict(cbFun=__cbFun, cbCtx=cbInfo,
+ lookupMib=lookupNames or lookupValues)
+ )
+
+ asyncBulkCmd = bulkCmd
+
+
+class CommandGenerator(object):
+ _null = univ.Null('')
+
+ def __init__(self, snmpEngine=None, asynCmdGen=None):
+ # compatibility attributes
+ self.snmpEngine = snmpEngine or SnmpEngine()
+
+ def getCmd(self, authData, transportTarget, *varNames, **kwargs):
+ if 'lookupNames' not in kwargs:
+ kwargs['lookupNames'] = False
+ if 'lookupValues' not in kwargs:
+ kwargs['lookupValues'] = False
+ errorIndication, errorStatus, errorIndex, varBinds = None, 0, 0, []
+ for (errorIndication,
+ errorStatus,
+ errorIndex,
+ varBinds) in sync.getCmd(self.snmpEngine, authData, transportTarget,
+ ContextData(kwargs.get('contextEngineId'),
+ kwargs.get('contextName', null)),
+ *[(x, self._null) for x in varNames],
+ **kwargs):
+ break
+ return errorIndication, errorStatus, errorIndex, varBinds
+
+ def setCmd(self, authData, transportTarget, *varBinds, **kwargs):
+ if 'lookupNames' not in kwargs:
+ kwargs['lookupNames'] = False
+ if 'lookupValues' not in kwargs:
+ kwargs['lookupValues'] = False
+ errorIndication, errorStatus, errorIndex, rspVarBinds = None, 0, 0, []
+ for (errorIndication,
+ errorStatus,
+ errorIndex,
+ rspVarBinds) in sync.setCmd(self.snmpEngine, authData, transportTarget,
+ ContextData(kwargs.get('contextEngineId'),
+ kwargs.get('contextName', null)),
+ *varBinds,
+ **kwargs):
+ break
+
+ return errorIndication, errorStatus, errorIndex, rspVarBinds
+
+ def nextCmd(self, authData, transportTarget, *varNames, **kwargs):
+ if 'lookupNames' not in kwargs:
+ kwargs['lookupNames'] = False
+ if 'lookupValues' not in kwargs:
+ kwargs['lookupValues'] = False
+ if 'lexicographicMode' not in kwargs:
+ kwargs['lexicographicMode'] = False
+ errorIndication, errorStatus, errorIndex = None, 0, 0
+ varBindTable = []
+ for (errorIndication,
+ errorStatus,
+ errorIndex,
+ varBinds) in sync.nextCmd(self.snmpEngine, authData, transportTarget,
+ ContextData(kwargs.get('contextEngineId'),
+ kwargs.get('contextName', null)),
+ *[(x, self._null) for x in varNames],
+ **kwargs):
+ if errorIndication or errorStatus:
+ return errorIndication, errorStatus, errorIndex, varBinds
+
+ varBindTable.append(varBinds)
+
+ return errorIndication, errorStatus, errorIndex, varBindTable
+
+ def bulkCmd(self, authData, transportTarget,
+ nonRepeaters, maxRepetitions, *varNames, **kwargs):
+ if 'lookupNames' not in kwargs:
+ kwargs['lookupNames'] = False
+ if 'lookupValues' not in kwargs:
+ kwargs['lookupValues'] = False
+ if 'lexicographicMode' not in kwargs:
+ kwargs['lexicographicMode'] = False
+ errorIndication, errorStatus, errorIndex = None, 0, 0
+ varBindTable = []
+ for (errorIndication,
+ errorStatus,
+ errorIndex,
+ varBinds) in sync.bulkCmd(self.snmpEngine, authData,
+ transportTarget,
+ ContextData(kwargs.get('contextEngineId'),
+ kwargs.get('contextName', null)),
+ nonRepeaters, maxRepetitions,
+ *[(x, self._null) for x in varNames],
+ **kwargs):
+ if errorIndication or errorStatus:
+ return errorIndication, errorStatus, errorIndex, varBinds
+
+ varBindTable.append(varBinds)
+
+ return errorIndication, errorStatus, errorIndex, varBindTable
diff --git a/pysnmp/entity/rfc3413/oneliner/ntforg.py b/pysnmp/entity/rfc3413/oneliner/ntforg.py
new file mode 100644
index 00000000..0f0d2d2e
--- /dev/null
+++ b/pysnmp/entity/rfc3413/oneliner/ntforg.py
@@ -0,0 +1,180 @@
+#
+# This file is part of pysnmp software.
+#
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
+# License: http://snmplabs.com/pysnmp/license.html
+#
+# All code in this file belongs to obsolete, compatibility wrappers.
+# Never use interfaces below for new applications!
+#
+from pysnmp.hlapi.asyncore import *
+from pysnmp.hlapi.asyncore import sync
+from pysnmp.hlapi.varbinds import *
+from pysnmp.hlapi.lcd import *
+from pyasn1.compat.octets import null
+from pysnmp.entity import config
+from pysnmp.entity.rfc3413 import context
+
+__all__ = ['AsynNotificationOriginator',
+ 'NotificationOriginator',
+ 'MibVariable']
+
+MibVariable = ObjectIdentity
+
+
+class ErrorIndicationReturn(object):
+ def __init__(self, *vars):
+ self.__vars = vars
+
+ def __getitem__(self, i):
+ return self.__vars[i]
+
+ def __nonzero__(self):
+ return bool(self)
+
+ def __bool__(self):
+ return bool(self.__vars[0])
+
+ def __str__(self):
+ return str(self.__vars[0])
+
+
+class AsynNotificationOriginator(object):
+ vbProcessor = NotificationOriginatorVarBinds()
+ lcd = NotificationOriginatorLcdConfigurator()
+
+ def __init__(self, snmpEngine=None, snmpContext=None):
+ if snmpEngine is None:
+ self.snmpEngine = snmpEngine = SnmpEngine()
+ else:
+ self.snmpEngine = snmpEngine
+
+ if snmpContext is None:
+ self.snmpContext = context.SnmpContext(self.snmpEngine)
+ config.addContext(
+ self.snmpEngine, '' # this is leaky
+ )
+ else:
+ self.snmpContext = snmpContext
+
+ self.mibViewController = self.vbProcessor.getMibViewController(self.snmpEngine)
+
+ def __del__(self):
+ self.uncfgNtfOrg()
+
+ def cfgNtfOrg(self, authData, transportTarget, notifyType):
+ return self.lcd.configure(
+ self.snmpEngine, authData, transportTarget, notifyType
+ )
+
+ def uncfgNtfOrg(self, authData=None):
+ return self.lcd.unconfigure(self.snmpEngine, authData)
+
+ def makeVarBinds(self, varBinds):
+ return self.vbProcessor.makeVarBinds(
+ self.snmpEngine, varBinds
+ )
+
+ def unmakeVarBinds(self, varBinds, lookupNames, lookupValues):
+ return self.vbProcessor.unmakeVarBinds(
+ self.snmpEngine, varBinds, lookupNames or lookupValues
+ )
+
+ def sendNotification(self, authData, transportTarget,
+ notifyType, notificationType,
+ varBinds=(), # legacy, use NotificationType instead
+ cbInfo=(None, None),
+ lookupNames=False, lookupValues=False,
+ contextEngineId=None, # XXX ordering incompatibility
+ contextName=null):
+
+ def __cbFun(snmpEngine, sendRequestHandle, errorIndication,
+ errorStatus, errorIndex, varBinds, cbCtx):
+ cbFun, cbCtx = cbCtx
+ try:
+ # we need to pass response PDU information to user for INFORMs
+ return cbFun and cbFun(
+ sendRequestHandle,
+ errorIndication,
+ errorStatus, errorIndex,
+ varBinds,
+ cbCtx
+ )
+ except TypeError:
+ # a backward compatible way of calling user function
+ return cbFun(
+ sendRequestHandle,
+ errorIndication,
+ cbCtx
+ )
+
+ # for backward compatibility
+ if contextName is null and authData.contextName:
+ contextName = authData.contextName
+
+ if not isinstance(notificationType,
+ (ObjectIdentity, ObjectType, NotificationType)):
+ if isinstance(notificationType[0], tuple):
+ # legacy
+ notificationType = ObjectIdentity(notificationType[0][0], notificationType[0][1], *notificationType[1:])
+ else:
+ notificationType = ObjectIdentity(notificationType)
+
+ if not isinstance(notificationType, NotificationType):
+ notificationType = NotificationType(notificationType)
+
+ return sendNotification(
+ self.snmpEngine,
+ authData, transportTarget,
+ ContextData(contextEngineId or self.snmpContext.contextEngineId,
+ contextName),
+ notifyType, notificationType.addVarBinds(*varBinds),
+ __cbFun,
+ cbInfo,
+ lookupNames or lookupValues
+ )
+
+ asyncSendNotification = sendNotification
+
+
+class NotificationOriginator(object):
+ vbProcessor = NotificationOriginatorVarBinds()
+
+ def __init__(self, snmpEngine=None, snmpContext=None, asynNtfOrg=None):
+ # compatibility attributes
+ self.snmpEngine = snmpEngine or SnmpEngine()
+ self.mibViewController = self.vbProcessor.getMibViewController(self.snmpEngine)
+
+ # the varBinds parameter is legacy, use NotificationType instead
+
+ def sendNotification(self, authData, transportTarget, notifyType,
+ notificationType, *varBinds, **kwargs):
+ if 'lookupNames' not in kwargs:
+ kwargs['lookupNames'] = False
+ if 'lookupValues' not in kwargs:
+ kwargs['lookupValues'] = False
+ if not isinstance(notificationType,
+ (ObjectIdentity, ObjectType, NotificationType)):
+ if isinstance(notificationType[0], tuple):
+ # legacy
+ notificationType = ObjectIdentity(notificationType[0][0], notificationType[0][1], *notificationType[1:])
+ else:
+ notificationType = ObjectIdentity(notificationType)
+
+ if not isinstance(notificationType, NotificationType):
+ notificationType = NotificationType(notificationType)
+
+ for (errorIndication,
+ errorStatus,
+ errorIndex,
+ rspVarBinds) in sync.sendNotification(self.snmpEngine, authData,
+ transportTarget,
+ ContextData(kwargs.get('contextEngineId'),
+ kwargs.get('contextName', null)),
+ notifyType,
+ notificationType.addVarBinds(*varBinds),
+ **kwargs):
+ if notifyType == 'inform':
+ return errorIndication, errorStatus, errorIndex, rspVarBinds
+ else:
+ break
diff --git a/pysnmp/error.py b/pysnmp/error.py
index e47f4bcb..f8004638 100644
--- a/pysnmp/error.py
+++ b/pysnmp/error.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
diff --git a/pysnmp/hlapi/__init__.py b/pysnmp/hlapi/__init__.py
index da9788e3..6da0e1cd 100644
--- a/pysnmp/hlapi/__init__.py
+++ b/pysnmp/hlapi/__init__.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
diff --git a/pysnmp/hlapi/asyncore/sync/__init__.py b/pysnmp/hlapi/asyncore/sync/__init__.py
new file mode 100644
index 00000000..14f6b926
--- /dev/null
+++ b/pysnmp/hlapi/asyncore/sync/__init__.py
@@ -0,0 +1,19 @@
+#
+# This file is part of pysnmp software.
+#
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
+# License: http://snmplabs.com/pysnmp/license.html
+#
+from pysnmp.proto.rfc1902 import *
+from pysnmp.smi.rfc1902 import *
+from pysnmp.hlapi.auth import *
+from pysnmp.hlapi.context import *
+from pysnmp.hlapi.asyncore.transport import *
+from pysnmp.entity.engine import *
+
+try:
+ from pysnmp.hlapi.asyncore.sync.cmdgen import *
+ from pysnmp.hlapi.asyncore.sync.ntforg import *
+except SyntaxError:
+ from pysnmp.hlapi.asyncore.sync.compat.cmdgen import *
+ from pysnmp.hlapi.asyncore.sync.compat.ntforg import *
diff --git a/pysnmp/hlapi/transport.py b/pysnmp/hlapi/transport.py
index 44a36504..351f01f1 100644
--- a/pysnmp/hlapi/transport.py
+++ b/pysnmp/hlapi/transport.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pyasn1.compat.octets import null
diff --git a/pysnmp/hlapi/v1arch/__init__.py b/pysnmp/hlapi/v1arch/__init__.py
index 22290a8f..feec6bb1 100644
--- a/pysnmp/hlapi/v1arch/__init__.py
+++ b/pysnmp/hlapi/v1arch/__init__.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pysnmp.proto.rfc1902 import *
diff --git a/pysnmp/hlapi/v1arch/asyncore/__init__.py b/pysnmp/hlapi/v1arch/asyncore/__init__.py
index d58bee7b..bd03fae5 100644
--- a/pysnmp/hlapi/v1arch/asyncore/__init__.py
+++ b/pysnmp/hlapi/v1arch/asyncore/__init__.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pysnmp.proto.rfc1902 import *
diff --git a/pysnmp/hlapi/v1arch/asyncore/cmdgen.py b/pysnmp/hlapi/v1arch/asyncore/cmdgen.py
index e178efe3..3d52bc43 100644
--- a/pysnmp/hlapi/v1arch/asyncore/cmdgen.py
+++ b/pysnmp/hlapi/v1arch/asyncore/cmdgen.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
diff --git a/pysnmp/hlapi/v1arch/asyncore/dispatch.py b/pysnmp/hlapi/v1arch/asyncore/dispatch.py
index d77b8551..16a187dd 100644
--- a/pysnmp/hlapi/v1arch/asyncore/dispatch.py
+++ b/pysnmp/hlapi/v1arch/asyncore/dispatch.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pysnmp.carrier.asyncore.dispatch import AsyncoreDispatcher
diff --git a/pysnmp/hlapi/v1arch/asyncore/ntforg.py b/pysnmp/hlapi/v1arch/asyncore/ntforg.py
index a7767051..d46ade57 100644
--- a/pysnmp/hlapi/v1arch/asyncore/ntforg.py
+++ b/pysnmp/hlapi/v1arch/asyncore/ntforg.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pysnmp.hlapi.varbinds import *
diff --git a/pysnmp/hlapi/v1arch/asyncore/sync/__init__.py b/pysnmp/hlapi/v1arch/asyncore/sync/__init__.py
index 5481cb96..0b16411e 100644
--- a/pysnmp/hlapi/v1arch/asyncore/sync/__init__.py
+++ b/pysnmp/hlapi/v1arch/asyncore/sync/__init__.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pysnmp.proto.rfc1902 import *
diff --git a/pysnmp/hlapi/v1arch/asyncore/sync/cmdgen.py b/pysnmp/hlapi/v1arch/asyncore/sync/cmdgen.py
index 8031cc57..f0c19f59 100644
--- a/pysnmp/hlapi/v1arch/asyncore/sync/cmdgen.py
+++ b/pysnmp/hlapi/v1arch/asyncore/sync/cmdgen.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from sys import version_info
diff --git a/pysnmp/hlapi/v1arch/asyncore/sync/ntforg.py b/pysnmp/hlapi/v1arch/asyncore/sync/ntforg.py
index 25912ff4..4732b460 100644
--- a/pysnmp/hlapi/v1arch/asyncore/sync/ntforg.py
+++ b/pysnmp/hlapi/v1arch/asyncore/sync/ntforg.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from sys import version_info
diff --git a/pysnmp/hlapi/v1arch/asyncore/transport.py b/pysnmp/hlapi/v1arch/asyncore/transport.py
index be5e336d..f0bd17e8 100644
--- a/pysnmp/hlapi/v1arch/asyncore/transport.py
+++ b/pysnmp/hlapi/v1arch/asyncore/transport.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
import socket
diff --git a/pysnmp/hlapi/v1arch/auth.py b/pysnmp/hlapi/v1arch/auth.py
index 761f9738..14421b46 100644
--- a/pysnmp/hlapi/v1arch/auth.py
+++ b/pysnmp/hlapi/v1arch/auth.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
diff --git a/pysnmp/hlapi/v1arch/dispatch.py b/pysnmp/hlapi/v1arch/dispatch.py
index 09041eb2..48c67599 100644
--- a/pysnmp/hlapi/v1arch/dispatch.py
+++ b/pysnmp/hlapi/v1arch/dispatch.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from time import time
diff --git a/pysnmp/hlapi/v3arch/__init__.py b/pysnmp/hlapi/v3arch/__init__.py
index 9e5f7779..82c88bba 100644
--- a/pysnmp/hlapi/v3arch/__init__.py
+++ b/pysnmp/hlapi/v3arch/__init__.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pysnmp.proto.rfc1902 import *
diff --git a/pysnmp/hlapi/v3arch/asyncio/__init__.py b/pysnmp/hlapi/v3arch/asyncio/__init__.py
index 98f67187..53a9e999 100644
--- a/pysnmp/hlapi/v3arch/asyncio/__init__.py
+++ b/pysnmp/hlapi/v3arch/asyncio/__init__.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pysnmp.proto.rfc1902 import *
diff --git a/pysnmp/hlapi/v3arch/asyncio/cmdgen.py b/pysnmp/hlapi/v3arch/asyncio/cmdgen.py
index 5b243e16..278be5be 100644
--- a/pysnmp/hlapi/v3arch/asyncio/cmdgen.py
+++ b/pysnmp/hlapi/v3arch/asyncio/cmdgen.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
# Copyright (C) 2014, Zebra Technologies
diff --git a/pysnmp/hlapi/v3arch/asyncio/ntforg.py b/pysnmp/hlapi/v3arch/asyncio/ntforg.py
index 3c9b0640..67601fe4 100644
--- a/pysnmp/hlapi/v3arch/asyncio/ntforg.py
+++ b/pysnmp/hlapi/v3arch/asyncio/ntforg.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
# Copyright (C) 2014, Zebra Technologies
diff --git a/pysnmp/hlapi/v3arch/asyncio/transport.py b/pysnmp/hlapi/v3arch/asyncio/transport.py
index 86423dfc..a357fa05 100644
--- a/pysnmp/hlapi/v3arch/asyncio/transport.py
+++ b/pysnmp/hlapi/v3arch/asyncio/transport.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
import socket
diff --git a/pysnmp/hlapi/v3arch/asyncore/__init__.py b/pysnmp/hlapi/v3arch/asyncore/__init__.py
index 9cef379f..99c38f98 100644
--- a/pysnmp/hlapi/v3arch/asyncore/__init__.py
+++ b/pysnmp/hlapi/v3arch/asyncore/__init__.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pysnmp.proto.rfc1902 import *
diff --git a/pysnmp/hlapi/v3arch/asyncore/cmdgen.py b/pysnmp/hlapi/v3arch/asyncore/cmdgen.py
index beda83b3..475a2ea7 100644
--- a/pysnmp/hlapi/v3arch/asyncore/cmdgen.py
+++ b/pysnmp/hlapi/v3arch/asyncore/cmdgen.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pysnmp.entity.rfc3413 import cmdgen
diff --git a/pysnmp/hlapi/v3arch/asyncore/ntforg.py b/pysnmp/hlapi/v3arch/asyncore/ntforg.py
index 66718450..c6669d35 100644
--- a/pysnmp/hlapi/v3arch/asyncore/ntforg.py
+++ b/pysnmp/hlapi/v3arch/asyncore/ntforg.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pysnmp.smi.rfc1902 import *
diff --git a/pysnmp/hlapi/v3arch/asyncore/sync/__init__.py b/pysnmp/hlapi/v3arch/asyncore/sync/__init__.py
index be6f9ec1..b537bc28 100644
--- a/pysnmp/hlapi/v3arch/asyncore/sync/__init__.py
+++ b/pysnmp/hlapi/v3arch/asyncore/sync/__init__.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pysnmp.proto.rfc1902 import *
diff --git a/pysnmp/hlapi/v3arch/asyncore/sync/cmdgen.py b/pysnmp/hlapi/v3arch/asyncore/sync/cmdgen.py
index 00848e52..a2c0efc2 100644
--- a/pysnmp/hlapi/v3arch/asyncore/sync/cmdgen.py
+++ b/pysnmp/hlapi/v3arch/asyncore/sync/cmdgen.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from sys import version_info
diff --git a/pysnmp/hlapi/v3arch/asyncore/sync/compat/cmdgen.py b/pysnmp/hlapi/v3arch/asyncore/sync/compat/cmdgen.py
index ff760ee5..8fa5784d 100644
--- a/pysnmp/hlapi/v3arch/asyncore/sync/compat/cmdgen.py
+++ b/pysnmp/hlapi/v3arch/asyncore/sync/compat/cmdgen.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
# This is a Python 2.6- version of the same file at level up
diff --git a/pysnmp/hlapi/v3arch/asyncore/sync/compat/ntforg.py b/pysnmp/hlapi/v3arch/asyncore/sync/compat/ntforg.py
index 173dbc95..5b10cd0e 100644
--- a/pysnmp/hlapi/v3arch/asyncore/sync/compat/ntforg.py
+++ b/pysnmp/hlapi/v3arch/asyncore/sync/compat/ntforg.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
# This is a Python 2.6- version of the same file at level up
diff --git a/pysnmp/hlapi/v3arch/asyncore/sync/ntforg.py b/pysnmp/hlapi/v3arch/asyncore/sync/ntforg.py
index 8e80a740..c466c869 100644
--- a/pysnmp/hlapi/v3arch/asyncore/sync/ntforg.py
+++ b/pysnmp/hlapi/v3arch/asyncore/sync/ntforg.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from sys import version_info
diff --git a/pysnmp/hlapi/v3arch/asyncore/transport.py b/pysnmp/hlapi/v3arch/asyncore/transport.py
index 6019bd02..1d7bfd57 100644
--- a/pysnmp/hlapi/v3arch/asyncore/transport.py
+++ b/pysnmp/hlapi/v3arch/asyncore/transport.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
import socket
diff --git a/pysnmp/hlapi/v3arch/auth.py b/pysnmp/hlapi/v3arch/auth.py
index 20db368f..2c729b22 100644
--- a/pysnmp/hlapi/v3arch/auth.py
+++ b/pysnmp/hlapi/v3arch/auth.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pysnmp.entity import config
diff --git a/pysnmp/hlapi/v3arch/context.py b/pysnmp/hlapi/v3arch/context.py
index 754c43cc..73e850b2 100644
--- a/pysnmp/hlapi/v3arch/context.py
+++ b/pysnmp/hlapi/v3arch/context.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pyasn1.compat.octets import null
diff --git a/pysnmp/hlapi/v3arch/lcd.py b/pysnmp/hlapi/v3arch/lcd.py
index a094fdc7..c56592e6 100644
--- a/pysnmp/hlapi/v3arch/lcd.py
+++ b/pysnmp/hlapi/v3arch/lcd.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pysnmp.entity import config
diff --git a/pysnmp/hlapi/v3arch/twisted/cmdgen.py b/pysnmp/hlapi/v3arch/twisted/cmdgen.py
index 30eb5b4d..cb82a93a 100644
--- a/pysnmp/hlapi/v3arch/twisted/cmdgen.py
+++ b/pysnmp/hlapi/v3arch/twisted/cmdgen.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pysnmp.smi.rfc1902 import *
diff --git a/pysnmp/hlapi/v3arch/twisted/ntforg.py b/pysnmp/hlapi/v3arch/twisted/ntforg.py
index ba05bb47..73cb4172 100644
--- a/pysnmp/hlapi/v3arch/twisted/ntforg.py
+++ b/pysnmp/hlapi/v3arch/twisted/ntforg.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pysnmp.smi.rfc1902 import *
diff --git a/pysnmp/hlapi/v3arch/twisted/transport.py b/pysnmp/hlapi/v3arch/twisted/transport.py
index 0db45a70..663efcf1 100644
--- a/pysnmp/hlapi/v3arch/twisted/transport.py
+++ b/pysnmp/hlapi/v3arch/twisted/transport.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
import socket
diff --git a/pysnmp/hlapi/varbinds.py b/pysnmp/hlapi/varbinds.py
index 6c0c2905..7414754f 100644
--- a/pysnmp/hlapi/varbinds.py
+++ b/pysnmp/hlapi/varbinds.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pysnmp.smi.rfc1902 import *
diff --git a/pysnmp/nextid.py b/pysnmp/nextid.py
index 04e269d0..f81bc9b6 100644
--- a/pysnmp/nextid.py
+++ b/pysnmp/nextid.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
import random
diff --git a/pysnmp/proto/acmod/rfc3415.py b/pysnmp/proto/acmod/rfc3415.py
index 3c5afe9e..cf020d9f 100644
--- a/pysnmp/proto/acmod/rfc3415.py
+++ b/pysnmp/proto/acmod/rfc3415.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pysnmp.smi.error import NoSuchInstanceError
diff --git a/pysnmp/proto/acmod/void.py b/pysnmp/proto/acmod/void.py
index 3d9533d4..ecc4c4b6 100644
--- a/pysnmp/proto/acmod/void.py
+++ b/pysnmp/proto/acmod/void.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pysnmp.proto import errind, error
diff --git a/pysnmp/proto/api/__init__.py b/pysnmp/proto/api/__init__.py
index 85b37bb4..d742ecc7 100644
--- a/pysnmp/proto/api/__init__.py
+++ b/pysnmp/proto/api/__init__.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pysnmp.proto.api import v1, v2c, verdec
diff --git a/pysnmp/proto/api/v1.py b/pysnmp/proto/api/v1.py
index e6a138df..e0233ff5 100644
--- a/pysnmp/proto/api/v1.py
+++ b/pysnmp/proto/api/v1.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pyasn1.type import univ
diff --git a/pysnmp/proto/api/v2c.py b/pysnmp/proto/api/v2c.py
index cf381ced..f877ea08 100644
--- a/pysnmp/proto/api/v2c.py
+++ b/pysnmp/proto/api/v2c.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pysnmp.proto import rfc1901, rfc1902, rfc1905
diff --git a/pysnmp/proto/api/verdec.py b/pysnmp/proto/api/verdec.py
index 635c5a2d..7076e63c 100644
--- a/pysnmp/proto/api/verdec.py
+++ b/pysnmp/proto/api/verdec.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pyasn1.type import univ
diff --git a/pysnmp/proto/cache.py b/pysnmp/proto/cache.py
index e9218416..9eae19c9 100644
--- a/pysnmp/proto/cache.py
+++ b/pysnmp/proto/cache.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pysnmp.proto import error
diff --git a/pysnmp/proto/errind.py b/pysnmp/proto/errind.py
index 1a0f9f00..b300d324 100644
--- a/pysnmp/proto/errind.py
+++ b/pysnmp/proto/errind.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
diff --git a/pysnmp/proto/error.py b/pysnmp/proto/error.py
index eaa21f6b..14e6b737 100644
--- a/pysnmp/proto/error.py
+++ b/pysnmp/proto/error.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pyasn1.error import PyAsn1Error
diff --git a/pysnmp/proto/mpmod/base.py b/pysnmp/proto/mpmod/base.py
index 2ed7834c..620ccf89 100644
--- a/pysnmp/proto/mpmod/base.py
+++ b/pysnmp/proto/mpmod/base.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pysnmp.proto.mpmod import cache
diff --git a/pysnmp/proto/mpmod/cache.py b/pysnmp/proto/mpmod/cache.py
index 6e9a886d..4bc67169 100644
--- a/pysnmp/proto/mpmod/cache.py
+++ b/pysnmp/proto/mpmod/cache.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pysnmp.proto import error
diff --git a/pysnmp/proto/mpmod/rfc2576.py b/pysnmp/proto/mpmod/rfc2576.py
index 717110d3..b355868f 100644
--- a/pysnmp/proto/mpmod/rfc2576.py
+++ b/pysnmp/proto/mpmod/rfc2576.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
import sys
diff --git a/pysnmp/proto/proxy/rfc2576.py b/pysnmp/proto/proxy/rfc2576.py
index 6ea99b59..6b1dfcbb 100644
--- a/pysnmp/proto/proxy/rfc2576.py
+++ b/pysnmp/proto/proxy/rfc2576.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pysnmp.proto import rfc1905, rfc3411, error
diff --git a/pysnmp/proto/rfc1155.py b/pysnmp/proto/rfc1155.py
index 7bd2ea0f..8fb48e8c 100644
--- a/pysnmp/proto/rfc1155.py
+++ b/pysnmp/proto/rfc1155.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pyasn1.type import univ, tag, constraint, namedtype
diff --git a/pysnmp/proto/rfc1157.py b/pysnmp/proto/rfc1157.py
index 603e8041..8cd354b8 100644
--- a/pysnmp/proto/rfc1157.py
+++ b/pysnmp/proto/rfc1157.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pyasn1.type import univ, tag, namedtype, namedval
diff --git a/pysnmp/proto/rfc1901.py b/pysnmp/proto/rfc1901.py
index c4d83ad4..de912395 100644
--- a/pysnmp/proto/rfc1901.py
+++ b/pysnmp/proto/rfc1901.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pyasn1.type import univ, namedtype, namedval
diff --git a/pysnmp/proto/rfc1902.py b/pysnmp/proto/rfc1902.py
index 4bd82669..60dd6a84 100644
--- a/pysnmp/proto/rfc1902.py
+++ b/pysnmp/proto/rfc1902.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from sys import version_info
diff --git a/pysnmp/proto/rfc1905.py b/pysnmp/proto/rfc1905.py
index ac108617..4a229495 100644
--- a/pysnmp/proto/rfc1905.py
+++ b/pysnmp/proto/rfc1905.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pyasn1.type import univ, tag, constraint, namedtype, namedval
diff --git a/pysnmp/proto/rfc3411.py b/pysnmp/proto/rfc3411.py
index d45353ef..bd4d40d3 100644
--- a/pysnmp/proto/rfc3411.py
+++ b/pysnmp/proto/rfc3411.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pysnmp.proto import rfc1157, rfc1905
diff --git a/pysnmp/proto/rfc3412.py b/pysnmp/proto/rfc3412.py
index 629dfcce..23f61933 100644
--- a/pysnmp/proto/rfc3412.py
+++ b/pysnmp/proto/rfc3412.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
import sys
diff --git a/pysnmp/proto/secmod/base.py b/pysnmp/proto/secmod/base.py
index 58fbca19..63df39c7 100644
--- a/pysnmp/proto/secmod/base.py
+++ b/pysnmp/proto/secmod/base.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pysnmp.proto.secmod import cache
diff --git a/pysnmp/proto/secmod/cache.py b/pysnmp/proto/secmod/cache.py
index b6a0992f..f5843c50 100644
--- a/pysnmp/proto/secmod/cache.py
+++ b/pysnmp/proto/secmod/cache.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pysnmp import nextid
diff --git a/pysnmp/proto/secmod/eso/priv/aes192.py b/pysnmp/proto/secmod/eso/priv/aes192.py
index 33da5154..399a225b 100644
--- a/pysnmp/proto/secmod/eso/priv/aes192.py
+++ b/pysnmp/proto/secmod/eso/priv/aes192.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pysnmp.proto.secmod.eso.priv import aesbase
diff --git a/pysnmp/proto/secmod/eso/priv/aes256.py b/pysnmp/proto/secmod/eso/priv/aes256.py
index 08d120d6..360f26c3 100644
--- a/pysnmp/proto/secmod/eso/priv/aes256.py
+++ b/pysnmp/proto/secmod/eso/priv/aes256.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pysnmp.proto.secmod.eso.priv import aesbase
diff --git a/pysnmp/proto/secmod/eso/priv/aesbase.py b/pysnmp/proto/secmod/eso/priv/aesbase.py
index 540ab069..676afbbb 100644
--- a/pysnmp/proto/secmod/eso/priv/aesbase.py
+++ b/pysnmp/proto/secmod/eso/priv/aesbase.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pysnmp.proto.secmod.rfc3826.priv import aes
diff --git a/pysnmp/proto/secmod/eso/priv/des3.py b/pysnmp/proto/secmod/eso/priv/des3.py
index 51f7ad75..fa6e20b9 100644
--- a/pysnmp/proto/secmod/eso/priv/des3.py
+++ b/pysnmp/proto/secmod/eso/priv/des3.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
import random
diff --git a/pysnmp/proto/secmod/rfc2576.py b/pysnmp/proto/secmod/rfc2576.py
index f7947d97..4cbb2f74 100644
--- a/pysnmp/proto/secmod/rfc2576.py
+++ b/pysnmp/proto/secmod/rfc2576.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
import sys
diff --git a/pysnmp/proto/secmod/rfc3414/__init__.py b/pysnmp/proto/secmod/rfc3414/__init__.py
index 9d06a20f..cb2709fc 100644
--- a/pysnmp/proto/secmod/rfc3414/__init__.py
+++ b/pysnmp/proto/secmod/rfc3414/__init__.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pysnmp.proto.secmod.rfc3414 import service
diff --git a/pysnmp/proto/secmod/rfc3414/auth/base.py b/pysnmp/proto/secmod/rfc3414/auth/base.py
index 496f1bcd..3ff8778f 100644
--- a/pysnmp/proto/secmod/rfc3414/auth/base.py
+++ b/pysnmp/proto/secmod/rfc3414/auth/base.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pysnmp.proto import errind, error
diff --git a/pysnmp/proto/secmod/rfc3414/auth/hmacmd5.py b/pysnmp/proto/secmod/rfc3414/auth/hmacmd5.py
index 387c8f39..761bf3d9 100644
--- a/pysnmp/proto/secmod/rfc3414/auth/hmacmd5.py
+++ b/pysnmp/proto/secmod/rfc3414/auth/hmacmd5.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
try:
diff --git a/pysnmp/proto/secmod/rfc3414/auth/hmacsha.py b/pysnmp/proto/secmod/rfc3414/auth/hmacsha.py
index d4b900f3..3efe9c49 100644
--- a/pysnmp/proto/secmod/rfc3414/auth/hmacsha.py
+++ b/pysnmp/proto/secmod/rfc3414/auth/hmacsha.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
try:
diff --git a/pysnmp/proto/secmod/rfc3414/auth/noauth.py b/pysnmp/proto/secmod/rfc3414/auth/noauth.py
index fbd4104b..d1dea4f5 100644
--- a/pysnmp/proto/secmod/rfc3414/auth/noauth.py
+++ b/pysnmp/proto/secmod/rfc3414/auth/noauth.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pysnmp.proto.secmod.rfc3414.auth import base
diff --git a/pysnmp/proto/secmod/rfc3414/localkey.py b/pysnmp/proto/secmod/rfc3414/localkey.py
index c7c730f2..651722e4 100644
--- a/pysnmp/proto/secmod/rfc3414/localkey.py
+++ b/pysnmp/proto/secmod/rfc3414/localkey.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
try:
diff --git a/pysnmp/proto/secmod/rfc3414/priv/base.py b/pysnmp/proto/secmod/rfc3414/priv/base.py
index c15c973f..a7c68a11 100644
--- a/pysnmp/proto/secmod/rfc3414/priv/base.py
+++ b/pysnmp/proto/secmod/rfc3414/priv/base.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pysnmp.proto import error
diff --git a/pysnmp/proto/secmod/rfc3414/priv/des.py b/pysnmp/proto/secmod/rfc3414/priv/des.py
index f64abc8a..881989be 100644
--- a/pysnmp/proto/secmod/rfc3414/priv/des.py
+++ b/pysnmp/proto/secmod/rfc3414/priv/des.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
import random
diff --git a/pysnmp/proto/secmod/rfc3414/priv/nopriv.py b/pysnmp/proto/secmod/rfc3414/priv/nopriv.py
index 473cd4fb..6721153b 100644
--- a/pysnmp/proto/secmod/rfc3414/priv/nopriv.py
+++ b/pysnmp/proto/secmod/rfc3414/priv/nopriv.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pysnmp.proto.secmod.rfc3414.priv import base
diff --git a/pysnmp/proto/secmod/rfc3414/service.py b/pysnmp/proto/secmod/rfc3414/service.py
index ad14dd63..fee06894 100644
--- a/pysnmp/proto/secmod/rfc3414/service.py
+++ b/pysnmp/proto/secmod/rfc3414/service.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
import time
diff --git a/pysnmp/proto/secmod/rfc3826/priv/aes.py b/pysnmp/proto/secmod/rfc3826/priv/aes.py
index 7d796b1a..b7e32684 100644
--- a/pysnmp/proto/secmod/rfc3826/priv/aes.py
+++ b/pysnmp/proto/secmod/rfc3826/priv/aes.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
import random
diff --git a/pysnmp/smi/builder.py b/pysnmp/smi/builder.py
index acfc6ef9..94ac4b72 100644
--- a/pysnmp/smi/builder.py
+++ b/pysnmp/smi/builder.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
import os
diff --git a/pysnmp/smi/compiler.py b/pysnmp/smi/compiler.py
index 4e4ade15..57ba9bd7 100644
--- a/pysnmp/smi/compiler.py
+++ b/pysnmp/smi/compiler.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
import os
diff --git a/pysnmp/smi/error.py b/pysnmp/smi/error.py
index 1b1901f4..3ae9f2a2 100644
--- a/pysnmp/smi/error.py
+++ b/pysnmp/smi/error.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pyasn1.error import PyAsn1Error
diff --git a/pysnmp/smi/exval.py b/pysnmp/smi/exval.py
index bc6e3d0f..02e8cab8 100644
--- a/pysnmp/smi/exval.py
+++ b/pysnmp/smi/exval.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pysnmp.proto import rfc1905
diff --git a/pysnmp/smi/indices.py b/pysnmp/smi/indices.py
index 7e15a8cd..677ac97c 100644
--- a/pysnmp/smi/indices.py
+++ b/pysnmp/smi/indices.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from bisect import bisect
diff --git a/pysnmp/smi/instrum.py b/pysnmp/smi/instrum.py
index 7d6336e2..f6940957 100644
--- a/pysnmp/smi/instrum.py
+++ b/pysnmp/smi/instrum.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
import sys
diff --git a/pysnmp/smi/mibs/ASN1-ENUMERATION.py b/pysnmp/smi/mibs/ASN1-ENUMERATION.py
index 5eb9f80e..6b906def 100644
--- a/pysnmp/smi/mibs/ASN1-ENUMERATION.py
+++ b/pysnmp/smi/mibs/ASN1-ENUMERATION.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pyasn1.type import namedval
diff --git a/pysnmp/smi/mibs/ASN1-REFINEMENT.py b/pysnmp/smi/mibs/ASN1-REFINEMENT.py
index 64e20c2e..1f5bce27 100644
--- a/pysnmp/smi/mibs/ASN1-REFINEMENT.py
+++ b/pysnmp/smi/mibs/ASN1-REFINEMENT.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pyasn1.type import constraint
diff --git a/pysnmp/smi/mibs/ASN1.py b/pysnmp/smi/mibs/ASN1.py
index e41d3b45..4a393d3b 100644
--- a/pysnmp/smi/mibs/ASN1.py
+++ b/pysnmp/smi/mibs/ASN1.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from pyasn1.type import univ
diff --git a/pysnmp/smi/mibs/INET-ADDRESS-MIB.py b/pysnmp/smi/mibs/INET-ADDRESS-MIB.py
index f8ea8acf..80f600c7 100644
--- a/pysnmp/smi/mibs/INET-ADDRESS-MIB.py
+++ b/pysnmp/smi/mibs/INET-ADDRESS-MIB.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
# PySNMP MIB module INET-ADDRESS-MIB (http://snmplabs.com/pysnmp)
diff --git a/pysnmp/smi/mibs/PYSNMP-MIB.py b/pysnmp/smi/mibs/PYSNMP-MIB.py
index 64915f4b..9e0df721 100644
--- a/pysnmp/smi/mibs/PYSNMP-MIB.py
+++ b/pysnmp/smi/mibs/PYSNMP-MIB.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
# PySNMP MIB module PYSNMP-MIB (http://snmplabs.com/pysnmp)
diff --git a/pysnmp/smi/mibs/PYSNMP-SOURCE-MIB.py b/pysnmp/smi/mibs/PYSNMP-SOURCE-MIB.py
index 525891a4..19863ee1 100644
--- a/pysnmp/smi/mibs/PYSNMP-SOURCE-MIB.py
+++ b/pysnmp/smi/mibs/PYSNMP-SOURCE-MIB.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
# PySNMP MIB module PYSNMP-SOURCE-MIB (http://snmplabs.com/pysnmp)
diff --git a/pysnmp/smi/mibs/PYSNMP-USM-MIB.py b/pysnmp/smi/mibs/PYSNMP-USM-MIB.py
index 321bafe5..d9ad0264 100644
--- a/pysnmp/smi/mibs/PYSNMP-USM-MIB.py
+++ b/pysnmp/smi/mibs/PYSNMP-USM-MIB.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
# PySNMP MIB module PYSNMP-USM-MIB (http://snmplabs.com/pysnmp)
diff --git a/pysnmp/smi/mibs/RFC1158-MIB.py b/pysnmp/smi/mibs/RFC1158-MIB.py
index 4c1c9c6c..ef5c2c16 100644
--- a/pysnmp/smi/mibs/RFC1158-MIB.py
+++ b/pysnmp/smi/mibs/RFC1158-MIB.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
# PySNMP MIB module RFC1158-MIB (http://snmplabs.com/pysnmp)
diff --git a/pysnmp/smi/mibs/RFC1213-MIB.py b/pysnmp/smi/mibs/RFC1213-MIB.py
index 46ec17e0..01cd008a 100644
--- a/pysnmp/smi/mibs/RFC1213-MIB.py
+++ b/pysnmp/smi/mibs/RFC1213-MIB.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
# PySNMP MIB module RFC1213-MIB (http://snmplabs.com/pysnmp)
diff --git a/pysnmp/smi/mibs/SNMP-COMMUNITY-MIB.py b/pysnmp/smi/mibs/SNMP-COMMUNITY-MIB.py
index 4ed234f7..a1240835 100644
--- a/pysnmp/smi/mibs/SNMP-COMMUNITY-MIB.py
+++ b/pysnmp/smi/mibs/SNMP-COMMUNITY-MIB.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
# PySNMP MIB module SNMP-COMMUNITY-MIB (http://snmplabs.com/pysnmp)
diff --git a/pysnmp/smi/mibs/SNMP-FRAMEWORK-MIB.py b/pysnmp/smi/mibs/SNMP-FRAMEWORK-MIB.py
index fdaaf01a..e7ff01f3 100644
--- a/pysnmp/smi/mibs/SNMP-FRAMEWORK-MIB.py
+++ b/pysnmp/smi/mibs/SNMP-FRAMEWORK-MIB.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
# PySNMP MIB module SNMP-FRAMEWORK-MIB (http://snmplabs.com/pysnmp)
diff --git a/pysnmp/smi/mibs/SNMP-MPD-MIB.py b/pysnmp/smi/mibs/SNMP-MPD-MIB.py
index 402e6913..14798100 100644
--- a/pysnmp/smi/mibs/SNMP-MPD-MIB.py
+++ b/pysnmp/smi/mibs/SNMP-MPD-MIB.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
#
diff --git a/pysnmp/smi/mibs/SNMP-NOTIFICATION-MIB.py b/pysnmp/smi/mibs/SNMP-NOTIFICATION-MIB.py
index d71b9ae2..87b110c5 100644
--- a/pysnmp/smi/mibs/SNMP-NOTIFICATION-MIB.py
+++ b/pysnmp/smi/mibs/SNMP-NOTIFICATION-MIB.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
# PySNMP MIB module SNMP-NOTIFICATION-MIB (http://snmplabs.com/pysnmp)
diff --git a/pysnmp/smi/mibs/SNMP-PROXY-MIB.py b/pysnmp/smi/mibs/SNMP-PROXY-MIB.py
index a9f5b458..b4ac1f2d 100644
--- a/pysnmp/smi/mibs/SNMP-PROXY-MIB.py
+++ b/pysnmp/smi/mibs/SNMP-PROXY-MIB.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
# PySNMP MIB module SNMP-PROXY-MIB (http://snmplabs.com/pysnmp)
diff --git a/pysnmp/smi/mibs/SNMP-TARGET-MIB.py b/pysnmp/smi/mibs/SNMP-TARGET-MIB.py
index 14d0fdc4..af8439e0 100644
--- a/pysnmp/smi/mibs/SNMP-TARGET-MIB.py
+++ b/pysnmp/smi/mibs/SNMP-TARGET-MIB.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
# PySNMP MIB module SNMP-TARGET-MIB (http://snmplabs.com/pysnmp)
diff --git a/pysnmp/smi/mibs/SNMP-USER-BASED-SM-3DES-MIB.py b/pysnmp/smi/mibs/SNMP-USER-BASED-SM-3DES-MIB.py
index 0a368fc9..555dd178 100644
--- a/pysnmp/smi/mibs/SNMP-USER-BASED-SM-3DES-MIB.py
+++ b/pysnmp/smi/mibs/SNMP-USER-BASED-SM-3DES-MIB.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
# PySNMP MIB module SNMP-USER-BASED-SM-3DES-MIB (http://snmplabs.com/pysnmp)
diff --git a/pysnmp/smi/mibs/SNMP-USER-BASED-SM-MIB.py b/pysnmp/smi/mibs/SNMP-USER-BASED-SM-MIB.py
index 1e998f9f..498ee944 100644
--- a/pysnmp/smi/mibs/SNMP-USER-BASED-SM-MIB.py
+++ b/pysnmp/smi/mibs/SNMP-USER-BASED-SM-MIB.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
# PySNMP MIB module SNMP-USER-BASED-SM-MIB (http://snmplabs.com/pysnmp)
diff --git a/pysnmp/smi/mibs/SNMP-USM-AES-MIB.py b/pysnmp/smi/mibs/SNMP-USM-AES-MIB.py
index 83d3bdaf..7aee7bf6 100644
--- a/pysnmp/smi/mibs/SNMP-USM-AES-MIB.py
+++ b/pysnmp/smi/mibs/SNMP-USM-AES-MIB.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
# PySNMP MIB module SNMP-USM-AES-MIB (http://snmplabs.com/pysnmp)
diff --git a/pysnmp/smi/mibs/SNMP-VIEW-BASED-ACM-MIB.py b/pysnmp/smi/mibs/SNMP-VIEW-BASED-ACM-MIB.py
index 8fbf962e..2b04e4d2 100644
--- a/pysnmp/smi/mibs/SNMP-VIEW-BASED-ACM-MIB.py
+++ b/pysnmp/smi/mibs/SNMP-VIEW-BASED-ACM-MIB.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
# PySNMP MIB module SNMP-VIEW-BASED-ACM-MIB (http://snmplabs.com/pysnmp)
diff --git a/pysnmp/smi/mibs/SNMPv2-CONF.py b/pysnmp/smi/mibs/SNMPv2-CONF.py
index e333336d..c41599d5 100644
--- a/pysnmp/smi/mibs/SNMPv2-CONF.py
+++ b/pysnmp/smi/mibs/SNMPv2-CONF.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
# PySNMP MIB module SNMPv2-CONF (http://snmplabs.com/pysnmp)
diff --git a/pysnmp/smi/mibs/SNMPv2-MIB.py b/pysnmp/smi/mibs/SNMPv2-MIB.py
index e0d7001f..a31d6871 100644
--- a/pysnmp/smi/mibs/SNMPv2-MIB.py
+++ b/pysnmp/smi/mibs/SNMPv2-MIB.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
# PySNMP MIB module SNMPv2-MIB (http://snmplabs.com/pysnmp)
diff --git a/pysnmp/smi/mibs/SNMPv2-SMI.py b/pysnmp/smi/mibs/SNMPv2-SMI.py
index 63a601a7..567dd033 100644
--- a/pysnmp/smi/mibs/SNMPv2-SMI.py
+++ b/pysnmp/smi/mibs/SNMPv2-SMI.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
import sys
diff --git a/pysnmp/smi/mibs/SNMPv2-TC.py b/pysnmp/smi/mibs/SNMPv2-TC.py
index 22a78874..2242b91e 100644
--- a/pysnmp/smi/mibs/SNMPv2-TC.py
+++ b/pysnmp/smi/mibs/SNMPv2-TC.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
import sys
diff --git a/pysnmp/smi/mibs/SNMPv2-TM.py b/pysnmp/smi/mibs/SNMPv2-TM.py
index 3d04c216..67c32137 100644
--- a/pysnmp/smi/mibs/SNMPv2-TM.py
+++ b/pysnmp/smi/mibs/SNMPv2-TM.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
# PySNMP MIB module SNMPv2-TM (http://snmplabs.com/pysnmp)
diff --git a/pysnmp/smi/mibs/TRANSPORT-ADDRESS-MIB.py b/pysnmp/smi/mibs/TRANSPORT-ADDRESS-MIB.py
index ea9278c9..213bb89c 100644
--- a/pysnmp/smi/mibs/TRANSPORT-ADDRESS-MIB.py
+++ b/pysnmp/smi/mibs/TRANSPORT-ADDRESS-MIB.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
# PySNMP MIB module TRANSPORT-ADDRESS-MIB (http://snmplabs.com/pysnmp)
diff --git a/pysnmp/smi/mibs/instances/__PYSNMP-USM-MIB.py b/pysnmp/smi/mibs/instances/__PYSNMP-USM-MIB.py
index 1b0f118a..2a83fc37 100644
--- a/pysnmp/smi/mibs/instances/__PYSNMP-USM-MIB.py
+++ b/pysnmp/smi/mibs/instances/__PYSNMP-USM-MIB.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
MibScalarInstance, = mibBuilder.importSymbols('SNMPv2-SMI', 'MibScalarInstance')
diff --git a/pysnmp/smi/mibs/instances/__SNMP-FRAMEWORK-MIB.py b/pysnmp/smi/mibs/instances/__SNMP-FRAMEWORK-MIB.py
index e20a1f5e..cfbcb9ff 100644
--- a/pysnmp/smi/mibs/instances/__SNMP-FRAMEWORK-MIB.py
+++ b/pysnmp/smi/mibs/instances/__SNMP-FRAMEWORK-MIB.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
import time
diff --git a/pysnmp/smi/mibs/instances/__SNMP-MPD-MIB.py b/pysnmp/smi/mibs/instances/__SNMP-MPD-MIB.py
index 086dabce..634398fe 100644
--- a/pysnmp/smi/mibs/instances/__SNMP-MPD-MIB.py
+++ b/pysnmp/smi/mibs/instances/__SNMP-MPD-MIB.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
MibScalarInstance, = mibBuilder.importSymbols('SNMPv2-SMI', 'MibScalarInstance')
diff --git a/pysnmp/smi/mibs/instances/__SNMP-TARGET-MIB.py b/pysnmp/smi/mibs/instances/__SNMP-TARGET-MIB.py
index fc7e0b0c..fa9f4421 100644
--- a/pysnmp/smi/mibs/instances/__SNMP-TARGET-MIB.py
+++ b/pysnmp/smi/mibs/instances/__SNMP-TARGET-MIB.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
MibScalarInstance, = mibBuilder.importSymbols(
diff --git a/pysnmp/smi/mibs/instances/__SNMP-USER-BASED-SM-MIB.py b/pysnmp/smi/mibs/instances/__SNMP-USER-BASED-SM-MIB.py
index 82a1eb3b..175cf0a0 100644
--- a/pysnmp/smi/mibs/instances/__SNMP-USER-BASED-SM-MIB.py
+++ b/pysnmp/smi/mibs/instances/__SNMP-USER-BASED-SM-MIB.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
MibScalarInstance, = mibBuilder.importSymbols('SNMPv2-SMI', 'MibScalarInstance')
diff --git a/pysnmp/smi/mibs/instances/__SNMP-VIEW-BASED-ACM-MIB.py b/pysnmp/smi/mibs/instances/__SNMP-VIEW-BASED-ACM-MIB.py
index ef0d6ecc..740dcf91 100644
--- a/pysnmp/smi/mibs/instances/__SNMP-VIEW-BASED-ACM-MIB.py
+++ b/pysnmp/smi/mibs/instances/__SNMP-VIEW-BASED-ACM-MIB.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
MibScalarInstance, = mibBuilder.importSymbols('SNMPv2-SMI', 'MibScalarInstance')
diff --git a/pysnmp/smi/mibs/instances/__SNMPv2-MIB.py b/pysnmp/smi/mibs/instances/__SNMPv2-MIB.py
index 7d9ce90f..48d4bd99 100644
--- a/pysnmp/smi/mibs/instances/__SNMPv2-MIB.py
+++ b/pysnmp/smi/mibs/instances/__SNMPv2-MIB.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
from sys import version
diff --git a/pysnmp/smi/rfc1902.py b/pysnmp/smi/rfc1902.py
index 30a5d8fa..83a1ec28 100644
--- a/pysnmp/smi/rfc1902.py
+++ b/pysnmp/smi/rfc1902.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
import sys
diff --git a/pysnmp/smi/view.py b/pysnmp/smi/view.py
index 8c5dd81c..223e22d8 100644
--- a/pysnmp/smi/view.py
+++ b/pysnmp/smi/view.py
@@ -1,7 +1,7 @@
#
# This file is part of pysnmp software.
#
-# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
+# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
# License: http://snmplabs.com/pysnmp/license.html
#
import sys